Document file-exists?
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
f5c2af4b
LC
12008-04-16 Ludovic Courtès <ludo@gnu.org>
2
3 * ports.c (scm_getc, scm_putc, scm_puts): Moved...
4 * inline.h: ... here. Noticeably improves `read' performance.
5
ef4cbc08
LC
62008-04-15 Ludovic Courtès <ludo@gnu.org>
7 Julian Graham <joolean@gmail.com>
8
9 * read.c (scm_keyword_postfix): New.
10 (scm_read_opts): Update docstring for `keywords'.
11 (scm_read_mixed_case_symbol): Add support for postfix keywords.
12
07db6fcd
LC
132008-04-13 Ludovic Courtès <ludo@gnu.org>
14
15 * inline.h (SCM_C_USE_EXTERN_INLINE): New macro. Use it to make
16 sure "extern" declarations are produced when "extern inline" is
9dca8935 17 used. Simplify macrology around inline definitions.
07db6fcd 18
7dc9ae71
LC
192008-04-10 Ludovic Courtès <ludo@gnu.org>
20
21 * inline.h (SCM_C_EXTERN_INLINE): Special-case Apple's GCC
22 4.0-based compiler, which doesn't support GNU inline semantics
23 at all in C99 mode but doesn't define `__GNUC_STDC_INLINE__'.
24 See http://thread.gmane.org/gmane.network.gnutls.general/1135 .
25
54ee7cdf
AW
262008-04-10 Andy Wingo <wingo@pobox.com>
27
4650d115
AW
28 * struct.c (scm_struct_ref, scm_struct_set_x): "Light" structs
29 have no hidden words (members of the SCM_STRUCT_DATA(x) array
30 accessed with negative indices). In that case, determine the
31 number of fields from the length of the struct layout
32 descriptor. (Most GOOPS instances are light structs.)
33
4125c767
AW
34 * goops.c (wrap_init): Initialize 'u' slots to 0, not some random
35 SCM value.
36
37 * goops.c (get_slot_value, set_slot_value): In the struct
54ee7cdf
AW
38 allocation case, don't poke the slots array directly -- we should
39 go through struct-ref/struct-set! code so that we get the
40 permissions and allocation ('u' versus 'p') correct.
41
979eade6
LC
422008-04-03 Ludovic Courtès <ludo@gnu.org>
43
44 * inline.h (SCM_C_EXTERN_INLINE): New macro, addresses the
45 "extern inline" semantic change in C99 mode with GCC 4.3 and
46 later and the warning in C99 mode with GCC 4.2. Use it in the
47 inline function definitions.
48
2a1d0688
NJ
492008-03-24 Neil Jerram <neil@ossau.uklinux.net>
50
51 Applying patch from Julian Graham, containing minor fixes to his
52 thread enhancements:
53
54 * threads.c (to_timespec): Change 1000000 multiplier to
55 1000000000.
56 (unchecked_unlock_sym, allow_external_unlock_sym,
57 recursive_sym): Use SCM_SYMBOL.
58 (scm_make_mutex_with_flags): When raising unsupported option
59 error, report what the unsupported option was.
60 (fat_mutex_unlock): When raising errors, unlock m->lock first.
61 (fat_cond_timedwait): Removed.
62 (scm_timed_wait_condition_variable): Call fat_mutex_unlock
63 directly instead of via fat_cond_timedwait.
64
c2ad98ad
LC
652008-03-10 Ludovic Courtès <ludo@gnu.org>
66
67 * eval.c, filesys.c: Enclose `alloca' blob in `#ifndef alloca',
68 as per Gnulib's `alloca'. This should fix compilation on
69 FreeBSD 6.
70
bca69a9f
NJ
712008-03-09 Neil Jerram <neil@ossau.uklinux.net>
72
73 * numbers.c: Only define scm_from_complex_double if it will
74 actually be used.
75
6180e336
NJ
762008-03-08 Julian Graham <joolean@gmail.com>
77
78 * threads.c (scm_join_thread_timed, scm_thread_p,
79 scm_make_mutex_with_flags, scm_lock_mutex_timed,
80 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p): New
81 functions.
82 (thread_mark): Updated to mark new struct field `mutexes'.
83 (do_thread_exit): Notify threads waiting on mutexes locked by exiting
84 thread.
85 (scm_join_thread, scm_make_mutex, scm_make_recursive_mutex,
86 scm_mutex_lock): Reimplement in terms of their newer
87 counterparts.
88 (scm_abandoned_mutex_error_key): New symbol.
89 (fat_mutex)[unchecked_unlock, allow_external_unlock]: New fields.
90 (fat_mutex_lock): Reimplement to support timeouts and abandonment.
91 (fat_mutex_trylock, scm_try_mutex): Remove fat_mutex_trylock and
92 reimplement scm_try_mutex as a lock attempt with a timeout of zero.
93 (fat_mutex_unlock): Allow unlocking from other threads and unchecked
94 unlocking; implement in terms of condition variable wait.
95 (scm_timed_wait_condition_variable): Reimplement in terms of
96 fat_mutex_unlock.
97 * threads.h (scm_i_thread)[mutexes]: New field.
98 (scm_join_thread_timed, scm_thread_p, scm_lock_mutex_timed,
99 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p):
100 Prototypes for new functions.
101
61b6542a
LC
1022008-03-06 Ludovic Courtès <ludo@gnu.org>
103
104 * eval.c (scm_eval): If MODULE_OR_STATE is not a dynamic state,
105 make sure it's a module. Reported by David I. Lehn.
106
3f520967
LC
1072008-03-02 Ludovic Courtès <ludo@gnu.org>
108
109 * pairs.h (scm_is_pair): Moved declaration to `inline.h'.
110 * inline.h: Make sure `extern' declarations are not produced
111 when `inline' is supported but GCC is not used. This
112 fixes "mixed linkage" errors with compilers such as
113 DEC/Compaq/HP CC.
114
fa80e280
NJ
1152008-02-27 Neil Jerram <neil@ossau.uklinux.net>
116
117 * _scm.h (errno): Remove declarations that have been there
118 forever, and are known to conflict on some platforms with that
119 provided by <errno.h>, which we include unconditionally. If
120 <errno.h> doesn't provide a errno declaration, what is the point
121 of it?
122
a2c25234
LC
1232008-02-23 Ludovic Courtès <ludo@gnu.org>
124
125 * numbers.c (scm_make_rectangular): Rename argument to
126 `real_part' and `imaginary_part' to work around Solaris 2.10
127 headers which define `imaginary' as a macro. Patch by Tim
128 Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
129
bfb64eb4
LC
1302008-02-22 Ludovic Courtès <ludo@gnu.org>
131
4fcb27c4
LC
132 * read.c (strncasecmp): Add declaration when
133 `HAVE_DECL_STRNCASECMP' is undefined. Fixes compilation on
134 NetBSD 1.6.
135
bfb64eb4
LC
136 * gc.c (scm_ia64_ar_bsp)[linux]: Don't discard `const' qualifier
137 of OPAQUE.
138
5305df84
LC
1392008-02-21 Ludovic Courtès <ludo@gnu.org>
140
141 Fix bug #22369.
142
143 * goops.c (scm_add_slot): Add `SCM_UNDEFINED' as last argument
a2c25234
LC
144 to `scm_list_n ()'. Thanks to René Köcher
145 <shirk87@googlemail.com>.
5305df84 146
25a640ca
LC
1472008-02-17 Ludovic Courtès <ludo@gnu.org>
148
149 * script.c (scm_compile_shell_switches): Update copyright year.
150
9a6fac59
LC
1512008-02-16 Ludovic Courtès <ludo@gnu.org>
152
153 * gc_os_dep.c: Add NetBSD/alpha support. Patch by Greg Troxel
154 <gdt@ir.bbn.com>.
155
5b5179f8
LC
1562008-02-12 Ludovic Courtès <ludo@gnu.org>
157
158 * guile-snarf.in (tempdir): Honor `$TMPDIR'.
159
4b26c03e
NJ
1602008-02-11 Neil Jerram <neil@ossau.uklinux.net>
161
162 * numbers.c (SCM_COMPLEX_VALUE): Use GUILE_I instead of _Complex_I
163 directly, and only if GUILE_I was defined by the configure step.
164 (scm_log, scm_log10, scm_exp, scm_sqrt): Use SCM_COMPLEX_VALUE
165 code only if SCM_COMPLEX_VALUE is defined.
166
7f74cf9a
LC
1672008-02-07 Ludovic Courtès <ludo@gnu.org>
168
169 Fix bug #21378.
170 Thanks to David Diffenbaugh <davediff@nbcs.rutgers.edu>.
171
172 * read.c (scm_read_quote): Don't use `__FUNCTION__' since it is
173 not supported by Sun CC on Solaris 9.
174 (scm_read_keyword): Likewise.
175 * strings.c (scm_take_locale_stringn): Remove
176 `SCM_C_INLINE_KEYWORD' to allow compilation with Sun CC.
177
86a597f8
NJ
1782008-02-07 Julian Graham <joolean@gmail.com>
179
180 * threads.c (do_thread_exit, scm_cancel_thread,
181 scm_set_thread_cleanup_x, scm_thread_cleanup): Lock on thread-specific
182 admin mutex instead of `thread_admin_mutex'.
183 * threads.h (scm_i_thread)[admin_mutex]: New field.
184 * throw.c (make_jmpbuf): Don't enter critical section during thread
185 spawn -- there is a possibility of deadlock if other threads are
186 exiting.
187
4a19ed04
NJ
1882008-02-06 Neil Jerram <neil@ossau.uklinux.net>
189
190 * gc-malloc.c (scm_gc_malloc): Return NULL if requested size is 0.
191 (scm_gc_free): Don't call `free' if mem is NULL.
192
189171c5
LC
1932008-02-06 Ludovic Courtès <ludo@gnu.org>
194
195 * numbers.c (scm_i_mkbig, scm_i_long2big, scm_i_ulong2big,
196 scm_i_clonebig, scm_i_bigcmp, scm_i_dbl2big, scm_i_dbl2num,
197 scm_i_normbig): Remove `SCM_C_INLINE_KEYWORD' since these are
198 declared as `extern' in `numbers.h'. This precluded compilation
199 on Solaris 9 with Sun CC (reported by David Halik
200 <dhalik@nbcs.rutgers.edu>).
201
d05bcb2e
NJ
2022008-02-05 Neil Jerram <neil@ossau.uklinux.net>
203
204 * fports.c (fport_seek): Make dependent on GUILE_USE_64_CALLS.
205
206 * _scm.h: Make definition of CHOOSE_LARGEFILE depend on
207 GUILE_USE_64_CALLS.
208
3ac8359a
NJ
2092008-02-01 Neil Jerram <neil@ossau.uklinux.net>
210
211 * modules.c (the_root_module): Moved before scm_current_module.
212 (scm_current_module): Return the root module if `the-module' fluid
213 gives #f.
214
d3cf93bc
NJ
2152008-01-22 Neil Jerram <neil@ossau.uklinux.net>
216
7df13834
NJ
217 * COPYING: Removed.
218
d3cf93bc
NJ
219 * __scm.h, _scm.h, weaks.c: Update copyright statement to LGPL.
220
15bd90ea
NJ
2212008-01-18 Neil Jerram <neil@ossau.uklinux.net>
222
223 * hashtab.c (scm_hash_fn_create_handle_x): If supplied assoc_fn
224 returns neither a pair nor #f, signal a wrong-type-arg error.
225 (Thanks to Gregory Marton for reporting this.)
226
5c004b6d
NJ
2272007-12-29 Neil Jerram <neil@ossau.uklinux.net>
228
229 * gc.c (mark_gc_async): Change "func_data" to "fn_data", to avoid
230 clash with AIX header file.
231 * hooks.c (scm_c_hook_add, scm_c_hook_remove): Same again.
232 * hooks.h (scm_t_c_hook_function, scm_c_hook_add,
233 scm_c_hook_remove): Same again.
234
9cc37597
LC
2352007-12-08 Ludovic Courtès <ludo@gnu.org>
236
237 * __scm.h (SCM_EXPECT, SCM_LIKELY, SCM_UNLIKELY): New macros.
238 (SCM_ASSERT, SCM_ASSERT_TYPE, SCM_ASRTGO, SCM_GASSERT0,
239 SCM_GASSERT1, SCM_GASSERT2, SCM_GASSERTn): Use them.
240 * eval.c (ASSERT_SYNTAX, ASSERT_SYNTAX_2): Likewise.
241 * eval.i.c (CEVAL): Use branch prediction hints for syntax
242 errors, wrong number of arguments and similar.
243 * numbers.c (scm_sum): Use `SCM_LIKELY' for the sum of two
244 immediate numbers.
245 (scm_difference, scm_product, scm_i_divide): Likewise.
246 * validate.h (SCM_ASSERT_RANGE): Use `SCM_UNLIKELY'.
247
7d1fc872
LC
2482007-12-04 Ludovic Courtès <ludo@gnu.org>
249
693758d5
LC
250 * ports.c (scm_c_read): Validate PORT as an open input port.
251 (scm_c_write): Validate PORT as an open output port.
252
7d1fc872
LC
253 * socket.c (scm_accept): Leave guile mode using
254 `scm_std_select ()' before calling `accept(2)'. Reported by
255 dskr <dskr@mac.com>.
256
ee834df4
LC
2572007-10-27 Ludovic Courtès <ludo@gnu.org>
258
259 * fports.c (scm_i_evict_port): Expect a port, rather than a pair
260 containing the port. Fixes a bug in the new port table (2007-08-26).
261 (scm_evict_ports): Use `scm_c_port_for_each ()'.
262
acbfb594
NJ
2632007-10-21 Neil Jerram <neil@ossau.uklinux.net>
264
265 * eval.c (unmemoize_delay): Extend the environment before
266 unmemoizing the promise thunk. This fixes a segmentation fault
267 reported by Frank Schwidom.
268
2e77f720
LC
2692007-10-20 Julian Graham <joolean@gmail.com>
270
271 Add support for thread cancellation and user-defined thread
272 cleanup handlers. Small rework by Ludovic Courtès.
273
274 * null-threads.h (scm_i_pthread_cancel,
275 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
276 * pthread-threads.h (scm_i_pthread_cancel,
277 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
278 * scmsigs.c (scm_i_signal_delivery_thread,
279 signal_delivery_thread_mutex): New.
280 (signal_delivery_thread): Leave when `read_without_guile ()'
281 returns zero.
282 (start_signal_delivery_thread): Acquire SIGNAL_DELIVERY_THREAD
283 before spawning the thread. Initialize
284 SCM_I_SIGNAL_DELIVERY_THREAD.
285 (ensure_signal_delivery_thread): Renamed to...
286 (scm_i_ensure_signal_delivery_thread): this.
287 (scm_i_close_signal_pipe): New.
288 * scmsigs.h: Updated.
289 * threads.c (thread_mark): Mark `t->cleanup_handler'.
290 (guilify_self_1): Initialize `t->cleanup_handler' and
291 `t->canceled'.
292 (do_thread_exit): Invoke `t->cleanup_handler'.
293 (on_thread_exit): Call `scm_i_ensure_signal_delivery_thread ()'.
294 Call `scm_i_close_signal_pipe ()' when the next-to-last thread
295 vanishes.
296 (scm_leave_guile_cleanup): New.
297 (scm_i_with_guile_and_parent): Use `scm_i_pthread_cleanup_push ()'
298 and `scm_leave_guile_cleanup ()' to leave guile mode, rather
299 than call `scm_leave_guile ()' after FUNC.
300 (scm_cancel_thread, scm_set_thread_cleanup_x,
301 scm_threads_cleanup): New.
302 (scm_all_threads): Remove SCM_I_SIGNAL_DELIVERY_THREAD from the
303 returned list.
304 * threads.h (scm_i_thread)[cleanup_handler, canceled]: New
305 fields.
306 Add declarations of new functions.
307
d41668fa
LC
3082007-10-17 Ludovic Courtès <ludo@gnu.org>
309
310 * read.c (CHAR_IS_BLANK_): Add `\r' (ASCII 0x0d). This fixes a
311 regression compared to 1.8.2. Reported by Puneet
312 <schemer@gmail.com>.
313
66302618
LC
3142007-10-10 Ludovic Courtès <ludo@gnu.org>
315
316 * pthread-threads.h (SCM_I_PTHREAD_MUTEX_INITIALIZER): Check
317 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
318 * gen-scmconfig.h.in
319 (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER): New.
320 * gen-scmconfig.c (main): Define
321 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
322
1445e449
LC
3232007-10-04 Ludovic Courtès <ludo@gnu.org>
324
325 * i18n.c (scm_make_locale)[!USE_GNU_LOCALE_API]: Don't call
326 `leave_locale_section ()' on failure of
327 `enter_locale_section ()' since the mutex is not held and locale
328 settings are unchanged.
329 (scm_nl_langinfo)[!USE_GNU_LOCALE_API]: Use
330 `restore_locale_settings ()' instead of `leave_locale_section ()'
331 since the mutex is not held.
332
29776e85
LC
3332007-10-02 Ludovic Courtès <ludo@gnu.org>
334
335 * threads.c (on_thread_exit): Don't call `scm_leave_guile ()'
336 since we're already in non-guile mode. Reported by Greg Toxel
337 for NetBSD.
338
61d3568b
LC
3392007-10-01 Ludovic Courtès <ludo@gnu.org>
340
341 * ports.c (flush_output_port): Expect directly a port instead of
342 a pair. Fixes a bug in the new port table (2007-08-26).
343
68eccd8b
KR
3442007-09-11 Kevin Ryde <user42@zip.com.au>
345
346 * posix.c (scm_putenv): Confine the putenv("NAME=") bit to mingw, use
347 putenv("NAME") as the fallback everywhere else. In particular this is
348 needed for solaris 9. Reported by Frank Storbeck.
349
454866e0
LC
3502007-09-03 Ludovic Courtès <ludo@gnu.org>
351
352 * read.c (flush_ws): Handle SCSH block comments.
353
f43f3620
LC
3542007-09-03 Ludovic Courtès <ludo@gnu.org>
355
356 Fix alignment issues which showed up at least on SPARC.
357
358 * socket.c (scm_t_max_sockaddr, scm_t_getsockopt_result): New.
359 (scm_inet_pton): Change DST to `scm_t_uint32' for correct
360 alignment.
361 (scm_getsockopt): Change OPTVAL to `scm_t_getsockopt_result' for
362 correct alignment.
363 (_scm_from_sockaddr): Change ADDRESS to `scm_t_max_sockaddr *'.
364 (scm_from_sockaddr): Cast ADDRESS to `scm_t_max_sockaddr *'.
365 (MAX_SIZE_UN, MAX_SIZE_IN6): Removed.
366 (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
367 Use `scm_t_max_sockaddr' instead of "char max_addr[MAX_ADDR_SIZE]".
368
8d4d5dfc
KR
3692007-09-03 Kevin Ryde <user42@zip.com.au>
370
371 * numbers.c (scm_log): Test HAVE_CLOG as well as HAVE_COMPLEX_DOUBLE
372 before using clog(). It's possible for gcc to provide the "complex
373 double" type, but for the system not to have the complex funcs.
374 (scm_exp): Ditto HAVE_CEXP for cexp().
375 (clog, cexp, carg): Remove fallback definitions. These only
376 duplicated the code within scm_log and scm_exp, and the latter have to
377 exist for the case when there's no "complex double". So better just
378 fix up the conditionals selecting between the complex funcs and plain
379 doubles than worry about fallbacks.
380
1ac5fb45
LC
3812007-09-02 Ludovic Courtès <ludo@gnu.org>
382
383 * socket.c (scm_make_socket_address): Free C_ADDRESS after use.
384 This fixes a memory leak.
385
b87e6d04
HWN
3862007-08-26 Han-Wen Nienhuys <hanwen@lilypond.org>
387
5dbc6c06
HWN
388 * fports.c gc-card.c gc.c gc.h ioext.c ports.c ports.h weaks.h
389 gc.c: replace port table with weak hash table. This simplifies
390 memory management, and fixes freed cells appearing in
391 port-for-each output.
392
b87e6d04
HWN
393 * init.c (cleanup_for_exit): abort cleanup if init_mutex is still
394 held.
395
2baec6a9
LC
3962007-08-23 Ludovic Courtès <ludo@gnu.org>
397
492faee1 398 * read.c (scm_read_quote): Record position and copy source
8d4d5dfc 399 expression when asked to. Reported by Kevin.
492faee1 400
2baec6a9
LC
401 * stime.c: Define `_REENTRANT' only if not already defined.
402
1f11c61a
KR
4032007-08-21 Kevin Ryde <user42@zip.com.au>
404
405 * gc-card.c (scm_i_card_statistics): Record scm_tc7_number types as
406 tc16 values so big, real, complex and fraction can be distinguished.
407
408 (scm_i_tag_name): Return "number" for scm_tc7_number, not NULL. NULL
409 was making numbers come out as "type 23" in gc-live-object-stats.
410 Fix tests of the tc16 number types, they were checked under
411 scm_tc7_number, but the values went down the tag>=255 smob case.
412 Put smob case under scm_tc7_smob instead of using tag>=255, per
413 recommendation in comments with scm_tc7_smob to use symbolic values.
414 Use SCM_TC2SMOBNUM to extract scm_smobs index, instead of explicit
415 code. Lose some unnecessary "break" statements.
416
417 (scm_i_card_statistics): Use scm_hashq_create_handle_x and modify the
418 element returned, rather than two lookups scm_hashq_ref and
419 scm_hashq_set_x.
420
949ec9f9
KR
4212007-08-17 Kevin Ryde <user42@zip.com.au>
422
423 * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on
424 solaris 2.6. Reported by anirkko.
425
6caac03c
LC
4262007-07-29 Ludovic Courtès <ludo@gnu.org>
427
428 * Makefile.am (INCLUDES): Added Gnulib includes.
429 (gnulib_library): New.
430 (libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD): Added
431 `$(gnulib_library)'.
432 (libguile_la_LIBADD): Likewise.
433
434 * posix.c: Don't define `_GNU_SOURCE' since `gl_EARLY' arranges
435 to define it when available.
436 * srfi-14.c: Likewise.
f7439099
LC
437 * i18n.c: Likewise. Include Gnulib's <alloca.h>
438 * eval.c: Include Gnulib's <alloca.h>.
439 * filesys.c: Likewise.
440 * read.c: Don't include <strings.h> and don't provide an
441 `strncasecmp ()' replacement; use Gnulib's <string.h> and
442 `strncasecmp ()' instead.
6caac03c 443
e08f3f7a
LC
4442007-07-25 Ludovic Courtès <ludo@gnu.org>
445
446 * eval.c (macroexp): When `scm_ilength (res) <= 0', return
447 immediately. This used to produce a circular memoized
448 expression, e.g., for `(set (quote x) #t)'.
449
7337d56d
LC
4502007-07-22 Ludovic Courtès <ludo@gnu.org>
451
452 Overhauled the reader, making it faster.
453
454 * gdbint.c (tok_buf, tok_buf_mark_p): Removed.
455 (gdb_read): Don't use a token buffer. Use `scm_read ()' instead
456 of `scm_lreadr ()'.
457
458 * read.c: Overhauled. No longer use a token buffer. Use a
459 on-stack C buffer in the common case and use Scheme strings when
460 larger buffers are needed.
461 * read.h (scm_grow_tok_buf, scm_flush_ws, scm_casei_streq,
462 scm_lreadr, scm_lreadrecparen): Removed.
463 (scm_i_input_error): Marked as `SCM_NORETURN'.
464
df449722
LC
4652007-07-15 Ludovic Courtès <ludo@gnu.org>
466
467 * script.c (scm_compile_shell_switches): Updated copyright year.
468
b1f57ea4
LC
4692007-07-11 Ludovic Courtès <ludo@gnu.org>
470
471 * goops.c (scm_sys_method_more_specific_p): Added docstring.
472 Make sure LEN is greater than or equal to the minimum length of
473 specializers of M1 and M2. This fixes a segfault later on in
474 `more_specificp ()' if TARGS is too small. Reported by Marco
475 Maggi <marco.maggi-ipsu@poste.it>.
476
d3075c52
LC
4772007-06-26 Ludovic Courtès <ludo@gnu.org>
478
479 * fluids.c (next_fluid_num): When growing ALLOCATED_FLUIDS, make
480 sure to free the previous array after the new one has been
481 installed. This leak is made visible by running
482 "(define l (map (lambda (i) (make-fluid)) (iota 255)))"
483 from the REPL within Valgrind.
484
7a5fb796
LC
4852007-06-12 Ludovic Courtès <ludo@chbouib.org>
486
487 * socket.c (scm_inet_ntop): In the `AF_INET' case, declare `addr4'
488 as an `scm_t_uint32' rather than re-using `addr6'. This fixes a
489 bus error on SPARC (and possibly others) due to unaligned access.
490
a1ef7406
LC
4912007-06-07 Ludovic Courtès <ludovic.courtes@laas.fr>
492
493 * posix.c (scm_ttyname): Check whether RESULT is NULL before
494 making a string from it (reported by Dan McMahill). Don't call
495 `scm_from_locale_string ()' before the mutex is released.
496
3dcf3373
LC
4972007-05-26 Ludovic Courtès <ludo@chbouib.org>
498
499 * eval.c (scm_m_define): Updated comment. Changed order for value
500 evaluation and `scm_sym2var ()' call, which is perfectly valid per
501 R5RS. This reverts the change dated 2004-04-22 by Dirk Herrmann.
502
608860a5
LC
5032007-05-05 Ludovic Courtès <ludo@chbouib.org>
504
505 Implemented lazy duplicate binding handling.
506
507 * modules.c (scm_export): Renamed to...
508 (scm_module_export): This. Now public.
509 (module_variable): Removed.
510 (default_duplicate_binding_procedures_var): New variable.
511 (default_duplicate_binding_handlers, resolve_duplicate_binding,
512 module_imported_variable, scm_module_local_variable,
513 scm_module_variable): New functions.
514 (scm_module_import_interface): Rewritten.
515 (scm_module_reverse_lookup): Exported as a Scheme function.
516 * modules.h (scm_module_index_duplicate_handlers,
517 scm_module_index_import_obarray): New macros.
518 (scm_module_variable, scm_module_local_variable,
519 scm_module_export): New declarations.
520
1911e3da
LC
5212007-04-17 Ludovic Courtès <ludovic.courtes@laas.fr>
522
523 * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
524 `#endif'. Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
525
1d8ce4c0
HWN
5262007-04-09 Han-Wen Nienhuys <hanwen@lilypond.org>
527
528 * numbers.c (carg): provide carg, cexp, clog in case they are
529 missing.
530
afb49959
LC
5312007-03-12 Ludovic Courtès <ludovic.courtes@laas.fr>
532
533 * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
534 `FRAC_DIGITS', etc., which are GNU extensions. Reported by
535 Steven Wu.
536
b3aa4626
KR
5372007-03-08 Kevin Ryde <user42@zip.com.au>
538
539 * struct.c, struct.h (scm_make_vtable): New function, providing
540 `make-vtable'.
541 * stacks.c (scm_init_stacks): Use it.
542
5432007-03-06 Kevin Ryde <user42@zip.com.au>
544
545 * struct.c (scm_make_struct): Check for R,W,O at end of layout when
546 allocating a tail array. If there's no such then those tail fields
547 are uninitialized and garbage SCMs there can cause a segv if printed
548 (after fetching with struct-ref).
549
5502007-02-22 Kevin Ryde <user42@zip.com.au>
551
552 * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
553 (scm_usleep): Update docstring per manual, cross reference sleep.
554
555 * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
556 scm_struct_init is not within that section. scm_struct_init can
557 thrown an error, which within a critical section results in an
558 abort().
559
03291373
NJ
5602007-02-19 Neil Jerram <neil@ossau.uklinux.net>
561
562 * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
563 is included in the distribution.
652dbce6 564 (noinst_HEADERS): And the same for eval.i.c.
03291373 565
a2f00b9b
LC
5662007-01-31 Ludovic Courtès <ludovic.courtes@laas.fr>
567
568 * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
569 unconditionally. Include <langinfo.h> and <nl_types.h> when
570 available.
571 (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
572 SCM_LIST_OR_INTEGER_P): New macros.
573 (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
574 as powers of two instead of `(1 << LC_*)'.
575 (scm_i_locale_free): New function/macro.
576 (scm_global_locale): New global variable.
577 (smob_locale_free): Use `scm_i_locale_free ()'.
578 (smob_locale_mark): Check whether the SMOB is `%global-locale'.
579 (get_current_locale_settings): Return `EINVAL' instead of `errno'
580 when `setlocale' fails.
581 (restore_locale_settings): Likewise.
582 (install_locale_categories): Likewise.
583 (install_locale): Likewise. Stop the locale stack traversal when
584 all categories have been handled.
585 (get_current_locale, category_to_category_mask,
586 category_list_to_category_mask): New function.
587 (scm_make_locale): Use them. Accept both lists of `LC_*' values
588 and single `LC_*' values as the first argument. Handle the case
589 where BASE_LOCALE is `%global-locale'. When `USE_GNU_LOCALE_API',
590 duplicate C_BASE_LOCALE before using it.
591 (scm_nl_langinfo, define_langinfo_items): New functions.
592 (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
593 `nl-langinfo' and invoke `define_langinfo_items ()'.
594 * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
595 * posix.c: Include <xlocale.h> when available.
596 (scm_i_locale_mutex): Always define it. Statically initialized.
597 (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
598 acquiring the locale mutex.
599 (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
600
b3aa4626
KR
6012007-01-27 Kevin Ryde <user42@zip.com.au>
602
603 * ports.c (scm_port_line, scm_set_port_line_x), read.c
604 (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
605 port line number type, should be "long" not "int", as per line_number
606 field of scm_t_port. (Makes a difference only on 64-bit systems, and
607 only then for a linenum above 2Gig.)
608
2a8d66b0
HWN
6092007-01-25 Han-Wen Nienhuys <hanwen@lilypond.org>
610
611 * vector.c: remove comment as per kryde's request.
612
b3aa4626
KR
6132007-01-25 Kevin Ryde <user42@zip.com.au>
614
615 * sort.c (scm_stable_sort): Return empty list for input empty list, as
616 done in guile 1.6 and as always done by plain `sort'. Was falling
617 through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda.
618
cb90e2cb
HWN
6192007-01-22 Han-Wen Nienhuys <hanwen@lilypond.org>
620
8cb7939c
HWN
621 * vectors.c (s_scm_vector_move_right_x): complain about naming.
622
d00a0704
HWN
623 * srcprop.c: regularize comments.
624
3d178652
HWN
625 * eval.c: remove superfluous ifndef DEVAL.
626
243ebb61
HWN
627 * private-options.h: idem.
628
629 * eval.i.c: copyright nitpicking.
630
0ee05b85
HWN
631 * eval.c: distangle. move duplicate code to eval.i.c and include
632 twice.
633
634 * eval.i.c: new file.
635
22fc179a
HWN
636 * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
637 eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
638 read.h, stacks.c, symbols.c, throw.c: use private-options.h
639
640 * private-options.h: new file: contain hardcoded option
641 definitions.
642
cb90e2cb
HWN
643 * private-gc.h: add FSF header.
644
62560650
HWN
6452007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
646
72f19c26
HWN
647 * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
648 memoize-symbol is set.
649
650 * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
651
652 * eval.c (CEVAL): add memoize_symbol trap.
653
03347a97
HWN
654 * options.c (scm_options_try): new function. This allows error
655 reporting before changing options in a critical section.
656
b0763985
HWN
657 * srcprop.c: use double cell for storing source-properties. Put
658 filename in the plist, and share between srcprops if possible.
659 Remove specialized storage.
660
661 * srcprop.h: remove macros without SCM_ prefix from
662 interface. Remove specialized storage/type definitions.
663
62560650
HWN
664 * read.c: idem.
665
666 * print.c: idem.
667
668 * eval.c: terminate option lists with 0.
669
670 * options.c: remove n (for length) from scm_option_X
671 functions. Detect option list length by looking for NULL name.
672
42ddb3cb
LC
6732007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
674
675 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
676 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
677 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
678 added by `make-vtable-vtable'. Reported by Marco Maggi.
679
937038e8
HWN
6802007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
681
682 * throw.c (scm_ithrow): more refined error message: print symbols
683 too.
684
23d72566
KR
6852007-01-16 Kevin Ryde <user42@zip.com.au>
686
687 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
688 implementing `set-program-arguments'.
689
690 * filesys.c (scm_init_filesys): Use scm_from_int rather than
691 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
692 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
693 O_LARGEFILE. These are all int not long, per arg to open().
694 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
695 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
696 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
697 an int arg to fcntl.
698
699 * posix.c (scm_putenv): Correction to "len" variable, was defined only
700 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
701 Move it to where it's used. Reported by Hugh Sasse.
702
703 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
704 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
705 meant #\nul in the input (detected by scm_to_locale_string) and a bad
706 flags arg (detected by scm_to_int) would throw from a critical
707 section, causing an abort().
708
709 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
710 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
711 REG_NOTEOL; they're all ints not longs (per args to regcomp and
712 regexec).
713
a2c40dc7
HWN
7142007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
715
716 * throw.c (scm_ithrow): print out key symbol and string arguments
717 when error happens inside a critical section, and document why.
718
391f57e6
HWN
7192007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
720
721 * read.c (s_scm_read_hash_extend): document #f argument to
722 read-hash-extend.
723
23d72566
KR
7242007-01-04 Kevin Ryde <user42@zip.com.au>
725
726 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
727 scm_minor_version, scm_micro_version, scm_effective_version,
728 scm_version, scm_init_version): Use SCM_API instead of just extern,
729 for the benefit of mingw. Reported by Cesar Strauss.
730
93632e3c
HWN
7312007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
732
733 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
734 too.
735 (gc_update_stats): update scm_gc_cells_allocated_acc too.
736
23d72566
KR
7372006-12-27 Kevin Ryde <user42@zip.com.au>
738
739 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
740 the basic scm_get_stack_base. As advised by Nils Durner.
741
742 * threads.c (get_thread_stack_base): Add a version using
743 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
744 As advised by Heikki Lindholm.
745
746 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
747 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
748 Durner.
749
7502006-12-24 Kevin Ryde <user42@zip.com.au>
751
752 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
753 error if pid is not our own process, instead of silently doing nothing.
754
755 * print.c (scm_write, scm_display, scm_write_char): Disable port close
756 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
757 check in configure.in unintentionally enabled it. Believe that
758 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
759 can leave errno in that state. popen.test "no duplicates" output test
760 provoked that.
761
e2bf3b19
HWN
7622006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
763
764 * numbers.c (scm_i_fraction_reduce): move logic into
765 scm_i_make_ratio(), so fractions are only read.
766 scm_i_fraction_reduce() modifies a fraction when reading it. A
767 race condition might lead to fractions being corrupted by reading
768 them concurrently.
769
770 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
771 comparisons between reduced and unreduced fractions go wrong.
772
773 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
774 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
775 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
776 SCM_FRACTION_REDUCED.
777
23d72566
KR
7782006-12-16 Kevin Ryde <user42@zip.com.au>
779
780 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
781 more direct for a procedure called raise.
782 (kill): Remove mingw fake fallback.
783
7842006-12-15 Kevin Ryde <user42@zip.com.au>
785
786 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
787 _pipe on mingw.
788
7892006-12-14 Kevin Ryde <user42@zip.com.au>
790
791 * threads.c (thread_print): Cope with the case where pthread_t is a
792 struct, as found on mingw. Can't just cast to size_t for printing.
793 Reported by Nils Durner.
794
795 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
796 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
797
7982006-12-13 Kevin Ryde <user42@zip.com.au>
799
800 * eval.c (scm_m_define): Set 'name procedure property on any
801 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
802 procedures with setters as used in srfi-17.
803
804 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
805 linux man page says is a possibility.
806
f30e1bdf
LC
8072006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
808
809 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
42ddb3cb 810 instead of RES (reported by Szavai Gyula). This allows the use of
f30e1bdf
LC
811 negative lower bounds.
812 (scm_i_read_array): Make sure LEN is non-negative (reported by
42ddb3cb 813 Szavai Gyula).
f30e1bdf
LC
814
815 (scm_array_in_bounds_p): Iterate over S instead of always
816 comparing indices with the bounds of S[0]. This fixes
817 `array-in-bounds?' for arrays with a rank greater than one and
818 with different lower bounds for each dimension.
819
23d72566
KR
8202006-12-05 Kevin Ryde <user42@zip.com.au>
821
822 * numbers.c (scm_product): For flonum*inum and complex*inum, return
823 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
824 and as per R5RS section "Exactness".
825
8262006-12-03 Kevin Ryde <user42@zip.com.au>
827
828 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
829 allow $AWK from the environment to override. It had syntax gremlins,
830 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
831 Makefile stopped it having any effect. Use just $(AWK), which can be
832 overridden with "make AWK=xxx" in the usual way if desired.
833
22be72d3
LC
8342006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
835
836 * libguile/vectors.c (scm_vector_to_list): Fixed list
837 construction: elements were not copied when INC is zero (see
838 "shared array" example in `vectors.test'). Reported by
839 Szavai Gyula.
840
b89c4943
LC
8412006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
842
843 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
844 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
845 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
846 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
847 (DOT_X_FILES): Added `gettext.x'.
848 (DOT_DOC_FILES): Likewise.
849 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
850 (modinclude_HEADERS): Added `gettext.h'.
851 (EXTRA_DIST): Added `libgettext.h'.
852
853 * gettext.h: Renamed to...
854 * libgettext.h: New file.
855
856 * i18n.c: Renamed to...
857 * gettext.c: New file.
858
859 * i18n.h: Renamed to...
860 * gettext.h: New file.
861
862 * i18n.c, i18n.h, locale-categories.h: New files.
863
864 * init.c: Include "libguile/gettext.h" instead of
865 "libguile/i18n.h".
866 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
867 `scm_init_i18n ()'.
868
869 * posix.c: Include "libguile/gettext.h" instead of
870 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
871 (USE_GNU_LOCALE_API): New macro.
872 (scm_i_locale_mutex): New variable.
873 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
874
875 * posix.h: Include "libguile/threads.h".
876 (scm_i_locale_mutex): New declaration.
877
f3e3f530
NJ
8782006-11-17 Neil Jerram <neil@ossau.uklinux.net>
879
880 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
881
d9f71a07
LC
8822006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
883
884 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
885 "sweep_stats" arguments; use them instead of accessing the global
886 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
887
888 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
889 before each iteration of the loop.
890 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
891 (scm_i_get_new_heap_segment): Take an additional argument
892 SWEEP_STATS. Compute MIN_CELLS as a function of it.
893
894 * libguile/gc.c (scm_gc_cells_collected,
895 scm_gc_cells_collected_1): Removed.
896 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
897 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
898 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
899 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
900 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
901 `scm_gc_cells_(collected|swept)'.
902 (gc_update_stats): New.
903 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
904 `scm_i_gc_sweep_stats_1' instead of the former globals.
905 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
906 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
907 would keep allocating new segments instead of re-using collected
908 cells (because `scm_gc_cells_collected' would remain zero).
909
910 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
911 scm_gc_cell_yield_percentage): Removed.
912
913 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
914 (scm_i_adjust_min_yield): Updated.
915 (scm_i_get_new_heap_segment): Updated.
916
dd18d312
NJ
9172006-11-02 Neil Jerram <neil@ossau.uklinux.net>
918
919 * modules.c: Correct comment saying that low-level environments
920 will be used "in the next release".
921
922 * init.c: Comment out #include of environments.h.
923 (scm_i_init_guile): Comment out scm_environments_prehistory() and
924 scm_init_environments() calls.
925
926 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
927 (DOT_X_FILES): Remove environments.x.
928 (DOT_DOC_FILES): Remove environments.doc.
929 (modinclude_HEADERS): Remove environments.h.
930
9a5fa6e9
NJ
9312006-10-25 Neil Jerram <neil@ossau.uklinux.net>
932
933 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
934
935 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
936 scm_ia64_register_backing_store_base() instead of Linux-specific
937 implementations.
938
939 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
940 New declarations.
941
942 * gc.c (__libc_ia64_register_backing_store_base): Declaration
943 removed.
944 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
945 implementations for Linux and HP-UX.
946
947 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
948 and scm_ia64_register_backing_store_base() instead of
949 Linux-specific implementations.
950
951 * continuations.h (__libc_ia64_register_backing_store_base):
952 Declaration removed.
953 (scm_t_contregs): New "fresh" field.
954
955 * continuations.c (ia64_getcontext): Removed.
956 (scm_make_continuation): Use continuation fresh field instead of
957 interpreting getcontext return values (which isn't portable). Use
958 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
959 instead of Linux-specific implementations.
960 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
961 instead of Linux-specific implementation.
962
963 * _scm.h (__ia64__): Also detect __ia64.
964
8ab3d8a0
KR
9652006-10-03 Kevin Ryde <user42@zip.com.au>
966
967 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
968 arguments or 3 or more arguments. Previously 0 called proc with
969 SCM_UNDEFINED, and 3 or more silently used just the first 2.
970
9712006-09-28 Kevin Ryde <user42@zip.com.au>
972
973 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
974 for chsize fallback, instead of hard-coding mingw. Mingw in fact
975 supplies ftruncate itself these days.
976
977 * ports.c (fcntl.h): Can include this unconditionally, no need for
978 __MINGW32__.
979
980 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
981 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
982 "off_t" for parameters, per usual definition of this function, rather
983 than "char *" and "int". Use ftruncate instead of chsize. Check for
984 error on final close.
985
9862006-09-27 Kevin Ryde <user42@zip.com.au>
987
988 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
989 in mingw.
990
991 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
992 const *" for mingw to suppress warnings from gcc (which are errors
993 under the configure default -Werror). Reported by Nils Durner.
994
9952006-09-26 Kevin Ryde <user42@zip.com.au>
996
997 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
998 * fports.c (scm_open_file): Use open_or_open64.
999 (fport_seek_or_seek64): New function, adapting fport_seek.
1000 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
1001 functions.
1002 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
1003 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
1004
1005 * ports.c (scm_truncate_file): Update docstring per manual.
1006
10072006-09-23 Kevin Ryde <user42@zip.com.au>
1008
1009 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
1010 functions.
1011
9a5fa6e9 10122006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
a17d2654
LC
1013
1014 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
1015 (make_predset, define_predset, make_strset, define_strset, false,
1016 true): Removed.
1017 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
1018 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
1019 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
1020 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
1021 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
1022 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
1023 (define_charset, scm_srfi_14_compute_char_sets): New functions.
1024 (scm_init_srfi_14): Use `define_charset ()' instead of
1025 `define_predset ()' and `define_strset ()'.
1026
1027 * srfi-14.h (scm_c_init_srfi_14): Removed.
1028 (scm_srfi_14_compute_char_sets): New declaration.
1029
1030 * posix.h: Include "srfi-14.h".
1031 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
1032 successful `setlocale ()' call.
1033
8ab3d8a0
KR
10342006-09-08 Kevin Ryde <user42@zip.com.au>
1035
1036 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
1037 (scm_recvfrom): Update docstring from manual.
1038
418122ce
RB
10392006-08-31 Rob Browning <rlb@defaultvalue.org>
1040
1041 * ports.c (scm_c_port_for_each): Add a
1042 scm_remember_upto_here_1(ports) at the end of the function to fix
1043 a GC bug.
1044
b5944f66
NJ
10452006-08-28 Neil Jerram <neil@ossau.uklinux.net>
1046
1047 * backtrace.c (scm_display_backtrace_with_highlights): Minor
1048 improvements to docstring.
1049 (scm_backtrace_with_highlights): Analogous improvements.
1050
8ab3d8a0
KR
10512006-08-12 Kevin Ryde <user42@zip.com.au>
1052
1053 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
1054 New, set from configure.
1055 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
1056 to scmconfig.h.
1057 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
1058 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
1059 Reported by Claes Wallin.
1060
b0b0deff
NJ
10612006-08-11 Neil Jerram <neil@ossau.uklinux.net>
1062
1063 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
1064 frame, not a stack).
1065
8ab3d8a0
KR
10662006-07-25 Kevin Ryde <user42@zip.com.au>
1067
1068 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
1069 on pthreads version, since pthread_getattr_np not available on solaris
1070 and macos. Reported by Claes Wallin.
1071
10722006-07-24 Kevin Ryde <user42@zip.com.au>
1073
1074 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
1075 it's a macro on MacOS X. Reported by Claes Wallin.
1076
1077 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
1078 for the benefit of Solaris 10. Reported by Claes Wallin.
1079
1080 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
1081 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
1082
10832006-07-21 Kevin Ryde <user42@zip.com.au>
1084
1085 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
1086 autoconf recommendation. Should fix Solaris 10 reported by Claes
1087 Wallin.
1088
1089 * threads.c: Include <string.h>, needed for memset() which is used by
1090 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
1091
b4912378
RB
10922006-07-18 Rob Browning <rlb@defaultvalue.org>
1093
1094 * continuations.c: Add __attribute__ ((returns_twice)) to the
1095 ia64_getcontext prototype so that gcc will make the right
1096 arrangements and avoid an illegal instruction during
1097 call-with-current-continuation.
1098
9a5fa6e9 10992006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
eaa94eaa
LC
1100
1101 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
1102 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
1103
8ab3d8a0
KR
11042006-07-08 Kevin Ryde <user42@zip.com.au>
1105
1106 * environments.c (core_environments_unobserve): Use if/else rather
1107 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
1108 about them not being rvalues. Reported by Mike Gran.
1109
1110 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
1111 portable and in particular fails on OpenBSD and AIX (see autoconf
1112 manual too). Reported by Mike Gran.
1113
11142006-06-25 Kevin Ryde <user42@zip.com.au>
1115
1116 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
1117 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
1118 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
1119 HAVE_TM_ZONE.
1120 (scm_strptime): Use tm_gmtoff from the strptime result when that field
1121 exists, it's set by glibc strptime "%s".
1122
9a5fa6e9 11232006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
d15ad007
LC
1124
1125 * eq.c: Include "struct.h", "goops.h" and "objects.h".
1126 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
1127 are not GOOPS instances.
1128 * struct.c: Include "eq.h".
1129 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
1130 hand-written code.
1131 (scm_i_struct_equalp): New.
1132 * struct.h (scm_i_struct_equalp): New declaration.
1133
c862d0e0
KR
11342006-06-06 Kevin Ryde <user42@zip.com.au>
1135
1136 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
1137 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
1138 reported by Mattias Holm.
b4912378 1139
c862d0e0
KR
11402006-06-03 Kevin Ryde <user42@zip.com.au>
1141
1142 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
1143 unused variable warning when elisp disabled. Reported by Ryan
1144 VanderBijl.
1145
1146 * throw.c (scm_handle_by_message): Add dummy return value to avoid
1147 compiler warning on cygwin. Reported by Ryan VanderBijl.
1148
1149 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
1150 duplicate of EXTRA_DOT_DOC_FILES.
1151 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
1152 Add scmconfig.h to dependencies, since these all run cpp. Helps a
1153 parallel "make -j2". Reported by Mattias Holm.
1154
11552006-05-30 Kevin Ryde <user42@zip.com.au>
1156
1157 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
1158 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
1159 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
1160 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
1161 port type descriptor, same as scm_make_port_type return value.
1162
af4f8612
MV
11632006-05-30 Marius Vollmer <mvo@zagadka.de>
1164
1165 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
1166 of the arguments is a array. This allows vectors to be equal to
1167 one-dimensional arrays.
1168
18bffcd0
MV
11692006-05-29 Marius Vollmer <mvo@zagadka.de>
1170
1171 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
1172 that we have a pair before accessing its cdr. Thanks to Bill
1173 Schottstaedt!
1174
c862d0e0
KR
11752006-05-28 Kevin Ryde <user42@zip.com.au>
1176
1177 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
1178 by "The Senator".
1179
11802006-05-27 Marius Vollmer <mvo@zagadka.de>
b0c0a310
MV
1181
1182 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
1183 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
1184
c862d0e0
KR
11852006-05-26 Kevin Ryde <user42@zip.com.au>
1186
1187 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
1188 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
1189 Reported by "The Senator".
1190 For select and ioctl, move fdes into those conditionals, to avoid
1191 unused variable warning when neither of those used.
1192
11932006-05-23 Kevin Ryde <user42@zip.com.au>
1194
1195 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
1196 It's unused and will be in stdio.h anyway (if it's anywhere).
1197
11982006-05-20 Kevin Ryde <user42@zip.com.au>
1199
1200 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
1201 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
1202
1203 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
1204 symlink). Probably can't create symlinks with mknod anyway though.
1205
1206 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
1207 generation.
1208
12092006-05-15 Kevin Ryde <user42@zip.com.au>
1210
1211 * simpos.c, simpos.h (scm_primitive__exit): New function.
1212 (scm_primitive_exit): Update docstring, no longer the best exit after
1213 a fork.
1214
12152006-05-09 Kevin Ryde <user42@zip.com.au>
1216
1217 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
1218 rather than converting to doubles, to avoid inf or nan when the inputs
1219 are too big for a double but the quotient does fit. This affects
1220 conversions exact->inexact of big fractions.
1221
1222 * filesys.c (scm_open_fdes): Use open64.
1223 (scm_init_filesys): Add O_LARGEFILE.
1224
1225 * ports.c (scm_seek): Use lseek64.
1226 (scm_truncate_file): Use ftruncate64.
1227
4a342b19
MV
12282006-05-08 Marius Vollmer <mvo@zagadka.de>
1229
1230 * private-gc.h (CELL_P): Also check that the potential pointer is
1231 correctly aligned for a cell. Thanks to Miroslav Lichvar!
1232
c862d0e0
KR
12332006-04-18 Rob Browning <rlb@defaultvalue.org>
1234
1235 * _scm.h: Add back error if the size of off_t is unknown. The bug
1236 was actually in guile-readline's configuration.
1237
12382006-04-18 Kevin Ryde <user42@zip.com.au>
1239
1240 * posix.c (scm_mkstemp): Update docstring from the manual, in
1241 particular file mode 0600 is not guaranteed.
1242
281ab5e2
KR
12432006-04-17 Kevin Ryde <user42@zip.com.au>
1244
1245 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
1246 size, to help the guile-readline build where off_t is unused.
1247
2b829bbb
KR
12482006-04-16 Kevin Ryde <user42@zip.com.au>
1249
1250 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
1251 (scm_readdir): Use readdir64.
1252 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
1253 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
1254 and ftruncate take off_t not size_t.
1255 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
1256 available.
1257
12582006-04-06 Kevin Ryde <user42@zip.com.au>
1259
1260 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
9a5fa6e9 1261 instead of toggling it. Reported by Ludovic Courtès.
2b829bbb
KR
1262
12632006-03-26 Marius Vollmer <mvo@zagadka.de>
1264
1265 * threads.c (get_thread_stack_base): Use scm_get_stack_base
1266 instead of accessing __libc_stack_end directly, and only do this
1267 when pthread_attr_getstack is known not to work for the main
1268 thread or when not using pthreads at all.
1269
1270 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
1271 unknown instead of returning NULL.
1272
9a5fa6e9 12732006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1274
1275 * numbers.c (scm_i_mem2number): Renamed to
1276 scm_c_locale_stringn_to_number.
1277 * numbers.c, print.c, read.c: Updated callers.
1278 * numbers.h: Update function declaration.
1279
12802006-03-11 Neil Jerram <neil@ossau.uklinux.net>
1281
1282 * unif.c (string_set): Don't return in a void function. (Reported
1283 by Mike Gran.)
1284
1285 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
1286 rather than void*, so we can do pointer arithmetic on it.
1287 (Reported by Mike Gran.)
1288 (s_scm_uniform_vector_write): Ditto.
1289
12902006-03-10 Neil Jerram <neil@ossau.uklinux.net>
1291
1292 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
1293 oldra is not an array. (Reported by Steve Juranich.)
1294
1295 * threads.c (do_unlock): Renamed from "unlock", which is defined
1296 in unistd.h on QNX. (Reported by Matt Kraai.)
1297
12982006-03-04 Kevin Ryde <user42@zip.com.au>
1299
1300 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
1301 not SCM_CRITICAL_SECTION_START.
1302
1303 * eval.c, posix.c: Change comments from C++ to C style. Reported by
1304 Mike Gran.
1305
13062006-02-28 Kevin Ryde <user42@zip.com.au>
1307
1308 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
1309
13102006-02-26 Kevin Ryde <user42@zip.com.au>
1311
1312 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
1313 NAME_MAX is not available, which is so on Solaris 10. Report and help
1314 by Bill Schottstaedt.
1315
1316 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
1317 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
1318 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
1319 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
1320 use "unsigned char", not signed char. This ensures comparisons are
1321 the same as `char<?' etc, and is also the same as guile 1.6 did.
1322 Reported by Sven Hartrumpf.
1323
4a9f83ff
MD
13242006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
1325
1326 * random.c: Test for SCM_HAVE_T_UINT64 instead of
1327 SCM_HAVE_T_INT64.
1328 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
1329 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
1330 scm_t_int32.
1331
29d8c124 13322006-01-04 Ludovic Courtès <ludovic.courtes@laas.fr>
4c7016dc
HWN
1333
1334 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
1335 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
1336 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
1337 Take into account SEG->SPAN when computing CELLS_SWEPT.
1338 (scm_i_sweep_segment): Take one more argument, similarly.
1339 (scm_i_sweep_all_segments): Likewise.
1340 (scm_i_sweep_some_segments): Likewise.
1341 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
1342 refer to SCM_GC_CELLS_COLLECTED.
1343
1344 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
1345 argument, an `scm_i_sweep_statistics' object.
1346 Change the way DELTA is collected: don't take into account
1347 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
1348
1349 * gc-malloc.c (scm_realloc): Pass an extra argument
1350 to `scm_i_sweep_all_segments ()'.
1351
1352 * gc.c (gc_start_stats): Updated accordingly.
1353 (gc_end_stats): Take an additional SWEEP_STATS argument.
1354 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
1355 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
1356 Decrement SCM_CELLS_ALLOCATED.
1357 (scm_i_gc): Likewise.
1358
1359 * private-gc.h (scm_i_sweep_*): Updated function
1360 prototypes accordingly.
1361 (scm_t_sweep_statistics): New type.
1362 (scm_i_sweep_statistics_init): New macro.
1363 (scm_i_sweep_statistics_sum): New macro
1364
9a5fa6e9 13652006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1366
1367 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
1368 LEN. Without this, too much collectable memory gets unregistered,
1369 which results in an underflow of SCM_MALLOCATED in
1370 `decrease_mtrigger()'.
1371
1372 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
1373 equal to SCM_MALLOCATED.
1374
13752006-02-13 Marius Vollmer <mvo@zagadka.de>
1376
1377 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
1378 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
1379 configured --without-threads.
1380 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
1381
1aaa1c17
MV
13822006-02-12 Marius Vollmer <mvo@zagadka.de>
1383
1384 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
1385 filling when the fill parameter is omitted, as documented, but
1386 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
1387 can not store characters.
1388
d7c6575f
NJ
13892006-02-09 Neil Jerram <neil@ossau.uklinux.net>
1390
1391 * socket.c (scm_c_make_socket_address): Pass address_size pointer
1392 on to scm_fill_sockaddr call.
1393
43e01b1e
NJ
13942006-02-04 Neil Jerram <neil@ossau.uklinux.net>
1395
1396 * throw.h (scm_c_catch, scm_c_with_throw_handler,
1397 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
1398
1399 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
1400 (struct pre_unwind_data): New, replaces struct lazy_catch.
1401 (scm_c_catch): New, replaces scm_internal_catch as the primary
1402 catch API for C code; adds pre-unwind handler support.
1403 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
1404 compatibility.
1405 (tc16_pre_unwind_data, pre_unwind_data_print,
1406 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
1407 "lazy_catch" equivalents.
1408 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
1409 as the primary C API for a "lazy" catch.
1410 (scm_internal_lazy_catch): Now just a wrapper for
1411 scm_c_with_throw_handler, for back compatibility.
1412 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
1413 pre-unwind handler support.
1414 (scm_catch): Now just a wrapper for
1415 scm_catch_with_pre_unwind_handler, for back compatibility.
1416 (scm_with_throw_handler): New.
1417 (scm_lazy_catch): Update comment to say that the handler can
1418 return, and what happens if it does.
1419 (toggle_pre_unwind_running): New.
1420 (scm_ithrow): When identifying the throw target, take running
1421 flags into account. In general, change naming of things from
1422 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
1423 don't unwind the dynamic context first. Add dynwind framing to
1424 manage the running flag of a throw handler. If a lazy catch or
1425 throw handler returns, rethrow the same exception again. Add
1426 pre-unwind support to the normal catch case (SCM_JMPBUFP).
1427
1428 * root.c (scm_internal_cwdr): Add NULL args to
1429 scm_i_with_continuation_barrier call.
1430
1431 * dynwind.c: Change comment mentioning lazy-catch to mention
1432 pre-unwind data and throw handler also.
1433
1434 * continuations.h (scm_i_with_continuation_barrier): Add
1435 pre-unwind handler args.
1436
1437 * continuations.c (scm_i_with_continuation_barrier): Add
1438 pre-unwind handler args, and pass on to scm_c_catch (changed from
1439 scm_internal_catch).
1440 (c_handler): Remove scm_handle_by_message_noexit call.
1441 (scm_c_with_continuation_barrier): Call
1442 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1443 as the pre-unwind handler.
1444 (scm_handler): Remove scm_handle_by_message_noexit call.
1445 (s_scm_with_continuation_barrier): Call
1446 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1447 as the pre-unwind handler.
1448
2b829bbb
KR
14492006-02-04 Kevin Ryde <user42@zip.com.au>
1450
1451 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
1452
72098928
KR
14532006-02-03 Kevin Ryde <user42@zip.com.au>
1454
1455 * list.c, list.h (scm_list): Restore this function for use from C.
1456 It's a complete no-op but in theory might used by someone.
1457
aa092c5d
MV
14582006-01-30 Marius Vollmer <mvo@zagadka.de>
1459
1460 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
1461 so that it gets unlocked in all cases.
1462 (SCM_APPLY, CEVAL): Likewise.
1463
661ae7ab
MV
14642006-01-29 Marius Vollmer <mvo@zagadka.de>
1465
ee51ba31
MV
1466 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
1467 scm_is_typed_array instead.
1468
661ae7ab
MV
1469 Renamed the "frames" that are related to dynamic-wind to "dynamic
1470 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
1471 Updated documentation.
1472
99e370f6
MV
1473 Disabled "futures":
1474
1475 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
1476 * eval.c, init.c: Comment out all 'future' related things.
1477
15ccf10b
MV
14782006-01-28 Marius Vollmer <mvo@zagadka.de>
1479
1480 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
1481 to inline.h to make it inline.
1482
9a5fa6e9 14832005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
fd0a5bbc
HWN
1484
1485 * strings.c (scm_i_take_stringbufn): New.
1486 (scm_i_c_take_symbol): New.
1487 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
1488
1489 * strings.h (scm_i_c_take_symbol): New.
1490 (scm_i_take_stringbufn): New.
1491
1492 * symbols.c (lookup_interned_symbol): New function.
1493 (scm_i_c_mem2symbol): New function.
1494 (scm_i_mem2symbol): Use `lookup_symbol ()'.
1495 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
1496 creating a new Scheme string.
1497 (scm_from_locale_symboln): Likewise.
1498 (scm_take_locale_symbol): New.
1499 (scm_take_locale_symboln): New.
1500
1501 * symbols.h (scm_take_locale_symbol): New.
1502 (scm_take_locale_symboln): New.
1503
2ca2ffe6
HWN
15042006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1505
1506 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
1507 free_count.
1508
c255614e
HWN
15092005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
1510
1511 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
1512 upon error
1513
29295b0c
NJ
15142005-12-29 Neil Jerram <neil@ossau.uklinux.net>
1515
9a5fa6e9 1516 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
29295b0c
NJ
1517 the GC when allocated_fluids_len is zero.
1518
2824f4dc
NJ
15192005-12-14 Neil Jerram <neil@ossau.uklinux.net>
1520
ec3a8ace
NJ
1521 * load.c (the_reader, the_reader_fluid_num): New.
1522 (scm_primitive_load): Support custom reader.
1523 (scm_init_load): Init the_reader and the_reader_fluid_num; export
1524 the_reader as `current-reader'.
1525
2824f4dc
NJ
1526 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
1527 (rather than an uninitialized pointer on the stack).
1528
d9c36d2a
MV
15292005-12-07 Marius Vollmer <mvo@zagadka.de>
1530
6a88895b
MV
1531 Reported by Bruce Korb:
1532
1533 * init.c (invoke_main_func): Don't call exit here. Throws that
1534 are only caught by scm_with_guile will bypass us and would cause
1535 scm_boot_guile to return erroneously.
1536 (scm_boot_guile): Expect scm_with_guile to return and call exit
1537 here, passing it an appropriate exit code.
1538
1539 From Andy Wingo:
d9c36d2a
MV
1540
1541 * script.c (scm_find_executable): Compile fix -- fgetc returns an
1542 unsigned char cast to an int, or -1 for EOS.
1543
b54df254
MV
15442005-12-06 Marius Vollmer <mvo@zagadka.de>
1545
08f489c9
MV
1546 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
1547 non-const.
9a5fa6e9 1548 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
08f489c9 1549
b54df254
MV
1550 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
1551 scm_enter_guile): Removed from public API. See comment at
1552 scm_without_guile for the rationale.
1553
1554 * scmsigs.c (read_without_guile): New.
1555 (signal_delivery_thread): Use it instead of
1556 scm_leave_guile/read/scm_enter_guile.
1557
9d9ce2b5
MV
1558 From Stephen Compall:
1559
1560 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
1561 (CEVAL): Evaluate SRFI 61 cond clauses.
1562
9a5fa6e9 15632005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
9fb5c8f9
NJ
1564
1565 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
1566 This was typically hit when running `gc-live-object-stats' right
1567 after starting Guile.
1568
efeac8ae
KR
15692005-11-30 Kevin Ryde <user42@zip.com.au>
1570
1571 * srfi-13.c (scm_string_append_shared): No copying if just one
1572 non-empty string in args.
1573
606183ba
KR
15742005-11-26 Kevin Ryde <user42@zip.com.au>
1575
1576 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
9a5fa6e9 1577 by Ludovic Courtès.
606183ba
KR
1578
1579 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
1580 "register".
1581
1582 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
1583 scm_malloc returning NULL, it never does that.
1584 * putenv.c (putenv): Likewise.
1585
1586 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
1587 much too big to want to inline.
1588
9a5fa6e9 15892005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
dbb5de29
NJ
1590
1591 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
1592 the value at its top. This fixes a reference leak.
1593 (PUSH_REF): Perform `pstate->top++' after calling
1594 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
1595 effects.
1596
9a5fa6e9 15972005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
3f98874a
NJ
1598
1599 * gc.c (scm_weak_vectors): Removed.
1600
f07d2b20
KR
16012005-11-12 Kevin Ryde <user42@zip.com.au>
1602
1603 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
9a5fa6e9 1604 by Ludovic Courtès.
f07d2b20 1605
bedd3f5f
MV
16062005-11-07 Marius Vollmer <mvo@zagadka.de>
1607
1608 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
1609 SCM_CRITICAL_SECTION_START/END since the code inside the critical
1610 section might exit non-locally.
1611
7c9c0169
NJ
16122005-11-04 Neil Jerram <neil@ossau.uklinux.net>
1613
1614 * eval.c (sym_instead): New symbol.
1615 (ENTER_APPLY): Remove optional use of a continuation when making
1616 trap call.
1617 (scm_debug_opts): Change doc for 'cheap option to make clear that
1618 it is now obsolete.
1619 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
1620 making trap calls, and implement substitution of eval expressions
1621 and return values using the values that the trap call handlers
1622 return.
1623
1624 * debug.h (SCM_CHEAPTRAPS_P): Removed.
1625
9a5fa6e9 16262005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
64cdbfc7
KR
1627
1628 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
1629 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
1630 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
1631 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
1632 scm_c_make_socket_address): New functions.
1633 * socket.h: Add prototypes.
1634
fc9f596c
KR
16352005-10-24 Kevin Ryde <user42@zip.com.au>
1636
1637 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
1638 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
1639 POSIX spec examples, the latter are not available on for instance
1640 NetBSD.
1641
1642 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
1643 posix.texi.
1644
1645 * stime.c (scm_strftime): Update docstring from posix.texi.
1646
0460c6e1
MV
16472005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1648
1649 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
1650
1651 * null-threads.h, pthread-threads.h
1652 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
1653 (scm_i_pthread_mutexattr_recursive): New.
1654
1655 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
1656 (scm_i_critical_section_mutex): Do not initialize statically.
1657 (scm_threads_prehistory): Initialize
1658 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
1659 here.
1660
1661 * eval.c (source_mutex): Do not initialiaze statically.
1662 (scm_init_eval): Do it here, using
1663 scm_i_pthread_mutexattr_recursive.
1664
7b4a9e52
MV
16652005-09-05 Marius Vollmer <mvo@zagadka.de>
1666
1667 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
1668 New.
1669 (sym_reader): New.
1670 (scm_print_opts): Added "quote-keywordish-symbols" option.
1671 (quote_keywordish_symbol): New, for evaluating the option.
1672 (scm_print_symbol_name): Use it.
1673 (scm_init_print): Initialize new option to sym_reader.
1674
5defc05d
NJ
16752005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1676
1677 * eval.c (eval_letrec_inits): New.
1678 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1679
036482e9
MV
16802005-08-12 Marius Vollmer <mvo@zagadka.de>
1681
1682 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1683 Peter Gavin!
1684
5c347f8c
KR
16852005-08-12 Kevin Ryde <user42@zip.com.au>
1686
1687 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1688
bc721aa2
KR
16892005-08-06 Kevin Ryde <user42@zip.com.au>
1690
1691 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1692 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1693 scm_string_index, scm_string_index_right, scm_string_skip,
1694 scm_string_skip_right, scm_string_count, scm_string_map,
1695 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1696 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1697 procedures called in loops.
1698
126c81db
KR
16992005-08-02 Kevin Ryde <user42@zip.com.au>
1700
1701 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1702 avoid lots of copying where previoulsy growing by only 80 bytes at a
1703 time.
1704
7f278dc6
MV
17052005-08-01 Marius Vollmer <mvo@zagadka.de>
1706
1707 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1708 already have scm_lookup_closure_module, which does the same thing.
1709
cb5c4b07
MV
17102005-08-01 Marius Vollmer <mvo@zagadka.de>
1711
1712 New marking algorithm for weak hashtables that fixes the problem
1713 that references from the non-weak value to the associated weak
1714 key (for example) would prevent the entry from ever being dropped.
1715
1716 Guardians have been changed back to their original semantics and
1717 are no longer greedy and no longer drop cycles.
1718
1719 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1720 hashtable and guardian machinery but call the relevant functions
1721 directly.
1722
1723 * guardians.h, guardians.c, deprecated.h,
1724 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1725 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1726 Deprecated and moved into deprecated.[ch].
1727
1728 * guardians.h, guardians.c: Mostly rewritten.
1729 (scm_i_init_guardians_for_gc,
1730 scm_i_identify_inaccessible_guardeds,
1731 scm_i_mark_inaccessible_guardeds): New.
930888e8 1732 (scm_make_guardian): Removed greedy_p argument.
cb5c4b07
MV
1733
1734 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1735 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1736 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1737 (scm_weaks_prehistory): Removed.
1738 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1739 scm_i_mark_weak_vectors_non_weaks,
1740 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1741 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1742 scm_scan_weak_vectors): Removed.
1743
1744 * hashtab.h (scm_i_scan_weak_hashtables): New.
1745 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1746 SCM_WVECTF_NOSCAN.
1747 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1748 t->n_items.
1749 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1750 to latter. Do not scan the alists themselves, this is done by the
1751 weak vector code now. Just update the element count.
1752
1753 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1754 to latter. The type is now only part of the cell word.
1755 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1756
1757 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1758
3e2073bd
MD
17592005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1760
1761 Some changes towards making it possible to run Guile on the EM64T
1762 platform.
1763
1764 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1765 mallocating for (unsigned long *bounds).
1766
1767 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1768 scm_t_bits before storing them in the type word.
1769
1770 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1771 scm_t_bits to int.
1772
e8ac8e75
KR
17732005-07-12 Kevin Ryde <user42@zip.com.au>
1774
1775 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1776 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1777 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1778 than scm_makfrom0str.
1779 Reported by Ken Raeburn.
1780
1781 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1782 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1783 returning SCM_GC_CARD_BVEC.
1784
1785 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1786 rather than latin-1 acute accent, the latter may not print on all
1787 terminals.
1788
1789 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1790 trailing deletions, so as to return a substring if those are the only
1791 changes.
1792
adc0677d
KR
17932005-07-10 Kevin Ryde <user42@zip.com.au>
1794
1795 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1796 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1797 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1798 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1799
8fecbb19
HWN
18002005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1801
1802 * gc-card.c (scm_i_card_statistics): init tag.
1803
1804 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1805
fc9c5d06
HWN
18062005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1807
8fecbb19
HWN
1808 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1809 string.
fc9c5d06 1810
08fce816
KR
18112005-06-25 Kevin Ryde <user42@zip.com.au>
1812
1813 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1814 last change, use plain copy-on-write substrings, the individual
1815 descriptions in the srfi don't mention shared storage (only the
1816 introduction does).
1817
1818 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1819 null-terminator, rather than mallocing a whole new block.
1820 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1821
fc4abd0e
MV
18222005-06-12 Marius Vollmer <mvo@zagadka.de>
1823
e3da8a30
MV
1824 * ramap.c (scm_array_index_map_x): First test for real arrays,
1825 then check for generalized vectors. This ensures that the
1826 generalized vector case need only work with zero-origin ranges.
12097c77
MV
1827 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1828 to access the target array, making these functions work with all
1829 kinds of arrays, not just bit arrays.
e3da8a30 1830
fc4abd0e
MV
1831 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1832 gh_list.c, gh_predicates.c: Deprecated everything.
1833
1834 * environments.c (environment_default_folder,
1835 environment_default_observer): Do not use gh_call3, gh_call1.
1836
e4da0740
HWN
18372005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1838
1839 * modules.c (s_scm_eval_closure_module): new function. Return the
1840 module inside an eval-closure.
1841
1842 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
1843 table. This means that procedure properties are GC'd if the
1844 procedure dies.
1845
27667158
KR
18462005-06-11 Kevin Ryde <user42@zip.com.au>
1847
1848 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
1849 charset cases, count chars kept and build a string in a second pass,
1850 rather than using a cons cell for every char kept. Use a shared
1851 substring when nothing removed (such sharing is allowed by the srfi).
1852
8a00ba71
HWN
18532005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
1854
1855 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
1856 string, so live object stats can be sorted with string<?.
1857
a677679f
MV
18582005-06-06 Marius Vollmer <mvo@zagadka.de>
1859
2ff668b0
MV
1860 * print.c (iprin1): When writing a string, collect all characters
1861 that can be printed directly into one call to scm_lfwrite.
1862 Previously, every character was output with its own call to
1863 write(2) on unbuffered ports.
1864
589f22f6
MV
1865 * eval.c (scm_eval_options_interface): Use
1866 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
1867 and SCM_CRITICAL_SECTION_END.
1868
a677679f
MV
1869 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
1870 check for generalized vectors. This ensures that the generalized
1871 vector case need only work with zero-origin ranges.
1872
f8cda9ee
KR
18732005-06-06 Kevin Ryde <user42@zip.com.au>
1874
1875 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
1876 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
1877 matched.
1878
cdac1be4
MV
18792005-06-05 Marius Vollmer <mvo@zagadka.de>
1880
6642f7ac
MV
1881 * eval.c: Added comment on how to make case 1.1 of
1882 r5rs_pitfall.test succeed.
1883
cdac1be4
MV
1884 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
1885
1886 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
1887
1888 * socket.c: Remove obsolete comment about socklen_t.
1889 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
1890
1891 * numbers.h (isnan)[__MINGW32__]: Remove.
1892
1893 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
1894 DEFAULT_INCLUDES when cross compiling.
1895
1896 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
1897
a677679f 1898 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
cdac1be4
MV
1899 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
1900 from Jan's patch.)
1901
9e664475
MV
19022005-05-22 Marius Vollmer <mvo@zagadka.de>
1903
188d0c5e
MV
1904 * unif.c (scm_make_shared_array): Add old base to new base since
1905 scm_array_handle_pos does not include the base.
1906 (scm_aind): Likewise.
1907
9e664475
MV
1908 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
1909 output port.
1910
5a6d139b
NJ
19112005-05-12 Neil Jerram <neil@ossau.uklinux.net>
1912
1913 Mac OS X compile warning fixes, reported by Richard Todd.
1914
1915 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
1916 that it is signed.
1917
1918 * strports.c (st_resize_port): Add unsigned char cast.
1919 (scm_mkstrport): Make read/write_buf cast unsigned.
1920
1921 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
1922
1923 * rdelim.c (scm_read_line): Initialize slen.
1924
1925 * load.c (scm_search_path): Remove weird >=1, and add
1926 parentheses to clarify conditions.
1927
1928 * hash.c (scm_hasher): Add const unsigned char cast.
1929
1930 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
1931
b01532af
NJ
19322005-05-11 Neil Jerram <neil@ossau.uklinux.net>
1933
9a5fa6e9 1934 Fix C99isms reported by Ludovic Courtès:
b01532af
NJ
1935
1936 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
1937 code.
1938
1939 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
1940 of code.
1941
1942 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
1943 of code.
1944 (scm_i_card_statistics): Add block for declarations of tag_as_scm
1945 and current.
1946
229a0710
NJ
19472005-05-10 Neil Jerram <neil@ossau.uklinux.net>
1948
1949 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
1950 compile warning reported by Werner Scheinast.
1951
645dd3fc
HWN
19522005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
1953
80038021
HWN
1954 * list.h: remove scm_list()
1955
645dd3fc
HWN
1956 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
1957 SCM_DEBUG_CELL_ACCESSES
1958 (FLUID_NEXT_LOC): idem.
1959
9a68a4a8
KR
19602005-04-30 Kevin Ryde <user42@zip.com.au>
1961
1962 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
1963 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
1964 zero when re==0 and im<0. Reported by Jean Crepeau.
1965
0640cdaa
KR
19662005-04-25 Kevin Ryde <user42@zip.com.au>
1967
1968 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
4d54ee35
KR
1969 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
1970 few sensible uses (like filling with a random number generator say),
1971 but has been allowed in the past and so should be kept.
0640cdaa 1972
c0b85e9c
KR
19732005-04-23 Kevin Ryde <user42@zip.com.au>
1974
1975 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
1976 scm_hash_fn_remove_x.
1977
1978 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
1979 the caller when cons* is reached through apply.
1980
1981 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
1982 list is called using apply, under the debugging evaluator.
1983 (scm_list): Remove.
1984
c51682b4
KR
1985 * list.c, list.h (scm_make_list): New code, moving make-list from
1986 boot-9.scm.
8cb2eff8 1987
c0575bde
KR
19882005-04-14 Kevin Ryde <user42@zip.com.au>
1989
1990 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
1991 converted from scheme code in boot-9.scm.
1992
47a298d9
KR
19932005-04-11 Kevin Ryde <user42@zip.com.au>
1994
1995 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
1996 Validate list argument, scm_string_append and scm_string_append_shared
1997 don't do that to their rest argument (in a normal build).
1998
8ea3dc2e
MV
19992005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2000
2001 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
2002 closure can not be stored since it is no longer valid at GC time.
2003 (make_hash_table): Initialize 'hash_fn' field.
2004 (scm_i_rehash): Only store hash_fn in hash table when closre is
2005 NULL.
2006 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
2007 non-NULL. Always use a NULL closure.
2008 (scm_hash_fn_create_handle_x): Also rehash when table contains too
2009 few entries.
2010
08d2020d
MV
20112005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2012
2013 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
2014 argument; always use scm_delq_x. The delete_fn function works on
2015 the handle, not the key, and it therefore makes no sense to make
2016 it configurable. Changed all callers.
2017 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
2018 (scm_hash_clear): Accept plain vectors as hashtables.
2019 (scm_delx_x): Removed.
2020
cb975c21
HWN
20212005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
2022
2023 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
2024 compatibility with gcc -std=c99.
2025
4c908f2c
MD
20262005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2027
2028 * async.h (scm_mask_ints): Removed left over reference to
2029 scm_root.
2030
2031 * threads.c: Removed fprintf debug statements.
2032
d193b04b
NJ
20332005-03-24 Neil Jerram <neil@ossau.uklinux.net>
2034
2035 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
2036
c29748cd
NJ
20372005-03-23 Neil Jerram <neil@ossau.uklinux.net>
2038
2039 * debug.c (scm_make_memoized): Remove unnecessary critical
2040 section, and simplify by using SCM_RETURN_NEWSMOB.
2041
e654b062
MD
20422005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2043
2044 * strings.h (SCM_STRING_UCHARS): Added missing argument.
2045
4bc6f1c6
KR
20462005-03-18 Kevin Ryde <user42@zip.com.au>
2047
2048 * arbiters.c (FETCH_STORE) [generic C]: Should be
9a5fa6e9 2049 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
4bc6f1c6 2050
f1531813
KR
20512005-03-13 Kevin Ryde <user42@zip.com.au>
2052
2053 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
2054 srfi-60.
2055
2056 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
2057 because OR-ing bits into a negative can reduce the value to an inum.
2058
2059 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
2060 casting inum to double since that can lose precision.
2061
a9fae247
MV
20622005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2063
2064 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
2065 (guilify_self_1): Initialize it.
2066
2067 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
2068 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
2069 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
2070 field.
2071 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
2072 recursively.
2073 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
2074 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
2075 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
2076 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
2077 scm_after_gc_c_hook here.
2078 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
2079 scm_after_gc_c_hook when a full GC has in fact been performed.
2080 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
2081
2082 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
2083 scm_gc_heap_lock.
2084
2085 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
2086 scm_gc_running_p while the scm_i_sweep_mutex is locked.
2087
2088 * inline.h (scm_cell, scm_double_cell): Do not check
2089 scm_gc_running_p, allocation during sweeping is OK.
2090
2091 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
2092 not set scm_block_gc.
2093
2094 * init.c (scm_i_init_guile): Do not set scm_block_gc.
2095
2096 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
2097 instead of scm_malloc. The latter can not be used during GC.
2098
d1c38e11
MV
20992005-03-09 Marius Vollmer <mvo@zagadka.de>
2100
2101 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
2102 years.
2103
99ec43c1
MV
21042005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2105
2106 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
2107 scm_gc_running_p. Sweeping can happen in parallel with
2108 allocation.
2109
2110 * inline.h: Updated comments for current threading implementation.
2111
2112 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
2113 (scm_i_thread): Removed unused signal_asyncs field.
2114 (threads_mark): Do not mark it.
2115 (guilify_self_1): Do not initialize it. Do initialize
2116 continuation_root field.
2117 (do_thread_exit): Do not remove thread from all_threads list.
2118 (on_thread_exit): Do it here, after leaving guile mode.
2119 (sleep_level): Removed.
2120 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
2121 returning. Do not support recursive sleeps.
2122 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
2123 entry. Do not support recursive sleeps.
2124
2125 * fluids.c (ensure_state_size, ensure_all_state_sizes,
2126 resize_all_states): Collapsed ensure_state_size and
2127 ensure_all_state_sizes into one function named resize_all_states.
2128 Allocate new vectors outside of single threaded region. Do only
2129 simple things inside that region.
2130 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
2131 while adding to the global lists.
2132
2133
461f34aa
MV
21342005-03-08 Marius Vollmer <mvo@zagadka.de>
2135
2136 libltdl is no longer distributed. We expect it to be installed
2137 already.
2138
2139 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
2140 (libguile_la_LIBADD): Removed @LIBLTDL@.
2141
4e047c3e
MV
21422005-03-07 Marius Vollmer <mvo@zagadka.de>
2143
2144 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
2145 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
2146 they also block/unblock execution of asyncs and call
2147 scm_async_click which is declared in async.h but threads.h can not
2148 include async.h since async.h already includes threads.h.
2149 (scm_i_critical_section_level): New, for checking mistakes in the
2150 use of the SCM_CRITICAL_SECTION_* macros.
2151 (scm_i_critical_section_mutex): Make it a recursive mutex so that
2152 critical sections can be nested.
2153
2154 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
2155 not zero.
2156
2157 * threads.h, threads.c (scm_frame_lock_mutex): New.
2158 (scm_frame_critical_section): Take mutex as argument.
2159 (framed_critical_section_mutex): New, used as default for above.
2160 (scm_init_threads): Initialize it.
2161 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
2162 scm_i_critical_section_mutex; both are initialized statically.
2163
2164 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
2165 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
b9d9ad3a
MV
2166 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
2167 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
4e047c3e
MV
2168
2169 * debug.c (scm_debug_options): Replace
2170 SCM_CRITICAL_SECTION_START/END with a frame and
2171 scm_frame_critical_section.
2172
2173 * continuations.c (scm_make_continuation): No longer a critical
2174 section.
2175 (scm_dynthrow): Abort when scm_i_critical_section_level is
2176 not zero.
2177
d0a45bff
MV
21782005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2179
db6673e5
MV
2180 * threads.c (scm_try_mutex): Renamed argument for consistency.
2181
d0a45bff
MV
2182 * root.c (scm_call_with_dynamic_root): New docstring.
2183
2184 * eval.c: Define _GNU_SOURCE.
2185
9de87eea
MV
21862005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2187
2188 Big merge from the mvo-thread-cleanup branch. The main changes
2189 are:
2190
2191 - The dynamic roots functionality has been split into dynamic
2192 states and continuations barriers. Fluids have been
2193 reimplemented and can now be garbage collected.
2194
2195 - Initialization of Guile now works in a multi-thread friendly
2196 manner. Threads can freely enter and leave guile mode.
2197
2198 - Blocking on mutexes or condition variables or while selecting
2199 can now be reliably interrupted via system asyncs.
2200
2201 - The low-level threading interface has been removed.
2202
2203 - Signals are delivered via a pipe to a dedicated 'signal delivery
2204 thread'.
2205
2206 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
2207
2208 * throw.c (scm_handle_by_message): Exit only the current thread,
2209 not the whole process.
2210 (scm_handle_by_message_noexit): Exit when catching 'quit.
2211
2212 * scmsigs.c (take_signal, signal_delivery_thread,
2213 start_signal_delivery_thread, ensure_signal_delivery_thread,
2214 install_handler): Reimplemented signal delivery as explained in
2215 the comments.
2216
2217 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
2218 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
2219 scm_i_sched_yield, scm_i_pthread_sigmask,
2220 SCM_I_PTHREAD_MUTEX_INITIALIZER,
2221 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
2222 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
2223 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
2224 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
2225 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
2226 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
2227 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
2228 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
2229 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
2230 scm_i_pthread_key_create, scm_i_pthread_setspecific,
2231 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
2232 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
2233 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
2234 when using pthreads.
2235 * null-threads.c, null-threads.h: Provide dummy definitions for
2236 the above symbols when not using pthreads.
2237
2238 * modules.h, modules.c (scm_frame_current_module): New.
2239
2240 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
2241 instead of scm_internal_dynamic_wind.
2242
2243 * init.h, init.c (restart_stack, start_stack): Removed.
2244 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
2245 (scm_boot_guile_1): Removed.
2246 (scm_i_init_mutex): New.
2247 (really_cleanup_for_exit, cleanup_for_exit): New.
2248 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
2249 Moved around some init funcs. Call
2250 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
2251 with atexit.
2252
2253 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
2254 Use "!scm_is_eq" instead of "!=".
2255
2256 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
2257 SCM_USE_COOP_THREADS): Removed.
2258
2259 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
2260 maintained. Unlock scm_i_sweep_mutex before running
2261 scm_after_gc_c_hook.
2262 (scm_permanent_object): Allocate outside of critical section.
2263 (cleanup): Removed.
2264
2265 * fluids.h, fluids.c: Reimplemented completely.
2266 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
2267 SCM_FAST_FLUID_SET): Reimplemented as functions.
2268 (scm_is_fluid): New.
2269 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
2270 (scm_make_dynamic_state, scm_dynamic_state_p,
2271 scm_is_dynamic_state, scm_current_dynamic_state,
2272 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
2273 scm_c_with_dynamic_state, scm_with_dynamic_state,
2274 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
2275
2276 * feature.c (progargs_fluid): New.
2277 (scm_program_arguments, scm_set_program_arguments): Use it instead
2278 of scm_progargs.
2279 (scm_init_feature): Allocate it. Also, only add "threads" feature
2280 when SCM_USE_PTHREAD_THREADS is true.
2281
2282 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
2283 scm_make_rec_mutex, with all the consequences.
2284 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
2285 scm_internal_dynamic_wind. Handle dynamic states as second
2286 argument.
2287
2288 * threads.h, threads.c (scm_internal_select): Renamed to
2289 scm_std_select and discouraged old name.
2290 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
2291 and scm_std_usleep.
2292 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
2293 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
2294 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
2295 SCM_THREAD_DATA): Removed.
2296 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
2297 (scm_i_thread): New.
2298 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
2299 Use scm_assert_smob_type.
2300 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
2301 scm_thread_self, scm_thread_yield, scm_mutex_init,
2302 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
2303 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
2304 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
2305 scm_cond_init, scm_cond_destroy, scm_cond_wait,
2306 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
2307 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
2308 scm_thread_select): Removed. Replaced with scm_i_pthread
2309 functions as appropriate.
2310 (scm_in_guile, scm_outside_guile): Removed.
2311 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
2312 take a ticket.
2313 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
2314 New.
2315 (scm_i_frame_single_threaded): New.
2316 (scm_init_threads_default_dynamic_state): New.
2317 (scm_i_create_thread): Removed.
2318 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
2319 (scm_make_recursive_mutex): New.
2320 (scm_frame_critical_section): New.
2321 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
2322 latter, changed all uses.
2323 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
2324 scm_i_set_last_debug_frame): New, use them instead of scm_root
2325 stuff.
2326 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
2327 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
2328 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
2329 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
2330 (remqueue): Allow the removal of already removed cells. Indicate
2331 whether a real removal has happened.
2332 (scm_thread): Removed, replaced with scm_i_thread.
2333 (make_thread, init_thread_creatant): Removed.
2334 (cur_thread): Removed.
2335 (block_self, unblock_from_queue): New.
2336 (block, timed_block, unblock): Removed.
2337 (guilify_self_1, guilify_self_2, do_thread_exit,
2338 init_thread_key_once, init_thread_key,
2339 scm_i_init_thread_for_guile, get_thread_stack_base,
2340 scm_init_guile): New initialisation method.
2341 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
2342 thread creation.
2343 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
2344 "fair" to fat and implemented new semantics, including reliable
2345 interruption.
2346 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
2347 (scm_threads_mark_stacks): Explicitly mark handle.
2348 (scm_std_select): Allow interruption by also selecting on the
2349 sleep_pipe.
2350 (scm_i_thread_put_to_sleep): Handle recursive requests for
2351 single-threadedness.
2352 (scm_threads_prehistory, scm_init_threads): Put current thread
2353 into guile mode via guileify_self_1 and guileify_self_2,
2354 respectively.
2355
2356 * fluid.h (SCM_FLUIDP): Deprecated.
2357
2358 * coop-threads.c: Removed.
2359
2360 * continuations.h, continuations.c (scm_with_continuation_barrier,
2361 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
2362 New.
2363
2364 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
2365 (async_mutex): New.
2366 (scm_async_click): Protected with async_mutex. Do not deal with
2367 signal_asyncs, which are gone. Set cdr of handled async cell to
2368 #f.
2369 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
2370 current sleep.
2371 (scm_system_async_mark_for_thread): Do not use scm_current_thread
2372 since that might not work during early initialization.
2373
2374 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
2375 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
2376 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
2377 and SCM_CRITICAL_SECTION_END.
2378 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
2379 SCM_CRITICAL_SECTION_START/END.
2380
2381 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
2382 (libguile_la_SOURCES): Added null-threads.c
2383 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
2384 threads-plugin.c.
2385 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
2386
2387 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
2388 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
2389 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
2390 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
2391 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
2392 scm_make_root): Removed or deprecated. Replaced with references
2393 to the current thread, dynamic state, continuation barrier, or
2394 some fluid, as appropriate.
2395 (root_mark, root_print): Removed.
2396 (scm_internal_cwdr): Reimplemented guts with
2397 scm_frame_current_dynamic_state and
2398 scm_i_with_continuation_barrier.
2399 (scm_dynamic_root): Return current continuation barrier.
2400
2401
ad3d5a65
MV
24022005-02-28 Marius Vollmer <mvo@zagadka.de>
2403
2404 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
2405 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
2406 cleanliness.
2407 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
2408 IP_DROP_MEMBERSHIP.
2409 Thanks to Greg Troxel!
2410
73a90115
MD
24112005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2412
2413 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
2414 block.
2415
5d2cb3ab
MV
24162005-02-25 Marius Vollmer <mvo@zagadka.de>
2417
2418 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
2419 so that no two weak alist vectors share a spine.
2420 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
2421 during GC before inserting the new alist cell.
2422
838c4126
MV
24232005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2424
2425 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
2426 the hashtable.
2427 (scm_hash_fn_create_handle_x): Likewise.
2428 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
2429
29fed193
MD
24302005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2431
2432 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
2433 the prototypical examples mentioned in the old reference manual.
2434 Instead keep the old semantics of dispatching on type. (Yes, this
2435 is extremely ugly, but the whole point of keeping the deprecated
2436 interface is not to break old code.)
2437
9cc49060
MD
24382005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2439
2440 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
2441 scm_i_array_dims.
2442
8447f463
KR
24432005-01-28 Kevin Ryde <user42@zip.com.au>
2444
2445 * numbers.c (scm_ash): Rewrite using shifts, much faster than
2446 integer-expt and multiply/divide. Inexacts and fractions no longer
2447 supported (they happened to work before for left shifts, but not
2448 right). Don't really need inexacts and fractions, since ash is
2449 documented as a "bitwise operation", and all the rest of those only
2450 take exact integers.
2451
1367aa5e
HWN
24522005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
2453
856fca7e
HWN
2454 * gc-card.c (scm_i_card_statistics): map structs, closures and
2455 subrs to one tag.
2456
1367aa5e 2457 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
856fca7e 2458 (tag_table_to_type_alist): ignore unknown types.
1367aa5e
HWN
2459
2460 * gc-segment.c (scm_i_all_segments_statistics): new function.
2461 (scm_i_heap_segment_statistics): new function
2462
2463 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
2464 statistics on the number of live objects of each type.
2465
2466 * gc-card.c (scm_i_tag_name): new function.
2467 (scm_i_card_statistics): new function.
2468
333db3b8
KR
24692005-01-24 Kevin Ryde <user42@zip.com.au>
2470
2471 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
2472 POSIX and C99 don't document errno being set. Reported by Bruno
2473 Haible.
2474 (scm_flock): Update docstring from manual.
2475
8447f463
KR
2476 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
2477 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
2478 a 64-bit system.
2479
2480 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
2481 sa_handler, needs to be a long on 64-bit systems where int is only 32
2482 bits.
2483
88f59e53
MV
24842005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2485
0eeb2611
MV
2486 * environments.c (obarray_enter, obarray_replace): Call
2487 SCM_HASHTABLE_INCREMENT when adding a new entry.
2488
88f59e53
MV
2489 * objects.c: Include goops.h for the scm_class_of prototype.
2490
2491 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
2492 sizes to be smaller than the maximum lengths of vectors.
2493
219b2868
MV
24942005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2495
2496 * ports.c, smob.c: Include "libguile/goops.h".
2497
2498 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
2499 scm_class_char, scm_class_pair, scm_class_procedure,
2500 scm_class_string, scm_class_symbol,
2501 scm_class_procedure_with_setter, scm_class_primitive_generic,
2502 scm_class_vector, scm_class_null, scm_class_real,
2503 scm_class_complex, scm_class_integer, scm_class_fraction,
2504 scm_class_unknown, scm_port_class, scm_smob_class,
2505 scm_no_applicable_method, scm_class_of): Moved from objects to
2506 goops since they are only useable once goops has been loaded.
2507 (scm_classes_initialized): Removed.
2508 (scm_class_of): Do not check it.
2509 (create_standard_classes): Do not set it.
2510
009c6b9c
MV
25112005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2512
50472546
MV
2513 * objects.h, objects.c (scm_classes_initialized): New.
2514 (scm_class_of): Signal error when scm_classes_initialized is zero.
2515 * goops.c (create_standard_classes): Set scm_classes_initialized
2516 to one.
2517
009c6b9c
MV
2518 * random.c (scm_random_solid_sphere_x): Use
2519 scm_c_generalized_vector_length instead of
2520 scm_uniform_vector_length.
2521
7719cbe9
MV
25222005-01-16 Marius Vollmer <mvo@zagadka.de>
2523
2524 * script.c (scm_compile_shell_switches): Removed debugging output.
2525
1ec44fed
KR
25262005-01-15 Kevin Ryde <user42@zip.com.au>
2527
2528 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
2529 docstrings from manual.
2530 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
2531
6e4cd850
MV
25322005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2533
0b5a0521
MV
2534 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
2535 its value.
2536
2537 Implement u64 and s64 uniform numeric vectors with bignums when
2538 scm_t_uint64 and scm_t_int64 are not available.
2539
2540 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
2541 scm_array_handle_u64_elements,
2542 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
2543 scm_u64vector_writable_elements): Do not define when scm_t_uint64
2544 is not available.
2545 (scm_take_s64vector, scm_array_handle_s64_elements,
2546 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
2547 scm_s64vector_writable_elements): Likewise for scm_t_int64.
2548 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
2549 scm_t_int64/scm_t_uint64 are not available.
2550 (uvec_mark): New, to mark the bignums.
2551 (alloc_uvec): Initialize bignums.
2552 (uvec_fast_ref): Return bignums directly.
2553 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
2554 assert_exact_integer): New.
2555 (uvec_fast_set): Use them to validate the bignums.
2556 (scm_init_srfi_4): Set mark function of smob when needed.
2557 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
2558 scm_int64_max.
2559
6e4cd850
MV
2560 Recognize 1.4 -e syntax.
2561
2562 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
2563 (scm_compile_shell_switches): Use them to recognize and convert
2564 1.4 "-e" syntax.
2565
3b698afe
MV
25662005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2567
2568 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
2569 deprecated features that once were macros but are now functions
2570 back into macros.
2571
d6dc83a9
MV
25722005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2573
49086691
MV
2574 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
2575 * deprecation.c (scm_issue_deprecation_warning,
2576 scm_c_issue_deprecation_warning_fmt): Use it.
2577 (mode): Removed.
2578 (print_summary): New.
2579 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
2580 mode.
2581
d6dc83a9
MV
2582 Deprecated SCM_ARRAY* macros.
2583
2584 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
2585 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
2586 version. Changed all uses.
2587 (scm_tc16_array, scm_i_tc16_array,
2588 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
2589 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
2590 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
2591 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
2592 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
2593 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
2594 SCM_ARRAY_V, SCM_I_ARRAY_V,
2595 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
2596 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
2597 scm_t_array, scm_i_t_array): Likewise.
2598 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
2599 Moved from unif.h to unif.c.
2600 (scm_c_array_rank): New.
2601 (scm_array_rank): Reimplement using it.
2602
2603 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
2604 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
2605 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
2606
dc91d8de
MV
26072005-01-11 Marius Vollmer <mvo@zagadka.de>
2608
2609 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
2610 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
2611 scm_c_generalized_vector_ref and scm_cvref, and
2612 scm_c_generalized_vector_set_x, respectively.
2613 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
2614 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
2615
2616 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
2617 former to latter and made public. Changed all uses.
2618 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
2619 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
2620 (scm_i_shap2ra): New internal version of scm_shap2ra.
2621 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
2622 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
2623 (scm_ra_set_contp): Deprecated, changed all uses to
2624 scm_i_ra_set_contp.
2625 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
2626
66d33784
MV
26272005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2628
b06f099d
MV
2629 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
2630 Trotts!
2631
5d35ad81
MV
2632 * unif.c (scm_list_to_typed_array): Allow the specification of the
2633 upper bound as well. This is needed for empty arrays.
2634 (l2ra): Give needed number of elements in error message.
2635 (scm_i_print_array): Print length information for arrays that need
2636 it.
2637 (scm_i_read_array): Parse it.
2638
66d33784
MV
2639 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
2640 scm_i_object_chars, scm_i_object_length): Brought back from the
2641 dead.
2642
d7d7d401
MV
26432005-01-10 Marius Vollmer <mvo@zagadka.de>
2644
74c58fce
MV
2645 * ramap.c: Replaced single-index uses of scm_array_set_x with
2646 scm_c_generalized_vector_set_x.
2647
d7d7d401
MV
2648 * unif.c (scm_array_rank, scm_array_dimensions,
2649 scm_shared_array_offset, scm_shared_array_increments,
2650 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
2651 to simplify code and make it more general.
2652 (scm_shared_array_root): Work with all kinds of arrays, including
2653 naked vectors.
2654 (indices_to_pos): New.
74c58fce
MV
2655 (scm_make_shared_array): Use it instead of scm_aind; use handle
2656 for oldra.
2657
4475d3fe
KR
26582005-01-10 Kevin Ryde <user42@zip.com.au>
2659
2660 * posix.c (scm_mkstemp): Update docstring from manual.
2661
d3ddc95e
KR
2662 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
2663
8c8491f5
MV
26642005-01-09 Marius Vollmer <mvo@zagadka.de>
2665
b89ecc6f
MV
2666 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
2667 scm_i_uniform_vector_set_proc): New.
2668 (u8ref, u8set, s8ref, s8set, etc): New.
2669 (uvec_reffers, uvec_setters): New.
2670 (uvec_to_list): Use generic scm_array_handle_ref instead of
2671 uvec_fast_ref since scm_array_handle_ref should be faster now.
8cb01d9f
MV
2672 (coerce_to_uvec, scm_c_uniform_vector_ref,
2673 scm_c_uniform_vector_set_x): Likewise.
b89ecc6f
MV
2674
2675 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2676 New.
2677 (scm_t_array_handle): Added ref, set, elements and
2678 writable_elements for fast inline operation of
2679 scm_array_handle_ref and scm_array_handle_set.
2680 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2681 and replaced with inline code that simply calls the ref/set
2682 members of the handle.
2683 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2684 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2685 New.
2686 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2687 and memoize_set.
2688 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2689 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2690 scm_bit_invert_x): Correctly multiply index with increment in the
2691 general case.
2692
8c8491f5
MV
2693 * unif.c (scm_array_handle_set): Correctly execute only one
2694 alternative. D'Oh!
2695 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2696 the array; this covers all cases with much simpler code.
2697
2698 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2699 as well.
2700
cd5d55c7
MV
27012005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2702
2703 * srfi-4.c (uvec_type): New.
2704 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2705 scm_c_uniform_vector_x): Use it to get concrete type.
2706
2707 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2708 fit the docs.
2709
2710 * unif.c (ra2l): Handle zero rank arrays.
2711 (scm_i_print_array): Print zero rank arrays specially.
2712 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2713 (scm_i_read_array): Allow zero rank arrays.
2714
a4aad74e
MV
27152005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2716
2717 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2718 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2719 and SCM_SET_HASHTAB_BUCKET.
2720
2721 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2722 Removed ref_stack field.
2723 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2724 of a print state. Use them everywhere instead of ref_stack.
2725
3a40d5e1
MV
2726 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
2727
a4aad74e
MV
2728 * srfi-4.c: Include deprecation.h.
2729
2730 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2731 deprecated.c, eq.c
2732 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2733 (scm_vector_elements, scm_vector_writable_elements,
2734 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2735 unif.[hc].
2736 (SCM_SIMPLE_VECTOR_LOC): Removed.
2737 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2738 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2739 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2740 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2741 latter. Changed use in eq.c.
2742
f01fe441
MV
27432005-01-07 Marius Vollmer <mvo@zagadka.de>
2744
2745 Make the uniform vector routines also deal with one dimensional
2746 arrays.
2747
2748 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2749 SCM_SMOB_PREDICATE in this file.
2750 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2751 of the right type.
2752 (scm_is_uniform_vector): Likewise.
2753 (uvec_fast_ref): Made BASE param const.
2754 (uvec_writable_elements, uvec_elements): New.
2755 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2756 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2757 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2758 arrays.
2759 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2760 argument convention.
2761 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2762 checking.
2763 (scm_uniform_vector_length): Use uvec_length.
2764
2aaf5726
MV
27652005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2766
2767 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2768 scm_c_uniform_vector_size): Removed.
2769 (scm_array_handle_uniform_element_size): New.
2770
2771
2772 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2773 type of POS parameter to be signed, positions can be negative.
2774 (scm_array_handle_release): New, changed all uses of
2775 scm_t_array_handle to properly call it.
2776 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2777 Renamed former to latter, changed all uses.
2778
34ae52fc
MV
27792005-01-05 Marius Vollmer <mvo@zagadka.de>
2780
2781 Updated bitvector routines to also use scm_t_array_handles.
2782
2783 * unif.h (scm_bitvector_elements,
2784 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2785 deliver offset, length and increment to caller. Changed all uses.
2786 (scm_bitvector_release_elements,
2787 scm_frame_bitvector_release_elements,
2788 scm_bitvector_release_writable_elements,
2789 scm_frame_bitvector_release_writable_elements): Removed.
2790 (scm_array_handle_bit_elements,
2791 scm_array_handle_bit_writable_elements,
2792 scm_array_handle_bit_elements_offset): New.
2793 (scm_make_typed_array): The special value for non-initialized
2794 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2795 was a valid value to fill bitvectors with, so it can't really be
2796 specialed out.
2797
c4cb7628
KR
27982005-01-04 Kevin Ryde <user42@zip.com.au>
2799
2800 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2801 Reported by Bill Schottstaedt.
2802
0356881d
MV
28032005-01-02 Marius Vollmer <mvo@zagadka.de>
2804
2805 * sort.c (quicksort): Added INC parameter for non-contigous
2806 vectors.
2807 (quicksort1): New, for contigous vectors. Both functions are
2808 generated from the same code by including "quicksort.i.c".
2809 (scm_restricted_vector_sort_x): Call one of quicksort and
2810 quicksort1, depending on increment of vector.
2811 (scm_sort): Simply call scm_sort_x on a copy of the list or
2812 vector.
2813 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2814 size_t, added inc parameter.
2815 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2816 so that it doesn't leak.
2817 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2818 list or vector.
2819
2820 * ramap.c (scm_array_map_x): Do not try to convert fill value
2821 before filling, any necessary conversion is done while storing.
2822
2823 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2824 doing it inline.
2825
2826 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2827 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2828 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2829
2830 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2831 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2832 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2833 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2834 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2835 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2836 vector elements API or simple vector API, as appropriate. Removed
2837 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2838 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2839
2840 * srfi-4.h, srfi-4.c,
2841 srfi-4.i.c (scm_array_handle_uniform_elements,
2842 scm_array_handle_uniform_writable_elements,
2843 scm_uniform_vector_elements,
2844 scm_uniform_vector_writable_elements):
2845 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
2846 scm_t_array_handle, deliver length and increment.
2847 (scm_array_handle_<foo>_elements,
2848 scm_array_handle_<foo>_writable_elements): New.
2849
2850 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
2851 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
2852
2853 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
2854 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
2855 scm_array_handle_set, scm_array_handle_elements
2856 scm_array_handle_writable_elements, scm_vector_get_handle): New.
2857 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
2858 scm_dimensions_to_uniform_array): Deprecated for real.
2859 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
2860 snarfing wont allow a mismatch between C and Scheme arglists.
2861 (scm_make_shared_array, scm_enclose_array): Correctly use
2862 scm_c_generalized_vector_length instead of
2863 scm_uniform_vector_length.
2864
2865 * validate.h (SCM_VALIDATE_VECTOR,
2866 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
2867 of SCM_VECTORP.
2868
2869 * weaks.h, weaks.c: Use new internal weak vector API from
2870 vectors.h.
2871
2872 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
2873 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
2874 'extra' to being regular sources.
2875 (noinst_HEADERS): Added quicksort.i.c.
2876 * quicksort.i.c: New file.
2877
2878 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
2879 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
2880 and reimplemented. Replaced all uses with scm_vector_elements,
2881 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
2882 appropriate.
2883 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
2884 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
2885 SCM_SIMPLE_VECTOR_LOC): New.
2886 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
2887 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
2888 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
2889 Removed.
2890 (scm_vector_copy): New.
2891 (scm_vector_elements, scm_vector_writable_elements): Use
2892 scm_t_array_handle, deliver length and increment. Moved to
2893 unif.h. Changed all uses.
2894 (scm_vector_release_elements,
2895 scm_vector_release_writable_elements,
2896 (scm_frame_vector_release_elements,
2897 scm_frame_vector_release_writable_elements): Removed.
2898 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
2899 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
2900 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
2901 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
2902 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
2903 weak vectors.
2904
0336d18b
MV
29052004-12-29 Marius Vollmer <mvo@zagadka.de>
2906
2907 No longer use creators to specify the type of an array. Creators
2908 expose the fact that arrays are wrapped around vectors, but that
2909 might change.
2910
2911 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
2912 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
2913 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
2914 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
2915 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
2916 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
2917 uvec_proc_vars): Removed.
2918 (scm_i_generalized_vector_creator): Removed.
2919 (scm_i_generalized_vector_type): New.
2920
2921 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
2922 scm_make_typed_array, scm_array_type, scm_list_to_array,
2923 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
2924 (scm_array_creator): Removed.
2925 (scm_array_p): Deprecated second PROT argument.
2926 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
2927 Deprecated, reimplemented in terms of scm_make_typed_array and
2928 scm_list_to_typed_array.
2929 (scm_i_proc_make_vector, scm_i_proc_make_string,
2930 scm_i_proc_make_bitvector): Removed.
2931 (type_creator_table, init_type_creator_table, type_to_creator,
2932 make_typed_vector): New.
2933 (scm_i_convert_old_prototype): Removed.
2934 (prototype_to_type): New.
2935 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
2936 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
2937 minor added clarity.
2938 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
2939 instead of scm_make_uve.
2940 (tag_creator_table, scm_i_tag_to_creator): Removed.
2941 (tag_to_type): New.
2942 (scm_i_read_array): Use scm_list_to_typed_array instead of
2943 scm_list_to_uniform_array.
2944
277e8472
MV
29452004-12-27 Marius Vollmer <mvo@zagadka.de>
2946
32b26202
MV
2947 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
2948 (scm_bitvector_writable_elements): New.
2949 (scm_bitvector_release, scm_bitvector_release_elements):
2950 Renamed former to latter. Added explicit call to
2951 scm_remember_upto_here_1.
2952 (scm_frame_bitvector_release,
2953 scm_frame_bitvector_release_elements): Renamed former to latter.
2954 (scm_bitvector_release_writable_elements,
2955 scm_bitvector_release_writable_elements): New.
2956 Changed all uses as required by the changes above.
2957
2958 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
2959 scm_u8vector_elements, etc): Made return value "const".
2960 (scm_uniform_vector_writable_elements,
2961 scm_u8vector_writable_elements, etc): New.
2962 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
2963 Renamed former to latter. Added explicit call to
2964 scm_remember_upto_here_1.
2965 (scm_frame_uniform_vector_release,
2966 scm_frame_uniform_vector_release_elements): Renamed former to latter.
2967 (scm_uniform_vector_release_writable_elements,
2968 scm_frame_uniform_vector_release_writable_elements): New. Takes
2969 crown of longest identifier yet.
2970 Changed all uses as required by the changes above.
2971
277e8472
MV
2972 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
2973 void.
2974 (scm_is_vector, scm_vector_p, scm_vector_length,
2975 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
2976 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
2977 scm_vector_move_left_x, scm_vector_move_right_x,
2978 scm_vector_fill_x): handle one-dimensional arrays.
32b26202
MV
2979 (scm_vector_elements, scm_vector_release_elements,
2980 scm_vector_frame_release_elements, scm_vector_writable_elements,
2981 scm_vector_release_writable_elements,
2982 scm_vector_frame_release_writable_elements): New.
2983 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
2984 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
277e8472
MV
2985
2986 * ramap.c (scm_ramapc, scm_raeql): Use
2987 scm_c_generalized_vector_length instead of
2988 scm_uniform_vector_length.
2989 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
2990 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
2991
49c51610
MV
29922004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2993
2994 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
2995 member for relocating debug frames.
2996 (scm_make_continuation): Set it.
2997
2998 * stacks.c (read_frame, read_frames, scm_make_stack,
2999 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
3000 of continuations instead of calculating the offset ourselves.
3001 Relocate 'vect' member of scm_t_debug_frame.
3002
3b2ee265
KR
30032004-12-16 Kevin Ryde <user42@zip.com.au>
3004
3005 * ramap.c (scm_array_map_x): Check for at least one source argument.
3006
e120686a
KR
30072004-12-14 Kevin Ryde <user42@zip.com.au>
3008
3009 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
3010 the C code so for the final call to the predicate procedure is a tail
3011 call, per SRFI-13 spec.
3012
680b5237
KR
30132004-12-10 Kevin Ryde <user42@zip.com.au>
3014
3015 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
3016 recent revision to the reference manual.
3017
3018 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
3019 with "%", C99 says it's well-defined.
3020
3021 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
3022 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
3023 bother trying to fit scm_from_ulong, not really worth the trouble if
3024 addresses are more than 4 bytes usually.
3025
446d320c
KR
30262004-11-30 Kevin Ryde <user42@zip.com.au>
3027
3028 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
3029 arm32. Reported by Greg Troxel.
3030
f2654760
MV
30312004-11-14 mvo <mvo@zagadka.de>
3032
3033 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
3034
3035 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
3036
d550e35f
MV
30372004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3038
3039 Enclosed arrays are now their own smob. This has been done to
3040 make the code more explicit about them and to prepare for the time
f2654760
MV
3041 when generalized vectors include arbitrary one-dimensional
3042 arrays. (Uptonow, enclosed arrays have been recognized by their
3043 use of an array as their storage 'vector'. When all generalized
3044 vectors are allowed as storage, including one-dimensional arrays,
3045 this will no longer work.)
d550e35f
MV
3046
3047 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
3048 New.
3049 (exactly_one_third, singp): Removed.
3050 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
3051 scm_shared_array_offset, scm_shared_array_increments): Handle
3052 enclosed arrays explicitely.
3053 (scm_array_rank): Likewise. Also, do not return zero for
3054 non-arrays, signal an error instead since arrays with rank zero do
3055 exist.
3056 (scm_i_make_ra): New, for specifying the tag of the new array.
3057 (scm_make_enclosed_array): Use it.
3058 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
3059 (scm_make_shared_array): Use scm_c_generalized_vector_length
3060 instead of scm_uniform_vector_length.
3061 (scm_array_in_bounds_p): Rewritten to be much cleaner.
3062 (scm_i_cvref): New, doing the job of scm_cvref.
3063 (scm_cvref): Use scm_i_cvref.
3064 (scm_array_ref): Do not accept non-arrays when no indices are
3065 given. Use scm_i_cvref to do the actual access.
3066 ("uniform-array-set1"): Do not register.
3067 (scm_array_set_x, scm_uniform_array_read_x,
3068 scm_uniform_array_write): Handle enclosed arrays explicitly.
3069 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
3070 handle enclosed arrays.
3071 (scm_array_to_list): Handle enclosed arrays explicitly.
3072 (rapr1): Removed.
3073 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
3074 enclosed arrays.
3075 (scm_i_print_enclosed_array): New.
3076 (tag_proto_table, tag_creator_table): Renamed former to latter.
3077 Added "a" and "b" for strings and bitvectors, resp.
3078 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
3079 latter. Tag "a" is in the table now, no need to handle it as a
3080 legacy tag.
3081 (scm_raprin1): Just call scm_iprin1.
3082 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
3083 explicitly.
3084 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
3085 Use scm_i_print_array as printer for scm_tc16_array.
3086
2ed34885
MV
30872004-11-10 Marius Vollmer <mvo@zagadka.de>
3088
823086c1
MV
3089 * ramap.c (cind): Changed second arg to be pointer to long instead
3090 of uniform vector.
3091 (scm_ramapc): Allocate index vector with scm_malloc and not as
d550e35f 3092 uniform vector. Wrap it in a frame so that it gets properly freed.
823086c1
MV
3093 (scm_array_index_map_x): Likewise.
3094
3095 * unif.c: Changed all uses of scm_array_prototype to
3096 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
3097 prototype is known.
3098 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
3099 in terms of scm_uniform_vector_read_x and
3100 scm_uniform_vector_write, respectively. Strings and
3101 bitvector support has been dropped.
3102
2ed34885
MV
3103 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
3104 needed files directly. Include config.h, <unistd.h> and <io.h>
3105 when available.
3106 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
3107
2c72f253
MV
31082004-11-09 Marius Vollmer <mvo@zagadka.de>
3109
3110 * gh_data.c (gh_uniform_vector_length): Properly use
3111 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
3112
3cc0a296
MV
31132004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3114
3115 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
3116 New.
3117 (scm_i_uniform_vector_creator): Removed.
3118 (scm_i_generalized_vector_creator): New.
3119 (scm_uniform_vector_length, scm_uniform_element_size): Do not
3120 handle generalized vectors, only uniform numeric vectors.
3121 (alloc_uvec): Do length check here...
3122 (make_uvec): ...but not here.
3123 (coerce_to_uvec): Use new generalized vector functions to handle
3124 all kinds of vectors in one go.
3125
3126 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
3127 remaining scm_tc7_unused tags to get a neatly ordered list.
3128
3129 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
3130 longer handle scm_tc7_bvect bitvectors.
3131
3132 * ramap.c: Use the new generalized vector functions to handle all
3133 vector like things.
3134
3135 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
3136 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
3137 scm_generalized_vector_length, scm_generalized_vector_ref,
3138 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
3139 scm_is_generalized_vector, scm_c_generalized_vector_length,
3140 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
3141 New.
3142
3143 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
3144 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
3145 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
3146 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
3147 scm_c_bitvector_length, scm_c_bitvector_ref,
3148 scm_c_bitvector_set_x, scm_bitvector_elements,
3149 scm_bitvector_release, scm_frame_bitvector_release,
3150 scm_tc16_bitvector, bitvector_free, bitvector_print,
3151 bitvector_equalp, count_ones, find_first_one): New.
3152 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
3153 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
3154 using the new C API for bitvectors and maybe count_ones or
3155 find_first_one, as appropriate.
3156 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
3157 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
3158 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
3159 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
3160 new functions from above.
3161 (scm_i_proc_make_vector, scm_i_proc_make_string,
3162 scm_i_proc_make_bitvector): Made non-static for use in
3163 scm_i_generalized_vector_creator.
3164 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
3165 (scm_make_uve): Validate that the created object is a generalized
3166 vector.
3167 (scm_i_legacy_tag): Removed.
3168 (scm_i_print_array): Do it here.
3169 (scm_raprin1): Only print enclosed arrays.
3170
3171 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
3172
c24d026b
MV
31732004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3174
1f2328fe
MV
3175 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
3176 added portability.
3177
3178 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
3179 for "space". Thanks to Bruce Korb!
3180
c24d026b
MV
3181 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
3182 only after dest has been set. Thanks to Hyper Division!
3183
3184 * gh_data.c (gh_uniform_vector_length): Use
3185 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
3186
d4ea47c8
MV
31872004-11-03 Marius Vollmer <mvo@zagadka.de>
3188
3189 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
3190 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
3191 SCM_SET_UVECTOR_LENGTH): Removed.
3192
236288e2
MV
31932004-11-02 Marius Vollmer <mvo@zagadka.de>
3194
9a5fa6e9 3195 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
236288e2
MV
3196 Thanks!
3197
3198 * backtrace.c (scm_display_backtrace_with_highlights): Join the
3199 first and the second line of the SCM_DEFINE macro call, since old
3200 preprocessors cannot handle definitions that are split into two
3201 lines.
3202
3203 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
3204 declarations.
3205
3206 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
3207 scm_t_uint32 to fix the mismatch between the function declaration
3208 and definition.
3209
3210 * sort.c (quicksort): Don't use C99 variable declarations.
3211
3212 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
3213 SCM_BOOL_F if no type matches.
3214
3215 * threads.c (thread_print): Cast a pointer to size_t when printing
3216 with scm_uintprint.
3217
3218 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
3219 defined.
3220 (scm_array_prototype): Deprecated.
3221
f738b51d
MV
32222004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3223
5d1015ec
MV
3224 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
3225 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
3226 more efficient access to the u32vector.
3227
034486df
MV
3228 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
3229 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
3230 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
3231
3232 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
3233 instead of the old-style dvectors.
3234
3235 * gh_data.c: Use new-style uniform arrays in place of old-style
3236 ones.
3237
3238 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
3239 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
3240
3241 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
3242 instead of old-sytle uvectors.
3243
3244 * convert.c, convert.i.c: Rewritten completely, using
3245 scm_any_to_u8vector, etc and other new-style uniform vector
3246 functions.
3247
3248 * random.c (scm_random_solid_sphere_x,
3249 scm_random_hollow_sphere_x): Do not validate vector argument, this
3250 is already done elsewhere.
3251
3252 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
3253 scm_any_to_u8vector, etc): New.
3254 (scm_uniform_element_size, scm_uniform_vector_length): Do no
3255 longer handle old-style uniform vectors.
3256
f738b51d
MV
3257 * read.c (scm_lreadr): Bugfix: include the last bit in the
3258 bit vector.
3259
5e9c05a1
MV
32602004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3261
327114a2
MV
3262 * unif.h, unif.c (scm_array_creator): New.
3263 (scm_i_get_old_prototype): New.
3264 (scm_array_prototype): use it to return old-style prototype, never
3265 return creators.
3266 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
3267 arg of SCM_UNDEFINED. The latter is wrong.
3268
5e9c05a1
MV
3269 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
3270 (make_uve): Removed.
3271 (scm_i_proc_make_vector, scm_i_proc_make_string,
3272 scm_i_proc_make_u1vector): New.
3273 (scm_init_unif): Initialize them.
3274 (scm_i_convert_old_prototype): New.
3275 (scm_make_uve): Use it to get the creator procedure. Removed all
3276 old code that created old-style uniform vectors.
3277 (scm_array_p): Handle generic vectors.
3278 (scm_dimensions_to_uniform_array): Do not fill new array with
3279 prototype when that is a procedure.
3280 (scm_list_to_uniform_array): Also accept a list of lower bounds as
3281 the NDIM argument.
3282 (scm_i_print_array): Print rank for shared or non-zero-origin
3283 vectors.
3284 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
3285 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
3286 which I do not understand yet.
3287 (scm_array_prototype): Explicitely handle generic vectors.
327114a2 3288
5e9c05a1
MV
3289 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
3290 (iflo2str): Use icmplx2str for complex numbers.
3291
3292 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
3293 scm_i_uniform_vector_prototype): Removed.
3294 (scm_i_uniform_vector_creator): New.
3295 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
3296 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
3297 Updated all tables and generic functions to support them.
3298 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
3299 (scm_init_srfi_4): Initialize them.
3300
3301 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
3302 sizeof(CTYPE) as explained in the comment.
3303
3304 * read.c (scm_lreadr): Call scm_i_read_array for all characters
50472546 3305 following '#' that can start an array. Explicitely disambiguate
5e9c05a1
MV
3306 'i' and 'e' between introducing numbers and uniform vectors. Do
3307 not call scm_i_read_homogenous_vector, since that is also handled
3308 by scm_i_read_array now.
3309
f984af07
MV
33102004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3311
3312 First cut at integrating uniform vectors from srfi-4 with the rest
3313 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
3314 vector. The plan is to gradually replace one type after the other
3315 until none is left and then to consider general cleanups and
3316 optimizations.
3317
3318 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
3319
3320 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
3321 scm_uniform_vector_ref, scm_uniform_vector_set_x,
3322 scm_uniform_vector_to_list, scm_is_uniform_vector,
3323 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
3324 scm_uniform_vector_elements, scm_uniform_vector_element_size,
3325 scm_uniform_vector_release): New.
3326 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
3327 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
3328 from unif.h, unif.c and extended to handle both the old and new
3329 uniform vectors.
3330
3331 * tags.h (scm_tc7_byvect): Commented out.
3332
3333 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
3334 the former to the latter.
3335 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
3336 srfi-4.h, srfi-4.c.
3337 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
3338 (scm_array_p, scm_array_rank, scm_array_dimensions,
3339 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
3340 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
3341 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
3342 vectors. Removed code for scm_tc7_byvect.
3343 (scm_dimensions_to_uniform_array): Fill array with 0 when
3344 prototype is #\nul.
3345 (scm_i_print_array_dimension, scm_i_legacy_tag,
3346 scm_i_print_array): New.
3347 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
3348 for scm_tc7_byvect.
3349
3350 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
3351 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
3352 uniform vectors. Removed code for scm_tc7_byvect
3353
3354 * print.c (iprin1): Removed code for scm_tc7_byvect.
3355 * objects.c (scm_class_of): Likewise.
3356 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
3357 * gc-card.c (scm_i_sweep_card): Likewise.
3358 * evalext.c (scm_self_evaluating_p): Likewise.
3359 * eq.c (scm_equal_p): Likewise.
3360
3361 * gh_data.c (gh_chars2byvect): Reimplemented with
3362 scm_make_s8vector.
3363 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
3364
3365 * srfi-4.c (take_uvec): New.
3366 (alloc_uvec): Use it.
3367 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
3368
3369 * random.c (vector_scale, vector_scale_x): Renamed former to the
3370 latter, since it modifies its argument.
3371 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
3372 Do not use scm_universal_vector_length for non-uniform vectors.
3373 Use scm_f64vector_elements to access innards of uniform vectors.
3374
3375 * convert.i.c: Convert srfi-4 style uniform vectors when
3376 requested.
3377 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
3378 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
3379
79d52182
MV
33802004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3381
3382 * numbers.h, numbers.c (scm_i_print_double): New.
3383
3384 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
3385 ../srfi/ but heavily modified.
3386 * Makefile.am: Add them in all the right places.
3387 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
3388 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
3389 '#u', and '#s'.
3390
3391 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
3392 and made non-static. Changed all uses.
3393
6191ccec
MV
33942004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3395
e64e80b0
MV
3396 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
3397 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
3398 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
3399 scm_uintprint to print unsigned integers, raw heap words, and
3400 adresses, using a cast to scm_t_bits to turn pointers into
3401 integers.
3402
3403 * unif.c: Include "libguile/print.h".
3404
c90ac3a8
MV
3405 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
3406 scm_t_intmax values.
3407 (scm_uint2str): New, for scm_t_uintmax.
3408 (scm_iint2str): Argument type changed to scm_t_intmax,
3409 reimplemented in terms of scm_uint2str.
3410
3411 * print.c, print.h (scm_uintprint): New, for printing
3412 scm_t_uintmax values.
3413 (scm_intprint): Argument type changed to scm_t_intmax.
3414
77c2594f
MV
3415 * sort.c (quicksort, scm_merge, scm_merge_list_x,
3416 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
3417 strategic places so that the loops can be interrupted.
3418
6191ccec
MV
3419 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
3420 "-I$(top_srcdir)/libguile-ltdl".
3421 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
3422 "../libguile-ltdl/libguile-ltdl.a".
3423
3424 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
3425 all references to scm_lt_* with just lt_*. Include <ltdl.h>
3426 instead of <libguile-ltdl.h>.
3427
77600f3e
MV
34282004-10-20 Marius Vollmer <mvo@zagadka.de>
3429
3430 * sort.c (quicksort): Copy pivot out of the array while
3431 constructing the partitions; it could get overwritten otherwise.
3432 Because of the ultimate insertion sort, this bug did not cause
3433 quicksort to fail, it just put all the burdon on the insertion
3434 sort and was thus very slow. Thanks to Rolan Orre for reporting
3435 the slowness!
3436
5000379b
MV
34372004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3438
192cd792
MV
3439 * numbers.c (scm_i_range_error): New.
3440 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
3441 scm_out_of_range.
3442
3443 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
6191ccec 3444 endpos. State inclusiveness/exclusiveness of bounds in docstring.
192cd792
MV
3445
3446 * unif.c (scm_array_p): When no prototype is given, explicitely
3447 test for allowable types, do not simply return true. Thanks to
3448 Roland Orre for reporting this!
3449
5000379b
MV
3450 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
3451
3452 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
3453 segment to scm_max_segment_size.
3454
497eb0b7
HWN
34552004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
3456
1367aa5e
HWN
3457 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
3458
497eb0b7
HWN
3459 * inline.h (scm_double_cell): abort if GC running.
3460 (scm_cell): idem.
3461
aef0bdb4
MV
34622004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3463
3464 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
3465 pos == 0.
3466
3467 Keywords no longer store a 'dash symbol'. Instead, they store a
3468 symbol with their real name.
3469
3470 * keywords.h, keywords.c, deprecated.h, deprecated.c
3471 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
3472 terms of scm_is_keyword and scm_keyword_dash_symbol.
3473
3474 * keywords.h, keywords.c, discouraged.h, discouraged.c
3475 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
3476 scm_c_make_keyword): Discouraged.
3477
3478 * keywords.h, keywords.c (scm_symbol_to_keyword,
3479 scm_keyword_to_symbol): Implemented in C.
3480 (scm_is_keyword, scm_from_locale_keyword,
3481 scm_from_locale_keywordn): New.
3482
3483 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
3484
3485 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
3486 scm_from_locale_keyword instead of scm_c_make_keyword.
3487
3488 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
3489 better error message.
3490
3491 * deprecated.c: Include discouraged.h and keywords.h.
3492
3493 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
3494 reading '#:' or ':'. See NEWS for consequences.
3495
818deb11
MV
34962004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3497
43c25626
MV
3498 * read.c (scm_lreadr): Revert change from 2004-09-22: string
3499 literals are now read-write again (until SCM_STRING_CHARS is
3500 removed).
3501
3502 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
3503 strings with an error message that blames SCM_STRING_CHARS.
3504
3505 * options.c (change_option_setting): Use scm_car instead of
3506 explicit type check plus SCM_CAR.
3507
3508 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
3509 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
3510 (scm_iprin1): Use them instead of the previoulsy hardcoded
3511 strings.
3512 (scm_init_print): Initialize them.
3513
3514 * backtrace.c (display_frame_expr): Do not remove control
3515 characters from the final string. Print it directly using
3516 scm_display.
3517
818deb11
MV
3518 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
3519 Thanks to Roland Orre!
3520
d748089e
KR
35212004-09-29 Kevin Ryde <user42@zip.com.au>
3522
3523 * regex-posix.c (scm_regexp_exec): Correction to last change, should
3524 be whole original string in match struct, not offsetted substring.
3525
0ff7e3ff
HWN
35262004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
3527
3528 * gc.c (scm_gc_unprotect_object): abort if called during GC.
3529
ad7de4b8
MV
35302004-09-24 Marius Vollmer <mvo@zagadka.de>
3531
2edf319f
MV
3532 * Makefile.am (EXTRA_DIST): Added gettext.h.
3533
d180337b
MV
3534 * smob.c, smob.h (scm_assert_smob_type): New.
3535
05d7cf89 3536 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
ad7de4b8
MV
3537 Include GUILE_CFLAGS.
3538 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
3539 now.
3540 (libpath.h): Put GUILE_CFLAGS in the build-info.
3541
c9fedf8a
MV
35422004-09-23 Marius Vollmer <mvo@zagadka.de>
3543
3544 * print.h (scm_print_state): Added highlight_objects.
3545 * print.c (make_print_state, scm_free_print_state): Initialize it
3546 to SCM_EOL.
3547 (scm_iprin1): Wrap output in '{...}' when object is contained in
3548 highlight_objects.
3549
3550 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
3551 scm_backtrace_with_highlights): New. Set highlight_objects of
3552 printstate.
3553
3554 * error.c (scm_error_scm): Document new meaning of data/rest
3555 argument for out-of-range and wrong-type-arg errors.
3556 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
3557 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
3558 exception so that it gets highlighted in the backtrace.
3559 Don't talk about "argument" when not giving a position.
3560
3561 * throw.c (handler_message): The rest argument is the fourth
3562 argument, not everything after the third. Call
3563 scm_display_backtrace_with_highlights, passing the rest argument
3564 when appropriate.
3565
d5ac9b2a
MV
35662004-09-22 Marius Vollmer <mvo@zagadka.de>
3567
3568 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
3569 <bruno@clisp.org>:
3570
3571 * i18n.c: Handle --disable-nls (thanks Bruno).
3572
3573 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
3574 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
3575
3576 * i18n.c (scm_i_to_lc_category): New name and export. Support all
3577 LC categories.
05d7cf89 3578 * posix.c (scm_setlocale): Use it.
d5ac9b2a
MV
3579
3580 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
3581 scm_bind_textdomain_codeset): Make wrappers similar to C function
3582 they wrap.
3583
3584 * i18n.h: New file.
3585 * i18n.c: New file.
3586 * gettext.h: New file, taken from GNU gettext.
3587 * init.c: Include libguile/i18n.h.
3588 (scm_init_guile_1): Add call to scm_init_i18n().
3589 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
3590 (DOT_X_FILES): Add i18n.x.
3591 (DOT_DOC_FILES): Add i18n.doc.
3592 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
3593 (modinclude_HEADERS): Add i18n.h.
3594
d2e53ed6
MV
35952004-09-22 Marius Vollmer <mvo@zagadka.de>
3596
2cdfe016
MV
3597 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
3598
d2e53ed6
MV
3599 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
3600 discouraged.h. Replaced all uses with scm_is_pair.
3601 (SCM_I_CONSP): New name for SCM_CONSP.
3602
3603 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
3604 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
3605 scm_cadr, etc): New.
3606 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
3607 uses with scm_is_null.
5dd82006 3608
d2e53ed6
MV
3609 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
3610 instead of explicit code.
5dd82006 3611
5dfdf243
MV
36122004-09-22 Marius Vollmer <mvo@zagadka.de>
3613
b50c53e5
MV
3614 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3615 Reworded logic a bit so that #f is returned immediately when s1 is
3616 too short to contain s2.
3617
5dfdf243 3618 * regex-posix.c (scm_regexp_exec): Convert string to
05d7cf89 3619 zero-terminated locale string before matching against it.
5dfdf243
MV
3620
3621 * strings.h, strings.c (scm_substring_read_only,
3622 scm_c_substring_read_only, scm_i_substring_read_only): New.
3623 (RO_STRING_TAG, IS_RO_STRING): New.
3624 (scm_i_string_writable_chars): Bail on read-only strings.
3625
3626 * read.c (scm_lreadr): use scm_c_substring_read_only for string
3627 literals, thus making them read-only as specified by R5RS.
3628
22ab5ba3
MV
36292004-09-22 Marius Vollmer <mvo@zagadka.de>
3630
3631 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
3632 by testing for smobs before insisting on equal SCM_CELL_TYPES.
3633
2663421c
MV
36342004-09-21 Marius Vollmer <mvo@zagadka.de>
3635
0d83cb90
MV
3636 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
3637 numbers.c.
3638 (scm_to_mpz, scm_from_mpz): New.
9a5fa6e9 3639 Thanks to Andreas Vögele!
0d83cb90 3640
2663421c
MV
3641 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
3642 just on a line of its own.
3643
3644 * srfi-13.c (scm_string_any, scm_string_every,
3645 scm_string_tabulate, string_upcase_x, string_down_case_x,
3646 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
3647 size_t instead of int for indices into strings. Make sure that no
9a5fa6e9 3648 over- or underflow occurs. Thanks to Andreas Vögele!
2663421c
MV
3649 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
3650 indices, which can also be negative.
3651
b00b73f9
MV
36522004-09-20 Marius Vollmer <mvo@zagadka.de>
3653
3654 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
3655
3656 * threads.c (scm_threads_mark_stacks): Call
3657 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
3658 only used once.
3659
adba74f3
HWN
36602004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
3661
05d7cf89 3662 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
adba74f3
HWN
3663 Bugfix: when subtracting unsigned values, make sure that result
3664 does not wrap.
3665
f6de32c8
KR
36662004-09-09 Kevin Ryde <user42@zip.com.au>
3667
3668 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
3669 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
9a5fa6e9 3670 by Andreas Vögele.
f6de32c8 3671
e548be5f
MV
36722004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3673
eb8d0af1
MV
3674 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3675
e548be5f
MV
3676 * eq.c (real_eqv): Pretend that all NaNs are equal.
3677
3678 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3679
e7acba81
MV
36802004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3681
874fbad1
MV
3682 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3683 use size_t for some locals instead of int.
3684
e7acba81
MV
3685 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3686 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3687 (skip_scsh_block_comment): Use scm_input_error instead of
3688 scm_misc_error in case of EOF.
3689
5de12658
KR
36902004-09-07 Kevin Ryde <user42@zip.com.au>
3691
3692 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
5de12658
KR
3693 Bug report by Bill Schottstaedt.
3694
3695 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3696 column.
3697 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3698
3699 * posix.c (scm_access): Update docstring per manual.
3700
3701 * posix.c (scm_nice): Correction to error detection. Reported by
3702 Matthias Koeppe.
3703
3704 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3705 throw error before unlocking mutex with SCM_ALLOW_INTS.
3706
e227addf
KR
37072004-09-06 Kevin Ryde <user42@zip.com.au>
3708
3709 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3710 available. This also gets around CLK_TCK being absent when
3711 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3712
edea856c
SJ
37132004-09-03 Stefan Jahn <stefan@lkcc.org>
3714
3715 * threads.c (scm_threads_mark_stacks): Fixed local variable
3716 definitions.
3717
e7acba81 3718 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
edea856c
SJ
3719 local variable definitions.
3720
3721 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3722 MinGW32 because it conflicts with its pthread headers.
874fbad1
MV
3723 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3724 (scm_strftime): Using scm_from_locale_string() instead of
edea856c
SJ
3725 scm_makfrom0str().
3726
874fbad1 3727 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
edea856c
SJ
3728 part.
3729
3730 * numbers.c (scm_init_numbers): Removed check_sanity() call
3731 inside GUILE_DEBUG. The function has been removed somewhen...
3732
3733 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3734 MinGW32 because it conflicts with its pthread headers.
3735
d9eb2d67
MV
37362004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3737
3738 * strings.c (SCM_STRINGP): Accept all strings.
3739 (SCM_STRING_CHARS): Reject shared substrings here.
3740
3741 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3742 the Copyright years.
3743
c495c342
KR
37442004-08-27 Kevin Ryde <user42@zip.com.au>
3745
3746 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3747 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3748 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3749
57aa5515
MV
37502004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3751
3752 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3753 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3754 scm_i_symbol_is_interned, scm_i_mem2symbol,
3755 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3756
ce25760f
MV
37572004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3758
19ff6ffc
MV
3759 * srfi-13.c: First cut at thread-safeness and proper use of
3760 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3761 been inserted. Made sure that no internal string pointer is used
3762 across a SCM_TICK or a possible GC.
3763
ce25760f
MV
3764 * script.c (scm_compile_shell_switches): Use
3765 scm_from_locale_string instead of scm_makfrom0str.
3766
3767 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3768 always been.
3769
c5080b51
MV
37702004-08-25 Marius Vollmer <mvo@zagadka.de>
3771
3772 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3773 strop.c.
3774
3775 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3776 * strop.h, strop.c: Removed, they are now empty.
3777 * Makefile.am: Updated for new and removed files.
3778
3779 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3780 to scm_string_to_symbol.
3781
3782 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3783 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3784 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3785 charset instead of libc functions.
3786
3787 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3788 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3789 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3790 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3791 instead of explicit code.
3792
3793 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3794 "srfi-13.h" instead of "strop.h".
3795
3796 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3797 scm_init_srfi_14. Do not call scm_init_strop.
3798
4b0d27f2
MV
37992004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3800
3801 * numbers.c (scm_inf_p): Synced docstring back from manual.
3802
3ece39d6
MV
38032004-08-22 Marius Vollmer <mvo@zagadka.de>
3804
3805 * strings.c (get_str_buf_start): New helper function.
3806 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3807 scm_i_string_char, scm_i_string_writable_chars): Use it.
3808 (scm_i_substring_copy): Make START argument optional for C
3809 callers, for upcoming SRFI-13 integration.
3810
38112004-08-21 Marius Vollmer <mvo@zagadka.de>
3812
3813 From Richard Todd, Thanks!
3814
3815 * script.c (scm_compile_shell_switches): added '-L' switch to add
3816 to the %load-path.
3817
5fa0939c
DH
38182004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3819
3820 * eval.c (unmemoize_exprs): When dropping internal body markers
3821 from the output during unmemoization, also drop those that are not
3822 immediately at the beginning of a body.
3823
2146fdeb
MV
38242004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3825
c1f54b3d
MV
3826 * eval.c (scm_lookupcar1): Report "Variable used before given a
3827 value" insetad of an "Unbound" one for variables that are found
3828 but still contain SCM_UNDEFINED.
2146fdeb
MV
3829
3830 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3831 expects a null-terminated string in the locale encoding, but
3832 scm_i_string_writable_chars doesn't give that. Fixed by letting
3833 mkstemp modify a locale version of the tmpl argument and copying
3834 the result back into tmpl.
3835
3836 * strop.c (scm_substring_move_x): Store into str2, not str1.
3837
d4f76919
KR
38382004-08-20 Kevin Ryde <user42@zip.com.au>
3839
3840 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
3841 to modify the input string.
3842
b5247a6b
MV
38432004-08-19 Marius Vollmer <mvo@zagadka.de>
3844
3845 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
3846 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
3847 scm_c_symbol_length.
3848
f26b9395
MV
38492004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3850
3851 New string implementation, with copy-on-write strings and
3852 mutation-sharing substrings, and a new internal string API.
3853 Symbols can now share memory with strings.
3854
3855 * tags.h (scm_tc7_stringbuf): New tag.
3856
3857 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
3858 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
3859 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
3860 uses.
3861 (scm_i_make_string, scm_c_make_string): New, to replace
3862 scm_allocate_string. Updated all uses.
3863 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
3864 SCM_STRING_LENGTH): Deprecated.
3865 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
3866 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
3867 Discouraged. Replaced all uses with scm_from_locale_string or
3868 similar, as appropriate.
3869 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
3870 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
3871 scm_substring_shared, scm_substring_copy): New.
3872
3873 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
3874 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
3875 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
3876 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
3877 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
3878 Deprecated.
3879 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
3880 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
3881 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
3882 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
3883 Updated all uses.
3884 (scm_gensym): Generate only the number suffix in the buffer, just
3885 string-append the prefix.
3886
3887 * error.c (scm_memory_error): Do not try to throw, just abort.
3888 Throwing will not work anyway.
3889
3890 * gh.h, gh-data.c (gh_set_substr): Made src const.
3891
3892 * ports.c (scm_i_mode_bits_n): New, for counted strings.
3893 (scm_mode_bits): Use it.
3894 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
3895 a vector normally and fill that instead of consing a list with a
3896 blocked GC.
3897
3898 * read.c (scm_i_casei_streq): New, for counted strings.
3899
3900 * threads.c (gc_section_count): Removed, thread-sleeping can not
3901 be nested.
3902 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
3903 admin mutex so that we can be put to sleep by other threads while
3904 blocking on that mutex. Lock all the heap mutex of all threads,
3905 including ourselves.
3906 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
3907 call scm_i_enter_guile.
3908 (scm_thread_mark_stacks): Expect all threads to be suspended.
3909
3910 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
3911 scm_gc_mallocated, for now.
3912 (scm_init_storage): Initialize it.
3913 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
3914
3915 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
3916 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
3917 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
3918 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
3919
cd505b38
MV
3920 * strop.c (scm_string_copy): Use scm_c_substring to get a
3921 copy-on-write string.
3922
8a807b26
KR
39232004-08-18 Kevin Ryde <user42@zip.com.au>
3924
3925 * arbiters.c (FETCH_STORE): New macro.
3926 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
3927 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
3928 scm_try_arbiter and scm_release_arbiter.
3929 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
3930 for speed on i386, otherwise using mutex.
3931
3932 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
3933 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
3934 exact and inexact is #f.)
3935
3936 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
3937 to get thread safety of scm_ttyname.
3938
3939 * ports.c (ttyname): Remove prototype, unused.
3940
d6cd4c36 3941 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
1f3cc0d3 3942 Reported by Michael Tuexen.
d6cd4c36 3943
fa0c0a4b
MV
39442004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3945
3946 * load.c (scm_init_load_path): Do not pass NULL to
3947 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
3948 not set. Thanks to Bill Schottstaedt.
3949
70f7ee41
MV
39502004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3951
3952 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
3953 locale strings instead of accessing their internals.
3954 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
3955 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
3956 SCM_STRING_CHARS and SCM_STRING_LENGTH.
3957
3958 * simpos.c (scm_system): Convert SCM strings to locale strings
3959 instead of accessing their internals.
3960
3961 * script.c (scm_compile_shell_switches): Convert version to locale
3962 string before printing it.
3963
3964 * rdelim.c (scm_read_delimited_x): Avoid
3965 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
3966 of scm_from_long for the returned number of read characters.
3967
3968 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
3969 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3970
3971 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
3972 Use them instead of SCM_SYSCALL when one or two strings need to be
3973 converted into locale strings.
3974 (my_rename): New, gathers platform dependent code for renaming.
3975 (scm_rename): Use it.
3976 (scm_readlink, scm_copy_file): Convert SCM strings to locale
3977 strings instead of accessing their internals.
3978 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
3979 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
3980 SCM_STRING_LENGTH.
3981
3982 * extensions.c (load_extension): Convert lib and init to locale
3983 strings instead of accessing the internals directly.
3984 (scm_c_load_extension): Use scm_from_locale_string instead of
3985 scm_makfrom0str.
3986
3987 * fports.h, fports.c (scm_i_fdes_to_port): New, like
3988 scm_fdes_to_port, but take mode bits directly instead of as a C
3989 string.
3990 (scm_i_fdes_to_port): Implement using above.
3991 (scm_open_file): Use scm_i_fdes_to_port together with
3992 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3993 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
3994 with scm_i_mode_bits to avoid accessing internals of SCM string
3995 from C.
3996
3997 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
3998 SCM string as argument.
3999
4000 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
4001 bits directly instead of C string.
4002 (scm_void_port): Implement using above.
4003 (scm_sys_make_void_port): Use scm_i_void_port together with
4004 scm_i_mode_bits to avoid accessing internals of SCM string.
4005
4006 * strings.h, strings.c (scm_i_get_substring_spec): New.
4007
4008 * socket.c, rw.c, deprecated.h, validate.h
4009 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
4010 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
4011 scm_to_locale_string, etc.
4012 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
4013 above, plus scm_i_get_substring_spec.
4014
4015 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
4016 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
4017 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
4018 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
4019 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
4020 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
4021 with more explicit scm_remember_upto_here_1, etc, or introduced
4022 them in the first place.
4023
4024 * posix.c (WITH_STRING): New helper macro. Use it where one
4025 locale string is needed for a short piece of code.
4026 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
4027 when one locale string is needed.
4028 (scm_mkstemp): Convert tmpl to a locale string.
4029 (scm_putenv): Rewritten to use only C strings.
4030 (scm_setlocale, scm_crpt): Convert argument strings to locale
4031 strings.
4032
40332004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4034
4035 * load.c (scm_primitive_load_path): Do not check for absolute
4036 filenames when scm_sys_search_load_path returns false, which will
4037 return absolute filenames unchanged.
4038
bb26cc2d
MV
40392004-08-11 Marius Vollmer <mvo@zagadka.de>
4040
4041 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
4042 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
4043 of an alist. Thanks to Matthias Koeppe!
4044
02573e4c
MV
40452004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4046
4047 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
4048 Moved from string.h to deprecated.h.
4049
4050 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
4051
f9751e86 4052 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
02573e4c
MV
4053 SCM_I_MAKE_STRING_TAG, changed all uses.
4054 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
4055 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
4056 respectively. For a short time, the old names are still there as
4057 aliases. Not all uses have been changed yet, but the ones in
4058 strings.c have.
4059 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
4060 SCM_T_BITS_MAX.
4061 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
4062 scm_take_locale_string, scm_take_locale_stringn,
4063 scm_to_locale_string, scm_to_locale_stringn,
4064 scm_to_locale_stringbuf): New.
4065 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
4066 deprecated.[hc]. Implemented in terms of the new functions above.
4067 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
4068 scm_makfrom0str): Reimplemented in terms of the new functions from
4069 above. They will be discouraged shortly.
4070 (scm_substring): Do not use scm_mem2string.
4071 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
4072 to replace similar code from posix.c, simpos.c, and dynl.c.
4073 (scm_string_append): Use memcpy instead of explicit loop. Do not
4074 use register keyword. Use plain 'char' instead of 'unsigned
4075 char'.
4076
4077 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
4078 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
4079
4080 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
4081 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4082 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
4083 not as a pointer. Use scm_remember_upto_here_1 to protect it.
4084
4085 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
4086 string. This avoids a conversion round-trip.
4087
4088 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
4089 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4090 SCM_I_STRING_LENGTH, respectively.
4091 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
4092
4093 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
4094 of a string, call scm_display on the string itself.
4095
4096 * dynwind.c, dynwind.h (scm_frame_free): New.
4097
4098 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
4099 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
4100 Replaced uses of SCM_STRING_CHARS with proper uses of
4101 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
4102 Replaced scm_mem2string with scm_from_locale_string.
4103
4104 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
4105 Removed, replaced all uses with scm_i_allocate_string_pointers.
4106
4107 * load.h, load.c (scm_internal_parse_path): Removed.
4108 (scm_parse_path): Use scm_string_split to do the work.
4109 (scm_init_load_path): Use scm_parse_path instead of
4110 scm_internal_parse_path.
4111 (scm_search_path): Rewritten string handling part of the code in
4112 terms of scm_to_locale_stringbuf and so that it is thread safe.
4113
4114 * error.c (scm_error_scm): Throw directly instead of calling
4115 scm_error, this avoids the back and forth conversion of SUBR and
4116 MESSAGE and also plugs a memory leak.
4117 (scm_error): Call scm_error_scm.
4118
4119 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
4120 (display_header): Print FNAME when it is true, not
4121 merely when it is a string.
4122
4123 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
4124 unceremoniously. They were unused by Guile itself, and external
4125 use should stop immediately.
4126
4127
409eb4e5
MV
41282004-08-10 Marius Vollmer <mvo@zagadka.de>
4129
4130 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
4131 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
4132 deprecated versions installed in deprecated.h and deprecated.c.
4133 Changed all uses.
4134
a00eaf19
RB
41352004-08-06 Rob Browning <rlb@defaultvalue.org>
4136
4137 * net_db.c (scm_resolv_error): don't cause an exception while
4138 trying to throw an exception -- call scm_misc_error with correct
4139 arguments. The previous arguments needed a format escape that
4140 wasn't in any of the format strings.
4141
bcb88c93
KR
41422004-08-06 Kevin Ryde <user42@zip.com.au>
4143
8f094b97
KR
4144 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
4145 so as not to depend on signedness of plain char. For byvect range
4146 check, throw out-of-range rather than wrong-type-arg.
4147
bcb88c93
KR
4148 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
4149 signed byte range checks by using scm_to_schar and scm_from_schar,
4150 don't want to depend on signedness of C char.
4151
29e61124
KR
41522004-08-05 Kevin Ryde <user42@zip.com.au>
4153
4154 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
4155 SCM_DEFER_INTS.
4156 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
4157 guaranteed if multiple threads compete to unlock.
4158 Update docstrings per doc/ref/api-scheduling.texi.
4159
99de794f
KR
4160 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
4161 stat on the filename, to be certain a file rename can't mean we get
4162 info on one filesystem object but open another. This fstat usage is
4163 similar to Emacs copy-file.
4164
29e61124
KR
4165 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
4166
4167 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
4168 SIGINT and SIGQUIT, since those values are ints.
4169
759aa8f9
MV
41702004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4171
7241f213
MV
4172 * num2integral.i.c, num2float.i.c: Removed.
4173 * Makefile.am (noinst_HEADERS): Updated.
4174
f9656a9f
MV
4175 * numbers.h. numbers.c (scm_make_ratio): Renamed to
4176 scm_i_make_ratio and made static, replaced uses with scm_divide.
96d8c217
MV
4177 (scm_complex_p): New, export as "complex?" to Scheme.
4178 (scm_number_p): Export as "number?" to Scheme.
4179 (scm_is_complex, scm_is_number): New.
4180 (scm_c_make_rectangular, scm_c_make_polar): New.
4181 (scm_make_rectangular, scm_make_polar): Use above.
4182 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
4183 New.
4184 (scm_make_complex): Discouraged by moving to discouraged.h and
4185 discouraged.c. Replaced all uses with scm_c_make_rectangular.
4186
759aa8f9
MV
4187 * discouraged.h, discouraged.c, numbers.c, numbers.h
4188 (scm_is_rational): New.
4189 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
4190 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
4191 Removed prototypes.
4192 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
4193 Discouraged by moving to discouraged.h and discouraged.c.
4194 Replaced all uses with scm_from_double.
4195 (scm_num2float, scm_num2double): Discouraged by moving prototype
4196 to discouraged.h and rewriting in terms of scm_to_double.
4197 Replaced all uses with scm_to_double.
4198 (scm_to_double): Do not implement in terms of scm_num2dbl, use
4199 explicit code.
4200 (scm_from_double): Do not implement in terms of scm_make_real, use
4201 explicit code.
4202
531bf3e6
MV
42032004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4204
759aa8f9
MV
4205 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
4206
531bf3e6
MV
4207 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
4208 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
4209
4210 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
4211 Renamed to SCM_I_* in order to avoid collisions with the versions
4212 defined in deprecated.h.
4213
4214 * discouraged.h, discouraged.c: New files.
4215
4216 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
4217 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
4218 deprecated to being discouraged by moving to discouraged.h.
4219
4220 * numbers.h, numbers.c, discouraged.h, discouraged.c
4221 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
4222 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
4223 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
4224 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
4225 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
4226 scm_num2ulong_long): Discouraged by moving to discouraged.h and
4227 discouraged.c and reimplementing in terms of scm_from_* and
4228 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
4229 functions.
4230
4231 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
4232 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
4233 scm_i_size2big, scm_i_ptrdiff2big): Removed.
4234 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
4235 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
4236 explicit code.
4237
5ec82e96
KR
42382004-08-02 Kevin Ryde <user42@zip.com.au>
4239
4240 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
4241 and current usage and migration.
4242
58f28989
KR
42432004-07-31 Kevin Ryde <user42@zip.com.au>
4244
4245 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
4246 it's not thread safe.
4247 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
4248 advantage of this.
4249 * fports.c (scm_open_file): Use scm_strerror likewise.
4250 * filesys.c (scm_stat, scm_lstat): Ditto.
4251
4252 * filesys.c (scm_copy_file): Avoid fd leak when destination file
4253 cannot be opened.
4254
4255 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
4256 update, for thread safety.
4257 (gensym_counter): Move into scm_gensym which is its only user.
4258 (scm_init_symbols): No need to explicitly initialize gensym_counter.
4259
03696aab
MV
42602004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4261
51fdb325
MV
4262 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
4263 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
4264 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
4265 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
4266 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
4267 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
4268 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
4269 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
4270 defined in terms of scm_to_signed_integer, etc, but in terms of
4271 scm_to_int8, etc.
4272
4273 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
4274
03696aab
MV
4275 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
4276 no longer used.
4277
4278 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
4279 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
4280
4281 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
4282 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
4283 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
4284 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
4285 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
4286 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
4287 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
4288
4289 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
4290 the functions below.
4291
4292 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
4293 conv-uinteger.i.c.
4294
4295 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
4296 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
4297 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
4298 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
4299 scm_from_uint64): Turned from macros into proper functions.
4300 (scm_to_signed_integer, scm_to_unsigned_integer,
4301 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
4302 conv-integer.i.c and conv-uinteger.i.c, as well.
4303
4304 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
4305 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
4306 the limits. Those are always defined.
4307
1f15779e
KR
43082004-07-29 Kevin Ryde <user42@zip.com.au>
4309
4310 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
4311
48360eb3
KR
43122004-07-28 Kevin Ryde <user42@zip.com.au>
4313
4314 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
4315 safety.
4316
c3f3c841
KR
4317 * unif.c (scm_array_set_x): For svect, use scm_num2short for
4318 consistency with other vector types and to get arg and func name into
4319 error message.
4320
c82f8ed6
MV
43212004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4322
4323 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
4324 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
4325 scm_from_bool, respectively.
4326 (SCM_NINUMP): Added.
4327
4328 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
4329 deprecated.h. Replaced all uses with scm_is_eq.
4330
317b4c4a
KR
43312004-07-24 Kevin Ryde <user42@zip.com.au>
4332
4333 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
4334 * posix.c (scm_crypt): Use it to protect static data in crypt().
4335
e11e83f3
MV
43362004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4337
4338 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
c82f8ed6 4339 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
e11e83f3
MV
4340 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
4341 versions to deprecated.h and deprecated.c. Changed all uses to
4342 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
4343 scm_from_*, as appropriate.
4344
4345 * dynwind.c (scm_i_dowinds): Removed unused code that would call
4346 the unexisting scm_cross_dynwind_binding_scope for inums on the
4347 windlist.
4348
a55c2b68
MV
43492004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4350
4351 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
e11e83f3 4352 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
a55c2b68
MV
4353 byte-wise address to a SCM integer. Changed all uses.
4354 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
4355 scm_to_ipv6 and added type and range checking, for converting from
4356 an IPv& byte-wise address to a SCM integer. Changed all uses.
4357 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
4358 is now done by scm_to_ipv6.
4359
4360 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
4361 not accept inexact integers.
4362
4363 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
4364 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
4365 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
4366 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
4367 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
4368 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
4369 fixnum/bignum distinction visible. Changed all uses to
4370 scm_to_size_t or similar.
4371
43722004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4373
4374 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
4375
48a06bd5
KR
43762004-07-10 Kevin Ryde <user42@zip.com.au>
4377
4378 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
4379 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
4380 such a size causes divide-by-zeros in scm_hasher.
4381
052fbfd9
KR
4382 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
4383 leak.
4384
43240c9c
MV
43852004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4386
4387 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
4388 Rewritten using the same logic as scm_to_signed_integer and
4389 scm_to_unsigned_integer, respectively, which is better(tm). Also,
4390 use CHAR_BIT instead of hardcoding 8.
4391 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
4392 SCM_I_LLONG_MIN etc. instead.
4393
4394 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
4395 SCM_I_MAKINUM and changed all uses.
4396 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
4397
a3de8e7b
MV
4398 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
4399 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
43240c9c
MV
4400 them by assuming twos-complement.
4401
c9eb03bb
MV
44022004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4403
4404 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
4405 configure now produces.
4406 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
4407 definitions, giving the limits of the integer types defined by
4408 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
4409 LLONG_MIN or LONG_LONG_MIN is hard to get at.
4410
4411 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
4412 SHORT_MIN.
4413 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
4414 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
4415 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
4416 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
4417 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
4418 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
4419 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
4420 scm_from_uintmax): New.
4421
7888309b
MV
44222004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4423
4424 * tags.h (scm_is_eq): New.
4425
4426 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
4427 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
4428 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
4429 scm_from_bool, and scm_is_bool, respectively.
4430
4431 * boolean.h (scm_is_bool): Fix bug in prototype.
4432 (scm_from_bool): The argument is "x" not "f", stupid.
4433
4434 * boolean.c (scm_is_bool): Fix typo.
4435
4436 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
4437 scm_is_unsigned_integer, scm_to_signed_integer,
4438 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
4439 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
4440 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
4441 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
4442 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
4443 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
4444 New.
4445
800570a6
MV
44462004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4447
4448 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
4449 scm_to_bool): New.
4450
9fcf3cbb
DH
44512004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4452
4453 * backtrace.c (display_expression, display_frame): Call
4454 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
4455 single memoized expression.
4456
4457 * debug.c (memoized_print): Don't try to unmemoize the memoized
4458 object, since we can't know whether it holds a single expression
4459 or a body.
4460
4461 (scm_mem_to_proc): Removed check for lambda expression, since it
4462 was moot anyway. Whoever uses these functions for debugging
4463 purposes should know what they do: Creating invalid memoized code
4464 will cause crashes, independent of whether this check is present
4465 or not.
4466
4467 (scm_proc_to_mem): Take the closure's code as it is and don't
4468 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
4469 memoized code should not be modified.
4470
4471 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
4472 scm_unmemoize from public use, but made scm_i_unmemoize_expr
4473 available as a guile internal function instead. However,
4474 scm_i_unmemoize_expr will only work on memoized objects that hold
4475 a single memoized expression. It won't work with bodies.
4476
4477 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
4478 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
4479 i. e. a list of expressions.
4480
4481 * eval.c (unmemoize_exprs): Drop internal body markers from the
4482 output during unmemoization.
4483
4484 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
4485 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
4486 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
4487 as guile internal functions instead. scm_i_unmemoize_expr will
4488 only work on a single memoized expression, while
4489 scm_i_unmemocopy_body will only work on bodies.
4490
90df793f
DH
44912004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4492
4493 * eval.c (unmemoize_exprs): Handle semi-memoized code.
4494
4495 (scm_cons_source, scm_primitive_eval): Prefer higher level
4496 predicate SCM_FALSEP over SCM_IMP.
4497
8048c00b
RB
44982004-06-15 Rob Browning <rlb@defaultvalue.org>
4499
4500 * script.c (scm_shell_usage): minor phrasing change.
4501
4502 * gc_os_dep.c: update ifdefery for macosx.
4503 (scm_get_stack_base): separate result initialization from
4504 declaration to slience warnings with macosx and hp-ux using gcc
9a5fa6e9 4505 3.3. Thanks to Andreas Vögele.
8048c00b 4506
d93294d4
HWN
45072004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
4508
4509 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
4510
212e58ed
DH
45112004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4512
4513 * list.[ch] (scm_i_finite_list_copy): New internal function to
4514 copy lists that are known to be finite (though not necessarily
4515 proper).
4516
4517 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
4518 a closure's argument list like an expression of a body.
4519
4520 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
4521 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
4522 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
4523 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
4524 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
4525 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
4526 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
4527 unmemoize_builtin_macro): New static functions and symbols.
4528
4529 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
4530 now has a slightly different meaning: The memoized form that is
4531 receives as its argument is now interpreted as a sequence of
4532 expressions from a body.
4533
4534 (unmemocar, scm_unmemocar): Since the whole functionality of
4535 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
4536 has its old content back and is deprecated, while unmemocar has
4537 been removed.
4538
4539 (SCM_BIT7): Removed.
4540
4541 (CEVAL): For unmemoizing a single expression, call
4542 unmemoize_expression instead of scm_unmemocopy, which now expects
4543 a sequence of body expressions. Eliminated unnecessary empty
4544 environment frame when executing let* forms. Eliminated
4545 unmemoization step from evaluator.
4546
9ccea370
MV
45472004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4548
4549 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
4550 macroexp and made static. Added new version of scm_macroexp that
4551 emits a deprecation warning and then calls macroexp.
4552 (scm_m_undefine): Issue deprecation warning.
4553
57d23e25
DH
45542004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4555
4556 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
4557 Modified to make set! work on symbols that represent syntactic
4558 keywords.
4559
141521ad
HWN
45602004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
4561
4562 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
4563 compound expression as lvalue errors.
4564
7c2f56a4
MV
45652004-05-24 Marius Vollmer <mvo@zagadka.de>
4566
4567 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
4568 WINDER_DATA to a SCM.
4569
366ecaec
DH
45702004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4571
4572 * goops.c (compute_getters_n_setters, create_standard_classes,
4573 scm_add_slot): Compute closures by calling scm_i_eval_x on a
4574 lambda expression rather than creating them with scm_closure.
4575
26ecfa39
DH
45762004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4577
4578 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
4579 misplaced syntactic keywords. This will not work unless guile's
4580 defmacro feature is deprecated.
4581
4582 (scm_m_case): Fixed a bug that caused the list of labels to grow
4583 with every case form.
4584
f865229a
KR
45852004-05-19 Kevin Ryde <user42@zip.com.au>
4586
4587 * numbers.c (scm_round_number): For inum and big, just return x. For
4588 real, use scm_round for 2^54-1 etc problems covered there.
4589
4590 * numbers.c (trunc): Remove #define to scm_truncate when the C library
4591 doesn't provide trunc. This was for when `truncate' was done as a
4592 scm_tc7_dsubr, no longer required.
4593
4594 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
4595 to stack marking call, two parameters and no cast on t->base.
4596
63947c7a
MV
45972004-05-18 Marius Vollmer <mvo@zagadka.de>
4598
4599 * hashtab.c (rehash_after_gc): Bug fix: properly link the
4600 processed hashtables back into the weak_hashtables list. Thanks
4601 to Bill Schottstaedt!
4602
e7313a9d
DH
46032004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4604
4605 * eval.c (unmemoize_quote): New static function.
4606
4607 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
4608 representation of 'quote' and '@slot-ref' to an improper list.
4609 This reduces execution time, the number of cells used to hold the
4610 memoized code, and thus also reduces garbage collection time.
4611
4612 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
4613
4614 (SCM_CEVAL): Changed macro handling to also work with macros that
4615 return improper lists. Added an assertion, that the code returned
4616 by a macro transformer will not lead to cycles in the memoized
4617 code.
4618
e5156567
DH
46192004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4620
4621 No functional change, just rearrangements of functions within the
4622 file.
4623
4624 * eval.c (scm_ilookup, scm_unbound_variable_key,
4625 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
4626 the definitions used for execution, since that's where they will
4627 belong to later.
4628
651f07f8
DH
46292004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4630
4631 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
4632 throughout guile, has not been part of an official release yet,
4633 and the concept of sloppy predicates has never been a good idea.
4634
4635 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
4636 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
4637 Simplified.
4638
770e048f
DH
46392004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4640
4641 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
4642 to make explicit what happens.
4643
2ff08405
DH
46442004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4645
4646 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
4647 explicit what happens.
4648
4649 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
4650 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
4651
89afb9cd
MV
46522004-05-11 Marius Vollmer <mvo@zagadka.de>
4653
4654 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
4655 is indeed a procedure when it isn't a number.
4656
3d5ebfa9
MV
46572004-05-10 Marius Vollmer <mvo@zagadka.de>
4658
4659 Convert floating point numbers into strings with an arbitrary
4660 radix. Thanks to Richard Todd!
4661
4662 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
4663 fit.
4664 (fx): Removed.
4665 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
4666 number_chars): New, to support variable radices.
4667 (idbl2str): Use above instead of the old base-10 only tables.
4668 (iflo2str): Pass on new RADIX argument to idbl2str.
4669 (scm_number_to_string): Pass radix to iflo2str.
4670 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
4671 iflo2str.
4672 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4673 possible radices.
4674
3ae69bb4
KR
46752004-05-10 Kevin Ryde <user42@zip.com.au>
4676
4677 * numbers.c (scm_logbit_p): Correction to test above the end of an
4678 inum. Reported by Jan Konecny.
4679
27968825
MV
46802004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4681
4682 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4683 scm_t_bits. Updated all users.
4684 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4685 duplicating the code.
4686 (SCM_CELL_OBJECT_LOC): New.
4687 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4688 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4689
4690 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4691 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4692 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4693 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4694 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4695 SCM_SMOB_OBJECT_3_LOC): New.
4696 * smob.c (scm_i_set_smob_flags): New function.
4697
4698 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4699 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4700 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4701 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4702 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4703 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4704
4705 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4706 taking the address of SCM_CELL_WORD_1, the latter being no longer
4707 an lvalue.
4708
4709 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4710 of casting SCM_CELL_WORD_LOC.
4711
3cf17ef0
KR
47122004-05-02 Kevin Ryde <user42@zip.com.au>
4713
37026925 4714 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
9a5fa6e9 4715 --disable-deprecated. Reported by Andreas Vögele.
37026925 4716
3cf17ef0 4717 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
9a5fa6e9 4718 particular on HP-UX). Reported by Andreas Vögele.
3cf17ef0 4719
c5854598
KR
4720 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4721 code has support for. Fixes building with AIX cc, which is ansi but
4722 doesn't define __STDC__. Reported by Keith Crane.
4723 (var_start): Remove macro, this variation no longer required.
4724 (scm_list_n): Use va_start directly.
4725
f26c1a32
KR
47262004-05-01 Kevin Ryde <user42@zip.com.au>
4727
4728 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
9a5fa6e9 4729 is now gone. Reported by Andreas Vögele.
f26c1a32 4730
dfa6017e
KR
47312004-04-28 Kevin Ryde <user42@zip.com.au>
4732
4733 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4734 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4735 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
9a5fa6e9 4736 subscript. Reported by Andreas Vögele.
dfa6017e
KR
4737 Also cast through unsigned char to avoid passing negatives to those
4738 macros if input contains 8-bit values.
4739
4740 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4741 corrections to range check for signed numbers. Remove
4742 scm_remember_upto_here_1(num) from these checks, since num is used
4743 subsequently anyway.
4744
4745 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4746 avoid warning from gcc 3.4. Reported by Hyperdivision.
4747
4748 * numbers.c (scm_bit_extract): Use min instead of MIN.
4749 (MIN): Remove, this conflicts with similar macro defined by limits.h
9a5fa6e9 4750 on HP-UX. Reported by Andreas Vögele.
dfa6017e
KR
4751
4752 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
9a5fa6e9 4753 particular on HP-UX). Reported by Andreas Vögele.
dfa6017e 4754
a0d06a00 4755 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
9a5fa6e9 4756 Reported by Andreas Vögele.
a0d06a00 4757
dfa6017e
KR
4758 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4759 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
9a5fa6e9 4760 by Andreas Vögele.
dfa6017e 4761
36245b66
DH
47622004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4763
4764 * eval.c (s_macro_keyword): New static identifier.
4765
4766 (scm_m_define): Change order to first create binding and
4767 evaluating the expression afterwards.
4768
4769 (scm_m_set_x): Memoize complete set! expression. Only leave
4770 symbols if no binding exists at memoization time. Throw error if
4771 assigning to a syntactic keyword.
4772
4773 (lazy_memoize_variable): New function.
4774
4775 (CEVAL): When execution set!, perform lazy memoization if
4776 unmemoized symbol is detected.
4777
4778 * modules.c (module_variable): Return variables with unbound
4779 value.
4780
4781 * tags.h: Fix comment.
4782
4d81111e
KR
47832004-04-25 Kevin Ryde <user42@zip.com.au>
4784
da8bcb2f
KR
4785 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4786 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4787 in 8-bit locales, and ensures consistency with char-upper-case? and
4788 char-lower-case? which already use ctype.h.
4789 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4790 Remove.
4791 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4792
4d81111e
KR
4793 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4794 call. Reported by Hyperdivision.
4795
4796 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4797 Reported by Hyperdivision.
4798
4799 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4800 Hyperdivision.
4801
7e6e6b37
DH
48022004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4803
4804 Hide the implementation of ilocs and isyms in eval.c.
4805
4806 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4807 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4808 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4809 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4810 eval.h to eval.c.
4811
4812 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4813 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4814 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4815 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4816 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4817 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4818 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4819 renamed to ISYMNUM.
4820
4821 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4822 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4823 Extracted printing of ilocs and isyms to guile internal functions
4824 scm_i_print_iloc, scm_i_print_isym of eval.c.
4825
caab294f
KR
48262004-04-22 Kevin Ryde <user42@zip.com.au>
4827
7aaf4758
KR
4828 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4829
caab294f
KR
4830 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4831 rounding in x+0.5 when x is a big value already an integer. In
4832 certain hardware rounding cases x+0.5 can give an adjacent integer,
4833 leading to that as the result, when we really just wanted x itself.
4834
b1cb24ff
DH
48352004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4836
4837 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4838
4839 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
4840 added const qualifiers, cast intentionally unused expressions to
4841 void for emphasis, improved comment.
4842
5065b40d
DH
48432004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4844
4845 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
4846 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
4847 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
4848 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
4849 Defined the tc8-tag for flags to be 0x04, which will mean that
4850 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
4851 to the reduced number of bits and the simpler bit pattern for
4852 SCM_BOOL_F, certain machines may be able to use more efficient
4853 processor instructions to deal with SCM_BOOL_F.
4854
4855 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
4856 never been defined in a released version, thus no need to
4857 deprecate them.
4858
4859 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
4860 instead of tc9 tags.
4861
4862 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
4863 of tc9 tags.
4864
4865 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
4866 could have used this definition.
4867
4868 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
4869 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
4870 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
4871 as isyms, as special isyms don't exist any more.
4872
9fa6c119
KR
48732004-04-18 Kevin Ryde <user42@zip.com.au>
4874
e08d2eee
KR
4875 * filesys.c (scm_readdir): Use readdir_r when available, for thread
4876 safety.
4877
9fa6c119
KR
4878 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
4879 explicit swapping code.
4880
c9cdd396
KR
48812004-04-15 Kevin Ryde <user42@zip.com.au>
4882
4883 * cpp_sig_symbols.in: Add SIGSYS.
4884
4885 * list.c (scm_append_x): Use iterative style, to avoid non-tail
4886 recursion.
4887
4888 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
4889 frac/big and frac/frac, use scm_less_p for exact comparison.
4890
83ac9c59
KR
4891 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
4892 with big/inum.
4893
84a4be9a
KR
4894 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
4895
84fad130
HWN
48962004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
4897
6b69393d
HWN
4898 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
4899
84fad130
HWN
4900 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
4901 scm_c_{up,down}case.
4902 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
4903 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
4904
c3110a30
KR
49052004-04-06 Kevin Ryde <user42@zip.com.au>
4906
0b288f36
KR
4907 * numbers.c (scm_ash): Remove stray "}" in docstring.
4908
ea2508c8
KR
4909 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
4910 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
4911 calling mpz_cmp_ui in most cases.
4912
c3110a30
KR
4913 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
4914 for big == abs(most-negative-fixnum) special case.
4915 (abs_most_negative_fixnum): Remove, no longer used.
4916
4917 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
4918 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
4919 calling (sigaction NSIG).
4920
4921 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
4922 and fork error cases to do this.
4923
dec40cd2
DH
49242004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4925
4926 * eval.c (CEVAL): Don't distinguish between short and long
4927 instructions when dispatching - just always dispatch on the
4928 instruction code, which is common for short and long instructions.
4929 Further, removed unnecessary goto statements and added comment.
4930
0e7bb795
DH
49312004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4932
4933 * eval.c (scm_unmemocopy): Don't distinguish between short and
4934 long instructions when dispatching - just always dispatch on the
4935 instruction code, which is common for short and long instructions.
4936 Further, removed unnecessary goto statements, fixed indentation
4937 and replaced SCM_IMP predicates by SCM_NULLP.
4938
f9986767
DH
49392004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4940
4941 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
4942 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
4943 'checkmacro'.
4944
fbc42231
KR
49452004-03-31 Kevin Ryde <user42@zip.com.au>
4946
4947 * simpos.c: Include <signal.h> for SIG_IGN and friends.
4948
434f2f7a
DH
49492004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4950
4951 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
4952 SCM_DEBUGGINGP:
4953
4954 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
4955 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
4956 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
4957 single interface that also matches the naming conventions.
4958 Probably scm_debug_mode_p should be part of the private interface
4959 anyway.
4960
4961 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
4962 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
4963 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
4964 to scm_debug_mode_p.
4965
4966
4967 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
4968
4969 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
4970 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
4971 from debug.h to eval.h.
4972
4973 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
4974 more, just leave it with setting scm_debug_mode_p, which is
4975 equivalent for practical purposes.
4976
4977 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
4978 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
4979
4980 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
4981
4982 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
4983 static and renamed it to ceval throughout. Provide a new exported
4984 but deprecated function scm_ceval as a wrapper for backwards
4985 compatibility. The same is done for the deval/scm_deval pair of
4986 functions.
4987
4988 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
4989 throughout. Defined CEVAL to ceval or deval, based on compilation
4990 phase.
4991
4992 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
4993 to ceval and deval instead of calling *scm_ceval_ptr.
4994
4995 * eval.c (dispatching_eval): New deprecated static function.
4996
4997 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
4998 to emulate its old behaviour as closely as possible.
4999
5000
5001 Change the evaluator such that only expressions for which pair? is
5002 true are passed to CEVAL, and such that all other expressions are
5003 evaluated outside of CEVAL:
5004
5005 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
5006 expression that is assumed to be memoized already. All but
5007 expressions of the form '(<form> <form> ...)' are evaluated inline
5008 without calling an evaluator.
5009
5010 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
5011 expressions of the form '(<form> <form> ...)' inline without
5012 calling an evaluator.
5013
5014 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
5015 the special case of unmemoized symbols passed on the top level.
5016
5017 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
5018 is known that the expression passed to CEVAL is of the form
5019 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
5020 now it is known that the input expression of CEVAL is a pair.
5021
50222004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5fb64383
DH
5023
5024 * eval.c (is_self_quoting_p): New static function.
5025
5026 (scm_m_quote): Use is_self_quoting_p.
5027
5028 (copy_tree): Corrected typo in comment.
5029
702551e6
HWN
50302004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
5031
bfefbf18
HWN
5032 * eval.c (s_scm_copy_tree): idem.
5033
5034 * list.c (s_scm_filter): remove "pointer" from doc string.
5035
702551e6
HWN
5036 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
5037
5038 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
5039
5040 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
5041 (display_frame): idem.
5042 (display_backtrace_file_and_line): idem.
5043
5044 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
5045 arguments.
5046
3cd23214
KR
50472004-03-26 Kevin Ryde <user42@zip.com.au>
5048
88a7ae1f
KR
5049 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
5050
3cd23214
KR
5051 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
5052 big==0 since that never occurs.
5053
5054 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
5055 scm_modular_expt, matching scheme level name `modulo-expt'.
5056
5057 * numbers.c (scm_modular_expt): Return a negative remainder for a
5058 negative divisor, the same as `modulo' does.
5059
50602004-03-26 Eric Hanchrow <offby1@blarg.net>
5061
5062 * numbers.c, numbers.h (scm_modular_expt): New function.
5063
2926035a
KR
50642004-03-25 Kevin Ryde <user42@zip.com.au>
5065
5066 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
5067 return inexact as required by r5rs.
5068
62360b89
DH
50692004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5070
5071 * eval.c: Separated some definitions relevant for execution from
5072 the memoization part of the file.
5073
5074 (copy_tree): New static function
5075
5076 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
5077 structures are detected now and will lead to an exception instead
5078 of forcing guile to run in an endless loop, using up all the
5079 system's memory. Second, arrays in the cdr of an improper list
5080 are now copied. See the new test cases in eval.test.
5081
50822004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
b28f5b3c
DH
5083
5084 * posix.c (scm_gethostname): Make sure len is initialised before
5085 it is used. Restructured to (hopefully) represent possible
5086 configurations more clearly in the code. Added unwind handler.
5087
3bd3bae8
KR
50882004-03-23 Kevin Ryde <user42@zip.com.au>
5089
5090 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
5091 MAXHOSTNAMELEN when available.
5092
254bf78d
MV
50932004-03-21 Marius Vollmer <mvo@zagadka.de>
5094
5095 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
5096 terminator. Rewritten the logic as a state machine, I must have
5097 been doing too much VHDL lately...
5098
5099 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
5100 themselves. Thanks to Han-Wen Nienhuys!
5101
5102 * list.c: Changed docstrings so that they no longer talk about
5103 returning 'pointers' to something.
5104
009c34a2
HWN
51052004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5106
5107 * gc.c: remove set_debug_cell_accesses! when
5108 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
5109 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
5110 debugging conditionally.
5111
54733c95
KR
51122004-03-21 Kevin Ryde <user42@zip.com.au>
5113
5114 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
5115
bbaf8747
KR
51162004-03-20 Kevin Ryde <user42@zip.com.au>
5117
5118 * posix.c (scm_gethostname): Preserve errno across free() call.
5119
726f82e7
HWN
51202004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
5121
5122 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
5123 free cells.
5124
e1350d6a
KR
51252004-03-14 Kevin Ryde <user42@zip.com.au>
5126
5127 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
5128 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
5129
62055253
KR
51302004-03-07 Kevin Ryde <user42@zip.com.au>
5131
5132 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
5133 than "GMT" always.
5134 (filltime): Make zname parameter "const".
5135
92e64b87
MD
51362004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
5137
5138 * threads.c, threads.h (scm_c_scm2thread): New function.
5139
004ad931
KR
51402004-02-29 Kevin Ryde <user42@zip.com.au>
5141
5142 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
5143 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
5144 particular don't assume "defined (__alpha__) && ! defined (linux)"
5145 means OSF. Remove "SCO" code, which was not really SCO specific and
5146 which John W. Eaton advises should be long past being needed.
5147
5148 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
5149 error throw.
5150
72ea45ac
KR
51512004-02-24 Kevin Ryde <user42@zip.com.au>
5152
5153 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
5154
2af0602e
KR
51552004-02-22 Kevin Ryde <user42@zip.com.au>
5156
5157 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
5158 complex, same as for two args. (Handle only inum, big, real, frac).
5159
b114eafe
KR
51602004-02-21 Kevin Ryde <user42@zip.com.au>
5161
5162 * posix.c (scm_crypt): Use new HAVE_CRYPT.
5163 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
db752bb5 5164 Reported by Andreas Voegele.
b114eafe 5165
1e55d288
NJ
51662004-02-20 Neil Jerram <neil@ossau.uklinux.net>
5167
5168 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
5169 validation.
5170
5171 * read.c (scm_lreadparen): Removed.
5172 (scm_lreadparen1): Renamed scm_i_lreadparen.
5173
eb741d98
HWN
51742004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5175
5176 * list.c (scm_list_n): validate non-immediate arguments;
5177 this will catch forgotten a SCM_UNDEFINED.
5178
4e28ba5e
MV
51792004-02-18 Marius Vollmer <mvo@zagadka.de>
5180
5181 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
5182 Thanks to Bill Schottstaedt!
5183
5184 * socket.h (scm_gethost): Removed prototype it is already in
5185 "net_db.h". Thanks to Bill Schottstaedt!
5186
ef861ead
KR
51872004-02-18 Kevin Ryde <user42@zip.com.au>
5188
5189 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
5190 order parameter to mpz_import, in fact with just one word there's no
5191 order to worry about at all.
5192
5193 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
5194 and frac==complex, make an exact comparison rather than converting
5195 with fraction2double.
5196
5197 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
5198 shared library, since environ is not directly available there.
5199
5200 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
5201 standard.
5202
5203 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
5204 errno EINVAL in case localtime and gmtime don't set it.
5205 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
5206 SCM_SYSERROR, since mktime and strptime generally don't set errno.
5207
ae43d08e 52082004-02-16 Kevin Ryde <kevin@swox.se>
292dfa7f 5209
c9ea6462
KR
5210 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
5211 which were permitted in the past for these.
5212
292dfa7f
KR
5213 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
5214 previous change to numbers.c.
5215
ae43d08e
KR
5216 * script.c (scm_shell_usage): Print bug-guile email address, as per
5217 GNU standard. Reported by Han-Wen Nienhuys.
5218
711a9fd7
MD
52192004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5220
5221 * unif.c (scm_make_uve): Removed local variable and simplified
5222 code in order to avoid compiler used uninitialized warnings.
5223
5224 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
5225 scm_hash_map.
5226 (scm_hash_fold): Use scm_call_3 directly in the call to
5227 scm_internal_hash_fold instead of going via fold_proc (which is
5228 now removed).
5229 (scm_hash_for_each): Use a trampoline +
5230 scm_internal_hash_for_each_handle.
5231 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
5232 functions.
5233
3da7f6b2
KR
52342004-02-12 Kevin Ryde <user42@zip.com.au>
5235
344a212f
KR
5236 * ports.c (scm_port_line): In docstring, note first line is 0.
5237 (scm_set_port_line_x): In docstring, note first line is 0.
5238 (scm_port_column): In docstring, there's no default to current input
5239 port, and remove shared port-line @defun.
5240 (scm_set_port_column_x): In docstring, there's no default to current
5241 input port, note first column is 0, remove shared set-port-line!
5242 @defun.
5243
3da7f6b2
KR
5244 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
5245 convert args the same way that array-set! does.
5246
5247 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
5248 for dvect.
5249 (scm_array_p): Add missing "break"s in switch, fix llvect test look
5250 for "l" not "s", fix dvect to be false for singp(prot) since such a
5251 value is for fvect.
5252 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
88531a74
KR
5253 (exactly_one_third): New variable.
5254 (scm_init_unif): Initialize it.
3da7f6b2 5255
cd21f5eb
NJ
52562004-02-10 Neil Jerram <neil@ossau.uklinux.net>
5257
5258 * read.c (scm_read_opts): Change `escaped-parens' to
5259 `elisp-strings'.
5260
16353acc
NJ
52612004-02-08 Neil Jerram <neil@ossau.uklinux.net>
5262
5263 * read.c (scm_read_opts): New opts `elisp-vectors' and
5264 `escaped-parens'.
5265 (s_vector): New.
5266 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
5267 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
5268 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
5269 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
5270 `escaped-parens' option set.
5271 (scm_read_token): If elisp vector syntax active, disallow [ and ]
5272 in tokens.
5273 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
5274 (scm_lreadparen1): New.
5275
5276 * read.h: Remove conditionally compiled last arg to
5277 scm_lreadparen.
5278 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
5279
f62b9dff
HWN
52802004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
5281
5282 * eval.c (m_expand_body): remove stray variable new_body.
5283
ef5b6b61
MV
52842004-01-22 Marius Vollmer <mvo@zagadka.de>
5285
5286 * eval.c (m_expand_body): Rewrite the expression in place (by
5287 overwriting FORMS) also when a letrec is constructed, not only
5288 when no definitions are found. Do not return rewritten expression
5289 to emphasize the in-place rewriting. Changed all users.
5290
7eec4c37
HWN
52912004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
5292
5293 * gc.c: add protected_object_count, a number that is dumped from
5294 gc_stats()
5295
25ffbdac
MV
52962004-01-11 Marius Vollmer <mvo@zagadka.de>
5297
5298 * dynwind.h, dynwind.c (scm_frame_unwind,
5299 scm_frame_unwind_handler): Renamed and changed all uses.
5300 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
5301
08568c95
KR
53022004-01-11 Kevin Ryde <user42@zip.com.au>
5303
5304 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
5305 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
5306 changes made to scheme-compound.texi.
5307
5565749c
MV
53082004-01-10 Marius Vollmer <mvo@zagadka.de>
5309
25ffbdac
MV
5310 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
5311 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
5312
5313 * guile-snarf.in: Use mkdir to create a unique temporary directory
5314 that we can safely use. Thanks to Stefan Nordhausen!
5565749c 5315
fc6bb283
MV
53162004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5317
7ebccde8
MV
5318 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
5319 argument since it is always zero now. Changed all callers.
5320 Removed code for handling fluids.
96e3b2f8
MV
5321
5322 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
5323 the wind chain explicitely. Use scm_c_with_fluid for the common
5324 case of only one fluid.
5325 (scm_with_fluid): New.
5326 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
5327
fc6bb283 5328 * fluids.h, fluids.c (scm_frame_fluid): New.
96e3b2f8
MV
5329 (scm_with_fluid): New.
5330 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
fc6bb283
MV
5331
5332 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
5333 do the unwinding directly. It is simple enough.
5334
5335 * dynwind.h, dynwind.c: Did the following renamings:
5336 scm_begin_frame -> scm_frame_begin,
5337 scm_end_frame -> scm_frame_end,
5338 scm_on_unwind -> scm_frame_unwind,
5339 scm_on_rewind -> scm_frame_rewind,
5340 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
5341 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
5342 Changed all uses.
5343
5344 * aync.h, async.c: Did the follwing renamings:
5345 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
5346 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
5347 Changed all uses.
5348
5349 * ports.h, ports.c: Did the follwing renamings:
5350 scm_with_current_input_port -> scm_frame_current_input_port,
5351 scm_with_current_output_port -> scm_frame_current_output_port,
5352 scm_with_current_error_port -> scm_frame_current_error_port.
5353 Changed all uses.
5354
298ab996
KR
53552004-01-07 Kevin Ryde <user42@zip.com.au>
5356
5357 * numbers.c (s_bignum): Remove, not used since gmp bignums.
5358 Reported by Richard Todd.
5359
ba40113e
KR
5360 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
5361 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
5362
298ab996
KR
5363 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
5364 traversing the args list, fixes segv if an improper list is given.
5365 Reported by Rouben Rostamian.
5366
aacff585
MV
53672004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5368
5369 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
5370 swap_data on stack, use a 'malloc obj'.
5371
5372 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
5373 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
5374 scm_i_... since they are internal. Changed all uses.
5375
5376 * dynwind.c (frame_print): Removed, use the default printer.
5377 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
5378 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
5379 to protect SCM values.
5380
5381 * dynwind.h (SCM_F_WIND_EXPLICITELY,
5382 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
5383 Changed all uses.
5384 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
5385
49c00ecc
MV
53862004-01-05 Marius Vollmer <mvo@zagadka.de>
5387
5388 * ports.h, ports.c (scm_with_current_input_port,
5389 scm_with_current_output_port, scm_with_current_error_port): New.
5390
5391 * async.h, async.c (scm_with_blocked_asyncs,
5392 scm_with_unblocked_asyncs): New.
5393
dab514a8
MV
53942004-01-03 Marius Vollmer <mvo@zagadka.de>
5395
5396 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
5397 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
5398 New.
5399 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
5400 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
5401 function when the outermost wind point has been reached. The
5402 latter is used to copy a continuation stack at the right time.
5403 scm_dowinds remains available.
5404 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
5405 tc16_guard, guards_print): Removed.
5406 (scm_internal_dynamic_wind): Reimplemented using frames.
5407
5408 * continuations.c (copy_stack): New, do only the stack copying
5409 part of copy_stack_and_call.
5410 (copy_stack_and_call): Copy the stack after unwinding and before
5411 rewinding.
5412 (scm_dynthrow): Do not call scm_dowinds, this is now done by
5413 copy_stack_and_call.
5414
441a25d9
KR
54152004-01-04 Kevin Ryde <user42@zip.com.au>
5416
5417 * numbers.c (scm_less_p): Don't convert frac to float for compares,
dab514a8 5418 can give bad results due to rounding.
441a25d9 5419
e0499207
KR
5420 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
5421 setzone/restorezone protection for DOS.
5422
89fcf1b4
MV
54232003-12-26 Marius Vollmer <mvo@zagadka.de>
5424
5425 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
5426 and scm_t_uintmax to be defined in scmconfig.h
5427
caff34d4
KR
54282003-12-03 Kevin Ryde <user42@zip.com.au>
5429
5430 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
5431
5432 * numbers.c (scm_make_ratio): Check for numerator equal to
5433 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
5434 giving integer -1.
5435
5436 * numbers.c (scm_real_part): Return fraction unchanged rather than
5437 converting to flonum.
5438
2d0b85ac
DH
54392003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5440
5441 * modules.c (module_variable): Fixed (and thus simplified) the
5442 definition of SCM_BOUND_THING_P to reflect the fact that since
5443 after the 1.4 series of guile, obarrays only hold variable
5444 objects.
5445
2297981d
MV
54462003-11-30 Marius Vollmer <mvo@zagadka.de>
5447
5448 * numbers.c (scm_logand): It's "#b...", not "#\b...".
5449
5450 From Paul Jarc:
5451
5452 * read.c (scm_lreadr): Signal an error for invalid escape
5453 sequences in strings. Code cleanups too.
5454
5455 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
5456 writing control characters in strings.
5457
54582003-11-21 Marius Vollmer <mvo@zagadka.de>
5459
5460 * ports.c (scm_drain_input): Bug fix: only access the port after
5461 checking that it indeed is one.
5462
5c264007
DH
54632003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5464
5465 * eval.c (s_bad_define): New static identifier.
5466
5467 (m_body): Fixed comment.
5468
5469 (scm_m_define): Don't generate memoized code for definitions that
5470 are not on the top level. As a consequence, no memoized code at
5471 all is generated for definitions any more: Top level definitions
5472 are executed immediately during memoization and internal
5473 definitions are handled separately in m_expand_body.
5474
5475 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
5476 definitions. Consequently, there is no unmemoizing code any more
5477 that might modify the environment. Thus, the old scm_unmemocopy
5478 is removed and the old unmemocopy is renamed to scm_unmemocopy.
5479
5480 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
5481 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
5482 over SCM_NIMP in places, where the argument is known to be part of
5483 a proper list.
5484
018d4730
KR
54852003-11-21 Kevin Ryde <user42@zip.com.au>
5486
5487 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
5488 for bignums.
5489
5490 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
5491 to share some shifting.
5492
5493 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
5494 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
5495 since gc does this.
5496
4bca30d8
MV
54972003-11-19 Marius Vollmer <mvo@zagadka.de>
5498
fb16d26e
MV
5499 * numbers.c (scm_make_ratio): Rewritten to have a simpler
5500 structure. Previously, not all cases with a negative denominator
5501 were covered.
5502
4bca30d8
MV
5503 * numbers.c (mem2decimal_from_point): use scm_divide instead of
5504 scm_divide2real when forming the fractional part. This allows
5505 "#e1.2" to yield 6/5.
5506
5507 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
5508 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
5509 fractions were equal to each other regardless of value. Ooops.
5510
5511 * numbers.c (scm_rationalize): Return an inexact result when given
5512 inexact arguments.
5513
5514 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
5515 non-numbers.
5516
bdf26b60
MV
55172003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5518
5519 Support for exact fractions from Bill Schottstaedt! Thanks!
5520
5521 * print.c (scm_iprin1): Handle fractions.
5522
5523 * objects.h (scm_class_fraction): New.
5524 * objects.c (scm_class_fraction): New.
5525 (scm_class_of): Handle fractions.
5526
5527 * hash.c (scm_hasher): Handle fractions.
5528
5529 * numbers.c: New code for handling fraction all over the place.
5530 (scm_odd_p, scm_even_p): Handle inexact integers.
5531 (scm_rational_p): New function, same as scm_real_p.
5532 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
5533 New exact functions that replace the inexact 'dsubr'
5534 implementations.
5535 (scm_numerator, scm_denominator): New.
5536
5537 * numbers.h (SCM_NUMP): Recognize fractions.
5538 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
5539 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
5540 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
5541 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
5542 SCM_FRACTION_REDUCED): New.
5543 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
5544 New prototypes.
5545 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
5546 scm_rational_p): New prototypes.
5547 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
5548 scm_i_print_fraction): New prototypes.
5549
5550 * goops.c (create_standard_classes): Create "<fraction>" class.
5551
5552 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
5553
5554 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
5555 case in the switch, but do nothing for now.
5556
5557 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
5558 to doubles when calling 'dsubr' functions.
5559
5560 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
5561
28fda544
RB
55622003-11-18 Rob Browning <rlb@defaultvalue.org>
5563
5564 * gen-scmconfig.c (main): remove public definition of
5565 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
5566 direct typedef of long_long and ulong_long inside deprecated block
5567 when appropriate.
5568
5569 * deprecated.h: move long_long and ulong_long definitions to
5570 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
5571 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
5572
b58e7420
MV
55732003-11-17 Marius Vollmer <mvo@zagadka.de>
5574
9a1d7d7c
MV
5575 * hash.c (scm_string_hash): New hashing algorithm that takes the
5576 complete string into account.
5577
b58e7420
MV
5578 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
5579 is a list. This allows (@ ...) to work with set!.
9a1d7d7c
MV
5580 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
5581 SCM_ASSYNT.
b58e7420
MV
5582
5583 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
5584 the "-e" option instead of scm_str2symbol. This allows things
5585 like (@ ...) to be specified for the entry point.
5586
461bffb1
DH
55872003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5588
5589 * eval.c (scm_m_letstar): Create memoized code in place to
5590 minimize consing.
5591
6f81708a
DH
55922003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5593
5594 * eval.c (s_splicing): Commented and reformulated.
5595
5596 (lookup_global_symbol, lookup_symbol): New static functions.
5597
5598 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
5599
5600 (try_macro_lookup, literal_p): Use lookup_symbol instead of
5601 creating a temporary pair for scm_lookupcar.
5602
5603 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
5604 created deprecated wrapper function scm_unmemocar.
5605
5606 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
5607 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
5608 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
5609 undefineds, sym_three_question_marks): Moved around without
5610 modifications.
5611
5612 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
5613
910b5125
DH
56142003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5615
5616 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
5617 m_expand_body, scm_m_expand_body): Grouped together with m_body.
5618 No further modifications.
5619
c86c440b
DH
56202003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5621
5622 * eval.c (s_mixed_body_forms): New static identifier.
5623
5624 (canonicalize_define, scm_m_define): The check for a bad
5625 expression is performed in canonicalize_define now.
5626
5627 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
5628 static helper functions for m_expand_body.
5629
5630 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
5631 expand user defined macros. Fixed handling of the definition/
5632 expression boundary. Fixed handling of definitions grouped with
5633 'begin. Use canonicalize_define to expand definitions.
5634
3890131a
MV
56352003-11-13 Marius Vollmer <mvo@zagadka.de>
5636
b58e7420
MV
5637 * read.c (scm_lreadr): detect EOF after backslash, and interpret
5638 \xNN hexadecimal sequences. From Paul Jarc, thanks!
5639
5df36eac
MV
5640 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
5641 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
5642 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
5643 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
5644 New macros from Paul Jarc. Thanks!
5645
3890131a
MV
5646 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
5647 return NULL when the machine type is unknown. Previously,
5648 gc_os_dep.c would refuse to compile.
5649
430b8401
DH
56502003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5651
5652 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
5653 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
5654 scm_m_body to m_body.
5655
328dc9a3
DH
56562003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5657
5658 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
5659 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5660 scm_m_expand_body to m_expand_body and made it static. Added
5661 deprecated wrapper scm_m_expand_body.
5662
5663 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
5664 of scm_m_expand_body.
5665
c2337a61
KR
56662003-11-09 Kevin Ryde <user42@zip.com.au>
5667
5668 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
5669 argument. Reported by Mike Gran.
5670
ced8edb0
DH
56712003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5672
5673 * eval.c (s_missing_body_expression): New static identifier.
5674
5675 (s_body): Removed.
5676
5677 (scm_m_expand_body): Fixed core dump when passing a body with
5678 defines, but without expressions (see additions to syntax.test).
5679 Use ASSERT_SYNTAX to signal syntax errors.
5680
0f572ba7
DH
56812003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5682
5683 * eval.c (canonicalize_define): New static helper function.
5684
5685 (memoize_define, canonicalize_define): Extract handling of
5686 function currying to canonicalize_define.
5687
2510c810
DH
56882003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5689
5690 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5691 Make sure that error checking in debug mode is not worse than in
5692 standard mode.
5693
34adf7ea
DH
56942003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5695
5696 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5697 handled in scm_m_body any more, but rather in scm_m_lambda.
5698
5699 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5700 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5701 calling functions of scm_m_body.
5702
5703 (scm_m_lambda): Avoid unnecessary consing when creating the
5704 memoized code.
5705
89bff2fc
DH
57062003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5707
5708 * eval.c (s_expression): Added comment.
5709
5710 (s_empty_combination, error_unbound_variable): New static
5711 identifiers.
5712
5713 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5714 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5715 signal syntax errors.
5716
5717 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5718 scheme objects.
5719
60a49842
DH
57202003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5721
5722 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5723 Grouped together with unmemocopy, without modifications.
5724
5725 (build_binding_list, unmemocopy): Renamed names of list arguments
5726 and variables to reflect the actual order of the list elements.
5727
70c1c108
DH
57282003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5729
5730 * eval.c (s_defun): New static identifier.
5731
5732 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5733 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5734 when creating the memoized code.
5735
0ee39677
KR
57362003-10-19 Kevin Ryde <user42@zip.com.au>
5737
5738 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5739
5740 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5741 in accordance with R5RS, which just mpz_get_d doesn't really give.
5742
9a848baf
DH
57432003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5744
5745 * eval.c (s_bad_slot_number): New static identifier.
5746
5747 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5748 signal syntax errors. Avoid unnecessary consing when creating the
5749 memoized code.
5750
da48db62
DH
57512003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5752
5753 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5754 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5755 errors. Avoid unnecessary consing when creating the memoized
5756 code.
5757
5758 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5759 standard case. Make sure line and file information are copied to
5760 every created expression.
5761
82b3e2c6
DH
57622003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5763
5764 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5765 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5766 when creating the memoized code.
5767
5768 (scm_m_atbind): Reversed the order, in which the init expressions
5769 are stored and executed. The order of execution is now equal to
5770 the order in which the initializers of the let-forms are executed.
5771 Use check_bindings and transform_bindings.
5772
5773 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5774 !SCM_NULLP. Added some comments.
5775
21628685
DH
57762003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5777
5778 * eval.c: Sorted include files alphabetically.
5779
5780 (scm_m_begin): Added comment.
5781
5782 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5783 unnecessary consing when creating the memoized code.
5784
5785 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5786 syntax errors. Be more specific about the kind of error that was
5787 detected.
5788
5789 (scm_m_quote, unmemocopy): As an optimization, vector constants
5790 are now inserted unquoted into the memoized code. During
5791 unmemoization the quotes are added again to provide syntactically
5792 correct code.
5793
d6754c23
DH
57942003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5795
5796 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5797 scm_m_expand_body, check_bindings): Extracted syntax checking of
5798 bindings to new static function check_bindings.
5799
5800 (scm_m_let, memoize_named_let): Extracted handling of named let to
5801 new static function memoize_named_let.
5802
5803 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5804 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5805 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5806 unnecessary consing when creating the memoized code.
5807
03a3e941
DH
58082003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5809
5810 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5811 static identifiers.
5812
5813 (s_clauses, s_formals, s_duplicate_formals): Removed.
5814
5815 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5816 specific about the kind of error that was detected. Prepare for
5817 easier integration of changes for separated memoization.
5818
da48db62 58192003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4610b011
DH
5820
5821 * eval.c (s_duplicate_binding): New static identifier.
5822
5823 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5824
5825 (scm_m_define): Added comment about how we check for duplicate
5826 formals.
5827
5828 (scm_m_do): Added check for duplicate bindings.
5829
5830 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5831 unnecessary consing when creating the memoized code.
5832
5833 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5834 scm_c_improper_memq to c_improper_memq, since it is not exported.
5835
5836 (transform_bindings): Call scm_c_memq rather than
5837 scm_c_improper_memq.
5838
5839 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
5840
da48db62 58412003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
a954ce1d
DH
5842
5843 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
5844 static identifiers.
5845
5846 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
5847 specific about the kind of error that was detected. Avoid use of
5848 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
5849 code, this way also making sure that file name, line number
5850 information etc. remain available.
5851
da48db62 58522003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8ae95199
DH
5853
5854 * eval.c (memoize_as_thunk_prototype): New static function.
5855
5856 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
5857 Avoid unnecessary consing when creating the memoized code.
5858
9b9a35b6
KR
58592003-10-12 Kevin Ryde <user42@zip.com.au>
5860
5861 * list.c (scm_append): Track argument number and use in error.
5862
cc56ba80
DH
58632003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5864
5865 * eval.c (s_missing_expression, s_bad_variable): New static
5866 identifiers.
5867
5868 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
5869 R5RS terminology for the naming of variables. Be more specific
5870 about the kind of error that was detected. Make sure file name,
5871 line number etc. are added to all freshly created expressions.
5872 Avoid unnecessary consing when creating the memoized code.
5873
609a8b86
DH
58742003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5875
5876 * eval.c (s_extra_expression, s_misplaced_else_clause,
5877 s_bad_cond_clause, s_missing_recipient): New static identifiers.
5878
5879 (s_extra_case_clause): Removed.
5880
5881 (scm_m_case, scm_m_cond): If a clause appears after an else
5882 clause, report a misplaced else clause.
5883
5884 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
5885 specific about the kind of error that was detected. Handle bound
5886 'else and '=>. Avoid unnecessary consing when creating the
5887 memoized code.
5888
5889 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5890 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
5891 syntactic keyword '=>.
5892
58a2510b
DH
58932003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5894
5895 * eval.c (scm_m_case): Allow empty lists of case labels.
5896
2a6f7afe
DH
58972003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5898
5899 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
5900
5901 * print.c (scm_isymnames): Add names for the new memoizer codes.
5902
5903 * eval.c (s_missing_clauses, s_bad_case_clause,
5904 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
5905 literal_p): New static identifiers.
5906
5907 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
5908 specific about the kind of error that was detected. Check for
5909 duplicate case labels. Handle bound 'else. Avoid unnecessary
5910 consing when creating the memoized code.
5911
5912 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5913 the syntactic keyword 'else.
5914
e6729603
DH
59152003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5916
5917 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
5918 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
5919
5920 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5921 unnecessary consing when creating the memoized code.
5922
9ddeb776
KR
59232003-10-09 Kevin Ryde <user42@zip.com.au>
5924
5925 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
5926 cast gives for values bigger than a long, or for nan or inf.
5927
df5af69a
DH
59282003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5929
5930 * smob.h (scm_make_smob_type): Made the declaration match the
5931 definition.
5932
da0e6c2b
MV
59332003-10-07 Marius Vollmer <mvo@zagadka.de>
5934
5935 * goops.c, objects.h, smob.c, smob.h: Make type names char
5936 const * instead of char *. Thanks to Paul Jarc!
5937
591924eb
KR
59382003-10-02 Kevin Ryde <user42@zip.com.au>
5939
ff6ea7b9 5940 * strports.c (scm_call_with_output_string): scm_get_output_string
591924eb
KR
5941 rather than scm_strport_to_string, so as to guard against the port
5942 having been closed by the called procedure. Reported by Nic Ferrier.
5943
f03314f9
DH
59442003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5945
5946 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
5947
5948 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
5949 tags.h to deprecated.h.
5950
534c55a9
DH
59512003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5952
5953 This set of patches introduces a new tc7 code scm_tc7_number for
5954 numbers. Bignums, reals and complex numbers are turned from smobs
5955 into subtypes of scm_tc7_number.
5956
5957 * tags.h (scm_tc7_number): New.
5958
5959 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
5960 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
5961 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
5962 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
5963 (scm_class_of), print.c (scm_iprin1), smob.c
5964 (scm_smob_prehistory): Don't handle bignums, reals and complex
5965 numbers as subtypes of scm_tc7_smob any more.
5966
5967 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
5968 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
5969
29c4382a
DH
59702003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5971
5972 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
5973 sizeof (scm_t_complex) to determine the memory size of the
5974 malloc'd area for complex numbers.
5975
47ae1f0e
DH
59762003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5977
5978 * numbers.c (scm_bigequal): Fixed.
5979
859b6b2f
MV
59802003-09-16 Marius Vollmer <mvo@zagadka.de>
5981
5982 * stime.c (scm_current_time): 'time' does not set errno so don't
5983 use SCM_SYSERROR for reporting errors.
5984
e17d318f
DH
59852003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5986
5987 This set of patches eliminates the dependency between the
5988 implementation of evaluator specific memoization codes and special
5989 constants like #f, '() etc. ('flags'), which are not evaluator
5990 specific. The goal is to remove definitions of evaluator
5991 memoization codes completely from the public interface. This will
5992 make it possible to experiment more freely with optimizations of
5993 guile's internal representation of memoized code.
5994
5995 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
5996
5997 * print.c (iflagnames): New array, holding the printed names of
5998 guile's special constants ('flags').
5999
6000 (scm_isymnames): Now holds only the printed names of the
6001 memoization codes.
6002
6003 (scm_iprin1): Separate the handling of memoization codes and
6004 guile's special constants.
6005
6006 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
6007 SCM_IFLAGNUM): new
6008
6009 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
6010 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
6011 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
6012 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
6013 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
6014 values.
6015
6016 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
6017
6018 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
6019 tc9 macros and scm_tc9_flag.
6020
eecac806
MV
60212003-09-15 Marius Vollmer <mvo@zagadka.de>
6022
6023 * posix.c (scm_setgroups): Check that the gid list is not too
6024 long. Thanks to Paul Jarc!
6025
22f2cf2d
DH
60262003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
6027
6028 * tags.h: Reduced the number of short instructions from 14 to 13.
6029 The typecode of the former 14th short instruction is now used to
6030 represent long instructions. Changed some comments to reflect
6031 this fact.
6032
6033 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
6034 previously used by SCM_IM_DEFINE.
6035
6036 (SCM_IM_DEFINE): Turned into a long instruction.
6037
6038 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
6039 instruction.
6040
6041 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
6042 code that is separate from all instructions, one level of dispatch
6043 for long instructions can be eliminated.
6044
6045 * print.c (scm_isymnames): Removed some commented code.
6046
62f548e1
MV
60472003-09-12 Marius Vollmer <mvo@zagadka.de>
6048
97a61c5f
MV
6049 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
6050 compiler on IA64.
6051
50e0ba57
MV
6052 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
6053
6054 * modules.c (scm_module_reverse_lookup): Check that the obarray
6055 really is a hashtable and do nothing if not.
6056
62f548e1
MV
6057 * inline.h: Use "extern inline" only with GCC. Use "static
6058 inline" else.
6059
0d5e3480
DH
60602003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6061
6062 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
6063 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6064
6065 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
6066 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
6067 deprecated.h.
6068
6b412e91
DH
60692003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6070
6071 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
6072 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6073
6074 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
6075 0.0==some_expression to some_expression==0.0. The latter is
6076 better readable. The former is preferred by some people, since it
6077 leads to a compiler error when confusing == with =. However, when
6078 using gcc, a warning will be issued if in an if-statement an
6079 assigment appears. Since many Guile developers are using gcc,
6080 such errors will not remain unnoticed anyway. We can therefore
6081 focus on better readability.
6082
7e3b25bf
DH
60832003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6084
6085 * tags.h: Added description of Guile's type system. Removed some
6086 old and misleading comments.
6087
3ea39242
DH
60882003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6089
6090 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
6091 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6092
5d7d39ff
DH
60932003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6094
6095 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
6096
6097 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
6098 respective SLOPPY macro.
6099
baa84a20
DH
61002003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6101
6102 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
6103 type string, not SCM_TYP7S.
6104
ba15f500
KR
61052003-09-03 Kevin Ryde <user42@zip.com.au>
6106
6107 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
6108 2s-complement.
6109
53bb8782
KR
6110 * stime.c (scm_strptime): Add comment about glibc strptime %s and
6111 current timezone requiring SCM_DEFER_INTS.
6112
defdc4b4
NJ
61132003-08-30 Neil Jerram <neil@ossau.uklinux.net>
6114
6115 * script.c (scm_compile_shell_switches): Make -s switch optional
6116 if file to be loaded does not begin with a `-'. (Thanks to Aaron
6117 VanDevender for the patch!)
6118
0f008a15
KR
61192003-08-30 Kevin Ryde <user42@zip.com.au>
6120
6121 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
6122 and to have non-integer types rejected as per other logical funcs.
6123
438a3ba1
KR
61242003-08-28 Kevin Ryde <user42@zip.com.au>
6125
6126 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
6127
98dceb37
KR
61282003-08-23 Kevin Ryde <user42@zip.com.au>
6129
6130 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
6131 thread safe, and could take a long time too.
6132
1fa79a38
KR
61332003-08-22 Kevin Ryde <user42@zip.com.au>
6134
6135 * numbers.c (scm_difference): Correction to bignum - negative inum.
6136
d97f9b42
KR
61372003-08-14 Kevin Ryde <user42@zip.com.au>
6138
6139 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
6140 [__GNUC__]: Use volatile asm macros rather than a function call.
6141 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
6142 macros while defining functions.
6143
6144 * simpos.c (getenv): Use <stdlib.h> for prototype.
6145 (scm_system): In docstring, refer to status:exit-val rather than
6146 "functions above".
6147
b9052fcc
KR
61482003-08-09 Kevin Ryde <user42@zip.com.au>
6149
6150 * srcprop.c (scm_source_properties): Return plist from hash if it's a
6151 list set by source-properties! rather than an SRCPROPS object,
6152
8e5b4b9e
KR
61532003-07-29 Kevin Ryde <user42@zip.com.au>
6154
6155 * properties.c (scm_primitive_property_ref): In docstring, note
6156 parameters to not-found-proc, use hyphens rather than underscores for
6157 that parameter name.
6158 (scm_primitive_property_set_x): In docstring, VAL is the value
6159 parameter not CODE.
6160
20703ac4
MV
61612003-07-27 Marius Vollmer <mvo@zagadka.de>
6162
c6ccee34
MV
6163 * print.c (scm_print_symbol_name): handle more weird characters by
6164 escaping the symbol name properly. Thanks to Paul Jarc!
6165
2f4931bf
MV
6166 * posix.h (scm_setgroups): New prototype.
6167 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
6168 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
6169 Don't use SCM_WRITABLE_VELTS.
6170
265c456f
MV
6171 * gc.h (SCM_GC_SET_CELL_BVEC): New.
6172 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
6173 Matthias Koeppe!
6174
20703ac4
MV
6175 * __scm.h (SCM_C_INLINE_KEYWORD): New.
6176 * numbers.c: Use it in place of SCM_C_INLINE so that the code
6177 compiles when SCM_C_INLINE is undefined.
6178
59c4bb82
DH
61792003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6180
6181 * __scm.h: Reformulated the architecture and compiler properties
6182 in terms of properties of scm_t_bits and SCM variables rather than
6183 in terms of c standard types. This is since it is not known which
6184 of the standard types scm_t_bits and SCM variables will be defined
6185 to.
6186
d7850c8d
KR
61872003-07-24 Kevin Ryde <user42@zip.com.au>
6188
6189 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
6190 and real.
6191
8a0c514f
KR
61922003-07-18 Kevin Ryde <user42@zip.com.au>
6193
6194 * numbers.c (scm_product): In complex * bignum, correction to
6195 REAL/IMAG fetch, x is the complex, not y.
6196
0aacf84e
MD
61972003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6198
6199 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
6200 scm_inf_p test as Scheme values.
6201 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
6202 and a positive inum.
6203 Use GNU indentation style.
6204
192de9a4
DH
62052003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
6206
6207 * values.c (scm_values): Build lists of length 1 by using
6208 scm_list_1 instead of using scm_cons.
6209
bbb4438a
KR
62102003-07-10 Kevin Ryde <user42@zip.com.au>
6211
b58c85ce
KR
6212 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
6213 * list.c (scm_list_n): Ditto.
6214
bbb4438a
KR
6215 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
6216
287f8ad1
KR
62172003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
6218
6219 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
6220 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
6221 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
6222 the other using intptr_t.
6223
005d2366
KR
62242003-07-08 Kevin Ryde <user42@zip.com.au>
6225
0aacf84e 6226 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
6227 (scm_magnitude): Use hypot.
6228
6229 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
6230 @footnote since it doesn't go through to guile-procedures.txt.
6231
6232 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
6233 outside @var to quieten makeinfo, and use @code.
6234
cbfe8e62
HWN
62352003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6236
6237 * gc-malloc.c (decrease_mtrigger): new function
6238 (increase_mtrigger): new function, separate debug registering and
6239 mtrigger administration.
6240 (scm_gc_realloc): bugfix: do mtrigger administration before the
6241 actual realloc, for the realloc might invalidate a GC-d segment of
6242 memory. Thanks to Sam Hocevar for pointing this out.
6243 (scm_gc_realloc): use scm_malloc_reregister instead of
6244 unregistering and registering in sequence.
6245
aeb4c2e1
HWN
62462003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6247
6248 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
6249
4c27f8d2
HWN
62502003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6251
6252 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
6253 clauses.
6254
983e697d
MV
62552003-06-29 Marius Vollmer <mvo@zagadka.de>
6256
6257 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
6258 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
6259 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
6260 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
6261 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
6262 the release_1_6 branch.
6263
78b6566e
SJ
62642003-06-25 Stefan Jahn <stefan@lkcc.org>
6265
6266 * continuations.c: Redeclaration of getcontext() via the
6267 __asm__ ("getcontext") directive.
6268
6269 * continuations.h: Include <ucontext.h> instead of
6270 <sys/ucontext.h>.
6271
1ebb8497
KR
62722003-06-21 Kevin Ryde <user42@zip.com.au>
6273
6274 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
6275 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
6276 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
6277 available.
6278 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
6279 (isfinite): Remove, conflicts with C99 isfinite().
6280
fbf85ba4
MV
62812003-06-19 Marius Vollmer <mvo@zagadka.de>
6282
6283 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
6284 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
6285 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
6286 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
6287 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
6288 the release_1_6 branch.
6289
fcc5d734
SJ
62902003-06-14 Stefan Jahn <stefan@lkcc.org>
6291
6292 * threads.h: Redefined scm_getspecific() and scm_setspecific()
6293 to be functions instead of macros.
6294
6295 * threads.c: Conditionalized inclusion of <sys/time.h> and
6296 <unistd.h>.
6297 (scm_getspecific, scm_setspecific): Made these two function
6298 real part of the API.
6299
6300 * posix.c (s_scm_putenv): Added some code to make a
6301 (putenv "FOO="), i.e. setting an empty string, work also on
6302 Win32 systems. Thanks to Kevin Ryde for the proposal.
6303
c3ae8e07
KR
63042003-06-12 Kevin Ryde <user42@zip.com.au>
6305
75b14838
KR
6306 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
6307 freebsd to comment about need to use unsetenv.
c3ae8e07 6308
9d9fa092
MV
63092003-06-02 Marius Vollmer <mvo@zagadka.de>
6310
6311 * ports.c (scm_peek_char): Safe the column of the port around the
6312 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
6313
f2478375
KR
63142003-06-07 Kevin Ryde <user42@zip.com.au>
6315
6316 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
6317 and friends required by scm_t_bits setups.
6318
6375e040
DH
63192003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6320
6321 * tags.h (scm_tc2_int): Added.
6322
6323 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
6324 scm_tc2_int.
6325
6326 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
6327 scm_tcs_closures): Hard coded values replaced by symbolic ones.
6328
f5c6ec2f
DH
63292003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6330
6331 * eval.c: Partially undid my patch from 2003-05-31. This patch
6332 caused the segfault referenced in the previous changelog entry.
6333
47dbd81e
DH
63342003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6335
6336 * tags.h: Fixed comment about the immediate type code layout.
6337
6338 * eval.c: Fixed handling of non-special instructions. Without
6339 this patch, guile will segfault on (#\0) and similar instructions.
6340
3ec52c51
KR
63412003-06-05 Kevin Ryde <user42@zip.com.au>
6342
6343 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
6344 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
6345
e418bd7c
KR
6346 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
6347 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
6348
d0624e39
DH
63492003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6350
6351 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
6352 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
6353 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
6354 generalized it to apply not only to C level functions but also to
6355 scheme level functions.
6356
6357 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
6358 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
6359 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
6360 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
6361 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
6362 respectively.
6363
6364 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
6365 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
6366 eval.h into eval.c and a copy is placed into deprecated.h.
6367
6368 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
6369 into eval.c. This definition was not part of the API in any
6370 officially released version of guile and thus does not need to go
6371 through a phase of deprecation.
6372
e90c3a89
DH
63732003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
6374
d0624e39
DH
6375 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
6376 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
6377 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
6378 definitions are make static and renamed from scm_s_xxx to s_xxx.
6379 In deprecated.c the original definitions are copied.
6380
d0624e39
DH
6381 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
6382 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
6383 eval.h into eval.c and a copy (slightly modified to work in user
6384 code) is placed into deprecated.h.
6385
6386 * eval.c: Use the local static s_xxx definitions instead of the
6387 scm_s_xxx definitions throughout.
6388
14b18ed6
DH
63892003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
6390
6391 This set of patches separates the representation of the cxr family
6392 of functions (car, cdr etc.) from the dsubr family of functions
6393 (i. e. functions that take a double precision floating point
6394 argument). Further, the algorithm for handling the cxr function
6395 is improved.
6396
6397 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
6398 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
6399 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
6400 cosh, tanh), objects.c (scm_class_of), procprop.c
6401 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
6402 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
6403 typecode for the dsubr family of functions.
6404
6405 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
6406 ramap_dsubr.
6407
6408 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
6409 (scm_init_pairs): Make use of the (now usable) second cell element
6410 of a scm_tc7_cxr function to implement the cxr family of functions
6411 more efficiently.
6412
2ca0d207
DH
64132003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
6414
6415 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
6416 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
6417 end of an if-else-if-sequence of checks.
6418
9a069bdd
DH
64192003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6420
6421 * eval.c (SCM_CEVAL): Improved readability of call-with-values
6422 execution. Generalize apply_closure to apply_proc and use that
6423 for call-with-values.
6424
e910e9d2
DH
64252003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6426
6427 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
6428 a non closure.
6429
1e498fbd
SJ
64302003-05-30 Stefan Jahn <stefan@lkcc.org>
6431
6432 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
6433 appropriately for mingw32 hosts.
6434
6435 * numbers.h: Defining copysign(), isnan() and finite() to
6436 be prefixed by a single '_' for mingw32 hosts.
6437
c47e2599
KR
64382003-05-30 Kevin Ryde <user42@zip.com.au>
6439
6440 * numbers.c (z_negative_one): New variable.
6441 (scm_init_numbers): Initialize it.
6442 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
6443
2e945bcc
SJ
64442003-05-29 Stefan Jahn <stefan@lkcc.org>
6445
6446 * win32-dirent.c: Use malloc() instead of scm_malloc().
6447
6448 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
6449 warning.
6450
6451 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
6452 mingw32 build.
6453
6454 * modules.c (s_scm_module_import_interface): Renamed local
6455 variable interface to _interface. Seems like 'interface'
6456 is a special compiler directive for the mingw32 compiler.
6457
6458 * mkstemp.c: Provide prototype to avoid compiler warning.
6459
6460 * load.c (s_scm_search_path): Fixed absolute and relative
6461 path detections for native Windows platforms.
6462
6463 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
6464 to build on mingw32).
6465
6466 * gc-freelist.c ("s_scm_map_free_list",
6467 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
6468
6469 * fports.c (fport_fill_input): Disable use of
6470 fport_wait_for_input() on Win32 platforms.
6471
6472 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
6473
6474 * Makefile.am: Modified some rules for cross compiling.
6475
ddd8f927
DH
64762003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6477
6478 * eval.c (SCM_CEVAL): In case of an application, all checks for a
6479 proper function object and the correct number of arguments are now
6480 performed in the application part of SCM_CEVAL.
6481
6482 (scm_badformalsp): Removed.
6483
f8ba2197
DH
64842003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6485
6486 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
6487
79f55b7c
MD
64882003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6489
a502595f
MD
6490 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
6491 always being false by inserting preprocessor conditional. (Thanks
6492 to Bruce Korb.)
6493
79f55b7c
MD
6494 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
6495 (void *) in order to avoid an aliasing warning; thanks to Bruce
6496 Korb.)
6497
6498 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
6499
6500 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
6501 SCM_STACK_PTR.
6502
6503 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
6504 thread->base --> t->base.
6505
6506 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
6507
47dee228
MV
65082003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6509
6510 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
6511 scm_variable_set_name_hint, scm_builtin_variable,
6512 scm_internal_with_fluids, scm_make_gsubr,
6513 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
6514 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
6515 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
6516 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
6517 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
6518 scm_make_subr_with_generic, scm_make_subr_opt,
6519 scm_call_catching_errors, scm_make_smob_type_mfpe,
6520 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
6521 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
6522 branch. Some have been slightly rewritten.
6523 (scm_i_object_chars, scm_i_object_length): New, to support
6524 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
6525
e681d187
DH
65262003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6527
6528 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
6529 names and inits in the memoized code of do.
6530
7e59d9d4
MD
65312003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6532
6533 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
6534 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
6535 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
6536 a compilation error if error-on-warning is enabled).
6537
9950a42c
MV
65382003-05-17 Marius Vollmer <mvo@zagadka.de>
6539
6540 * c-tokenize.lex: Gobble up complete lines after a '#'. This
6541 removes preprocessor directives from the snarfage that might
6542 otherwise confuse us. These directives appear when compiling with
6543 "-g3", for example.
6544
0068984b
HWN
65452003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6546
26e68795
HWN
6547 * ChangeLog: add my surname
6548
0068984b
HWN
6549 * srcprop.c (scm_finish_srcprop): use
6550 scm_gc_register_collectable_memory()
6551 (scm_make_srcprops): idem.
6552
131805f0
HWN
65532003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6554
6555 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
6556 wrap-around for scm_mtrigger
6557 (scm_gc_register_collectable_memory): abort on overflowing
6558 scm_mallocated().
6559
d4611024
KR
65602003-05-13 Kevin Ryde <user42@zip.com.au>
6561
6562 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
6563 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
6564
7aaf8dc9
MD
65652003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6566
dfd03fb9
MD
6567 * backtrace.c (scm_display_error_message): Introduced fancy
6568 printing with max level 7 and length 10. (Purpose: avoid printing
6569 gigantic objects in error messages.)
6570
6571 * print.c, print.h (scm_i_port_with_print_state): New function.
6572
6573 * print.c (scm_iprin1, scm_printer_apply,
6574 scm_port_with_print_state): Use scm_i_port_with_print_state.
6575 (scm_simple_format): Modified not to destroy print states.
6576 (print_state_mutex): New mutex.
6577 (scm_make_print_state, scm_free_print_state, scm_prin1):
6578 Lock/unlock print_state_mutex.
6579
7aaf8dc9
MD
6580 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
6581 Use current names in definitions.
6582
a4d9ffa1
KR
65832003-05-10 Kevin Ryde <user42@zip.com.au>
6584
6585 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
6586
d25e96a4
KR
6587 * numbers.c (scm_integer_length): On negative bignums, adjust
6588 mpz_sizeinbase to account for it looking at absolute value where we
6589 want ones-complement.
6590
6591 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
6592 since we're only using the ulong return value, and x might not fit.
6593
5bf6a6f0
DH
65942003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6595
6596 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
6597 read. This will allow to make the definition in read.c static.
6598
f58c472a
DH
65992003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6600
6601 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
6602 from evalext to eval. This will allow to make some of the
6603 definitions in eval.c static.
6604
90382aeb
KR
66052003-05-06 Kevin Ryde <user42@zip.com.au>
6606
6607 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
6608 (scm_logcount): Use mpz_com, not mpz_neg.
6609
3b88ed2a
DH
66102003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6611
6612 The purpose of this patch is to make guile's internal memoizers
6613 distinguishable from memoizing macros created on the scheme level
6614 or from user provided primitive memoizing macros. The reason is,
6615 that the internal memoizers are the only ones that are allowed to
6616 transform their scheme input into memoizer byte code, while all
6617 other memoizing macros may only transform scheme code into new
6618 scheme code.
6619
6620 To achieve this, a new macro type 'builtin-macro!' is introduced.
6621 Currently, 'builtin-macro!'s are handled as memoizing macros, but
6622 this will change when the memoizer and executor are separated.
6623
6624 * macros.[ch] (scm_i_makbimacro): New.
6625
6626 * macros.h (SCM_BUILTIN_MACRO_P): New.
6627
6628 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
6629
6630 * eval.c, goops.c: All of guile's primitive memoizing macros are
6631 primitive builtin-macros now.
6632
6633 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
6634 builtin-macros are handled equally to memoizing macros.
6635
b0780eb1
MV
66362003-05-04 Marius Vollmer <mvo@zagadka.de>
6637
6638 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
6639 work around a bug in GCC 2.95.2 but is now a bug in itself.
6640
1cbf4fe9
MV
66412003-05-02 Marius Vollmer <mvo@zagadka.de>
6642
6643 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
6644 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
6645 scm_tcs_symbols): New.
6646
1a61d41b
MV
66472003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6648
096ecbaf
MV
6649 * deprecated.h, deprecated.c (scm_protect_object,
6650 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
6651 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
6652 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6653 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
6654 scm_ensure_user_module, scm_load_scheme_module, scm_port,
6655 scm_ptob_descriptor, scm_port_rw_active,
6656 scm_close_all_ports_except): New.
6657
1a61d41b
MV
6658 * ports.c (scm_c_port_for_each): New function, mostly copied from
6659 scm_port_for_each.
6660 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
6661 * ports.h (scm_c_port_for_each): New prototype.
6662
c8e1d354
MD
66632003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6664
6665 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
6666 macro was introduced in anticipation of GOOPS method compilation
6667 code.)
6668
6669 * goops.c: Removed binding of @dispatch.
6670
a4aa2134
DH
66712003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6672
6673 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6674 instructions that bind the macros on the scheme level back to
6675 goops.c in order to make sure again that the bindings go into the
6676 (oop goops) module and are not visible from the outside.
6677
9fbee57e
DH
66782003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6679
6680 * eval.c: Non functional change: Separated R5RS and non-R5RS
6681 macros into different sections of the file and ordered the
6682 memoizers alphabetically.
6683
12841895
DH
66842003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6685
6686 * eval.c (scm_ilookup): Rewritten to improve readability.
6687
6a3f13f0
DH
66882003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6689
6690 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6691 Partially reverted patch from 2003-04-23 in oder to find a better
6692 compromise between readability and debuggability.
6693
b0c5d67b
DH
66942003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6695
6696 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6697 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6698 definitions of the special goops memoizers from goops.[ch] to
6699 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6700 throughout guile.
6701
b9ad392e
MD
67022003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6703
6704 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6705
6706 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6707
6708 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6709
6710 * ioext.c (scm_fdes_to_ports): Ditto.
6711
6712 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6713 lock/unlock scm_i_port_table_mutex.
6714
6715 * strports.c (scm_mkstrport): Ditto.
6716
6717 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6718
6719 * fports.c (scm_fdes_to_port): Ditto.
6720
d0b07b5d
DH
67212003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6722
6723 This set of patches contains no functional changes, only debatable
6724 minor stylistic ones. Still, in order to prepare a patch between
6725 my local copy and the CVS version, I decided to submit the changes
6726 below. Then, the patch will hopefully only contain relevant
6727 modifications :-)
6728
6729 * eval.c (iqq): Added const specifier.
6730
6731 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6732 Use NULL instead of 0 to indicate that a pointer is returned.
6733 Removed some misleading 'fall through' comments.
6734
6735 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6736 Split up long expressions into smaller ones to be more debugging
6737 friendly.
6738
a98e8e98
DH
67392003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6740
6741 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6742 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6743 rather than casting to SCM.
6744
c178c3a6
DH
67452003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6746
6747 * sort.c, pairs.h: Removed unnecessary includes.
6748
d339981a
DH
67492003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6750
6751 * sort.c: Replaced hand-made trampline code by the new official
6752 mechanism from eval.c. This fixes a segfault in the new test file
6753 sort.test.
6754
6755 (quicksort, compare_function, scm_restricted_vector_sort_x,
6756 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6757 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6758 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6759 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6760 eval.c.
6761
6762 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6763 cmp_fun_t): Removed.
6764
6765 (compare_function): Added.
6766
6767 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6768 arithmetics with index arithmetics. Changed quicksort to work on
6769 an array of SCM values instead of an array of characters. Avoid
6770 bytewise copying of SCM elements. Avoid allocating memory on the
6771 stack with alloca. Fixed some comments.
6772
821f18a4
DH
67732003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6774
6775 * eval.c (EXTEND_ENV): Eliminated.
6776
6777 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6778 EXTEND_ENV.
6779
94fb5a6e
DH
67802003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6781
6782 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6783
6784 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6785 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6786
6787 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6788 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6789 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6790 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6791 functions such that they check if the object is a non-immediate.
6792 Further, renamed identifiers to use the scm_dbg_ prefix and made
6793 their inclusion into the lib dependent of the
6794 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6795
fce0b22d
DH
67962003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6797
6798 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6799 debug option.
6800
1685446c
DH
68012003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6802
821f18a4 6803 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
6804 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6805 any calls to SCM_NCONSP any more.
6806
6807 * unif.c (l2ra): Eliminate redundant check.
6808
9ff1720f
DH
68092003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6810
6811 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6812 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6813 SCM_NNULLP. Now, guile itself does not include any calls to
6814 SCM_NNULLP any more.
6815
05b15362
DH
68162003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6817
6818 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6819 scm_copy_tree): Place assignment expressions which are part of
6820 other expressions into an expression of their own.
6821
0c88d7df
DH
68222003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6823
6824 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6825 compare SCM values with !=.
6826
5cb22e96
DH
68272003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6828
6829 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6830 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6831 and definition of the memoizer for the generalized set! macro from
6832 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6833 define the macro object.
6834
6835 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6836 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6837 eval.c, it is made static and renamed to s_set_x.
6838
6839 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
6840 over SCM_N<foo>.
6841
a44a9715
DH
68422003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6843
6844 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
6845 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
6846 to undefineds and registered the object as a permanent object.
6847
6848 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
6849 static in eval.c, renamed it to f_apply and registered the object
6850 as a permanent object.
6851
1b43d24c
DH
68522003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6853
5cb22e96 6854 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
6855 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
6856
aec16f99
DH
68572003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6858
6859 * numbers.c (scm_logtest): Fixed argument bug in the call to
6860 mpz_and, which showed up when compiling with SCM_DEBUG defined.
6861
f96460ce
DH
68622003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6863
6864 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
6865 type errors that showed up when compiling with SCM_DEBUG defined.
6866
d0f6ceb8
DH
68672003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6868
6869 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
6870 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
6871 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
6872 fix compile errors with --disable-deprecated.
6873
19a7a089
RB
68742003-04-17 Rob Browning <rlb@defaultvalue.org>
6875
6876 * numbers.c (scm_integer_expt): fix case where we were declaring
6877 vars in the middle of a statement block. Thanks to Thamer
6878 Al-Harbash.
6879
47cd67db
MD
68802003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6881
0fd7dcd3
MD
6882 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
6883 change.
6884
47cd67db
MD
6885 * eq.c (scm_eqv_p): Turned into a primitive generic.
6886
3b8b889c
RB
68872003-04-16 Rob Browning <rlb@defaultvalue.org>
6888
312006bb
RB
6889 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
6890 Thanks to Boyd Gerber.
6891 Added check for __arm__ in addition to arm for LINUX and copied
6892 __s390__ defines from upstream libgc. Thanks to James Treacy for
6893 reporting the problems.
c7ef2ea1 6894
3b8b889c
RB
6895 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
6896
6897 * socket.c: use SCM_CHAR_BIT.
6898
6899 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
6900
6901 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
6902
43261b39
MD
69032003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6904
6905 * feature.c (scm_init_feature): Always add threads feature.
6906
58241edc
MD
69072003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6908
6909 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
6910 scm_at_assert_bound_ref. (We don't want the unbound check. See
6911 oop/goops/active-slot.scm.)
6912
94e91275
RB
69132003-04-14 Rob Browning <rlb@defaultvalue.org>
6914
6915 * tags.h: scm_t_intptr should have been intptr_t.
6916
3071ea27
RB
69172003-04-13 Rob Browning <rlb@defaultvalue.org>
6918
6919 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
6920 test. Instead use
6921 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
6922 as gc_os_dep.c suggests is appropriate.
6923
6924 * goops.c (prep_hashsets): make static to match prototype.
6925 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
6926 Chin.
6927
6928 * c-tokenize.lex: remove trailing comma from enum. Thanks to
6929 Albert Chin.
6930
6931 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
6932 Klausner.
6933
21ab2aeb
MD
69342003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6935
6936 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
6937 indicated through extra fields in getters-n-setters.
6938 (scm_add_slot): Adapted to new format of getters_n_setters slot.
6939 (Thanks to Andy Wingo.)
6940
dff96e95
HWN
69412003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6942
6943 * gc-segment.c: add comment
6944
07921c76
RB
69452003-04-07 Rob Browning <rlb@defaultvalue.org>
6946
b5331f10
RB
6947 * debug.h: change "id" arg name to "info_id" to avoid objective-c
6948 clash.
6949
07921c76
RB
6950 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
6951 and add regression test to standalone/.
6952
69532003-04-06 Rob Browning <rlb@defaultvalue.org>
6954
6955 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
6956 Thanks to Dale P. Smith.
6957
6958 * random.c: #include gmp.h.
6959 (scm_c_random_bignum): normalize result on return.
6960
6961 * init.c: #include gmp.h.
6962
6963 * numbers.h: remove the gmp.h #include (not needed now).
6964
6965 * posix.h: change occurences of "id" to something else so we don't
6966 cause trouble when included via objective-c (can't hurt, might
6967 help). Still have usage in debug.h, though.
6968
938f6b7c
MD
69692003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6970
372691d8
MD
6971 * random.c (scm_c_random_bignum): Don't generate a random number
6972 equal to m (the second argument of scm_c_random_bignum); only
6973 generate numbers in the range 0 <= r < m.
c5f268f8
MD
6974 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
6975 scm_var_random_state.
372691d8 6976
938f6b7c
MD
6977 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
6978 clause.
6979
6cdb8c3f
RB
69802003-04-05 Rob Browning <rlb@defaultvalue.org>
6981
938f6b7c 6982 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
6983 uses before any code.
6984
15635be5
MD
69852003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6986
1ecfd013
MD
6987 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
6988 not top_srcdir.
6989
15635be5
MD
6990 * hashtab.c (rehash_after_gc): Clear to_rehash list before
6991 processing it in order to avoid an infinite loop.
6992
6993 * print.c (scm_prin1): Remember old state of pstate->writingp.
6994
73be1d9e
MV
69952003-04-05 Marius Vollmer <mvo@zagadka.de>
6996
6997 * Changed license terms to the plain LGPL thru-out.
6998
ad815c06
RB
69992003-04-04 Rob Browning <rlb@defaultvalue.org>
7000
7001 * socket.c (FLIPCPY_NET_HOST_128): new macro.
7002 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
7003 rewrite to handle GMP bignums.
7004
7005
7006 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
7007
7008 * ports.c (scm_getc): minor tweak.
7009
7010 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
7011 rewrite to handle GMP bignums.
7012
7013 * numbers.c: rewrite *many* functions to handle GMP bignums.
7014
7015 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
7016 handle GMP bignums.
7017
7018 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
7019
7020 * init.c (check_config): remove SCM_BIGDIG conditionals.
7021 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
7022
7023 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
7024
7025 * eval.c: remove SCM_BIGDIG conditionals.
7026
7027 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
7028
6cdb8c3f
RB
70292003-03-31 Rob Browning <rlb@defaultvalue.org>
7030
7031 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
7032 to Kevin Ryde.)
7033
70342003-03-27 Rob Browning <rlb@defaultvalue.org>
7035
7036 * threads.h: fix various preprocessor usages of new public
7037 symbols to expect 0 or 1 values rather than 1 or undefined.
7038 i.e. change #ifdef to #if, etc.
7039
7040 * threads.c: fix various preprocessor usages of new public
7041 symbols to expect 0 or 1 values rather than 1 or undefined.
7042 i.e. change #ifdef to #if, etc.
7043
7044 * tags.h: fix various preprocessor usages of new public
7045 symbols to expect 0 or 1 values rather than 1 or undefined.
7046 i.e. change #ifdef to #if, etc.
7047
7048 * stacks.c: fix various preprocessor usages of new public
7049 symbols to expect 0 or 1 values rather than 1 or undefined.
7050 i.e. change #ifdef to #if, etc.
7051
7052 * stackchk.h: fix various preprocessor usages of new public
7053 symbols to expect 0 or 1 values rather than 1 or undefined.
7054 i.e. change #ifdef to #if, etc.
7055
7056 * stackchk.c: fix various preprocessor usages of new public
7057 symbols to expect 0 or 1 values rather than 1 or undefined.
7058 i.e. change #ifdef to #if, etc.
7059
7060 * sort.c: fix various preprocessor usages of new public
7061 symbols to expect 0 or 1 values rather than 1 or undefined.
7062 i.e. change #ifdef to #if, etc.
7063
7064 * read.c: fix various preprocessor usages of new public
7065 symbols to expect 0 or 1 values rather than 1 or undefined.
7066 i.e. change #ifdef to #if, etc.
7067
7068 * random.c: fix various preprocessor usages of new public
7069 symbols to expect 0 or 1 values rather than 1 or undefined.
7070 i.e. change #ifdef to #if, etc.
7071
7072 * print.c: fix various preprocessor usages of new public
7073 symbols to expect 0 or 1 values rather than 1 or undefined.
7074 i.e. change #ifdef to #if, etc.
7075
7076 * objects.c: fix various preprocessor usages of new public
7077 symbols to expect 0 or 1 values rather than 1 or undefined.
7078 i.e. change #ifdef to #if, etc.
7079
7080 * numbers.h: fix various preprocessor usages of new public
7081 symbols to expect 0 or 1 values rather than 1 or undefined.
7082 i.e. change #ifdef to #if, etc.
7083
7084 * null-threads.c: fix various preprocessor usages of new public
7085 symbols to expect 0 or 1 values rather than 1 or undefined.
7086 i.e. change #ifdef to #if, etc.
7087
7088 * lang.c: fix various preprocessor usages of new public
7089 symbols to expect 0 or 1 values rather than 1 or undefined.
7090 i.e. change #ifdef to #if, etc.
7091
7092 * lang.h: fix various preprocessor usages of new public
7093 symbols to expect 0 or 1 values rather than 1 or undefined.
7094 i.e. change #ifdef to #if, etc.
7095
7096 * iselect.h: fix various preprocessor usages of new public
7097 symbols to expect 0 or 1 values rather than 1 or undefined.
7098 i.e. change #ifdef to #if, etc.
7099
7100 * init.c: fix various preprocessor usages of new public
7101 symbols to expect 0 or 1 values rather than 1 or undefined.
7102 i.e. change #ifdef to #if, etc.
7103
7104 * gh_data.c: fix various preprocessor usages of new public
7105 symbols to expect 0 or 1 values rather than 1 or undefined.
7106 i.e. change #ifdef to #if, etc.
7107
7108 * gh.h: fix various preprocessor usages of new public
7109 symbols to expect 0 or 1 values rather than 1 or undefined.
7110 i.e. change #ifdef to #if, etc.
7111
7112 * gen-scmconfig.c: change most new public symbols to be defined to
7113 0 or 1 rather than being either 1 or undefined.
7114
7115 * gc_os_dep.c: fix various preprocessor usages of new public
7116 symbols to expect 0 or 1 values rather than 1 or undefined.
7117 i.e. change #ifdef to #if, etc.
7118 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
7119
7120 * gc.h: fix various preprocessor usages of new public
7121 symbols to expect 0 or 1 values rather than 1 or undefined.
7122 i.e. change #ifdef to #if, etc.
7123
7124 * gc-card.c: fix various preprocessor usages of new public
7125 symbols to expect 0 or 1 values rather than 1 or undefined.
7126 i.e. change #ifdef to #if, etc.
7127
7128 * gc-mark.c: fix various preprocessor usages of new public
7129 symbols to expect 0 or 1 values rather than 1 or undefined.
7130 i.e. change #ifdef to #if, etc.
7131
7132 * feature.c: fix various preprocessor usages of new public
7133 symbols to expect 0 or 1 values rather than 1 or undefined.
7134 i.e. change #ifdef to #if, etc.
7135
7136 * evalext.c: fix various preprocessor usages of new public
7137 symbols to expect 0 or 1 values rather than 1 or undefined.
7138 i.e. change #ifdef to #if, etc.
7139
7140 * eval.h: fix various preprocessor usages of new public
7141 symbols to expect 0 or 1 values rather than 1 or undefined.
7142 i.e. change #ifdef to #if, etc.
7143
7144 * eval.c: fix various preprocessor usages of new public
7145 symbols to expect 0 or 1 values rather than 1 or undefined.
7146 i.e. change #ifdef to #if, etc.
7147
7148 * eq.c: fix various preprocessor usages of new public
7149 symbols to expect 0 or 1 values rather than 1 or undefined.
7150 i.e. change #ifdef to #if, etc.
7151
7152 * coop.c: fix various preprocessor usages of new public
7153 symbols to expect 0 or 1 values rather than 1 or undefined.
7154 i.e. change #ifdef to #if, etc.
7155
7156 * coop-threads.c: fix various preprocessor usages of new public
7157 symbols to expect 0 or 1 values rather than 1 or undefined.
7158 i.e. change #ifdef to #if, etc.
7159
7160 * coop-pthreads.c: fix various preprocessor usages of new public
7161 symbols to expect 0 or 1 values rather than 1 or undefined.
7162 i.e. change #ifdef to #if, etc.
7163
7164 * coop-defs.h: fix various preprocessor usages of new public
7165 symbols to expect 0 or 1 values rather than 1 or undefined.
7166 i.e. change #ifdef to #if, etc.
7167
7168 * convert.i.c: fix various preprocessor usages of new public
7169 symbols to expect 0 or 1 values rather than 1 or undefined.
7170 i.e. change #ifdef to #if, etc.
7171
7172 * continuations.c: fix various preprocessor usages of new public
7173 symbols to expect 0 or 1 values rather than 1 or undefined.
7174 i.e. change #ifdef to #if, etc.
7175
7176 * _scm.h: fix various preprocessor usages of new public symbols to
7177 expect 0 or 1 values rather than 1 or undefined. i.e. change
7178 #ifdef to #if, etc.
7179
d11d697a
MV
71802003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7181
9686f86d
MV
7182 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
7183
7184 * deprecated.c, deprecated.h: New files, to collect deprecated
7185 things in one place.
7186 * Makefile.am: Added them in all the right places.
7187
d11d697a
MV
7188 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
7189 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
7190 builds work.
9686f86d
MV
7191 (DOT_X_FILES): Removed "iselect.x".
7192 (DOT_DOC_FILES): Removed "iselect.doc".
d11d697a 7193
e3c0c3b9
RB
71942003-03-25 Rob Browning <rlb@defaultvalue.org>
7195
7196 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
7197 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
7198
7199 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
7200
7201 * vports.c: #include <config.h> if HAVE_CONFIG_H.
7202
7203 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
7204 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7205
7206 * threads.h: replace usage of struct timespect with
7207 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
7208 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
7209 favor of scm_t_timespec from scmconfig.h.
7210
7211 * threads.c: move libguile/_scm.h include to the top so we pick up
7212 any critical defines like _GNU_SOURCE early. Replace usage of
7213 struct timespect with scm_t_timespec. Replace usage of
7214 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
7215 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
7216
7217 * threads-plugin.h: replace usage of struct timespect with
7218 scm_t_timespec.
7219
7220 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
7221 usage of struct timespect with scm_t_timespec.
7222
7223 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
7224 HAVE_INTTYPES_H handling to scmconfig.h. #include
7225 "libguile/__scm.h". Rework handling for scm_t_bits,
7226 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
7227 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
7228 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
7229 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
7230 SCM_HAVE_ARRAYS.
7231
7232 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
7233
7234 * struct.c: #include <config.h> if HAVE_CONFIG_H.
7235
7236 * strports.c: #include <config.h> if HAVE_CONFIG_H.
7237
7238 * strop.c: #include <config.h> if HAVE_CONFIG_H.
7239
7240 * stime.h: move handling of time related headers to scmconfig.h.
7241
7242 * stime.c: #include <config.h> if HAVE_CONFIG_H.
7243
7244 * stacks.c: replace usage of STACK_GROWS_UP with
7245 SCM_STACK_GROWS_UP.
7246
7247 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7248 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7249
7250 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7251 of uint32 and HAVE_UINT_32 with scm_t_int32.
7252
7253 * smob.c: #include <config.h> if HAVE_CONFIG_H.
7254
7255 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
7256
7257 * script.c: #include <config.h> if HAVE_CONFIG_H.
7258
7259 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
7260
7261 * scmconfig.h.top: new file -- preamble for scmconfig.h.
7262
7263 * rw.c: #include <config.h> if HAVE_CONFIG_H.
7264
7265 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
7266
7267 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7268
7269 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
7270
7271 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7272 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
7273 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
7274 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7275
7276 * ramap.c: replace usage of HAVE_LONG_LONGS with
7277 "SCM_SIZEOF_LONG_LONG != 0".
7278
7279 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
7280 "libguile/scmconfig.h".
7281
7282 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
7283
7284 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7285 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7286
7287 * posix.c: #include <config.h> if HAVE_CONFIG_H.
7288
7289 * ports.c: #include <config.h> if HAVE_CONFIG_H.
7290
7291 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7292
7293 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
7294 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
7295 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
7296 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
7297 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
7298 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
7299 "SCM_SIZEOF_LONG_LONG != 0".
7300
7301 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7302 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
7303 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
7304 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
7305
7306 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
7307
7308 * null-threads.h: replace usage of struct timespect with
7309 scm_t_timespec.
7310
7311 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
7312
7313 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
7314 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
7315 scm_t_uint64 and rename usages.
7316
7317 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
7318
7319 * load.c: #include <config.h> if HAVE_CONFIG_H.
7320
7321 * iselect.h: move handling of time related headers to scmconfig.h.
7322 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
7323 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
7324 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
7325
7326 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7327 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7328 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7329
7330 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
7331
7332 * inline.h: #include "libguile/__scm.h" at the top. Change code
7333 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
7334 what to do instead of creating a new public #define. Rename usage
7335 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7336 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
7337 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
7338
7339 * inline.c: rearrange handling -- now we just #define
7340 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
7341 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
7342 appropriate, and we use that in inline.h along with the above
7343 define to determine how to respond.
7344
7345 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7346 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7347
7348 * guile.c: #include <config.h> if HAVE_CONFIG_H.
7349
7350 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7351 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7352
7353 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7354
7355 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
7356
7357 * gen-scmconfig.c: new file -- see comments in file for details.
7358
7359 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
7360
7361 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
7362 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7363
7364 * gc.h: replace usage of SIZEOF_LONG with
7365 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
7366 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
7367 since we handle that in scmconfig.h now.
7368
7369 * gc.c: #include <config.h> if HAVE_CONFIG_H.
7370
7371 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7372 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
7373 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7374
7375 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
7376
7377 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7378 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7379
7380 * fports.c: #include <config.h> if HAVE_CONFIG_H.
7381
7382 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
7383
7384 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7385 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7386
7387 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
7388
7389 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7390 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7391
7392 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
7393 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
7394 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7395 with "SCM_SIZEOF_LONG_LONG != 0".
7396
7397 * error.c: #include <config.h> if HAVE_CONFIG_H.
7398
7399 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7400 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7401 with "SCM_SIZEOF_LONG_LONG != 0".
7402
7403 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
7404
7405 * coop.c: replace usage of struct timespect with scm_t_timespec.
7406 #include <config.h> if HAVE_CONFIG_H.
7407
7408 * coop-threads.c: #include "libguile/_scm.h" early. Replace
7409 usage of struct timespect with scm_t_timespec. Replace usage of
7410 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7411
7412 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
7413 usage of struct timespect with scm_t_timespec. Replace usage of
7414 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7415
7416 * coop-defs.h: move handling of time related headers to
7417 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
7418 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
7419 timespect with scm_t_timespec.
7420
7421 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7422
7423 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7424
7425 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7426 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7427
7428 * continuations.c: move libguile/_scm.h include to the top so we
7429 pick up any critical defines like _GNU_SOURCE early.
7430
7431 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
7432
7433 * async.c: #include <config.h> if HAVE_CONFIG_H.
7434
7435 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
7436
7437 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
7438 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
7439
7440 * __scm.h: move libguile/scmconfig.h include up to the top, so
7441 we're sure to pick up any critical defines like _GNU_SOURCE early.
7442 #include <limits.h> removed in favor of scmconfig.h inclusion when
7443 appropriate. STDC_HEADERS based inclusion of stdlib.h,
7444 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
7445 scmconfig.h inclusion when appropriate. Various Win32 related
7446 definitions removed in favor of scmconfig.h inclusion when
7447 appropriate.
7448 (HAVE_UINTPTR_T): definition removed (see NEWS).
7449 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
7450 (HAVE_LONG_LONGS): definition removed (see NEWS).
7451 (HAVE_LONG_LONG): definition removed (see NEWS).
7452 (HAVE_PTRDIFF_T): definition removed (see NEWS).
7453
7454 * Makefile.am: scmconfig.h is now generated by building and
7455 running gen-scmconfig.h and capturing its output. gen-scmconfig
7456 uses config.h and the configure.in generated gen-scmconfig.h to
7457 decide what to output. See gen-scmconfig.c for details.
7458 (noinst_PROGRAMS): add gen-scmconfig.
7459 (gen_scmconfig_SOURCES): new variable.
7460 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
7461 cross-compiling right.
7462 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
7463 (BUILT_SOURCES): add scmconfig.h.
7464
25e0bf97
MV
74652003-03-19 Marius Vollmer <mvo@zagadka.de>
7466
7467 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
7468 Adrian Bunk. Thanks!
7469
74b6d6e4
MD
74702003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7471
7472 * goops.c (make_class_from_template): New fourth arg:
7473 applicablep.
7474 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
7475 cpls.
7476
7477 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
7478
7479 * goops.c, objects.c, objects.h (scm_make_extended_class): New
7480 second arg: applicablep.
7481 (scm_i_inherit_applicable): New function.
7482
7483 * goops.c, goops.h (scm_class_applicable,
7484 scm_class_extended_accessor): New classes.
7485
5c9e7dad
DH
74862003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
7487
7488 * procs.c (scm_procedure_documentation): Removed redundant
7489 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
7490 predicates.
7491
f8af5c6d
MD
74922003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7493
c614a00b
MD
7494 * list.c, list.h (scm_filter, scm_filter_x): New functions.
7495
109c2c9f
MD
7496 * modules.c (scm_module_import_interface): New function.
7497
f8af5c6d
MD
7498 * goops.c, goops.h (scm_class_accessor_method): Renamed from
7499 scm_class_accessor.
7500 (scm_class_accessor): New class.
7501
a48d60b1
MD
75022003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7503
7504 * goops.c (scm_primitive_generic_generic): Enable primitive
7505 generic if not enabled.
7506 (scm_sys_goops_loaded): Setup unextended primitive generics.
7507
7508 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
7509
7510 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
7511 snarf macros.
7512
7513 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
7514 testing example. All uses of SCM_GPROC should be converted.)
7515
7516 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
7517 scm_assoc.
7518
7519 * eq.c (scm_equal_p): Turned into a primitive generic.
7520
84edc049
RB
75212003-02-27 Rob Browning <rlb@defaultvalue.org>
7522
7523 * Makefile.am (scmconfig.h): new target -- generate file from
7524 ../config.h.
7525 (modinclude_HEADERS): remove version.h.
7526 (nodist_modinclude_HEADERS): add version.h.
7527
ea5c9285
MD
75282003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7529
b4a1358c
MD
7530 This fixes a serious GC bug, introduced during the latest
7531 reorganization of the GC, which disabled freeing of structs and
7532 GOOPS objects:
7533
7534 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
7535 SCM_EOL.
53af8255
MD
7536 (scm_struct_prehistory): Move scm_free_structs to
7537 scm_before_mark_c_hook.
ea5c9285 7538
b4a1358c
MD
7539 * gc-card.c (sweep_card): Check that we haven't swept structs on
7540 this card before. That can happen if scm_i_sweep_all_segments has
7541 been called from some other place than scm_igc.
7542
c35738c1
MD
75432003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7544
231a4ea8
MD
7545 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
7546 (since hash tables now adapt their size).
7547
7548 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
7549 (current number of prehistory bindings; hashtable code will select
7550 a prime which is greater than this value).
7551
7552 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
7553 (current number of initial symbols).
7554
7555 * properties.c (scm_init_properties): Don't specify size of
7556 scm_properties_whash.
7557
7558 * objprop.c (scm_init_objprop): Don't specify size of
7559 scm_object_whash.
7560
7561 * keywords.c (scm_init_keywords): Don't specify a hash table size.
7562
c35738c1
MD
7563 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
7564
7565 The following changes introduce the use of resizable hash tables
7566 throughout Guile. It also renames the old *-hash-table* functions
7567 to *-alist-vector* and places them, together with the rest of the
7568 weak vector support, in the module (ice-9 weak-vector). We should
7569 probably introduce a new, better, API for weak references, for
7570 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
7571 look like and are used like ordinary pairs.)
7572
7573 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
7574 leaf_environment_fold, obarray_remove_all): Use hashtable
7575 accessors.
7576
7577 * gc.c (scm_init_storage): Moved hook initialization to
7578 scm_storage_prehistory.
7579 (scm_storage_prehistory): New function.
7580 (scm_igc): Added commentary about placement of
7581 scm_after_sweep_c_hook.
7582
7583 * gc-mark.c (scm_mark_all): Use hashtable accessors.
7584 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
7585 SCM_WVECT_WEAK_VALUE_P.
7586
7587 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
7588 functions.
7589 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
7590 Removed.
7591 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
7592 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
7593
7594 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
7595 calls to scm_storage_prehistory and scm_hashtab_prehistory.
7596
7597 * modules.c (module-reverse-lookup): Use hashtable accessors.
7598
7599 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
7600
7601 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
7602 scm_make_weak_value_alist_vector,
7603 scm_make_doubly_weak_alist_vector): New functions.
7604
7605 * weaks.c (scm_init_weaks_builtins): New function.
7606
7607 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
7608 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
7609 SCM_WVECT_NOSCAN_P): New macros.
7610
7611 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
7612 and SCM_WVECT_WEAK_VALUE_P.
7613
7614 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
7615 allocate_weak_vector and exported.
7616
0a4c1355
MD
76172003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7618
7619 * hashtab.c: Undid thread safety. (We decided that it's better to
7620 let the user explicitly protect the tables (or not) according what
7621 is suitable for the application.)
7622
87ca11ff
MD
76232003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7624
7625 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
7626 thread safe and handle resizing tables.
7627 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
7628 SCM_DEFER/ALLOW_INTS.
7629
f59a096e
MD
76302003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7631
7632 * hashtab.c (scm_vector_to_hash_table,
7633 scm_c_make_resizing_hash_table, scm_make_hash_table): New
7634 functions.
7635 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
7636 safe and handle resizing tables.
7637
7638 * weaks.c (scm_make_weak_key_hash_table,
7639 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7640 Size argument made optional. Return resizable table if not
7641 specified.
7642
4b612c5b
MD
76432003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7644
7645 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
7646 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
7647
b3d7f6df
MD
76482003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7649
7650 * debug.c (scm_procedure_source): Handle all objects for which
7651 procedure? is #t. (Thanks to Bill Schottstaedt.)
7652
756414cf
MD
76532003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7654
361d631f
MD
7655 * futures.c (mark_futures): Don't need to mark data of recycled
7656 futures.
7657 (scan_futures, cleanup_undead): Be smarter about marking
7658 futures---avoid unnecessary passes through future lists.
7659
756414cf
MD
7660 * futures.h, futures.c: New files; Introduced recycling of
7661 futures. For fine-grained threading this lifts performance to
7662 another level. We can now use parallelization in inner loops of
7663 Guile programs without impossible overhead.
7664
7665 * threads.h, threads.c: Moved futures to their own file.
7666
7667 * Makefile.am (libguile_la_SOURCES): Added futures.c.
7668 (DOT_X_FILES): Added futures.x.
7669 (DOT_DOC_FILES): Added futures.doc.
7670 (modinclude_HEADERS): Added futures.h.
7671
7672 * threads.c, threads.h (scm_i_create_thread): Renamed from
7673 create_thread and made global.
7674
7675 * futures.c (scm_make_future): New procedure.
7676
7677 * eval.c: #include "libguile/futures.h".
7678
7679 * init.c: #include "futures.h"
7680 (scm_init_guile_1): Call scm_init_futures.
7681
7682 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7683
7684 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7685
7686 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7687 functions.
7688
7689 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7690
b4debead
MD
76912003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7692
7693 * threads.c (create_thread): Don't unwind dynwind chain of parent
7694 thread before creation. Just start the new thread with an empty
7695 dynwind chain.
7696
93f26b7b
MD
76972003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7698
7699 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7700
38d8927c
MD
77012003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7702
41c96c32
MD
7703 * threads.c (scm_timed_wait_condition_variable): Support timed
7704 waiting also for simple condition variables.
7705
38d8927c
MD
7706 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7707 of calling the procedure change-object-class.
7708
9cf5d9b7
MD
77092003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7710
7711 * ramap.c (scm_ramapc): Typo in error message.
7712
bbf8d523
MD
77132003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7714
b46fae00
MD
7715 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7716 slots with instance allocation.
7717
bbf8d523
MD
7718 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7719 class.
7720 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7721
7722 * goops.c (scm_generic_function_methods): Support extended
7723 generic functions.
7724
ebf9b47c
MD
77252002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7726
7727 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 7728 Thanks to Neil for pointing this out!
ebf9b47c 7729
14a9ba3f
NJ
77302002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7731
7732 * lang.h: Remove declarations matching definitions removed from
7733 lang.c (just below).
7734
c6a040a8
NJ
77352002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7736
6054d805
NJ
7737 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7738 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7739 and already commented out.
7740
c6a040a8
NJ
7741 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7742 scm_lreadparen): Support reading vectors with Elisp syntax if
7743 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7744 is not currently defined, and there isn't even a configure switch
7745 to enable it yet.)
7746
3742c12f
MV
77472002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7748
7749 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7750 builds work.
7751 (EXTRA_DIST): Added version.h.in.
7752
fb50ef08
MD
77532002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7754
7755 This change makes it possible for one thread to do lazy sweeping
7756 while other threads are running. Now only the mark phase need to
7757 have all threads asleep. We should look further into this issue.
7758 Presently, I've put the locking of scm_i_sweep_mutex at
7759 "conservative" places due to my current lack of knowledge about
7760 the garbage collector. Please feel free to restrict these regions
7761 further to allow for maximal parallelism!
7762
7763 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7764
7765 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7766 scm_gc_register_collectable_memory): Substitute locking of
7767 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7768 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7769 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7770 the single-thread section (which now only contains the mark
7771 phase).
7772 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7773 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7774
7775 * threads.c (gc_section_mutex): Removed.
7776
9ed24633
MD
77772002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7778
0d48aca5
MD
7779 * threads.c (create_thread): Clear parent field in root state in
7780 order not to unnecessarily remember dead threads.
7781
9ed24633
MD
7782 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7783 (scm_trampoline_1, scm_trampoline_2): Use them.
7784
29717c89
MD
77852002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7786
7787 Partial introduction of real plugin interface.
7788
7789 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7790 (EXTRA_DIST): Added threads-plugin.c.
7791
7792 * threads-plugin.h, threads-plugin.c: New files.
7793
7794 * threads.h: #include "libguile/threads-plugin.h".
7795
7796 * threads.c: #include "libguile/threads-plugin.c".
7797
7798 * pthread-threads.c: Temporarily remove debugging functions.
7799
7800 * threads.c, threads.h (scm_yield): Added back.
7801
e29e0b09
MD
78022002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7803
7804 * threads.c (really_launch): Detach before unlocking
7805 thread_admin_mutex in order not to risk being joined.
7806 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7807 thread_admin_mutex locked during GC.
7808
7809 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7810 functions.
7811
0b6843b1 78122002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 7813
6da2dfc4
MD
7814 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7815 support for debugging mutex operations.
7816
1b92fb6b
MD
7817 * threads.c (scm_thread): Removed filed joining_threads.
7818 (thread_print): Print thread number as well as address of thread
7819 structure.
0b6843b1
MD
7820 (scm_join_thread): Bugfix.
7821 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7822 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7823 scm_broadcast_condition_variable): Use the low-level API.
7824 (scm_all_threads): Return copy of thread list (to prevent
7825 unintended destruction).
7826 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 7827
93cd4dcd
MD
7828 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7829 pthread "native" recursive mutex support.
7830
2ff4f181
MD
78312002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7832
28d52ebb
MD
7833 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7834 Simply lock a thread C API recursive mutex.
7835 (SCM_NONREC_CRITICAL_SECTION_START,
7836 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7837 SCM_REC_CRITICAL_SECTION_END): Removed.
7838
7839 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
7840 direct calls to scm_rec_mutex_lock / unlock around the three calls
7841 to scm_m_expand_body.
7842
7843 * eval.c, eval.h (promise_free): New function.
7844 (scm_force): Rewritten; Now thread-safe; Removed
7845 SCM_DEFER/ALLOW_INTS.
7846
7847 * pthread-threads.h: Added partially implemented plugin interface
7848 for recursive mutexes. These are, for now, only intended to be
7849 used internally within the Guile implementation.
7850
7851 * pthread-threads.c: New file.
7852
7853 * threads.c: Conditionally #include "pthread-threads.c".
7854
7855 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
7856 thread-safe;
7857
7858 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
7859 SCM_GLOBAL_REC_MUTEX): New macros.
7860
7861 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
7862 macros---use mutexes instead.
7863
7864 * tags.h (SCM_IM_FUTURE): New tag.
7865
7866 * eval.c (scm_m_future): New primitive macro.
7867 (SCM_CEVAL): Support futures.
7868 (unmemocopy): Support unmemoization of futures.
7869
7870 * print.c (scm_isymnames): Name of future isym.
7871
2ff4f181
MD
7872 * version.c: Unmade some changes to my private copy that got
7873 committed by mistake.
7874
392d2833
MD
78752002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7876
e200ddee
MD
7877 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
7878 2002-12-10.
7879
392d2833
MD
7880 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
7881
7882 * gc.c (scm_gc_sweep): Call it here instead, which is a more
7883 logical place.
7884
7885 * threads.c (create_thread): Remember root object until the handle
7886 of the new thread is on all_threads list.
7887
7888 * root.c (scm_make_root): Moved copying of fluids until after
7889 creation of root handle so that the fluids are GC protected. Also
7890 removed the critical section.
7891
c4c52ebe
MD
78922002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7893
960c408c
MD
7894 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
7895
3cdde9d6 7896 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 7897 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
7898 (scm_realloc): Serialize call to realloc
7899 (scm_calloc): Same for calloc.
7900 Thanks to Wolfgang Jaehrling!
7901 (Now we have to make sure all calls to malloc/realloc are made
7902 through scm_malloc.)
7903
960c408c
MD
7904 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
7905
c4c52ebe
MD
7906 * threads.c (really_launch): Release heap (to prevent deadlock).
7907 (create_thread): Release heap before locking thread admin mutex.
7908
b0dc3d71
MD
79092002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7910
7911 * threads.c (scm_i_thread_invalidate_freelists): New
7912 function.
7913
7914 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
7915
7916 * modules.c (scm_export): Inserted a return statement.
7917
06e80f59
HWN
79182002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7919
7920 * modules.c (scm_export): new function
7921
7922 * gc-card.c: add a note about malloc()/free() overhead.
7923
a12611c3
MD
79242002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7925
7926 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
7927 in srcdir.
7928
c7fabadf
MD
79292002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7930
7931 These changes remove scm_ints_disabled (which hasn't has any
7932 effect in Guile for quite some time).
7933
7934 * async.c, error.h (scm_ints_disabled): Removed.
7935
7936 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
7937 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
7938 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
7939 (old_ints): Removed.
7940
7941 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
7942 critical section.
7943 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
7944 SCM_ALLOW_INTS.
7945
9bc4701c
MD
79462002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7947
52340b65
MD
7948 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
7949 Removed accidental #if 0 around these functions.
7950
9bc4701c
MD
7951 These changes are the start of support for preemptive
7952 multithreading. Marius and I have agreed that I commit this code
7953 into the repository although it isn't thoroughly tested and surely
7954 introduces many bugs. The bugs should only be exposed when using
7955 threads, though. Signalling and error handling for threads is
7956 very likely broken. Work on making the implementation cleaner and
7957 more efficient is needed.
7958
7959 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
7960 (SCM_NONREC_CRITICAL_SECTION_START,
7961 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7962 SCM_REC_CRITICAL_SECTION_END): New macros.
7963 (SCM_CRITICAL_SECTION_START/END): Defined here.
7964
7965 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
7966 the three calls to scm_m_expand_body.
7967
7968 * gc.h: #include "libguile/pthread-threads.h";
7969 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
7970
7971 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
7972 scm_t_key;
7973
7974 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
7975 access.
7976
7977 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
7978
7979 * gc-freelist.c, threads.c (really_launch): Use
7980 SCM_FREELIST_CREATE.
7981
7982 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
7983
7984 * gc.c (scm_i_expensive_validation_check, scm_gc,
7985 scm_gc_for_newcell): Put threads to sleep before doing GC-related
7986 heap administration so that those pieces of code are executed
7987 single-threaded. We might consider rewriting these code sections
7988 in terms of a "call_gc_code_singly_threaded" construct instead of
7989 calling the pair of scm_i_thread_put_to_sleep () and
7990 scm_i_thread_wake_up (). Also, we would want to have as many of
7991 these sections eleminated.
7992
7993 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
7994
7995 * inline.h: #include "libguile/threads.h"
7996
7997 * pthread-threads.h: Macros now conform more closely to the
7998 pthreads interface. Some of them now take a second argument.
7999
8000 * threads.c, threads.h: Many changes.
8001
80022002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8003
8004 * Makefile.am (version.h): Changed $^ --> $< in rule for
8005 version.h.
8006
b2cbe8d8
RB
80072002-12-08 Rob Browning <rlb@defaultvalue.org>
8008
8009 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
8010 (SCM_MINOR_VERSION): use @--@ substitution now.
8011 (SCM_MICRO_VERSION): use @--@ substitution now.
8012 (scm_effective_version): new function prototype.
8013
8014 * version.c (scm_effective_version): new function, also add
8015 effective-version.
8016
8017 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
8018 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
8019 SCM_LIBRARY_DIR.
8020 (version.h): generate this here rather than configure.in. This
8021 approach tracks source edits better (i.e. more immediately).
8022 Might be worth considering for other .in files too.
8023
5441c65c
MV
80242002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
8025
8026 Reorganized thread package selection. A thread package now only
8027 implements a small set of pthread like functions and Guile
8028 implements the rest on top of that. Guile's implementation is
8029 what the "coop-pthreads" package has been previously. Support for
8030 "coop" threads has been removed until I get time to add it again.
8031
8032 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
8033 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
8034 null-threads.c, coop-pthreads.c.
8035 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
8036 pthread-threads.h.
8037
8038 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
8039
8040 * threads.h: Do not include "libguile/coop-defs.h". Include
8041 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
8042 (previously deprecated) C level thread API prototypes. They are
8043 now in the thread package specific headers, "null-threads.h" and
8044 "pthread-threads.h".
8045 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
8046 New.
8047 (scm_threads_init): Removed.
8048 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
8049 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
8050 SCM_I_THREAD_SWITCH_COUNT): Define here.
8051 (scm_single_thread_p): Removed.
8052 (scm_call_with_new_thread): Take two args directly instead of list
8053 of two args.
8054 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
8055 SCM_SET_THREAD_LOCAL_DATA): Define here.
8056
8057 * threads.c: Merged with "coop-pthreads.c".
8058
8059 * null-threads.h: Implement pthread-like API as a set of macros.
8060
8061 * pthread-threads.h: New, implement pthread-like API by deferring
8062 to pthread itself.
8063
8064 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
8065 has been lost in the reorganization.
8066
504d99c5
MD
80672002-12-01 Mikael Djurfeldt <mdj@linnaeus>
8068
8069 The following change makes it possible to move procedure
8070 application dispatch outside inner loops. The motivation was
8071 clean implementation of efficient replacements of R5RS primitives
8072 in SRFI-1.
8073
8074 The semantics is clear: scm_trampoline_N returns an optimized
8075 version of scm_call_N (or NULL if the procedure isn't applicable
8076 on N args).
8077
8078 Applying the optimization to map and for-each increases efficiency
8079 noticeably. For example, (map abs ls) is 8 times faster than
8080 before.
8081
8082 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
8083
8084 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
8085
8086 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
8087 (map, for-each): Handle also application on two args as a special
8088 case; Use trampolines.
8089
8090 Other changes:
8091
8092 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
8093 (subr2oless): Removed.
8094 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
8095 vector GC protected.
8096
8097 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
8098 scm_out_of_range.
8099
63dd3413
DH
81002002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8101
8102 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
8103
4ba5f279
MD
81042002-11-17 Mikael Djurfeldt <mdj@linnaeus>
8105
8106 * debug.c (scm_make_iloc): Added missing "return".
8107
56ae231f
MV
81082002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
8109
8110 * strports.c (scm_eval_string_in_module): Validate second arg to
8111 be a module. Thanks to Arno Peters!
8112
80b28865
DH
81132002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8114
8115 * .cvsignore: remove goops.c
8116
c88b1456
DH
81172002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8118
8119 * modules.c (scm_env_top_level, scm_lookup_closure_module,
8120 module_variable, scm_module_lookup_closure,
8121 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
8122 scm_system_module_env_p): Don't compare SCM values with C
8123 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
8124 over SCM_NFALSEP.
8125
a8a19efc
DH
81262002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8127
8128 * eval.h (SCM_MAKE_ILOC): New macro.
8129
8130 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
8131 the iloc bitpattern here.
8132
76734914
MD
81332002-11-14 Mikael Djurfeldt <mdj@linnaeus>
8134
8135 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
8136 part of the API, otherwise it's difficult to write Guile
8137 extensions using non-blocking I/O => moved #include
8138 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
8139
8140 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
8141 s_unlock_mutex.
8142
8b5b4a75
MV
81432002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
8144
8145 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
8146 are defined in configure.in.
8147
8148 * threads.c: Removed SCM_API from function definitions. SCM_API
8149 is only for declarations.
8150
e5a83084
MD
81512002-11-07 Mikael Djurfeldt <mdj@linnaeus>
8152
9be8bb45
MD
8153 * coop-pthreads.h: Added support for thread specific data to the
8154 generic C API for the coop-pthreads case.
8155
e5a83084
MD
8156 * threads.c, threads.h (scm_cond_init): Undo unintentional API
8157 change.
6c214b62 8158 (scm_cond_broadcast): Added missing function.
e5a83084 8159
7edf178e
MV
81602002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8161
8162 * coop.c (coop_next_runnable_thread): Removed, wich should have
8163 happened when GUILE_ISELECT was hard-wired.
8164
7f5b1b77
MV
81652002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
8166
7caa1b07
MV
8167 * Makefile.am (libguile_la_SOURCES): Added threads.c
8168 (DOT_DOC_FILES): Added threads.doc.
8169 (DOT_X_FILES): Added threads.x.
8170 (EXTRA_libguile_la_SOURCES): Removed threads.c.
8171 (noinst_HEADERS): Added coop-pthreads.c.
8172 (modinclude_HEADERS): Added coop-pthreads.h.
8173
8174 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
8175 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
8176
bb11cbf4
MV
8177 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
8178 Thanks to Bill Schottstaedt!
8179
1d4cbbed
MV
8180 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
8181
7f5b1b77
MV
8182 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
8183 SCM_COPT_THREADS is defined.
8184 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
8185 is defined.
8186
8187 * coop-pthreads.c: Some harmless renamings of internal stuff.
8188 (create_thread): New, generalized version of
8189 scm_call_with_new_thread.
8190 (scm_call_with_new_thread): Use it.
8191 (scm_spawn_thread): New, use create_thread.
8192
d52f53b1
MV
81932002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
8194
8195 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
8196 start testing it now.
8197
8198 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
8199 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
8200 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
8201 is defined.
8202
30f920c3
MV
82032002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
8204
8205 * scmsigs.c (signal_cell_handlers, install_handler_data,
8206 scm_delq_spine_x, really_install_handler, install_handler): New
8207 scheme for triggering signal handlers, to simplify take_signal.
8208 (take_signal): Simplified, to avoid race conditions.
8209 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
8210 hasn't exited yet.
8211
8212 * async.c (scm_async_click): Reset pending_asyncs, handle
8213 signal_asyncs. Don't set cdr of a non-signal async to #f.
8214 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
8215 always. Set pending_asyncs.
8216 (scm_system_async_mark_for_thread): Check that thread has not
8217 exited.
8218 (scm_unmask_signals, decrease_block): Call scm_async_click after
8219 block_asyncs becomes zero.
8220
8221 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
8222 active_asyncs.
8223
8224 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
8225 fields.
8226 * root.c (root_mark): Mark them.
8227 (make_root): Initialize them.
8228
8229 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
8230 USE_COOP_THREADS.
8231 (scm_internal_select): Define one version for USE_COOP_THREADS and
8232 one for USE_NULL_THREADS.
8233 (scm_init_iselect): Likewise.
8234
8235 * inline.h (scm_cell, scm_double_cell): Also allow
8236 USE_COPT_THREADS to not protect the slot initializers.
8237
8238 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
8239 because threads need to be initialized before the stack, but
8240 gsubrs such as scm_timed_condition_variable_wait can only be
8241 created later.
8242
8243 * threads.h: Include "coop-pthreads.h" when requested.
8244 (scm_threads_make_mutex, scm_threads_lock_mutex,
8245 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
8246 not implemented anyway.
8247 (scm_init_thread_procs, scm_try_mutex,
8248 scm_timed_condition_variable_wait,
8249 scm_broadcast_condition_variable, scm_c_thread_exited_p,
8250 scm_thread_exited_p): New prototypes.
8251 (struct timespec): Define if not already defined.
8252 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8253 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8254 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8255 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
8256 deprecated.
8257
8258 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
8259 requested.
8260 (scm_thread_exited_p): New.
8261 (scm_try_mutex, scm_broadcast_condition_variable): Newly
8262 registered procedures.
8263 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
8264 Use the latter as the procedure for "wait-condition-variable",
8265 thus offering a optional timeout parameter to Scheme.
8266 (scm_wait_condition_variable): Implement in terms of
8267 scm_timed_wait_condition_variable.
8268 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8269 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
8270 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8271 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
8272 scm_make_mutex, etc, and deprecate.
8273 (scm_init_threads): Do not create smobs, leave this to
8274 scm_threads_init. Do not include "threads.x" file.
8275 (scm_init_thread_procs): New, include "threads.x" here.
8276
8277 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
8278 scm_null_mutex_lock, scm_null_mutex_unlock,
8279 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
8280 scm_null_condvar_wait, scm_null_condvar_signal,
8281 scm_null_condvar_destroy): Removed.
8282 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
8283 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
8284 scm_cond_destory): Do not define, they are now deprecated and
8285 handled by threads.{h,c}.
8286
8287 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
8288 (scm_threads_init): Create smobs here, using the appropriate
8289 sizes.
8290 (block): Removed, now unused.
8291 (scm_c_thread_exited_p): New.
8292 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
8293 scm_null_mutex_destroy, scm_null_condvar_init,
8294 scm_null_condvar_wait, scm_null_condvar_signal,
8295 scm_null_condvar_destroy): Removed and updated users to do their
8296 task directly.
8297 (scm_try_mutex, timeval_subtract,
8298 scm_timed_wait_condition_variable,
8299 scm_broadcast_condition_variable): New.
8300 (scm_wait_condition_variable): Removed.
8301
8302 * coop-defs.h (coop_m): Added 'level' field.
8303 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8304 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8305 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8306 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
8307 define.
8308 (coop_condition_variable_broadcast): New.
8309
8310 * coop-threads.c (scm_threads_init): Create smobs here, using the
8311 appropriate sizes.
8312 (scm_c_thread_exited_p, scm_try_mutex,
8313 scm_timed_wait_condition_variable,
8314 scm_broadcast_condition_variable): New.
8315 (scm_wait_condition_variable): Removed.
8316
8317 * coop.c (coop_new_mutex_init): Initialize level.
8318 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
8319 level.
8320 (coop_condition_variable_signal): Renamed to
8321 coop_condition_variable_broadcast and reimplemented in terms of
8322 that. Thus...
8323 (coop_condition_variable_broadcast): New.
8324
8325 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
8326
8327 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
8328
087ed40d
MV
83292002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
8330
65a23095
MV
8331 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
8332 of system headers.
8333
087ed40d
MV
8334 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
8335 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 8336 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 8337
5ec1d2c8
DH
83382002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8339
8340 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
8341 scm_definedp to scm_defined_p and deprecated scm_definedp.
8342
100ae50d
DH
83432002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8344
8345 * async.h, async.c (scm_system_async): Fixed deprecation to work
8346 correctly when deprecated features are excluded.
8347
2794cb50
MV
83482002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8349
8350 * async.c (scm_system_async_mark_for_thread): Validate thread
8351 argument.
8352
8353 * coop-threads.c (scm_i_thread_root): Do not validate argument.
8354
8355 * feature.c (scm_init_feature): Don't add 'threads' for
8356 USE_NULL_THREADS.
8357
8358 * inline.h (scm_cell, scm_double_cell): Also allow
8359 USE_NULL_THREADS to not protect the slot initializers.
8360
8361 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
8362 "USE_THREAD".
8363
8364 * Makefile.am (noinst_HEADERS): Added null-threads.c.
8365 (modinclude_HEADERS): Added null-threads.h.
8366
8367 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
8368 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
8369 (scm_init_threads): Use generic type names scm_t_mutex and
8370 scm_t_cond instead of coop_m and coop_c.
8371
8372 * null-threads.c, null-threads.h: New files.
8373
ff810d7a
MV
83742002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
8375
8376 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
8377 This is to support makes that know about "$<" only in pattern
8378 rules, like Sun's make.
8379
a90bdb73
MV
83802002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
8381
8382 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
8383 substitution. Thanks to David Allouche!
8384
e71a8bf2
DH
83852002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8386
8387 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
8388 !SCM_ENABLE_DEPRECATED.
8389
41f77ff5
MV
83902002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8391
504d99c5 8392 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
8393 scm_i_thread_root when USE_THREADS is defined. Use scm_root
8394 otherwise.
8395
8396 * scmsigs.c (take_signal): Only call scm_i_thread_root when
8397 USE_THREADS is defined. Use scm_root otherwise.
8398 (scm_sigaction_for_thread): Ignore THREAD argument when
8399 USE_THREADS is not defined. Also, move THREAD argument defaulting
8400 out of HAVE_SIGACTION section, which was a bug.
8401
6d16b125
MV
84022002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8403
8404 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
8405 signal_handlers, not the closure that is used as the async.
8406 The closure is stored in signal_handler_cells, as previously.
8407
acfa1f52
MV
84082002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
8409
8410 * root.h (scm_root_state): Added 'block_async' slot.
8411 (scm_active_asyncs): Removed abbrev.
8412 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
8413
8414 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
8415 abbrev.
8416
8417 * async.h (scm_call_with_blocked_asyncs,
8418 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8419 scm_c_call_with_unblocked_asyncs): New prototypes.
8420 (scm_mask_signals, scm_unmask_signals): Deprecated.
8421 (scm_mask_ints): Turned into a macro.
8422 * async.c (scm_mask_ints): Removed.
8423 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
8424 this should not be necessary.
8425 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
8426 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
8427 deprecation warning and check for errornous use. Set block_asyncs
8428 instead of scm_mask_ints.
8429 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
8430 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8431 scm_c_call_with_unblocked_asyncs): New.
8432
8433 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
8434 Asyncs are enabled by default.
8435
34010f56
NJ
84362002-10-09 Neil Jerram <neil@ossau.uklinux.net>
8437
8438 * vports.c (scm_make_soft_port): Allow vector argument to carry a
8439 6th element: an input waiting thunk.
8440 (sf_input_waiting): New.
8441
9310d6f2
MV
84422002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
8443
8444 * root.c (root_mark): Mark active_asyncs slot.
8445
8446 * async.c (scm_async_click): Set the cdr of a executed handler
8447 cell to SCM_BOOL_F, not SCM_EOL.
8448 (scm_i_queue_async_cell): Queue the cell at the end of the list,
8449 and only if the handler procedure is not already present.
8450 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
8451 with SCM_BOOL_F.
8452 * scmsigs.c (scm_sigaction_for_thread): Likewise.
8453
ac48c719
RB
84542002-10-04 Rob Browning <rlb@defaultvalue.org>
8455
1360a142
RB
8456 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
8457
8458 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
8459 scm_lt_dlopenext, and scm_lt_dlerror.
8460 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
8461 and scm_lt_dlerror.
8462 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
8463 and scm_lt_dlerror.
8464 (sysdep_dynl_init): switch to scm_lt_dlinit();
8465
8466 * Makefile.am (libguile_la_LIBADD): switch to use
8467 libguile-ltdl.la.
8468
504d99c5 8469 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 8470
497092c9
MV
84712002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
8472
8473 * scmsigs.h (scm_sigaction_for_thread): New prototype.
8474 * scmsigs.c (got_signal): Removed.
8475 (signal_handler_cells, signal_handler_threads): New.
8476 (take_signal): Queue the cell of the signal for the specified
8477 thread. Reset the signal handler on systems that don't have
8478 sigaction.
8479 (sys_deliver_signals): Removed.
8480 (close_1): New.
8481 (scm_sigaction_for_thread): Renamed from scm_sigaction and
8482 extended to also set the thread of a signal and allocate a cell
8483 for it. Keep the Scheme name "sigaction". Check that signum is
8484 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
8485 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
8486 (scm_init_scmsigs): Allocate signal_handler_cells and
8487 signal_handler_threads vectors.
8488
8489 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
8490 that system asnycs and user asyncs are separated. Reimplemented
8491 system asyncs to work per-thread.
8492
8493 * gc.c (scm_init_gc): Do not use scm_system_async.
8494
8495 * async.h (scm_asyncs_pending, scm_set_tick_rate,
8496 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
8497 Removed prototypes.
8498 (scm_i_queue_async_cell): New.
8499
8500 * __scm.h (scm_asyncs_pending_p): Removed.
8501 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
8502 scm_asyncs_pending_p.
8503
8504 * async.h (scm_system_async_mark_for_thread): New prototype.
8505
8506 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
8507
8508 * root.h (scm_root_state): Added new "active_asyncs" slot.
8509 * root.c (scm_make_root): Initialize it to SCM_EOL.
8510
8511 * coop-defs.h (coop_t): Added new "handle" slot.
8512 * coop-threads.c (all_threads, scm_current_thread,
8513 scm_all_threads, scm_i_thread_root): New.
8514 (scm_threads_init): Add main thread to all_threads.
8515 (scheme_launch_thread): Remove thread from all_threads when it
8516 terminates.
8517 (scm_call_with_new_thread): Initialize handle slot of coop_t
8518 structure and add new thread to all_threads.
8519 (scm_spawn_thread): Likewise.
8520
8521 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
8522 * threads.c (scm_current_thread, scm_all_threads): Register as
8523 primitives.
8524
8525 * dynl.c: Use scm_lt_ prefix for libltdl functions.
8526
480fa28d
NJ
85272002-09-29 Neil Jerram <neil@ossau.uklinux.net>
8528
8529 * script.c (scm_compile_shell_switches): Fix bad spelling of
8530 `explicitly' in comment.
8531
85322002-09-28 Neil Jerram <neil@ossau.uklinux.net>
8533
8534 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
8535 Refer to provided? in doc string rather than deprecated feature?.
8536
3553e1d1
GH
85372002-09-24 Gary Houston <ghouston@arglist.com>
8538
8539 * inline.h (scm_double_cell): prevent reordering of statements
8540 with any following code (for GCC 3 strict-aliasing).
8541 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
8542 the earlier version of the reordering prevention.
8543
4ad0814a
HWN
85442002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8545
8546 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
8547
e88e4f2e
HWN
85482002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8549
8550 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
8551 protection.
8552
1e71eafb
HWN
85532002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8554
8555 * inline.h: include stdio.h
8556
8557 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
8558
61ef9c1f
HWN
85592002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8560
dac04e9f
HWN
8561 * gc-segment.c (scm_i_make_initial_segment): check user settings
8562 for sanity.
8563
8564 * gc-malloc.c (scm_gc_init_malloc): check user settings for
8565 sanity.
dac04e9f
HWN
8566
8567 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
8568
ffd72400
HWN
8569 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
8570
8571 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
8572 these won't ever wrap around with high memory usage. Thanks to
8573 Sven Hartrumpf for finding this.
ffd72400 8574
5bd4a949
HWN
8575 * gc-freelist.c: include <stdio.h>
8576
61ef9c1f
HWN
8577 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
8578
ffd0ef3b
MV
85792002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
8580
a27e3d14
MV
8581 * vectors.h (SCM_VECTOR_REF): New.
8582
ffd0ef3b
MV
8583 * snarf.h (SCM_DEFINE_PUBLIC): New.
8584
f8a1712b
MV
85852002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
8586
8587 * socket.c (scm_addr_vector): Added size of address to arguments.
8588 Use it to avoid accessing a non-existent path in a sockaddr_un.
8589 Changed all callers.
8590
7200a36b
HWN
85912002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8592
1383773b
HWN
8593 * gc.h: remove DOUBLECELL card flags.
8594
8595 * gc-malloc.c (scm_calloc): try to use calloc() before calling
8596 scm_realloc().
8597
8598 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
8599 init loop; handle this from scm_init_card_freelist()
8600
8601 * gc-card.c (scm_init_card_freelist): init bit vector here.
8602
7200a36b 8603 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 8604 num2float.i.c (FLOAT2NUM): idem
7200a36b 8605
9981de3a
HWN
86062002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8607
8608 * eval.h: prepend libguile/ to include path
8609
19647556
MV
86102002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
8611
8612 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
9a5fa6e9 8613 years. Thanks to Martin Grabmüller!
19647556 8614
38d1262a
HWN
86152002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8616
8617 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
8618 unsigned numbers for computing minimum heap increment. This
8619 prevents weird results when a a negative minimum increment is
8620 computed.
8621
f800ebfb
MV
86222002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
8623
8624 * gc_os_dep.c: When we have __libc_stack_end, use that directly
19647556 8625 instead of the old tricks.
f800ebfb
MV
8626
8627 * guile-snarf.in: Do not expect the input file to be the first
8628 argument after the optional "-o" option, just pass everything to
8629 the pre-processor without extracting the input file name.
8630
4a5309c9
HWN
86312002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8632
8633 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
8634 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
8635
f2893a25
HWN
86362002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8637
8638 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
8639 Bill Schottstaedt for the bug report
8640
483f518b
MV
86412002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
8642
8643 * print.c (scm_iprin1): Print primitives generics always as
8644 "primitive-generic" even when they have no primitive methods yet.
8645
917adc55
GH
86462002-08-17 Gary Houston <ghouston@arglist.com>
8647
8648 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
8649 call.
8650
67329a9e
HWN
86512002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8652
85835e59 8653 * ports.c (scm_add_to_port_table): small bugfix.
67329a9e
HWN
8654
8655 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
8656 malloc.
8657
8658 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
8659 only use SCM_MIN_HEAP_SEG_SIZE.
8660
8661 * ports.c (scm_add_to_port_table): add backwards compatibility
8662 function
8663
8664 * ports.h: use scm_i_ prefix for port table and port table size.
8665
f07c886a
MD
86662002-08-15 Mikael Djurfeldt <mdj@linnaeus>
8667
8668 * vports.c (scm_make_soft_port): Initialize pt variable.
8669
dc61cbc6
MV
86702002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
8671
8672 * strports.h (scm_c_eval_string_in_module,
8673 scm_eval_string_in_module): New prototypes.
8674 * strports.c (scm_eval_string_in_module): New, but use
8675 "eval-string" as the Scheme name and make second parameter
8676 optional.
8677 (scm_eval_string): Implement using scm_eval_string_in_module.
8678 (scm_c_eval_string_in_module): New.
8679 Thanks to Ralf Mattes for the suggestion!
8680
da220f27
HWN
86812002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8682
be3ff021
HWN
8683 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8684 message and abort.
8685
8686 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8687
da220f27
HWN
8688 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8689 stead of scm_t_port*. The function now takes a tag argument.
8690
eab1b259
HWN
86912002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8692
8693 * gc.h: add scm_debug_cells_gc_interval to public interface
8694
8695 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8696
8697 * gc.c (scm_i_expensive_validation_check): separate expensive
8698 validation checks from cheap ones.
8699
ba1b2226
HWN
87002002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8701
8702 * read.c (scm_input_error): new function: give meaningful error
8703 messages, and throw read-error
8704
8705 * gc-malloc.c (scm_calloc): add scm_calloc.
8706
39e8f371
HWN
87072002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8708
33138b05
HWN
8709 * tags.h: remove GC bits documentation from the tags table.
8710
39e8f371
HWN
8711 * read.c (INPUT_ERROR): Prepare for file:line:column error
8712 messages for errors in scm_lreadr() and friends.
8713
87142002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8715
8716 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
8717 implementation).
8718 (scm_gc_calloc): new function
8719
26e68795 87202002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
402788a9 8721
5f16b897
HWN
8722 * ports.c (scm_new_port_table_entry): init port entry to 0
8723 completely.
402788a9
HWN
8724
8725 * ports.c (scm_new_port_table_entry): change function from
8726 scm_add_to_port_table. This prevents cells with null-pointers from
8727 being exposed to GC.
8728
504d99c5 8729 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
402788a9 8730 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
c8a1bdc4 8731
504d99c5 8732 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
c2cbcc57
HWN
8733 to gc-stats.
8734
c8a1bdc4
HWN
8735 * numbers.c (big2str): return "0" for 0 iso. ""
8736
c2cbcc57
HWN
8737 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8738 private-gc.h: new file
c8a1bdc4
HWN
8739
8740 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8741 sweeping. More documentation in workbook/newgc.text
8742
aea06b34
MV
87432002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8744
8745 * random.c (rstate_free): Return zero.
8746
35060ae9
DH
87472002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8748
8749 * environments.c (remove_key_from_alist): Removed.
8750
8751 (obarray_remove): Simplified.
8752
6a535440
SJ
87532002-07-24 Stefan Jahn <stefan@lkcc.org>
8754
8755 * continuations.h: ia64: Include <signal.h> before
8756 <sys/ucontext.h>.
8757
bcbd25b7
DH
87582002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8759
8760 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8761
26e68795 87622002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1d1559ce
HWN
8763
8764 * goops.c (scm_compute_applicable_methods): use
8765 scm_remember_upto_here_1 iso scm_remember_upto_here
8766
8767 * macros.c: include deprecation.h
8768
504d99c5 8769 * vectors.c (scm_vector_move_right_x): remove side effect in
1d1559ce 8770 macro arg.
504d99c5 8771 (scm_vector_move_left_x): idem.
1d1559ce
HWN
8772
8773 * net_db.c, posix.c, socket.c: variable naming: change ans to
8774 result.
8775
8776 * sort.c (scm_merge_vector_x): accept vector as argument
8777 iso. SCM*. This is needed for full GC correctness.
8778
8779 * gc.h: undo previous undocumented changes related to #ifdef
8780 GENGC.
8781
26e68795 87822002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
34d19ef6
HWN
8783
8784 * *.c: add space after commas everywhere.
8785
8786 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8787 Document cases where SCM_WRITABLE_VELTS() is used.
8788
8789 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8790 SCM_VELTS() return a const pointer
8791 (SCM_VECTOR_SET): add macro.
8792
3063e30a
DH
87932002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8794
8795 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8796 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8797 Deprecated the special kind of built-in dynamic syntax transformer
8798 that was inaccurately named "macro". Note: The built-in syntax
8799 transformers that are named "mmacro" or "memoizing-macro" still
8800 exist, and it is these which come much closer to what one would
8801 call a macro.
8802
4c5f8e8f
NJ
88032002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8804
8805 * eval.c (unmemocopy): Fix for
8806 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8807 with internal definitions and local-eval).
8808
4f6f9ae3
GH
88092002-07-12 Gary Houston <ghouston@arglist.com>
8810
8811 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8812 defined. They don't do anything useful, especially since the
8813 only case where DYNAMIC_LINKING is undefined seems to be
8814 when --with-modules=no is given to configure, which is basically
8815 requesting that the "dynamic linking module" be omitted.
8816
8817 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8818 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8819
8820 * extensions.c (load_extension): check DYNAMIC_LINKING for
8821 scm_dynamic_call.
8822 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8823 scm_init_dynamic_linking.
8824
c21935e6
MV
88252002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8826
8827 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8828 check for Cygwin when including <winsock2.h>, this is already
8829 check for by configure. Thus, revert change from 2002-07-07.
8830
ee95d597
GH
88312002-07-10 Gary Houston <ghouston@arglist.com>
8832
9540b68f 8833 * eq.c: include <string.h>
ee95d597
GH
8834 * dynl.c: docstring editing.
8835
46732b54
GH
88362002-07-09 Gary Houston <ghouston@arglist.com>
8837
8838 * dynl.c (scm_dynamic_call): docstring editing.
8839
c09d12e0
RB
88402002-07-08 Rob Browning <rlb@defaultvalue.org>
8841
8842 * gc_os_dep.c: HURD fixes.
8843
3f6571eb
MV
88442002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
8845
8846 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
8847
8848 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
8849 this should be compiled for BUILD host.
8850 Override default rule for
8851 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
8852 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
8853 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
8854
8855 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
8856 <winsock2.h> on Cygwin even when we have it.
8857
bd987b8e
DH
88582002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8859
8860 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
8861 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
8862 the code. Full number of arguments checking of closures is
8863 mandatory now. However, the option to disable the checking has
8864 most probably not been used anyway.
8865
8505e285
DH
88662002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8867
bd987b8e
DH
8868 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
8869 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
8870 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
8871 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
8872 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
8873 (scm_source_properties, scm_set_source_properties_x,
8874 scm_source_property): Removed compile time option SCM_RECKLESS to
8875 clean up the code. Full number of arguments checking of closures
8876 is mandatory now. However, the option to disable the checking has
8877 most probably not been used anyway.
8505e285
DH
8878
8879 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
8880 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
8881
2ee08a28
GH
88822002-06-30 Gary Houston <ghouston@arglist.com>
8883
732b9327
GH
8884 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
8885 do anything useful. Added a comment about need for a mutex if
8886 pre-emptive threading is supported.
8887
2ee08a28
GH
8888 * posix.c (scm_convert_exec_args), dynl.c
8889 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
8890 allocate_string_pointers. 2) simplified: don't reallocate the
8891 strings, just make an array of pointers 3) avoid memory leaks on
8892 error 4) let the procedure report errors in its own name.
8893 Consequences: 1) the procedures now assume that SCM strings are
8894 nul-terminated, which should always be the case. 2) Since strings
8895 are not reallocated, it's now possible for strings passed to
8896 dynamic-args-call to be mutated.
8897
c136c920
DH
88982002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8899
8900 * __scm.h, eval.c, eval.h: Removed compile time option
8901 MEMOIZE_LOCALS to clean up the code. Now, caching of local
8902 variable positions during memoization is mandatory. However, the
8903 option to disable the caching has most probably not been used
8904 anyway.
8905
e540802f
MV
89062002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
8907
8908 * print.c (scm_simple_format): Print missing part of format before
8909 ~% control. Thanks to Daniel Skarda!
8910
4c1ffcdd
MV
89112002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
8912
8913 * mkstemp.c: Added exception notice to license statement.
8914
ba1b077b
MV
89152002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
8916
8dc434c7
MV
8917 * numbers.c (mem2ureal): When returning an inexact zero, make sure
8918 it is represented as a floating point value so that we can change
8919 its sign.
8920
ba1b077b
MV
8921 From John W. Eaton <jwe@bevo.che.wisc.edu>
8922
8923 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
8924
74c58131
TTN
89252002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
8926
8927 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
0926d46e 8928 in addition to `i386'. Thanks to Dale P. Smith.
74c58131 8929
8766d4b5
MV
89302002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
8931
8932 * eq.c (real_eqv): New.
8933 (scm_eqv_p): Use it when comparing reals and complexes.
8934
8935 * numbers.c: Include <string.h>, for strncmp.
8936 (mem2complex): Do not create negative NaNs.
8937 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
8938 NaN.
8939 (scm_inexact_to_exact): Signal error when converting a NaN.
74c58131 8940
1d8c3cad
MV
89412002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
8942
8943 * posix.c (scm_putenv): Handle removing variables explicitely by
8944 calling unsetenv.
8945
8946 From John W. Eaton.
74c58131 8947
1d8c3cad
MV
8948 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
8949 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
8950 and scm_nan.
8951 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
8952 [SCO && ! HAVE_ISINF] (isinf): New function.
8953 (xisinf, xisnan): New functions.
8954 (IS_INF): Delete.
8955 (isfinite): Define in terms of xisinf.
8956 (scm_inf_p, scm_nan_p): New functions.
8957 (guile_Inf, guile_NaN): New file-scope vars.
8958 (guile_ieee_init): New function.
8959 (scm_inf, scm_nan): New functions.
8960 (idbl2str): Handle Inf and NaN. Remove funny label and
8961 corresponding gotos.
8962 (ALLOW_DIVIDE_BY_ZERO): New macro.
8963 (scm_divide): Allow division by zero to occur if
8964 ALLOW_DIVIDE_BY_ZERO is defined.
8965 Handle bignums and ints as special cases.
8966
8967 Additional stuff by me:
8968
8969 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
8970 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
8971 (iflo2str): Don't output a '+' for negative numbers or for Inf and
8972 NaN. They will provide their own sign.
8973 (scm_divide): Only allow divides by inexact zeros. Dividing by
8974 exact zeros still signals an errors.
74c58131 8975
7a0c65eb
TTN
89762002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
8977
87b72063 8978 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb 8979 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
504d99c5 8980 (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb
TTN
8981 Thanks to Andreas Rottmann.
8982
5e423a39
GH
89832002-04-20 Gary Houston <ghouston@arglist.com>
8984
8985 * removal of unused fields in root state (thanks to Christopher
8986 Cramer for pointing out the disuse.)
8987 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
1841c44a 8988 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
b6287a25 8989
5e423a39
GH
8990 * root.c (root_mark): don't mark them.
8991 (scm_make_root): don't set them to #f.
8992 * init.c (scm_init_standard_ports): don't initialise with the
8993 default ports.
8994
9d2cce76
MV
89952002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
8996
8997 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
8998 cpp_sig_symbols.c.
8999
90002002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
9001
9002 * guile-snarf.in: Do not clean input file. This would write to
9003 the $(srcdir) during a VPATH build, which is not allowed. It also
9004 isn't needed since it only works when an output filename has been
9005 specified and in that case we don't need to clean the input file
9006 because the output file will already exist.
9007
6f79b6cc
MV
90082002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
9009
9010 * guile-snarf: Install the trap for removing $cleanfile only when
9011 the value of $cleanfile is actually known.
9012
21550b10
RB
90132002-04-10 Rob Browning <rlb@defaultvalue.org>
9014
9015 * .cvsignore: add versiondat.h and *.c.clean.c.
9016
bc76d628
DH
90172002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
9018
9019 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
9020 function, replaces macro SRCBRKP.
9021
9022 (SRCBRKP): Deprecated.
9023
9024 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
9025 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
9026 temporary variable.
9027
5132eef0
DH
90282002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9029
9030 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
9031 CHECK_EXIT and removed all references to them.
9032
680516ba
DH
90332002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
9034
9035 * debug.h (scm_ready_p, debug_print): Removed declarations.
9036
9037 * eval.c (EVALCELLCAR): Removed.
9038
9039 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
9040 operation from condition.
9041
e2bd68e0
MV
90422002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
9043
9044 * guile-snarf.in: When the output filename is "-", write to
9045 stdout. When no "-o" option is given, use "-" as the output
9046 filename (i.e., stdout). Only 'clean' the inputfile or remove the
9047 output file on error when the output file name is not "-". Define
9048 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
9049
9050 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
9051
ab1f1094
DH
90522002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
9053
9054 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
9055 and the corresponding goto statements. Removed redundant code.
9056
42030fb2
DH
90572002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
9058
9059 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
9060 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
9061 Re-enabled handing of rpsubrs and asubrs.
9062
e050d4f8
DH
90632002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
9064
9065 * eval.c (SIDEVAL): Removed.
9066
9067 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
9068 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
9069 argument checking order for set! to locals, variables and symbols.
9070 Improvements to control structure. Removed some uses of arg1 and
9071 arg2 as temporary variables.
9072
a6d344d3
TTN
90732002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
9074
9075 * guile-snarf.in: Remove "--compat=1.4" support.
9076 Add "-d" and "-D" support.
9077
9078 (deprecated_list): New var.
9079 (compat_mode_clean_xxx): Delete.
9080 (grep_deprecated): New func.
9081 ("main"): If "-d" or "-D", call `grep_deprecated'.
9082
3939e9df
NJ
90832002-03-15 Neil Jerram <neil@ossau.uklinux.net>
9084
387d418c
NJ
9085 * hooks.h: Change scm_t_c_hookype_t everywhere to
9086 scm_t_c_hook_type.
9087
bb2c02f2 9088 Docstring fixes:
a6d344d3 9089
bb2c02f2
NJ
9090 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
9091
9092 * ports.c (scm_sys_make_void_port): Use `@file'.
9093
9094 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
9095 than `else'.
9096
9097 * macros.c (scm_makmacro): Don't say that the form replaces its
9098 source, because it doesn't.
9099 (scm_makmmacro): Clarify difference between this and scm_makmacro.
9100
9101 * backtrace.c (scm_display_error), filesys.c (scm_umask,
9102 scm_select, scm_basename), goops.c (scm_method_generic_function),
9103 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
9104 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
9105 spelling mistakes.
9106
3939e9df
NJ
9107 * debug.c (scm_debug_options), eval.c
9108 (scm_eval_options_interface), read.c (scm_read_options): Change
9109 incorrect @var in docstring to @code.
9110
3b3cc781
MV
91112002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
9112
500b0d5b
MV
9113 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
9114
3b3cc781
MV
9115 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
9116 guile-snarf can remove trailing non-init code.
9117
9118 * guile-snarf.in (modern_snarf): Remove everything following and
9119 including "^:^" from the output.
9120
dff98306
DH
91212002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9122
9123 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
9124
9125 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
9126
2287fb53
TTN
91272002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
9128
9129 * guile-snarf.in: Update copyright.
9130 Rewrite to internalize error handling.
9131 Add "--compat=1.4" handling.
9132 Add commentary.
9133
9134 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
9135 (snarfcppopts): New var.
9136 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
9137 (.c.doc): Use $(snarfcppopts).
9138
822250a4
TTN
9139 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
9140 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
9141 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
9142 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
9143 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
9144 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
9145 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
9146 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
9147 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
9148 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
9149 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
9150 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
9151 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
9152 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
9153
b7798e10
DH
91542002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9155
9156 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
9157 The next step will be to remove the union 't' and simplify the
9158 code of SCM_CEVAL that way.
9159
04a98cff
NJ
91602002-03-12 Neil Jerram <neil@ossau.uklinux.net>
9161
9162 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
9163 rreadfds, rwritefds, rexceptfds): Made static.
9164
9165 * gc.c (terminating), fports.c (terminating): Renamed
9166 scm_i_terminating.
9167
16d98032
MV
91682002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
9169
5046250e
MV
9170 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
9171 potential overflow problems. Thanks to John W Eaton!
9172
8794207d
MV
9173 * strop.c (string_capitalize_x): Treat characters as unsigned so
9174 that 8-bit chars work. Thanks to David Pirotte!
16d98032 9175
1d15ecd3
DH
91762002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9177
9178 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
9179 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
9180 proc as temporary variables. Introduced temporary variables with
9181 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9182 by a more explicit predicate in some places.
9183
91842002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
f12745b6
DH
9185
9186 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
9187 Added lots of comments regarding the implementation of #@dispatch.
9188 Changed intra-procedure communication to use t.arg1 instead of
9189 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
9190 variables. Introduced temporary variables with hopefully
9191 descriptive names for clarification. Replaced SCM_N?IMP by a more
9192 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
9193 of computing the expression explicitly. Eliminate now unused
9194 label nontoplevel_cdrxbegin.
9195
9196 * goops.h (SCM_INSTANCE_HASH): New macro.
9197
9198 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
9199
1ebf1566
TTN
92002002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9201
9202 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
9203 "guile-snarf" moved back from `noinst_SCRIPTS'.
9204
020c890c
NJ
92052002-03-08 Neil Jerram <neil@ossau.uklinux.net>
9206
58d233cc
NJ
9207 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
9208 exists when adding a source property other than those that are
9209 handled explicitly, add the new property to the SRCPROPS obj's
9210 plist.
9211
020c890c
NJ
9212 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
9213 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
9214
9215 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
9216 debug.status. It isn't needed, and it can overflow the bits
9217 reserved for it (which may lead to a segv or a GC abort).
9218
3f04400d
DH
92192002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9220
9221 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
9222 side-effecting operations from conditions and macro calls.
9223 Replaced SCM_N?IMP by a more explicit predicate in some places.
9224 Minimized the scope of some variables.
9225
97820583
SJ
92262002-03-02 Stefan Jahn <stefan@lkcc.org>
9227
9228 * convert.i.c: Fixed int <-> long conversions which would have
9229 failed if their sizes were different.
9230
38ace99e
DH
92312002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9232
9233 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
9234 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
9235 as temporary variables. Removed side-effecting operations from
9236 conditions and macro calls. Introduced temporary variables with
9237 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9238 by a more explicit predicate in some places. Removed code that
9239 was conditionally compiled if SICP was defined - which it never
9240 is.
9241
e5cb71a0
DH
92422002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9243
9244 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
9245 Removed some uses of t.arg1 and proc as temporary variables.
9246 Removed side-effecting operations from conditions and macro calls.
9247 Introduced temporary variables with hopefully descriptive names
9248 for clarification. Replaced SCM_N?IMP by a more explicit
9249 predicate in some places.
9250
6a0f6ff3
DH
92512002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9252
9253 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
9254 explicit predicate in some places.
9255
9256 (CHECK_EQVISH): Removed.
9257
9258 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
9259 variables. Removed side-effecting operations from conditions and
9260 macro calls. Introduced temporary variables for clarification.
9261 Sorted if-else-if check for the type of the last form in a list by
9262 frequency. Avoided some unnecessary tail-recursion calls.
9263
228a24ef
DH
92642002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9265
9266 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
9267 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
9268 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
9269 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
9270 scm_cell and all its uses to scm_t_cell in accordance to Guile's
9271 naming scheme for types.
9272
9273 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
9274 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
9275 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
9276 (scm_make_environment), eval.c (scm_closure), fports.c
9277 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
9278 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
9279 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
9280 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
9281 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
9282 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
9283 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
9284 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
9285 scm_alloc_cell to scm_cell.
9286
9287 * environments.c (core_environments_observe), gc.c
9288 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
9289 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
9290 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
9291 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
9292 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
9293 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
9294 (allocate_weak_vector): Renamed scm_alloc_double_cell to
9295 scm_double_cell.
9296
edb810bb
SJ
92972002-02-27 Stefan Jahn <stefan@lkcc.org>
9298
9299 * convert.i.c, convert.c: Better range checking.
9300
9301 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
9302
1ebf1566 9303 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
edb810bb
SJ
9304 Windows (MinGW).
9305
327d4dd3
TTN
93062002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
9307
9308 * Makefile.am: Update path to pre-inst-guile automake frag.
9309
89d7a92c 93102002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
646052c0
DH
9311
9312 * gc.c (scm_gc_sweep): Make it compile even when deprecated
9313 features are excluded.
9314
89d7a92c 93152002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
bac0e232
DH
9316
9317 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
9318
4f2716b6
GH
93192002-02-25 Gary Houston <ghouston@arglist.com>
9320
9321 * convert.c: include <string.h> for convert_i.c.
9322
46151112
RB
93232002-02-24 Rob Browning <rlb@defaultvalue.org>
9324
9325 * .cvsignore: add stamp-h1.
9326
cd328b4f
NJ
93272002-02-21 Neil Jerram <neil@ossau.uklinux.net>
9328
9329 * unif.c (scm_array_to_list): Correct name, which had been
9330 accidentally changed to scm_t_arrayo_list!
9331
c709de7f
MD
93322002-02-20 Mikael Djurfeldt <mdj@linnaeus>
9333
9334 * gc.c (scm_gc_sweep): Print an error message when aborting due to
9335 underflowing scm_mallocated.
9336
c1965d31
MV
93372002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9338
9339 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
9340 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
9341 Reimplemented using the new scm_gc_malloc, etc., functions and
9342 deprecated.
9343
b606945b
TTN
93442002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
9345
9346 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
9347 to `noinst_PROGRAMS'.
9348 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
9349 (noinst_PROGRAMS, noinst_SCRIPTS): New.
9350
7c686ba8
MV
93512002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9352
9353 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
9354 non-zero is returned from a port or smob free function.
9355 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
9356 scm_gc_register_collectable_memory,
9357 scm_gc_unregister_collectable_memory, scm_gc_malloc,
9358 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
9359
9360 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
9361 debug-malloc.c, dynl.c, environments.c, environments.h,
9362 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
9363 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
9364 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
9365 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
9366 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
9367 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
9368 appropriate. Return zero from smob and port free functions.
9369
9370 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
9371
9372 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
9373 messages while the GC is running.
9374 (scm_c_issue_deprecation_warning_fmt): New.
9375
9376 * fports.c (scm_setvbuf): Reset read buffer to saved values when
9377 it is pointing to the putback buffer.
9378
66adc0a6
TTN
93792002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9380
9381 * gsubr.c (create_gsubr): On "too many args" error,
9382 also display arg count and name. Thanks to Bill Schottstaedt.
9383
0187b4f4
TTN
93842002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
9385
9386 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
9387
9388 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
9389 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
9390 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
9391
9392 * guile-snarf-docs-texi.in: Bye bye.
9393
402e687c
MV
93942002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9395
9396 * symbols.c (scm_make_symbol): Fix typo in docstring.
9397
9398 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9399 scm_make_symbol): New prototypes.
9400
319b98ed
MV
94012002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
9402
9403 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
9404 (SCM_SYMBOL_INTERNED_P): New.
9405 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
9406 SCM_MAKINUM since hash values can well be bignums.
9407 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
9408 This signals a interned symbol.
9409 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9410 scm_make_symbol): New.
0187b4f4 9411
319b98ed
MV
9412 * print.c (scm_iprin1): Print uninterned symbols unreadably.
9413
34472dfe
TTN
94142002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
9415
9416 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
9417 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
0187b4f4 9418 Thanks to Dave Love.
34472dfe 9419
1b39c2e3
MV
94202002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
9421
9422 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
319b98ed 9423 This might help to make unintended clashes less likely.
1b39c2e3
MV
9424 (scm_string_to_symbol): Protect the string until the symbols is
9425 created.
9426
1fa86ca5
SJ
94272002-01-31 Stefan Jahn <stefan@lkcc.org>
9428
9429 * convert.c, convert.h, convert.i.c: New files containing C
34472dfe 9430 array to Scheme conversion helpers meant to be replacement
1fa86ca5
SJ
9431 functions for the deprecated gh interface.
9432
9433 * Makefile.am: Setup rules for new `convert.*' files.
9434
af68e5e5
SJ
94352002-01-28 Stefan Jahn <stefan@lkcc.org>
9436
9437 * symbols.c (scm_c_symbol2str): New function, replacement for
9438 `gh_scm2newsymbol()'.
9439
34472dfe 9440 * strings.c (scm_c_substring2str): New function. Proper
af68e5e5
SJ
9441 replacement for `gh_get_substr()'.
9442
9443 * socket.c: Include `stdint.h' if available for the `uint32_t'
9444 declaration.
9445
504d99c5 9446 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
af68e5e5
SJ
9447 compiler warning).
9448
9449 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
9450
c96d76b8 94512002-01-22 Neil Jerram <neil@ossau.uklinux.net>
34472dfe 9452
c96d76b8 9453 Other changes unrelated to Elisp...
34472dfe 9454
c96d76b8
NJ
9455 * eval.c (scm_m_if): Use s_if rather than repeating string literal
9456 "if".
9457 (comments): Fix a few typos.
9458 (scm_for_each): Add parentheses around oddly unparenthesized
9459 if/while conditions.
9460
9461 * read.c (scm_read_opts): Add full stop at end of doc for
9462 `keywords' option.
9463
9464 * script.c (scm_compile_shell_switches): Use scm_str2symbol
9465 instead of gh_symbol2scm.
9466
9467 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
9468 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
9469
9470 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
9471 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
9472
9473 First batch of changes for Elisp support...
9474
9475 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
9476 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
9477 throw.c, vectors.c, weaks.c: Add #include for lang.h.
9478
9479 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
9480 conditionalize compilation and initialization of Elisp support
9481 function.
34472dfe 9482
c96d76b8
NJ
9483 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
9484 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
9485 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
9486 filesys.c (fill_select_type, retrieve_select_type), fluids.c
9487 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
9488 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
9489 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
bbd26b5a
NJ
9490 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
9491 options.c (change_option_setting, scm_options), posix.c
9492 (environ_list_to_c), print.c (scm_iprlist), throw.c
9493 (scm_exit_status), vectors.c (scm_vector), weaks.c
9494 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
c96d76b8
NJ
9495
9496 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
9497 just SCM_FALSEP.
34472dfe 9498
c96d76b8
NJ
9499 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
9500 of just SCM_BOOLP.
9501
9502 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
9503 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
9504 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
9505 (scm_m_atfop): Support function aliasing. Support both function
9506 args, which need transformation, and macro args, which do not.
9507 Add explanatory comments.
9508 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
9509 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
9510 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
9511 SCM_NULLP || SCM_NILP instead of checks against (removed)
9512 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
9513 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
9514
9515 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
9516 scm_m_while, scm_nil_eq): Commented out; I don't think we need
9517 these, but I don't want to remove them yet, just in case.
9518 (scm_init_lang): Define `%nil' variable on Scheme level to hold
9519 Elisp nil value.
9520
9521 * lang.h (SCM_NILP): Test against Elisp nil value instead of
9522 against (removed) scm_lisp_nil.
9523 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
9524 (SCM_NULL_OR_NIL_P): New.
9525
9526 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
9527 SCM_VALIDATE_NULL.
9528
9529 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
9530 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
9531 value).
9532
9533 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
9534 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
9535 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
9536 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
9537
9538 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
9539 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
9540 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
9541 Numbering shifted down accordingly.
9542 (SCM_ELISP_NIL): New IFLAG.
9543
9544 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
34472dfe 9545
a392ee15
DH
95462002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9547
9548 * eval.c: Removed outdated references to "everr". Improved some
9549 comments.
9550
9551 (scm_deval_args, deval_args): Renamed scm_deval_args to
9552 deval_args, since it is not part of the interface.
9553
9554 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
9555 use references to debug.vect[0] before it exists. Add parentheses
9556 to switch statement.
9557
9558 * goops.h: Added local emacs variables.
9559
24933780
DH
95602002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9561
9562 * eval.[ch] (scm_deval_args): Made static.
9563
9564 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
9565 test.
9566
9567 * strings.c (scm_c_string2str): Clarified comment. Replaced
9568 THINKME by FIXME for uniformness. Removed question about whether
9569 arguments need to be protected from garbage collection: Arguments
9570 must be protected as any other variable.
9571
f9450cdb
DH
95722002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9573
9574 * procs.h (SCM_CLOSURE_BODY): New Macro.
9575
9576 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
9577 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
9578 get_slot_value, set_slot_value), procs.c
9579 (scm_procedure_documentation), sort.c (closureless), stacks.c
9580 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
9581 SCM_CLOSURE_BODY.
9582
9583 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
9584
5dc64f64
MV
95852001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
9586
9587 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
9588 use "cp" instead.
9589
197ee3d3
MV
95902001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
9591
9592 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
9593 everywhere.
9594
9595 * continuations.c (scm_make_continuation): Do not retain the
9596 throw_value when the continuation is invoked.
9597
4d4528e7
SJ
95982001-12-08 Stefan Jahn <stefan@lkcc.org>
9599
9600 * strings.c (scm_c_string2str): New function. Converts a
34472dfe 9601 given Scheme string into a C string. Also put in two
4d4528e7
SJ
9602 THINKME's regarding the malloc policy for the missing converter
9603 routines.
9604
98347362
NJ
96052001-12-01 Neil Jerram <neil@ossau.uklinux.net>
9606
9607 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
9608 gh_symbol2scm.
9609
1fc8902f
DH
96102001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9611
9612 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
9613 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
9614
9615 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
9616 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
9617 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
9618 macros.
9619
9620 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
9621
9622 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
9623 SCM_GC_CELL_* macros when accessing free cells.
9624
4878beec
MV
96252001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
9626
9627 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
34472dfe 9628 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
4878beec
MV
9629 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
9630 * strings.h (SCM_MAKE_STRING_TAG): New.
9631 * procs.h (SCM_MAKE_CCLO_TAG): New.
9632 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
9633
9634 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
9635 !SCM_ENABLE_DEPRECATED.
9636
9637 * async.c, async.h (scm_system_async_mark_from_signal_handler):
9638 New.
9639
9640 * scmsigs.c (scm_take_signal): Removed all code that assumes that
9641 signal handlers are allowed to divert the flow of control. Call
9642 scm_system_async_mark_from_signal_handler instead of
9643 scm_system_async_mark.
9644
9645
9646 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
9647 scm_alloc_double_cell in their place.
34472dfe 9648
4878beec
MV
9649 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
9650 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
9651 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9652 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
9653 scm_deprecated_newcell and scm_deprecated_newcell2.
9654
9655 gc.c (scm_tc16_allocated): Only define when including deprecated
9656 features.
9657 (scm_debug_newcell, scm_debug_newcell2): Removed.
9658 (scm_init_storage): Do not initialize scm_tc16_allocated.
9659 (scm_init_gc): Do it here.
9660 (allocated_mark): New, from old code.
9661 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
34472dfe 9662
4878beec 9663 * inline.c, inline.h: New files.
34472dfe 9664 * Makefile.am: Added them in all the right places.
4878beec 9665
34472dfe 9666 * _scm.h: Include "libguile/inline.h".
4878beec
MV
9667
9668 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
9669 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
9670 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
9671 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9672 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9673 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9674 scm_alloc_double_cell, respectively.
9675
d2bc7fae
MV
96762001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9677
9678 * modules.c (scm_c_use_module): Adapt to changes to
9679 `process-use-modules'.
9680
5eec27e9
DH
96812001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9682
9683 * numbers.c (scm_divide): Fix more division by zero errors.
9684
8978878f
GH
96852001-11-21 Gary Houston <ghouston@arglist.com>
9686
9687 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9688 obsolete. autogen.sh says:
9689 invalid unused variable name: `OMIT_DEPENDENCIES'
9690
164826d3
DH
96912001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9692
9693 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9694 reporting the bug.
9695
84aff7a7
MV
96962001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9697
9698 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9699 Thanks to Eric Gillespie, Jr!
34472dfe 9700
6063dc1d
SJ
97012001-11-21 Stefan Jahn <stefan@lkcc.org>
9702
34472dfe
TTN
9703 * win32-socket.c (getservent, setservent, endservent,
9704 getprotoent, setprotoent, endprotoent): New functions.
6063dc1d
SJ
9705 Appropriate replacements for M$-Windows.
9706
9707 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9708 these definitions for GUILE_DEBUG.
9709
9710 * net_db.c: Include "win32-socket.h" if compiling with a native
34472dfe
TTN
9711 M$-Windows compiler. Include some pieces of code (protoent and
9712 servent interface) protected by HAVE_* macros when using a
6063dc1d
SJ
9713 native M$-Windows compiler.
9714
351982f6
MV
97152001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9716
9717 * modules.c (scm_c_export): Do nothing when the first argument is
9718 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9719
849038b5
TTN
97202001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9721
9722 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9723 also include `buildstamp'.
9724
5c790b44
RB
97252001-11-18 Rob Browning <rlb@defaultvalue.org>
9726
9727 * version.c
9728 (s_scm_major_version): use SCM_MAJOR_VERSION.
9729 (s_scm_minor_version): use SCM_MINOR_VERSION.
9730 (s_scm_micro_version): use SCM_MICRO_VERSION.
9731 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9732 SCM_MICRO_VERSION.
9733
9734 * version.h.in
9735 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9736 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9737 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9738
694a9bb3
NJ
97392001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9740
9741 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9742 Rewrite docstrings without reference to substring-move-left/right,
9743 since the latter no longer exist.
9744
302c12b4
DH
97452001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9746
9747 * eval.c: Removed bogus comment about acros.
9748
9749 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9750 Minimize scope of local variable. Eliminate dependency on
9751 macro DEBUG_EXTENSIONS.
9752
9753 (s_splicing): New error message string.
9754
9755 (scm_m_body): Issue 'bad body' message rather than 'missing
9756 expression' message.
9757
9758 (scm_m_quote): Eliminate unnecessary copying.
9759
9760 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9761 checking of the body to scm_m_body.
9762
9763 (scm_m_do): Move comment to function header. Rename arg1 to
9764 binding. Made the code a bit easier to read.
9765
9766 (evalcar): Removed.
9767
9768 (iqq): Added a comment. Changed the depth parameter to
9769 unsigned. Use size_t for vector lengths. Make sure vector object
9770 is gc protected as long as its contents are read. Add some syntax
9771 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9772 control structure a bit.
9773
9774 (scm_m_delay): Added comment about the implementation of
9775 scm_m_delay.
9776
9777 (scm_m_define): Add comment about guile's currying define
9778 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9779 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9780
9781 (scm_m_letrec1): Removed. Part of the functionality is taken
9782 over by the new function 'transform_bindings'.
9783
9784 (transform_bindings): New function. Takes over some of the
9785 functionality of removed function 'scm_m_letrec1', namely to split
9786 a list of bindings into a reversed list of variables and a list of
9787 initializers.
9788
9789 (scm_m_letrec): Call 'transform_bindings'.
9790
9791 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9792 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9793 test. Use 'transform_bindings'. Fixed scoping error with named
9794 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9795 Jerram for suggesting the fix). Cleaned up the control structure
9796 a bit.
9797
9798 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9799 unnecessary consing. Eliminated unnecessary
9800 SCM_DEFER/ALLOW_INTS.
9801
9802 (SCM_CEVAL): Un-obfuscated some loops.
9803
cecb4a5e
NJ
98042001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9805
8f85c0c6
NJ
9806 * gc.h (scm_unhash_name): Old declaration removed.
9807
9808 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9809 @code{primitive-eval}.
9810
9811 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9812 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9813 Change @deffnx lines in docstrings to say {Scheme Procedure}
9814 rather than primitive or procedure.
9815
9816 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9817 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9818 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9819 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9820 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9821 (scm_string_split, scm_string_ci_to_symbol), strings.c
9822 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9823 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9824 Docstring fixes and improvements reflecting edits that have been
9825 made in the reference manual source.
9826
9827 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9828 scm_object_property, scm_set_object_property_x): Remove invalid
9829 @deffnx lines for corresponding procedure property primitives.
9830
cecb4a5e
NJ
9831 These changes add a @deffnx C function declaration and function
9832 index entries for each Guile primitive to the copy of the doc
9833 snarf output that is used for reference manual synchronization.
9834 Online help is unchanged.
849038b5 9835
cecb4a5e
NJ
9836 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9837 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9838 name to SCM_SNARF_DOCS.
849038b5 9839
cecb4a5e
NJ
9840 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
9841 snarf-check-and-output-texi.
9842
9843 * Makefile.am (guile-procedures.texi): New rule.
9844 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
9845 Changed so that the last stage of doc snarfing is now performed
9846 twice, once to produce guile-procedures.txt for online help, and
9847 once to produce guile.texi for reference manual synchronization.
9848
ddea3325
DH
98492001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9850
9851 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
9852 safely usable as a single statement followed by a ';', for example
9853 in an if statement.
9854
9855 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
9856
72dd0a03
NJ
98572001-11-13 Neil Jerram <neil@ossau.uklinux.net>
9858
9859 * random.c (scm_random_solid_sphere_x,
9860 scm_random_hollow_sphere_x): Correct "shere" typos.
9861
9862 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
9863
9864 * version.c (scm_version): Update docstring to include
9865 `micro-version'.
9866
6558eda6
MV
98672001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
9868
409b8588
MV
9869 * modules.c (scm_c_export): Call va_end after collecting the
9870 symbols.
9871
adb8c0f2
MV
9872 * strop.h, strop.c (scm_substring_move_left_x,
9873 scm_substring_move_right_x): Removed.
9874
6558eda6
MV
9875 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
9876 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
9877 configure does.
9878
5d8fc640
MV
98792001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
9880
9881 * numbers.c: Document macros to define when including
9882 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
9883 now rely on SIZEOF_ macros that have been figured out at
9884 configure time.
9885
9886 * num2integral.i.c: Adapt to new interface.
9887 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
9888 target type by casting it and checking whether it is still the
9889 same. Do not try to handle bignums for integral types that are
9890 smaller than fixnums. When handling bignums, collect the
9891 magnituse first into a unsigned type, and correctly check for
9892 overflow.
9893 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
9894 only -MIN_VALUE can still be negative of all negative numbers (in
9895 twos-complement).
9896
849038b5 9897 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
5d8fc640
MV
9898
9899 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
9900 HAVE_LONG_LONG depending on whether their size is non-zero.
9901
d6b8cf11
TTN
99022001-11-11 Thien-Thi Nguyen <ttn@glug.org>
9903
9904 * strop.c (scm_string_null_p): Docfix; nfc.
9905 Thanks to Scott Lenser.
9906
9401323e
NJ
99072001-11-07 Neil Jerram <neil@ossau.uklinux.net>
9908
9909 * extensions.c (scm_load_extension): Canonicalize docstring
9910 whitespace.
9911
9912 * unif.c (scm_uniform_array_write), ports.c
9913 (scm_current_output_port, scm_force_output), dynwind.c
9914 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
9915 filesys.c (scm_open, scm_lstat), struct.c
9916 (scm_make_struct_layout), random.c (scm_random,
9917 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
9918 (scm_i_index): Remove superfluous whitespace from end of docstring
9919 lines.
9920
9921 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
9922 strings.c (scm_make_string), variable.c (scm_make_variable,
9923 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
9924 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
9925 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
9926 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
9927 newline at end of docstrings.
9928
9929 * modules.c (scm_set_current_module): Add missing newline to
9930 docstring.
9931
b4e15479
SJ
99322001-11-07 Stefan Jahn <stefan@lkcc.org>
9933
9934 * win32-socket.[ch]: New files. Defines Winsock-API error codes
9935 and makes them available through Guile. That is because the
9936 Winsock-API does not store its errors in `errno' and thus cannot
9937 return error messages via `strerror (errno)'.
9938
9939 * socket.c (scm_init_socket): Initialize `win32-socket' part
9940 here under M$-Windows.
9941
d6b8cf11 9942 * numbers.h: Added missing declaration of
b4e15479
SJ
9943 `scm_sys_check_number_conversions()'.
9944
9945 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
9946 and use in `(strerror)' and `(system-error)'.
9947
d6b8cf11 9948 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
b4e15479
SJ
9949 `win32-socket.[ch]' to extra source and header files.
9950
7ab89df1
MV
99512001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
9952
9953 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
9954 a call to turn-on-debugging when --debug has been given instead of
9955 turning it on directly. Also, handle new `--no-debug' option,
9956 which might suppress the call to turn-on-debugging.
9957
0233bfc1
SJ
99582001-11-05 Stefan Jahn <stefan@lkcc.org>
9959
9960 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
9961
8f99e3f3
SJ
99622001-11-04 Stefan Jahn <stefan@lkcc.org>
9963
9964 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
d6b8cf11 9965 here (was at guile_LDADD) which describes the dependency
8f99e3f3
SJ
9966 correctly and allows a clean build on Win32.
9967
d6b8cf11 9968 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8f99e3f3
SJ
9969 into FOO.
9970
9971 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
9972 import macros for external libraries (libcrypt, libqthreads,
9973 libreadline and libregex).
9974
9975 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
9976
9977 * posix.c (flock): Added support for flock() in M$-Windows.
9978
9979 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
9980 of __SCM_IMPORT__.
9981
9982 * fports.c (getflags): Differentiate reading and writing pipes
9983 descriptors.
9984
9985 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
9986 M$-Windows.
9987
9988 * coop.c (coop_condition_variable_timed_wait_mutex): Use
9989 conditionalized error code if `ETIMEDOUT' is not available.
9990 (scm_thread_usleep): Remove bogus declaration of `struct timeval
9991 timeout'.
9992
9993 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
9994 belongs. That is because NO_PREPRO_MAGIC gets undefined after
9995 each inclusion of `num2integral.i.c'.
9996 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
9997
4e21fa60
MV
99982001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
9999
10000 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
10001 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
10002
08112c95
MD
100032001-11-02 Mikael Djurfeldt <mdj@linnaeus>
10004
7663c008
MD
10005 * print.c (scm_iprin1): Mark print state as revealed when
10006 dispatching to generic write or display.
10007
08112c95
MD
10008 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
10009
f712d833
MV
100102001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
10011
10012 Support for native Win32. Thanks to Stefan Jahn!
d6b8cf11 10013
f712d833
MV
10014 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
10015 and win32-dirent.h to extra source and header files. These
10016 include the uname() and the POSIX dirent interface implementation
10017 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
10018 linkers which do not allow unresolved symbols inside shared
10019 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
10020 dependency.
10021
d6b8cf11
TTN
10022 * __scm.h: Defined SCM_API. This macro gets prepended to all
10023 function and data definitions which should be exported or imported
f712d833
MV
10024 in the resulting dynamic link library in the Win32 port.
10025
10026 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
d6b8cf11 10027 chars.h, continuations.h, coop-defs.h, coop-threads.h,
f712d833
MV
10028 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
10029 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
10030 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
10031 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
10032 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
d6b8cf11 10033 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
f712d833
MV
10034 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
10035 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
10036 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
10037 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
10038 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
10039 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
10040 vports.h, weaks.h:
10041 Prefixed each each exported symbol with SCM_API.
10042
d6b8cf11 10043 * continuations.c: Added comment about the use of the extern
f712d833
MV
10044 declarations of {get,set}context() functions used in the ia64 port.
10045
10046 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
10047 is meant to be a `unsigned long *'.
10048
10049 * filesys.c: Include `direct.h' if possible. Use local
10050 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
10051 macros for M$-Windows. Implementation of `fstat_Win32()' which is
10052 able to differentiate between sockets and other file descriptors.
10053 Use this function as wrapper in `scm_fstat()'. Fixed typo in
10054 `scm_dirname()'.
10055
10056 * fports.c: Include `io.h' is possible. Put `*fp' into referring
10057 statement block in `scm_fport_buffer_add()'.
10058 Some corrections in `getflags()'.
d6b8cf11 10059
f712d833
MV
10060 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
10061
10062 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
10063 build on Win32. Disable preloaded symbols on Win2 platforms.
10064
10065 * ioext.c, ports.c: Include `io.h' is possible.
10066
10067 * mkstemp.c: Include `process.h' is possible.
10068
10069 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
10070 too.
10071 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
10072
10073 * posix.c: Remove unnecessary dirent includes and defines. Include
10074 local `win32-uname.h' for MinGW. Extern declaration of
10075 `mkstemp()' for systems where it does not exists. Make
10076 `getlogin()' available on M$-Windows.
10077
10078 * scmsigs.c: Made `usleep()' avalable on MinGW.
10079
10080 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
10081
10082 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
10083
10084 * win32-uname.c: Include "win32-uname.h", not "uname.h".
10085
d245ce23
MD
100862001-10-28 Mikael Djurfeldt <mdj@linnaeus>
10087
10088 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
10089 Don't apply scm_uniform_vector_length on arrays.
10090
8ea46249
DH
100912001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
10092
10093 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
10094 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
10095 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
10096 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
10097 scm_list_<n> over scm_cons[2]?.
10098
10099 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
10100 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
10101 SCM_C[AD][AD]R instead of explicit form.
10102
10103 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
10104 comparison parameters.
10105
10106 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
10107 !SCM_NULLP instead of SCM_NIMP.
10108
10109 (scm_m_case): Don't copy the form. Renamed proc to clause and
10110 minimized its scope. Renamed x to clauses. Removed side
10111 effecting operation from macro call.
10112
10113 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
10114 minimized its scope. Renamed x to clauses. Minimized the scope
10115 of variable 'len'. Make sure the else clause is treated specially
10116 even in case of '=>' occurences. Don't change the else to #t in
10117 order to be able to distinguish this case in the evaluator. Leave
10118 type checking of the recipient to the evaluator.
10119
10120 (scm_c_improper_memq): Made the comment somewhat clearer.
10121
10122 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
10123 test for SCM_IM_LET at the place of the formal parameters.
10124 Simplified the formal parameter checking.
10125
10126 (scm_m_letstar): Added Comment. Renamed proc to bindings.
10127 Renamed arg1 to binding and minimized its scope. Eliminated
10128 unnecessary consing.
10129
10130 (scm_m_do): Renamed proc to bindings. Minimized the scope of
10131 variable 'len'.
10132
10133 (build_binding_list): New static function.
10134
10135 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
10136 Further, split up the 'letrec' unmemoizing code to the
10137 corresponding parts for 'do', 'let' and 'letrec', adding comments
10138 to each form. Cleanup the handling of the do form (This removes
10139 some *real* code :-).
10140
10141 (SCM_CEVAL): Removed side effecting operation from macro call.
10142 Handle the 'else clause of the 'cond form specially - the symbol
10143 'else is not replaced with #t any more.
10144
8186c4f5
GH
101452001-10-14 Gary Houston <ghouston@arglist.com>
10146
10147 * version.c (scm_version): use sprintf instead of snprintf,
10148 for portability. thanks to Bill Schottstaedt.
10149
89759084
MD
101502001-10-14 Mikael Djurfeldt <mdj@linnaeus>
10151
10152 * read.c (scm_lreadr): When user-defined hash procedure returns
10153 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
10154 an exception. (This prevents parsing of uniform vectors from
10155 interfering with parsing of numbers.)
10156
9c7ce563
MV
101572001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
10158
10159 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
10160 PTRDIFF_MIN. Thanks to Ken Raeburn.
10161
101622001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
10163
10164 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
10165
10166 * eval.c (scm_m_atbind): First try to find the variable without
10167 defining it locally; when it has not been found, define it
10168 locally.
10169
10170 * modules.c (module_variable): Pass over variables that exist but
10171 are unbound.
10172
101732001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10174
10175 * backtrace.c (display_backtrace_file_and_line): Only use
10176 scm_basename when POSIX support is compiled in. Thanks to Chris
10177 Cramer.
10178
1fe5e088
DH
101792001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10180
10181 * numbers.c (mem2uinteger): Return number read so far when coming
10182 across a hexdigit after having read a # or if not reading a hex
10183 value. This will enable the calling code to correctly handle
10184 forms like 1e2. (The background is, that the exponent markers d,
10185 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
10186 providing this patch.
10187
10188 (mem2complex): Fix erroneous double-negation. Now, numbers like
10189 1-i will be read correctly.
10190
68665a97
MD
101912001-10-12 Mikael Djurfeldt <mdj@linnaeus>
10192
10193 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
10194
10195 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
10196
d5cf5324
DH
101972001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
10198
10199 * print.c (scm_print_state_vtable, print_state_pool):
10200 Initialize. These variables are now registered as gc roots.
10201
10202 (scm_current_pstate): Update documentation.
10203
10204 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
10205 scm_prin1, scm_init_print): print_state_pool is registered as a
10206 gc root and thus does not need to be protected by a surrounding
10207 pair any more.
10208
10209 (make_print_state): The car of print_state_pool no longer holds
10210 the scm_print_state_vtable.
10211
10212 (scm_current_pstate, scm_make_print_state, print_circref,
10213 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
10214 SCM_N<foo>.
10215
10216 (scm_prin1): When building lists, prefer scm_list_<n> over
10217 scm_cons[2]?.
10218
10219 (scm_iprlist): Removed a redundant SCM_IMP test.
10220
10221 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
10222
37c56aec
DH
102232001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10224
10225 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
10226
10227 (scm_memcons, scm_mem_to_proc): When building lists, prefer
10228 scm_list_<n> over scm_cons[2]?.
10229
10230 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
10231
10232 (scm_procedure_name): Use SCM_CADR instead of explicit form.
10233
10234 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
10235 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
10236 for some reason his patch didn't make it into the cvs.
10237
79d34f68
DH
102382001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
10239
10240 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
10241 little bit - should even be somewhat more accurate now.
10242
5e137c65
RB
102432001-10-08 Rob Browning <rlb@defaultvalue.org>
10244
10245 * gc.c: support ia64 register backing store.
10246 (SCM_MARK_BACKING_STORE): new macro.
10247
10248 * continuations.h: support ia64 register backing store.
10249 (struct scm_t_contregs): add ia64 register backing store.
10250
10251 * continuations.c: support ia64 register backing store.
10252 (continuation_mark): mark ia64 register backing store.
10253 (continuation_free): free ia64 register backing store.
10254 (scm_make_continuation): capture ia64 register backing store.
10255 (copy_stack_and_call): copy ia64 register backing store.
10256
ee083ac2
DH
102572001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10258
10259 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
10260 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
10261 instead of SCM_NIMP to test for that case.
10262
10263 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
10264 scm_t_bits instead of long.
10265
71dcdbf9
MV
102662001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10267
10268 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
10269 SCM_T_SIGNED_BITS_MIN): New.
10270 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
10271 Use them to make these macros computable by the preprocessor.
10272
10273 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
10274 whether the integral type fits in a fixnum, not the compiler.
10275 This removes a spurious compiler warning. Also, honor the
10276 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
10277 needed for `long long's.
10278
10279 * numbers.c: Define NO_PREPRO_MAGOC when including
10280 num2integral.c.i for `long long' and `signed long long'.
10281
152812c0
MD
102822001-10-06 Mikael Djurfeldt <mdj@linnaeus>
10283
10284 These changes fixes a race condition in the Guile coop - pthread
10285 compatibility code.
d6b8cf11 10286
152812c0
MD
10287 * coop.c (mother_awake_p): New variable.
10288 (coop_create): Set mother_awake_p before creating or signalling
10289 mother; wait until mother is going to sleep before returning.
10290 (mother): Reset mother_awake_p before going to sleep.
10291
11d49f54
DH
102922001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10293
10294 * options.c (protected_objects, scm_init_options): The content of
10295 protected_objects is now protected from garbage collection using
10296 scm_gc_register_root instead of scm_permanent_object.
10297
10298 (get_option_setting): New static function that computes an option
10299 setting as it was formerly done in the function scm_options.
10300
10301 (get_documented_option_setting): New static function that
10302 returns option documentation as it was formerly done in the
10303 function scm_options. Note that documentation C strings are no
10304 longer precomputed into SCM objects. Instead, they are converted
10305 into SCM strings every time get_documented_option_setting is
10306 called.
10307
10308 (change_option_setting): New static functions that modifies the
10309 option setting as it was formerly done in the function
10310 scm_options. The function is now exception safe, i. e. won't
10311 cause a memory leak when interrupted. Further, only non-immediate
10312 option values are added to the protection list.
10313
10314 (scm_options): This function now has only the purpose to dispatch
10315 to to get_option_setting, get_documented_option_setting or
10316 change_option_setting, depending on the arguments given to
10317 scm_options.
10318
10319 (scm_init_opts): Don't convert documentation C strings into SCM
10320 strings. Further, don't protect any object values: They _must_
10321 be immediate values, otherwise there is no guarantee that they
10322 have not been collected before anyway.
10323
10324 * options.[ch] (scm_t_option): Made type unsigned, name into a
10325 constant char* and val into a scm_t_bits type.
10326
10327 (scm_options, scm_init_opts): The number of options is guaranteed
10328 to be larger or equal to zero. Thus, the type is changed to
10329 unsigned.
10330
3dbacabc
DH
103312001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10332
10333 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
10334 testing an unsigned value for being >= 0.
10335
14282d0f
DH
103362001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10337
10338 * numbers.h: Removed old comment about using SCM_CAR to access
10339 non-pair cells.
10340
10341 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
10342 the return value is signed. Thanks to Brian Crowder for the bug
10343 report.
10344
10345 (SCM_SRS): Avoid unnecessary casting and don't unpack input
10346 values. With this patch, SCM_SRS can be safely used for other
10347 types than scm_t_signed_bits. However, it should still better be
10348 an internal macro and thus be renamed to SCM_I_SRS.
10349
10350 (SCM_MAKINUM, SCM_INUM): Use proper casting.
10351
2dbec7b5
GH
103522001-10-03 Gary Houston <ghouston@arglist.com>
10353
10354 * continuations.h, unif.h: in the descriptions of the bit patterns
10355 of the heap cells, make bit 0 the least significant.
10356
cf4ee841
TTN
103572001-09-25 Thien-Thi Nguyen <ttn@glug.org>
10358
10359 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
10360 Thanks to Golubev I. N.
10361
4a151b3d
GH
103622001-09-25 Gary Houston <ghouston@arglist.com>
10363
10364 * ports.c (scm_drain_input): extended the docstring. thanks to
10365 Alex Schroeder and Thien-Thi Nguyen.
10366
581ded70
MD
103672001-09-23 Mikael Djurfeldt <mdj@linnaeus>
10368
10369 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
10370 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
10371 macros. (The NUM names might soon change.)
10372
10373 * numbers.h: Added missing declarations.
10374
5437598b
MD
103752001-09-22 Mikael Djurfeldt <mdj@linnaeus>
10376
10377 * Makefile.am: Distribute num2float.i.c.
10378
10379 * num2float.i.c: New file, multiply included by numbers.c, used
10380 to "templatize" the float <-> num conversion routines.
10381
10382 * numbers.c: New functions: scm_num2float, scm_float2num,
10383 scm_num2double, scm_double2num.
10384
0b073f0f
RB
103852001-09-21 Rob Browning <rlb@defaultvalue.org>
10386
10387 * .cvsignore: really add version.h
10388
10389 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
10390 Otherwise it fails on the alpha. However, we might rather choose
10391 this size conditionally.
10392
10393 * numbers.c (scm_gcd): change "k" to a long from an int.
10394 Otherwise it fails on the alpha. However, we might rather choose
10395 this size conditionally.
10396
10397 * error.c (scm_wta): coerce char* to intptr_t before int
10398 assignment.
10399
10400 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
10401 int.
10402
10403 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
10404
2830fd91
MD
104052001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10406
10407 * numbers.c (scm_integer_expt): Accept inexact integer in second
10408 argument. (Thanks to Bill Schottstaedt.)
10409
c13f0a90
RB
104102001-09-20 Rob Browning <rlb@defaultvalue.org>
10411
10412 * .cvsignore: add version.h
10413
10414 * versiondat.h.in: removed (obsolete).
10415
10416 * version.h.in: renamed from version.h.
10417 (SCM_GUILE_MAJOR_VERSION): new public macro.
10418 (SCM_GUILE_MINOR_VERSION): new public macro.
10419 (SCM_GUILE_MICRO_VERSION): new public macro.
10420
10421 * version.h: renamed to version.h.in.
10422
10423 * version.c
10424 (scm_major_version): support integer *_VERSION macros.
10425 (scm_minor_version): support integer *_VERSION macros.
10426 (scm_micro_version): support integer *_VERSION macros.
10427 (scm_version): support integer *_VERSION macros.
10428
147c18a0
MD
104292001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10430
10431 * error.c, error.h: Made error keys globally accessible.
10432 Applications might want to test for these or use them in a direct
10433 call to scm_error.
10434
10435 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
10436 routines are passed an inexact. This change in behavior is
10437 motivated by concordance with R5RS: It is more common that a
10438 primitive doesn't want to accept an inexact for an exact.
10439
662c5539
DH
104402001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10441
10442 The following patch partially undoes my patch from 2001-06-30,
10443 where I added the function scm_gc_mark_cell_conservatively. The
10444 function is buggy, since it breaks guile during conservative
10445 marking if a pointer on the stack points directly into the list of
10446 free cells on the heap: With conservative cell marking this will
10447 cause the whole free list to be scanned and marked - boom!
10448
10449 * gc.c (allocated_mark, MARK, heap_segment,
10450 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
cf4ee841 10451 (scm_gc_mark_cell_conservatively): Remove function
662c5539
DH
10452 scm_gc_mark_cell_conservatively and update the corresponding
10453 comments and uses accordingly. Thanks to Christopher Cramer for
10454 the patch. (Minor corrections by me.)
10455
6c1b7628
GH
104562001-09-15 Gary Houston <ghouston@arglist.com>
10457
10458 * root.h (scm_root_state): removed the continuation_stack and
10459 continuation_stack_ptr members, which have no apparent purpose.
10460 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
10461 removed.
662c5539 10462
6c1b7628
GH
10463 * root.c (root_mark), init.c (restart_stack, start_stack), gc
10464 (scm_igc): remove all references to contination_stack and
10465 continuation_stack_ptr, avoiding allocation of a vector and
10466 useless processing during gc.
10467
455c0ac8
DH
104682001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10469
10470 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
10471
10472 (TCONC_IN): Make sure that the cell word 0 is initialized last.
10473
10474 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
10475
10476 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
10477
10478 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
10479 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
10480
22ba637b
DH
104812001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10482
10483 * guardians.c (mark_dependencies_in_tconc,
10484 whine_about_self_centered_zombies, scm_init_guardians): Register
10485 the static global variable `self_centered_zombies' via
10486 scm_gc_register_root, to make some cdr-ing unnecessary.
10487
c3c4d801
DH
104882001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10489
10490 * backtrace.c (display_backtrace_file,
10491 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
10492 values, use SCM_FALSEP when comparing SCM values against #f.
10493 Thanks to Rob Browning for the bug report.
10494
b00418df
DH
104952001-09-12 Martin Baulig <martin@home-of-linux.org>
10496
10497 * strings.[ch] (scm_str2string): New function.
10498
a0d34a0b
MV
104992001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
10500
10501 * gc.c (scm_done_free): Always subtract size from scm_mallocated
10502 when computing nm, even if it's negative.
10503 (scm_must_malloc): Abort on overflow of scm_mtrigger.
10504 (scm_must_realloc): Likewise.
10505
b10586f0
ML
105062001-09-01 Michael Livshin <mlivshin@bigfoot.com>
10507
10508 * numbers.c (scm_sys_check_number_conversions): new function,
10509 defined if Guile is compiled in debugging mode. currently checks
10510 `scm_num2ulong', should check much much more.
10511
10512 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
10513 unsigned, ensure that it's positive. thanks to Martin Baulig!
cf4ee841 10514
8c494e99
DH
105152001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10516
10517 * __scm.h: Added new section about compile time selectable
10518 features.
10519
10520 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
10521 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
10522 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
10523 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
10524 Removed.
10525
10526 * deprecation.c (scm_include_deprecated_features): Simplified.
10527
10528 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9a5fa6e9 10529 `SCM_IMP' instead of `!SCM_CELLP´.
8c494e99
DH
10530
10531 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
10532 Extract side-effecting operations from macros.
10533
10534 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
10535 scm_top_level_lookup_closure_var and scm_system_transformer.
10536
10537 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
10538
10539 (heap_segment): Use CELL_P instead of SCM_CELLP.
10540
10541 * init.c (start_stack): Don't initialize
10542 scm_top_level_lookup_closure_var and scm_system_transformer.
10543
10544 * modules.c (scm_set_current_module): Don't access
10545 scm_top_level_lookup_closure_var and scm_system_transformer.
10546
10547 (scm_sym2var): Don't call scm_variable_set_name_hint.
10548
10549 (scm_post_boot_init_modules): Removed deprecated initializations.
10550
10551 * print.c (scm_ipruk): Don't access cell contents of non cells.
10552
10553 * strings.c (scm_string_set_x): All strings are writable.
10554
10555 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
10556 type. There is only one string type now.
10557
10558 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
10559
10560 * tags.h: Remove comments about two different string types.
10561
10562 (SCM_CELLP, SCM_NCELLP): Deprecated.
10563
10564 * variable.c (make_variable): Remove code variant for vcells.
10565
10566 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
10567 SCM_VARIABLE_LOC): Remove code variant for vcells.
10568
10569 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
10570 SCM_ENABLE_DEPRECATED with the logic reversed.
10571
10572 * dynl.c (moddata, registered_mods), dynl.[ch]
10573 (scm_register_module_xxx, scm_registered_modules,
10574 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
10575 (*top-level-lookup-closure*), eval.[ch]
10576 (scm_top_level_lookup_closure_var, scm_system_transformer,
10577 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
10578 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
10579 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
10580 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
10581 scm_unprotect_object), modules.c (root_module_lookup_closure,
10582 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
10583 beautify_user_module_x_var, try_module_autoload_var,
10584 scm_module_full_name), modules.[ch] (scm_the_root_module,
10585 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
cf4ee841 10586 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
8c494e99
DH
10587 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
10588 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
10589 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
10590 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
10591 scm_make_shared_substring), tags.h (scm_tc7_substring,
10592 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
10593 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
10594 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
10595 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
10596 Removed.
10597
10598 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
10599 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
10600 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
10601 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
10602 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
10603 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10604 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
10605 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
10606 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
10607 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
10608 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
10609 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
10610 (setzone, scm_strftime, scm_strptime), vports.c
10611 (scm_make_soft_port): Remove calls to
10612 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
10613 gone, all strings are 0-terminated anyway.
10614
10615 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
10616 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
10617 double inclusion of the same headers to the SCM_<filename>_H
10618 format.
10619
10620 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
10621 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
10622 print.c (scm_iprin1): The type scm_tc7_substring does not exist
10623 any more.
10624
10625 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
10626 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
10627 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
10628 !SCM_<foo> over SCM_N<foo>.
10629
dee01b01
DH
106302001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10631
10632 * Makefile.am: Remove references to symbols-deprecated.c.
10633
10634 * symbols.c (scm_init_symbols): Don't initialize deprecated
10635 symbol functions.
10636
10637 * symbols-deprecated.c: Removed.
10638
10639 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
10640 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
10641 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
10642 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
10643 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
10644 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
10645 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
10646 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
10647 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
10648 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
10649 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
10650 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
10651 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
10652 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
10653 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
10654 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
10655 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
10656 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
10657 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
10658 scm_intern0, scm_sysintern, scm_sysintern0,
10659 scm_sysintern0_no_module_lookup, scm_symbol_value0,
10660 scm_string_to_obarray_symbol, scm_intern_symbol,
10661 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
10662 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
10663 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
10664 vectors.[ch] (scm_vector_set_length_x): Removed.
10665
10666 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
10667 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
10668 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
10669 Renamed the macros that are defined to inhibit double inclusion of
10670 the same headers to the SCM_<filename>_H format.
10671
10672 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10673 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10674 SCM_N<foo>.
10675
b29058ff
DH
106762001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10677
10678 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10679 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10680 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10681 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10682 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10683 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10684 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10685 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10686 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10687 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10688 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10689 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10690
10691 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10692 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10693 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10694 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10695 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10696 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10697 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10698 double inclusion of the same headers to the SCM_<filename>_H
10699 format.
10700
10701 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10702 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10703 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10704 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10705 !SCM_<foo> over SCM_N<foo>.
10706
0527e687
DH
107072001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10708
10709 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10710 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10711 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10712 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10713 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10714 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10715 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10716 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10717 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10718 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10719 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10720 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10721 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10722 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10723 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10724 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10725 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10726 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10727 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10728 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10729 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10730 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10731 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10732 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10733 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10734 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10735 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10736 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10737 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10738 the macros that are defined to inhibit double inclusion of the
10739 same headers to the SCM_<filename>_H format.
10740
fada26b2
MV
107412001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10742
10743 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10744 "scm_t_portable" with "scm_port_table" which was an artifact from
10745 the great "scm_*_t -> scm_t_" renaming.
10746
e4d1c1ea
TTN
107472001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10748
10749 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10750 used; nfc. Thanks to Bill Schottstaedt.
10751
10752 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10753 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10754 Thanks to Chris Cramer.
10755
b573e744
MV
107562001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10757
10758 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10759
10760 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10761 dynamic scope.
10762 * dynwind.h (scm_swap_bindings): Declare.
10763 * dynwind.c (scm_swap_bindings): Make non-static.
10764
8a3e715b
ML
107652001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10766
10767 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10768 doing exactly nothing about them). thanks Neil!
10769
cf504ee0
NJ
107702001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10771
10772 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
ec2667f0 10773
43b83b54
TTN
107742001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10775
10776 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10777 (proto) in the case when either `GUILE_DEBUG' or
10778 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10779
10780 (map_free_list): Fix typo: Ref `f' correctly.
10781
10782 Thanks to Chris Cramer.
10783
ab4cd34b
RB
107842001-08-15 Rob Browning <rlb@defaultvalue.org>
10785
10786 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10787 variables.
10788 (libpath.h): change libguileversion to libguileinterface.
10789
b754e3d1
MV
107902001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10791
10792 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10793 ChangeLog-2000. Thanks to Daniel Skarda!
10794
8b1d12c7
ML
107952001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10796
10797 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10798 do it from the Makefile.
10799
10800 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10801 are of a reasonable size.
10802
baffb19f
NJ
108032001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10804
10805 * stacks.c (scm_make_stack): Improve docstring by explaining use
10806 of cutting args.
10807
c1151355
MV
108082001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10809
10810 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10811 scm_char_whitespace_p, scm_char_upper_case_p,
10812 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10813 characters to fulfill isascii in addition to the primary
10814 predicate.
10815
3c9a524f
DH
108162001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10817
10818 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10819 scm_istr2flo, scm_istring2number): Removed.
10820
10821 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10822 SCM_SLOPPY_<foo>.
10823
10824 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10825 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10826 Added.
10827
10828 (scm_string_to_number): Use new number parser.
10829
10830 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10831 handles complex numbers.
10832
10833 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10834 SCM_<foo>_H.
10835
10836 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10837 SCM_N<pred>.
10838
10839 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
10840
10841 (scm_i_mem2number): Added.
10842
10843 (scm_exact_to_inexact): Changed signature.
10844
10845 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
10846 here instead of within scm_i_mem2number. Call scm_i_mem2number
10847 instead of scm_istr2int and scm_istring2number.
10848
01f11e02
DH
108492001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10850
10851 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
10852 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
10853 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
10854 !SCM_<pred> over SCM_N<pred>.
10855
10856 (scm_eval_body): Remove side effecting code from macro call.
10857
10858 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
10859 SCM_NIMP test.
10860
6cf69537
DH
108612001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10862
10863 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
10864
54866b6c
MV
108652001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
10866
10867 Removed vcell slot from structs.
43b83b54 10868
54866b6c
MV
10869 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
10870 subsequent indices.
10871
10872 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
10873 zero. Use scm_vtable_index_layout instead of "0" when accessing
10874 said slot.
10875 (scm_init_struct): Remove vcell slot layout code from
10876 required_vtable_fields.
10877
10878 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
10879
10880 * goops.c (build_class_class_slots): Removed vcell slot
10881 definition.
10882
10883 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
10884 Removed vcell slot layout code.
10885 (scm_si_vcell): Removed.
10886
5b54c4da
MV
108872001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10888
a0f5718e 10889 "Glocs" have been removed.
43b83b54 10890
a0f5718e
MV
10891 * tags.h: Update tag system docs.
10892 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
10893 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
10894 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
10895 or SCM_NCONSP, respectively.
10896
10897 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
10898 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
10899 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
10900
10901 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
10902 tell glocs from structs.
43b83b54 10903
a0f5718e
MV
10904 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
10905
10906 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
10907 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
10908 instead of with glocs.
10909 (EVALCAR): Do not test for glocs.
10910 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
10911 condition.
10912 (scm_unmemocar): Do not handle glocs.
10913 (scm_m_atfop): Memoize as a variable, not as a gloc.
10914 (scm_eval_args, scm_deval_args): Do not handle glocs.
10915 (scm_ceval, scm_deval): Likewise.
43b83b54 10916
a0f5718e
MV
10917 * eval.h (SCM_XEVALCAR): Do not test for glocs.
10918 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
10919 Removed.
10920
10921 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
10922
10923 * dynwind.c (scm_swap_bindings): Likewise.
10924 (scm_dowinds): Updated to recognize lists of variables instead of
10925 lists of glocs.
10926
10927 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
10928
43b83b54 10929
5b54c4da
MV
10930 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
10931 where it is needed.
43b83b54 10932
3c3db128
GH
109332001-07-25 Gary Houston <ghouston@arglist.com>
10934
10935 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
10936 docstrings to reflect the n-ary implementation.
10937
dd29a169
MV
109382001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10939
10940 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
10941 value of a variable, not the plain "return" statement.
10942
f5fe6c2f
MV
109432001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
10944
10945 * eval.c: Allow variables in memoized code (in addition to glocs).
10946 (scm_lookupcar): Handle variables in lost races. Replace symbol
10947 with variable directly, do not make a gloc.
10948 (scm_unmemocar): Rewrite variables using a reverse lookup, just
10949 like glocs.
10950 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
10951 the main switch.
10952
ee0c7345
MV
109532001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10954
6d9ad98a
MV
10955 * variable.c (scm_i_variable_print): Use "value" instead of
10956 "binding" since a binding is the mapping between symbols and
10957 variables, not between variables and their values.
10958
ee0c7345
MV
10959 * tags.h (scm_tc7_variable): New.
10960 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
10961 * print.c (scm_iprin1): Likewise.
10962
10963 * variable.h (scm_tc16_variable): Removed.
10964 (SCM_VARIABLEP): Test for new tc7 code.
10965 (scm_i_variable_print): New.
10966 * variable.c (scm_tc16_variable): Removed.
10967 (variable_print): Renamed to scm_i_variable_print and made
10968 non-static.
10969 (variable_equal_p): Removed.
10970 (make_variable): Construct a tc7 object instead of a smob.
10971 (scm_init_variable): Do not register smob.
43b83b54 10972
f3805ebb
MV
109732001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
10974
10975 * tags.h: Include inttypes.h when we have it.
10976
109772001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
10978
10979 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
10980 is taken by the new SCM_IM_CALL_WITH_VALUES.
10981 * print.c (scm_isymnames): Update table accordingly.
43b83b54 10982
6a1677a3
GH
109832001-07-22 Gary Houston <ghouston@arglist.com>
10984
10985 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
10986 SCM_MAKINUM to convert regoff_t value to SCM.
10987
1bed8c28
GH
109882001-07-21 Gary Houston <ghouston@arglist.com>
10989
10990 * scmsigs.c: include sys/time.h for itimer stuff.
10991
e658215a
RB
109922001-07-19 Rob Browning <rlb@defaultvalue.org>
10993
10994 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
10995
10996 * c-tokenize.lex: add option %nounput to quiet warning.
10997 Add prototype for yylex to quiet warning.
10998
10999 * scmconfig.h.in: add flags for setitimer and getitimer.
11000
11001 * scmsigs.h (scm_init_scmsigs): new prototype.
11002 (scm_init_scmsigs): new prototype.
11003
11004 * scmsigs.c (s_scm_setitimer): new function.
11005 (s_scm_setitimer): new function.
11006
58ade102
MG
110072001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11008
11009 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
11010 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
11011 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
11012 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
11013 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
11014 guile-func-name-check.in, guile-snarf-docs-texi.in,
11015 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
11016 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
11017 objprop.c, objprop.h, options.c, options.h, random.h,
11018 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
11019 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
11020 version.c, version.h: Updated copyright notice.
11021
6b80d352
DH
110222001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11023
11024 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
11025 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
11026 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
11027 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
11028 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
11029 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
11030 sym_environment, scm_sym_change_class): New static variables to
11031 hold predefined symbols.
11032
11033 (build_class_class_slots): Build the list using scm_list_n
11034 instead of cons. Also, slots are already created as lists, thus
11035 making a call to maplist unnecessary.
11036
11037 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
11038 scm_class_direct_subclasses, scm_class_direct_methods,
11039 scm_class_precedence_list, scm_class_slots, scm_class_environment,
11040 scm_method_procedure, create_standard_classes, purgatory): Use
11041 predefined symbols.
11042
11043 (build_slots_list, compute_getters_n_setters,
11044 scm_sys_initialize_object, scm_sys_inherit_magic_x,
11045 get_slot_value_using_name, set_slot_value_using_name,
11046 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
11047 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
11048 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
11049
11050 (scm_sys_prep_layout_x): Minimize variable scopes.
11051
11052 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
11053 scm_sys_fast_slot_set_x): Fix signedness.
11054
11055 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
11056 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
11057 scm_memoize_method, scm_wrap_object): Use packing and unpacking
11058 when converting to and from SCM values.
11059
11060 (scm_enable_primitive_generic_x): Add rest argument checking.
11061
11062 (map, filter_cpl, maplist, scm_sys_initialize_object,
11063 scm_sys_prep_layout_x, slot_definition_using_name,
11064 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
11065 call_memoize_method, scm_make, scm_make_class): Prefer explicit
11066 predicates over SCM_N?IMP tests.
11067
11068 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
11069 checking.
11070
11071 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
11072 alias.
11073
63bcad19
DH
110742001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11075
11076 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
11077
11078 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
11079
11080 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
11081
11082 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
11083
4d6aae71
ML
110842001-07-12 Michael Livshin <mlivshin@bigfoot.com>
11085
11086 * strings.c (s_scm_string): fix arg position in assert.
11087
4b8ec619
GH
110882001-07-11 Gary Houston <ghouston@arglist.com>
11089
11090 * strports.c (st_write): use memcpy, not strncpy. thanks to
11091 Dale P. Smith.
11092
dbb640bd
TTN
110932001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
11094
11095 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
11096 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
11097 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
11098 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
11099 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
11100 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
11101 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
11102 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
11103 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
11104 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
11105 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
11106 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
11107 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
11108 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
11109 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
11110 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
11111 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
11112 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
11113 weaks.c, weaks.h: Remove "face-lift" comment.
11114
fd6c6321
RB
111152001-07-08 Rob Browning <rlb@defaultvalue.org>
11116
11117 * .cvsignore: add stamp-h.in.
11118
f91e4547
MG
111192001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11120
11121 * hooks.c (scm_make_hook, scm_add_hook_x),
11122 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
11123 value info to the docstrings.
11124
7beabedb
MG
111252001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11126
11127 Some more compatibility patches for Windows.
dbb640bd 11128
7beabedb
MG
11129 * posix.c (getlogin): getlogin() implementation for Windows.
11130
11131 * backtrace.c, ioext.c: Include <stdio.h>.
11132
11133 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
11134 exist.
11135
11136 * cpp_sig_symbols.in: Added SIGBREAK.
11137
0d0560d0
MV
111382001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
11139
11140 * strports.c (scm_read_0str, scm_eval_0str): Call
11141 scm_c_read_string and scm_c_eval_string respectively, not
11142 themselves. Thanks to Dale P. Smith!
11143
9a97e362
DH
111442001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11145
11146 * unif.c (scm_array_set_x): The variable args does not
11147 necessarily have to be a list. Further, got rid of a redundant
11148 SCM_NIMP test.
11149
592996c9
DH
111502001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11151
11152 * list.c (SCM_I_CONS): Make sure the cell type is initialized
11153 last.
11154
11155 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
f91e4547 11156 init_heap_seg): Fixed signedness.
592996c9
DH
11157
11158 (init_heap_seg): Replaced strange for-loop with a while loop.
11159
11160 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
11161
11162 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
11163
11164 The following patch adds conservative marking for the elements of
11165 free or allocated cells.
11166
11167 * gc.c (allocated_mark, heap_segment): New static functions.
11168
11169 (which_seg): Deleted, since the functionality is now provided by
11170 function heap_segment.
11171
11172 (map_free_list): Use heap_segment instead of which_seg.
11173
11174 (MARK): If cell debugging is disabled, mark free cells
11175 conservatively.
11176
11177 (scm_mark_locations, scm_cellp): Extracted the search for the
11178 heap segment of a SCM value into function heap_segment.
11179
11180 (scm_init_storage): Allocated cells must be marked
11181 conservatively.
11182
11183 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
11184
11185 The following patch changes the representation of weak vectors to
11186 double cells instead of using an extension of the vector's
11187 allocated memory.
11188
11189 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
11190 the result of SCM_WVECT_GC_CHAIN.
11191
11192 (scm_gc_sweep): Weak vectors don't have extra fields any more.
11193
11194 * weaks.c (allocate_weak_vector): New static function. It does
11195 not patch any previously created vector object during the
11196 construction of a weak vector, and thus doesn't need to switch
11197 off interrupts during vector creation.
11198
11199 (scm_make_weak_vector, scm_make_weak_key_hash_table,
11200 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11201 Use allocate_weak_vector to provide the new weak vector object.
11202
11203 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
11204 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
11205 now stored in the double cell.
11206
11207 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
11208 Use SCM_WVECT_TYPE.
11209
11210 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
11211 using an entry of the double cell.
11212
4dadf664
TTN
112132001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
11214
11215 * stamp-h.in: bye bye
11216
02202352
MV
112172001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
11218
11219 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
11220 scm_eval_0str.
11221
11222 * load.c, load.h (scm_c_primitive_load,
11223 scm_c_primitive_load_path): New.
11224
11225 * strports.c, strports.h (scm_c_read_string): Renamed from
11226 scm_read_0str. Also, added "const" qualifier to argument.
11227 (scm_c_eval_string): Renamed from scm_eval_0str.
11228 (scm_read_0str, scm_eval_0str): Deprecated.
11229
df1ad0d1
MG
112302001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11231
11232 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
11233 SCM_LIST1.
11234
1afff620
KN
112352001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
11236
11237 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
11238 scm_list_n): New functions.
11239 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
11240 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
11241 (lots of files): Use the new functions.
4dadf664 11242
1afff620
KN
11243 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
11244
11245 * strings.c: #include "libguile/deprecation.h".
11246
b858464a
MG
112472001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11248
11249 * read.c (scm_lreadr): When reading a hash token, check for a
11250 user-defined hash procedure first, so that overriding the builtin
11251 hash characters is possible (this was needed for implementing
11252 SRFI-4's read synax `f32(...)').
4dadf664 11253
b858464a
MG
11254 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
11255 because the latter is unsigned now and breaks comparisons like
11256 (n < (scm_t_signed_bits)MIN_VALUE).
4dadf664 11257
d95c0b76
NJ
112582001-06-26 Neil Jerram <neil@ossau.uklinux.net>
11259
11260 * eval.h, eval.c (scm_call_4): New function.
11261
11262 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
11263 directly rather than dispatching to them via scm_ithrow and a lazy
11264 catch.
4dadf664 11265
d95c0b76
NJ
11266 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
11267 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
11268 for trap handler procedures.
11269
11270 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
11271 procedures not being #f.
11272
30e3be5a
ML
112732001-06-27 Michael Livshin <mlivshin@bigfoot.com>
11274
11275 * Makefile.am (c-tokenize.c): add rule to generate it.
11276 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
11277
11278 filter-doc-snarfage.c: remove.
11279
82893676
MG
112802001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11281
11282 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
11283
11284 The following set of changes makes compiling Guile under various
11285 Windows compilers easier. Compilation under GNU systems should
11286 not be affected at all.
11287
11288 Thanks to Stefan Jahn for all necessary information, patches and
11289 testing.
4dadf664 11290
82893676
MG
11291 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
11292 getpgrp, ttyname, primitive-fork and some header inclusion for
11293 Windows.
11294
11295 * random.c: Define M_PI, if not predefined and use __int64 for
11296 LONG64 under Windows.
11297
11298 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
11299 Windows and conditionalize some signal names.
11300
4dadf664 11301 * socket.c (scm_getsockopt): Added missing comma.
82893676
MG
11302 Include socket library header under Windows.
11303
11304 * stime.c (CLKTCK): Add cast to int, to make it compile under
11305 Windows.
11306
11307 * ports.c (truncate): New function, compiled only under Windows.
11308
11309 * net_db.c: Do not declare errno under Windows.
11310
11311 * iselect.h, inet_aton.c: Include socket library headers under
11312 Windows.
11313
11314 * guile.c (inner_main): Under Windows, initialize socket library
11315 and initialize gdb_interface data structures.
11316
11317 * gdb_interface.h: Under Windows, gdb_interface cannot be
11318 initialized statically. Initialize at runtime instead.
11319
11320 * fports.c (write_all): ssize_t -> size_t.
11321 (fport_print): Conditionalize call to ttyname().
11322 (getflags): New function, compiled only under Windows.
11323
11324 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
11325 primitives chown, link, fcntl.
11326 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
11327 as path seperator.
11328
11329 * backtrace.c: Include <io.h> under Windows.
11330
11331 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
11332
11333 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
11334 declaration.
11335
fdc28395
KN
113362001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
11337
11338 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11339 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
11340 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11341 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
11342 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
11343 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
11344 (scm_dynamic_wind, scm_dowinds), environments.c
11345 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
11346 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
11347 goops.c (GETVAR, purgatory, make_class_from_template,
11348 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
11349 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
11350 (scm_primitive_load), modules.c (scm_resolve_module,
11351 scm_c_define_module, scm_c_use_module, scm_c_export,
11352 module_variable, scm_eval_closure_lookup, scm_sym2var,
11353 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
11354 ports.c (scm_port_for_each), print.c (scm_printer_apply),
11355 properties.c (scm_primitive_property_ref), ramap.c (ramap,
11356 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
11357 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
11358 (scm_object_to_string, scm_call_with_output_string,
11359 scm_call_with_input_string), throw.c (scm_body_thunk,
11360 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
11361 scm_make_shared_array), vports.c (sf_flush, sf_write,
11362 sf_fill_input, sf_close): Use one of the above functions.
11363 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
11364
36284627
DH
113652001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11366
11367 * filesys.c (scm_close), ports.c (scm_close_port,
11368 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
11369 instead of SCM_NEGATE_BOOL.
11370
11371 * filesys.c (scm_stat): Clean up type dispatch.
11372
11373 * filesys.c (scm_stat), ports.c (scm_input_port_p,
11374 scm_output_port_p): Get rid of redundant IM type check.
11375
11376 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
11377 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
11378 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
11379 scm_return_entry), numbers.c (scm_number_to_string), objects.c
11380 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
11381 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
11382 scm_addr_vector), stime.c (scm_strftime), strings.c
11383 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
11384 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
11385 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11386 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
11387 instead of scm_makfromstr.
11388
11389 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
11390 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
11391 scm_read_hash_extend), stime.c (scm_strftime), strings.c
11392 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
11393 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
11394 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
11395 !SCM_<pred> over SCM_N<pred>.
11396
11397 * strings.[ch] (scm_makfromstr): Deprecated.
11398
11399 (scm_mem2string): New function, replaces scm_makfromstr.
11400
11401 * strings.c (scm_substring), strop.c (string_copy,
11402 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11403 (scm_symbol_to_string): Fix gc problem.
11404
11405 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
11406 SCM_<foo>_H.
11407
11408 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
11409 warning about comparing signed and unsigned values. This fix is
11410 not optimal, since it won't work reliably if sizeof (c_start) >
11411 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
11412 solution is to define this macro as an inline function, thus
11413 allowing to specifiy the types of c_start and c_end.
11414
13dcb666
DH
114152001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
11416
11417 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
11418 scm_t_debug_frame*.
11419
11420 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
11421 Rename <foo>H to SCM_<foo>_H.
11422
11423 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
11424 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11425
11426 (narrow_stack): Make i unsigned. Don't use side-effecting
11427 operations in conditions.
11428
11429 (narrow_stack, scm_make_stack, scm_stack_id,
11430 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
11431
11432 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
11433 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
11434 more.
11435
11436 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
11437 signedness.
11438
ea2c3968 11439 (scm_last_stack_frame): Remove bogus `;'.
13dcb666
DH
11440
11441 * stacks.h (SCM_FRAMEP): Fix type check.
11442
ac13d9d2
ML
114432001-06-25 Michael Livshin <mlivshin@bigfoot.com>
11444
ee0c0e03
ML
11445 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
11446 c-tokenize.c when doing maintainer-clean.
11447
ac13d9d2
ML
11448 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
11449
11450 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
11451 simplify.
11452
11453 * eval.c: all hash signs are in column 0.
11454
11455 * Makefile.am (guile_filter_doc_snarfage): build using
11456 c-tokenize.c, not filter-doc-snarfage.c.
11457 rearrange snarfing dependencies a bit.
11458
11459 * c-tokenize.lex: new file.
11460
16be44e5
MV
114612001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
11462
11463 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
11464 scm_t_srcpropso_plist. See the big type renaming.
11465 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
11466 Thanks to Seth Alves!
4dadf664 11467
16be44e5
MV
11468 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
11469 they aren't defined already.
11470
5843e5c9
DH
114712001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
11472
11473 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
11474 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
11475 problem.
11476
11477 * backtrace.c (display_expression, scm_set_print_params_x,
11478 display_application, display_frame, scm_backtrace), numbers.c
11479 (scm_istring2number), objects.c (scm_class_of,
11480 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
11481 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11482
11483 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
11484 always positive.
11485
11486 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
11487 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
11488
11489 * objects.c (scm_class_of): Type fix.
11490
11491 (scm_mcache_lookup_cmethod): Improved comment, simplified,
11492 eliminated goto.
11493
11494 * pairs.h (scm_error_pair_access): The function can return if
11495 called recursively.
11496
6b41a313
MG
114972001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11498
11499 * init.c (scm_init_guile_1): Removed initialization of tag.c.
11500
11501 * gdbint.c, init.c: Removed inclusion of tag.h.
11502
11503 * tag.h, tag.c: Removed files.
11504
11505 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
11506
fbbdb121
GH
115072001-06-20 Gary Houston <ghouston@arglist.com>
11508
11509 * deprecation.c, extensions.c, rw.c: include string.h.
11510
72c17ed0
GH
115112001-06-19 Gary Houston <ghouston@arglist.com>
11512
11513 * filter-doc-snarfage.c (process): added ungetc in
11514 MULTILINE_COOKIE case since otherwise it fails when there's no
11515 space between the '(' and the quote of the following string
11516 (gcc 3.0).
11517
4ff9f825
MV
115182001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11519
4927dd28
MV
11520 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
11521
b629af45
MV
115222001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11523
11524 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
0f002b27
MV
11525 extension takes place.
11526 * strings.h (SCM_STRING_LENGTH): Likewise.
11527 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
4dadf664 11528
4ff9f825
MV
11529 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
11530 it.
11531
11532 * tags.h: Include <stdint.h> when we have it.
11533 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
11534 available. Else use "unsigned long".
11535 (scm_signed_bits_t): New.
11536
11537 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
11538 (SCM_INUM): Cast result to scm_signed_bits_t.
11539
58bee6a8
TTN
115402001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
11541
11542 * mkstemp.c: Update path to #include file scmconfig.h.
11543 Thanks to Golubev I. N.
11544
00d8d838
DH
115452001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
11546
11547 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
11548
ea2c3968 11549 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
00d8d838
DH
11550 the macro definition.
11551
11552 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
11553 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
11554 instead of SCM_INST_TYPE.
11555
11556 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
11557 the object is a struct before accessing its struct flags.
11558
11559 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
11560
495c67e5
GH
115612001-06-10 Gary Houston <ghouston@arglist.com>
11562
11563 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
11564 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
11565 work reliably anymore. try it from boot-9.scm instead.
11566
6a9003d3
MV
115672001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
11568
11569 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
9a5fa6e9 11570 Thanks to Matthias Köppe!
58bee6a8 11571
47bcd646
ML
115722001-06-08 Michael Livshin <mlivshin@bigfoot.com>
11573
a88ff5b6
ML
11574 * snarf.h, filter-doc-snarfage.c: more changes to cope with
11575 space-happy C preprocessors.
11576
47bcd646 11577 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
9a5fa6e9 11578 inside cookies. thanks to Matthias Köppe!
47bcd646 11579
bab246f3
DH
115802001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11581
11582 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
11583 keywords. Fix gc protection.
11584
11585 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
11586 operations in macro calls.
11587
11588 * pairs.c (scm_error_pair_access): Avoid recursion.
11589
11590 Thanks to Matthias Koeppe for reporting the bugs that correspond
11591 to the following set of patches.
11592
11593 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
11594 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
11595 bitvector base address using SCM_BITVECTOR_BASE.
11596
11597 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
11598 unsigned long*.
11599
dcb410ec
DH
116002001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11601
11602 * goops.c (SCM_CLASS_REDEF): Removed.
11603
11604 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
11605 SCM_<foo>_H.
11606
11607 Thanks to Matthias Koeppe for reporting the bugs that correspond
11608 to the following set of patches.
11609
11610 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
11611 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
11612 scm_sys_allocate_instance, clear_method_cache,
11613 scm_sys_invalidate_method_cache_x, scm_make,
11614 create_standard_classes, scm_make_port_classes, scm_make_class,
11615 scm_add_slot): Use SCM_SET_SLOT to set slot values.
11616
11617 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
11618
11619 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
11620
11621 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
11622 UNARY_ELTS_CODE): Remove bogus break statement.
11623
11624 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
11625 Don't access bit vectors elements as SCM objects.
11626
11627 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
11628 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11629 Don't assign to an unpacked value.
11630
e81d98ec
DH
116312001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
11632
11633 * __scm.h (SCM_NORETURN): Moved here from error.h.
11634
11635 (SCM_UNUSED): New macro.
11636
11637 (SCM_DEBUG_PAIR_ACCESSES): New macro.
11638
11639 * backtrace.c (display_error_handler), continuations.c
11640 (continuation_print), debug.c (debugobj_print), dynwind.c
11641 (guards_print), environments.c (observer_print,
11642 core_environments_finalize, leaf_environment_cell,
11643 leaf_environment_print, eval_environment_print,
11644 eval_environment_observer, import_environment_define,
11645 import_environment_undefine, import_environment_print,
11646 import_environment_observer, export_environment_define,
11647 export_environment_undefine, export_environment_print,
11648 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
11649 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
11650 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
11651 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
11652 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
11653 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
11654 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
11655 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
11656 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
11657 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
11658 set_slot_value, test_slot_existence, scm_change_object_class,
11659 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
11660 default_setter), guardians.c (guardian_print, guardian_gc_init,
11661 guardian_zombify, whine_about_self_centered_zombies), guile.c
11662 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
11663 mallocs.c (malloc_print), numbers.c (scm_print_real,
11664 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
11665 end_input_default, scm_port_print, fill_input_void_port,
11666 write_void_port), root.c (root_print), smob.c (scm_mark0,
11667 scm_free0, scm_smob_print, scm_smob_apply_1_error,
11668 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
11669 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
11670 (scm_struct_free_0, scm_struct_free_standard,
11671 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11672 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11673 scm_handle_by_throw, scm_ithrow), weaks.c
11674 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11675 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11676 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11677
11678 * error.h (SCM_NORETURN): Moved to __scm.h.
11679
11680 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11681 Renamed <foo>H to SCM_<foo>_H.
11682
11683 * gc.c (debug_cells_gc_interval): New static variable.
11684
11685 (scm_assert_cell_valid): If selected by the user, perform
11686 additional garbage collections.
11687
11688 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11689 if additional garbage collections are desired.
11690
11691 (mark_gc_async): If additional garbage collections are selected
11692 by the user, don't call the after-gc-hook. Instead require the
11693 user to run the hook manually.
11694
11695 * pairs.c (scm_error_pair_access): New function. Only compiled
11696 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11697
11698 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11699
11700 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11701 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11702 is a real pair object. (Glocs are also accepted, but that may
11703 change.) If not, abort with an error message.
11704
17fa3fcf
DH
117052001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11706
11707 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11708
11709 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11710 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11711
feeedafb
MV
117122001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11713
11714 * extensions.c (scm_c_register_extension): Allow NULL as library
11715 name.
11716 (load_extension): Ignore NULL library names when comparing.
58bee6a8 11717
feeedafb
MV
11718 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11719 non-pointers are being compared. Thanks to Alexander Klimov!
11720
4bcdfe46
GH
117212001-06-04 Gary Houston <ghouston@arglist.com>
11722
11723 * rw.c (scm_write_string_partial): new procedure implementing
11724 write-string/partial in (ice-9 rw).
11725 * rw.h: declare scm_write_string_partial.
58bee6a8 11726
f480396b
MV
117272001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11728
feeedafb
MV
11729 * keywords.c (keyword_print): Substract 1 from length of symbol
11730 name, accounting for the silly dash.
11731
11732 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11733 Do not emit deprecation warning.
11734
f480396b
MV
11735 Added exception notice to all files.
11736
11737 * dynl.c: Include "deprecation.h".
11738
c794483c
MV
117392001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11740
11741 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11742 scm_clear_registered_modules): Deprecated.
11743
9454d8d5
RB
117442001-06-02 Rob Browning <rlb@cs.utexas.edu>
11745
11746 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11747 guile-snarf-docs-texi.
11748
11749 * fports.c: HAVE_ST_BLKSIZE changed to
11750 HAVE_STRUCT_STAT_ST_BLKSIZE.
11751 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11752 HAVE_STRUCT_STAT_ST_BLKSIZE.
11753
11754 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11755 HAVE_STRUCT_STAT_ST_RDEV.
11756 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11757 HAVE_STRUCT_STAT_ST_BLKSIZE.
11758 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11759 HAVE_STRUCT_STAT_ST_BLOCKS.
11760
114f9bab
MV
117612001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11762
b0c16cd9
MV
11763 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11764 of scm_eval_x to allow module changes between the forms in the
11765 string. Set/restore module using scm_c_call_with_current_module.
11766
114f9bab
MV
11767 * mkstemp.c: New file, slightly modified from libiberties
11768 mkstemps.c.
11769
c99f9605
ML
117702001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11771
11772 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11773 filter-doc-snarfage.c: new files.
11774
11775 * Makefile.am: add stuff to [build,] use and distribute
11776 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11777
11778 * guile-snarf.in: grok the new snarf output.
11779
11780 * snarf.h: make the output both texttools- and `read'-friendly.
11781
47bcd646
ML
11782 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11783 guile-snarf-docs. (should also deprecate, I guess. maybe not).
c99f9605 11784
7eb5d7b2
MV
117852001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11786
11787 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11788 error for unsupported format controls and for superflous
ec2667f0 11789 arguments. Thanks to Daniel Skarda!
7eb5d7b2
MV
11790
11791 * print.h, print.c (scm_print_symbol_name): Factored out of
11792 scm_iprin1.
11793 (scm_iprin1): Call it.
58bee6a8 11794
7eb5d7b2
MV
11795 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11796 weird names are printed correctly.
11797
11798 * print.c (scm_print_symbol_name): Symbols whose name starts with
11799 `#' or `:' or ends with `:' are considered weird.
11800
609c3d30
MG
118012001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11802
11803 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11804 and /.
11805
118062001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11807
11808 * debug.h: Removed prototype for scm_eval_string.
11809
8d09eb04
MG
118102001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11811
11812 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
58bee6a8 11813 (make-string 2000 #\!))' in an older version).
8d09eb04
MG
11814
11815 Change strncpy to memcpy to allow embedded NUL characters in
11816 symbol prefix.
11817
dd85ce47
ML
118182001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11819
fde50407
ML
11820 * hooks.c (scm_create_hook): deprecated.
11821 (make_hook): deleted.
11822 (scm_make_hook): all the hook creation code is now here.
11823
11824 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11825 a hook, make it permanent, and do a `scm_c_define' on it.
11826
dd85ce47
ML
11827 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11828
11829 * socket.c (s_scm_inet_pton): fix docstring quoting.
11830 (s_scm_inet_ntop): ditto.
11831
11832 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11833
11834 * hashtab.c (scm_internal_hash_fold): fix argument position in
11835 SCM_ASSERT.
11836
11837 * environments.c (s_scm_import_environment_set_imports_x): fix
11838 argument position in SCM_ASSERT.
11839
11840 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
11841 (s_scm_make_iloc): ditto.
11842
729dbac3
DH
118432001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11844
11845 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
11846
11847 * eval.c (promise_print): Read the promise's value as an object.
11848
11849 (SCM_CEVAL): Don't perform side-effecting operations in macro
11850 parameters.
11851
11852 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
11853 conditional expression.
11854
11855 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
11856 initializer.
11857
11858 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
11859 text, removed redundant computation of effective_length and fixed
11860 the overflow check.
11861
11862 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
11863 values.
11864
11865 (wrap_init): Don't use SCM_C[AD]R for non pairs.
11866
11867 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
11868
11869 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
11870 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
11871
11872 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
11873
11874 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
11875 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
11876 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
11877 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
11878
11879 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
11880
11881 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
11882
ea2c3968 11883 * ramap.c (ramap_rp): Removed bogus `;'.
729dbac3
DH
11884
11885 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
11886 problem.
11887
11888 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
11889 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
11890 Read SCM objects rather than scm_bits_t values.
11891
11892 * tags.h (SCM_VOIDP_TEST): Removed.
11893
11894 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
11895 value of 2 now corresponds to the former 1, the current 1
11896 corresponds to the former situation that SCM_VOIDP_TEST was
11897 defined.
11898
58bee6a8
TTN
11899 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
11900 If this appears to be not ANSI compliant, we will change it to
729dbac3
DH
11901 typedef struct scm_unused_struct { } * SCM;
11902 Thanks to Han-Wen Nienhuys for the suggestion.
11903
11904 * unif.c (scm_array_set_x): Fix typing problem, and use
11905 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
11906 dealing with uniform vectors.
11907
6b1b030e
ML
119082001-05-27 Michael Livshin <mlivshin@bigfoot.com>
11909
11910 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
11911 (scm_igc): mark from them, too (precisely, not conservatively!).
11912
11913 * root.h (scm_gc_registered_roots): new object in
11914 scm_sys_protects.
11915
11916 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
11917 `scm_protect_object'. shouldn't call it at all, though, it seems.
11918
11919 * gc.c (scm_[un]protect_object): deprecated.
11920 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
11921 (scm_gc_[un]register_root[s]): new.
11922
11923 * gc.h: add prototypes for scm_gc_[un]protect_object,
11924 scm_gc_[un]register_root[s].
11925
c014a02e
ML
119262001-05-26 Michael Livshin <mlivshin@bigfoot.com>
11927
11928 revert the controversial part of the 2001-05-24 changes.
11929
0120801d
MV
119302001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
11931
f4e0611e
MV
11932 * modules.c (scm_env_module): Exported to Scheme.
11933
0120801d 11934 * eval.c (scm_debug_opts): New option `show-file-name'.
729dbac3 11935
0120801d 11936 * debug.h (SCM_SHOW_FILE_NAME): New.
729dbac3 11937
0120801d
MV
11938 * backtrace.c: Include "libguile/filesys.h".
11939 (sym_base, display_backtrace_get_file_line,
11940 display_backtrace_file, display_backtrace_file_and_line): New.
11941 (display_frame): Call display_backtrace_file_and_line if that is
11942 requested.
11943 (display_backtrace_body): Call scm_display_backtrace_file if
11944 requested.
11945
11946 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
11947 Prototypes removed since there's no definition for these
11948 functions.
11949
880a7d13
MG
119502001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11951
11952 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
11953 Changed use of scm_array->scm_array_t and
11954 scm_array_dim->scm_array_dim_t to enable build with
11955 --disable-deprecated.
11956
1be6b49c
ML
119572001-05-24 Michael Livshin <mlivshin@bigfoot.com>
11958
11959 The purpose of this set of changes is to regularize Guile's usage
11960 of ANSI C integral types, with the following ideas in mind:
11961
d69c867a
ML
11962 - SCM does not nesessarily have to be long.
11963 - long is not nesessarily enough to store pointers.
1be6b49c
ML
11964 - long is not nesessarily the same size as int.
11965
11966 The changes are incomplete and possibly buggy. Please test on
11967 something exotic.
11968
11969 * validate.h
11970 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
11971 new macros.
11972
11973 * unif.h: type renaming:
11974 scm_array -> scm_array_t
11975 scm_array_dim -> scm_array_dim_t
11976 the old names are deprecated, all in-Guile uses changed.
11977
11978 * tags.h (scm_ubits_t): new typedef, representing unsigned
11979 scm_bits_t.
11980
11981 * stacks.h: type renaming:
11982 scm_info_frame -> scm_info_frame_t
11983 scm_stack -> scm_stack_t
11984 the old names are deprecated, all in-Guile uses changed.
11985
11986 * srcprop.h: type renaming:
11987 scm_srcprops -> scm_srcprops_t
11988 scm_srcprops_chunk -> scm_srcprops_chunk_t
11989 the old names are deprecated, all in-Guile uses changed.
11990
11991 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
11992 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
11993 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
11994 vectors.c, vports.c, weaks.c:
11995 various int/size_t -> size_t/scm_bits_t changes.
11996
11997 * random.h: type renaming:
11998 scm_rstate -> scm_rstate_t
11999 scm_rng -> scm_rng_t
12000 scm_i_rstate -> scm_i_rstate_t
12001 the old names are deprecated, all in-Guile uses changed.
12002
12003 * procs.h: type renaming:
12004 scm_subr_entry -> scm_subr_entry_t
12005 the old name is deprecated, all in-Guile uses changed.
12006
12007 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
12008 type renaming:
12009 scm_option -> scm_option_t
12010 the old name is deprecated, all in-Guile uses changed.
12011
12012 * objects.c: various long -> scm_bits_t changes.
12013 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
12014
12015 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
12016 SCM_I_FIXNUM_BIT.
12017
12018 * num2integral.i.c: new file, multiply included by numbers.c, used
12019 to "templatize" the various integral <-> num conversion routines.
12020
12021 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
12022 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
12023 deprecated.
12024 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
12025 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
12026 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
12027 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
12028 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
12029 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
12030 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
12031 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
12032 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
12033 scm_num2size): new functions.
12034
d69c867a 12035 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
1be6b49c
ML
12036
12037 * load.c: change int -> size_t in various places (where the
12038 variable is used to store a string length).
12039 (search-path): call scm_done_free, not scm_done_malloc.
12040
12041 * list.c (scm_ilength): return a scm_bits_t, not long.
12042 some other {int,long} -> scm_bits_t changes.
12043
12044 * hashtab.c: various [u]int -> scm_bits_t changes.
12045 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
12046 (scm_ihashx): n: uint -> scm_bits_t
12047 use scm_bits2num instead of scm_ulong2num.
12048
12049 * gsubr.c: various int -> scm_bits_t changes.
12050
12051 * goops.[hc]: various {int,long} -> scm_bits_t changes.
12052
d69c867a 12053 * gh_data.c (gh_num2int): no loss of precision any more.
1be6b49c
ML
12054
12055 * gh.h (gh_str2scm): len: int -> size_t
12056 (gh_{get,set}_substr): start: int -> scm_bits_t,
12057 len: int -> size_t
12058 (gh_<num>2scm): n: int -> scm_bits_t
12059 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
12060 (gh_length): return scm_bits_t, not unsigned long.
12061
12062 * gc.[hc]: various small changes relating to many things stopping
12063 being long and starting being scm_[u]bits_t instead.
12064 scm_mallocated should no longer wrap around.
12065
12066 * fports.h: type renaming:
12067 scm_fport -> scm_fport_t
12068 the old name is deprecated, all in-Guile uses changed.
12069
12070 * fports.c (fport_fill_input): count: int -> scm_bits_t
12071 (fport_flush): init_size, remaining, count: int -> scm_bits_t
12072
12073 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
12074 those prototypes, as the functions they prototype don't exist.
12075
12076 * fports.c (default_buffer_size): int -> size_t
12077 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
12078 default_size: int -> size_t
12079 (scm_setvbuf): csize: int -> scm_bits_t
12080
12081 * fluids.c (n_fluids): int -> scm_bits_t
12082 (grow_fluids): old_length, i: int -> scm_bits_t
12083 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
12084 scm_bits_t
12085 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
12086
12087 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
12088 the new and shiny SCM_NUM2INT.
12089
12090 * extensions.c: extension -> extension_t (and made a typedef).
12091
12092 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
12093 there are no nasty surprises if/when the various deeply magic tag
12094 bits move somewhere else.
12095
12096 * eval.c: changed the locals used to store results of SCM_IFRAME,
12097 scm_ilength and such to be of type scm_bits_t (and not int/long).
12098 (iqq): depth, edepth: int -> scm_bits_t
12099 (scm_eval_stack): int -> scm_bits_t
12100 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
12101 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
12102 i: int -> scm_bits_t
12103
12104 * environments.c: changed the many calls to scm_ulong2num to
12105 scm_ubits2num.
12106 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
12107
12108 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
12109
12110 * debug.h: type renaming:
12111 scm_debug_info -> scm_debug_info_t
12112 scm_debug_frame -> scm_debug_frame_t
12113 the old names are deprecated, all in-Guile uses changed.
12114 (scm_debug_eframe_size): int -> scm_bits_t
12115
12116 * debug.c (scm_init_debug): use scm_c_define instead of the
12117 deprecated scm_define.
12118
12119 * continuations.h: type renaming:
12120 scm_contregs -> scm_contregs_t
12121 the old name is deprecated, all in-Guile uses changed.
12122 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
12123 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
12124
12125 * continuations.c (scm_make_continuation): change the type of
d69c867a 12126 stack_size from long to scm_bits_t.
1be6b49c
ML
12127
12128 * ports.h: type renaming:
12129 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
12130 scm_port -> scm_port_t
12131 scm_ptob_descriptor -> scm_ptob_descriptor_t
12132 the old names are deprecated, all in-Guile uses changed.
12133 (scm_port_t.entry): int -> scm_bits_t.
12134 (scm_port_t.line_number): int -> long.
12135 (scm_port_t.putback_buf_size): int -> size_t.
12136
12137 * __scm.h (long_long, ulong_long): deprecated (they pollute the
d69c867a 12138 global namespace and have little value beside that).
1be6b49c
ML
12139 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
12140 SCM handle).
12141 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
d69c867a 12142 exist (for size_t & ptrdiff_t).
1be6b49c
ML
12143 (scm_sizet): deprecated.
12144
12145 * Makefile.am (noinst_HEADERS): add num2integral.i.c
12146
a6219f22
MV
121472001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
12148
12149 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
12150 SCM_VARIABLE_INIT since that it what it used to be.
12151
12152 * deprecation.c (scm_include_deprecated_features): Make docstring
9a5fa6e9 12153 ANSIsh. Thanks to Matthias Köppe!
a6219f22 12154
311b6a3c
MV
121552001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
12156
9dfc4faa
MV
12157 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
12158 needed for weak-key hashtables.
12159
12160 * procs.c (scm_make_subr_with_generic): Add missing last argument
12161 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
12162
12163 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
12164 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
311b6a3c
MV
12165
12166 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
12167
2fc933fe
MV
121682001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
12169
57ae112d
MV
12170 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
12171 `duplicate_string'. Do not use an indirect cell, store symbol
12172 directly in collision list of hash table.
12173 (duplicate_string): Removed.
58bee6a8 12174
57ae112d
MV
12175 * init.c (scm_init_guile_1): Call scm_init_extensions.
12176
12177 * Makefile.am: Add "extensions.c" and related files in all the
12178 right places.
12179
12180 * extensions.h, extension.c: New files.
12181
12182 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
12183
2fc933fe
MV
12184 * modules.h (scm_system_module_env_p): Move out of deprecated
12185 section.
12186
12187 * rw.h (scm_init_rw): Added prototype.
12188
12189 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
12190 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
12191 New functions. They replace scm_make_gsubr and
12192 scm_make_gsubr_with_generic. The `make' variants only create the
12193 gsubr object, while the `define' variants also put it into the
12194 current module. Changed all callers.
12195 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
12196
12197 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
12198 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
12199 functions. They replace scm_make_subr, scm_make_subr_opt and
12200 scm_make_subr_with_generic. The `make' variants only create the
12201 subr object, while the `define' variants also put it into the
12202 current module. Changed all callers.
12203 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
12204 Deprecated.
12205
12206 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
12207 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
12208 the comments above.
58bee6a8 12209
18928596
NJ
122102001-05-19 Neil Jerram <neil@ossau.uklinux.net>
12211
12212 * throw.c (scm_lazy_catch): Slight docstring clarification.
12213
21a13beb
MV
122142001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
12215
e2b6ddc6
MV
12216 * throw.c: Lazy-catch handlers are no longer allowed to return.
12217 Fixed comments throughout.
12218 (scm_ithrow): Signal an error when a lazy-catch handler returns.
12219 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
12220 recognized as such.
12221
21a13beb
MV
12222 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
12223 refered to s_scm_minor_version previously.
12224
12225 * modules.h, modules.c: Moved around a lot of code so that
12226 deprecated features appear at the bottom.
12227 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
12228 module_prefix, make_modules_in_var, beautify_user_module_x_var,
12229 scm_the_root_module, scm_make_module, scm_ensure_user_module,
12230 scm_load_scheme_module): Deprecated.
12231 (scm_system_module_env_p): Return SCM_BOOL_T directly for
12232 environments corresponding to the root module.
12233 (convert_module_name, scm_c_resolve_module,
12234 scm_c_call_with_current_module, scm_c_define_module,
12235 scm_c_use_module, scm_c_export): New.
12236 (the_root_module): New static variant of scm_the_root_module. Use
12237 it everywhere instead of scm_the_root_module.
58bee6a8 12238
21a13beb
MV
12239 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
12240 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
12241 (scm_c_with_fluid): New.
12242 (scm_with_fluids): Use scm_c_with_fluids instead of
12243 scm_internal_with_fluids.
58bee6a8 12244
21a13beb
MV
12245 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
12246 `scm_init_goops'. Do not explicitly create/switch modules.
12247 Return SCM_UNSPECIFIED.
12248 (scm_init_goops): Only register `%init-goops-builtins' procedure.
12249 (scm_load_goops): Use scm_c_resolve_module instead of
12250 scm_resolve_module.
58bee6a8 12251
21a13beb
MV
12252 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
12253 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
12254 `scm_init_rw' prior to loading the startup files.
12255
12256 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
12257 scm_init_rdelim. Do not explicitly create/switch modules.
12258 Return SCM_UNSPECIFIED.
12259 (scm_init_rdelim): Only register `%init-rdelim-builtins'
12260 procedure.
58bee6a8 12261
21a13beb
MV
12262 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
12263 explicitly create/switch modules. Return SCM_UNSPECIFIED.
12264 (scm_init_rw): Only register `%init-rw-builtins' procedure.
12265
12266 * script.c (scm_shell): Evaluate the compiled switches in the
12267 current module, not in the root module.
12268
122692001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
12270
12271 * fluids.c (scm_c_with_fluids): Rename from
12272 scm_internal_with_fluids.
12273 (scm_internal_with_fluids): Deprecated.
12274 (scm_c_with_fluid): New.
12275
09cb9e73
DH
122762001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12277
12278 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
12279
12280 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
12281 accessed with SCM_C[AD]R.
12282
12283 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
12284
c81ea65d
RB
122852001-05-16 Rob Browning <rlb@cs.utexas.edu>
12286
12287 * version.c (s_scm_major_version): doc fixes.
12288 (s_scm_minor_version): doc fixes.
12289 (s_scm_minor_version): new function.
12290
12291 * version.h (scm_init_version): new function.
12292
12293 * versiondat.h.in: add GUILE_MICRO_VERSION.
12294
887dfa7d
DH
122952001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
12296
12297 * deprecation.c (scm_init_deprecation): Renamed
12298 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
12299
78930a69
MV
123002001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
12301
12302 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
12303 dependent on cpp_cnvt.awk
12304
39cde5c5
MG
123052001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12306
12307 * script.c (scm_compile_shell_switches): New command line option
12308 `--use-srfi' for loading a list of SRFIs on startup.
12309 (scm_shell_usage): Added `--use-srfi' to help message.
12310
f3f9dcbc
MV
123112001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12312
78930a69 12313 Merged from mvo-vcell-cleanup-1-branch.
887dfa7d 12314
f3f9dcbc
MV
12315 The concept of vcells has been removed from Guile. With it,
12316 explicit obarrays and associated operations are gone. Use
12317 hashtables instead of obarrays.
887dfa7d 12318
f3f9dcbc
MV
12319 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
12320 result as variable instead of vcell. Glocs no longer point to a
12321 vcell but to a variable. Use scm_c_define instead of
12322 scm_sysintern and treat the result as a variable (which it is),
12323 not a vcell.
887dfa7d 12324
f3f9dcbc
MV
12325 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
12326 SCM_DEFVARIABLEP): Deprecated.
12327 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
12328 (variable_print): Do not print name of variable.
12329 (variable_equalp): Compare values, not vcells.
12330 (anonymous_variable_sym): Removed.
12331 (make_vcell_variable): Removed.
12332 (make_variable): New, as replacement.
12333 (scm_make_variable, scm_make_undefined_variable): Do not take name
12334 hint parameter.
12335 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
12336 error in that case.
12337 (scm_builtin_variable): Deprecated.
12338
12339 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
12340 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
12341 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
12342 scm_sysintern, scm_sysintern0, scm_symbol_value0,
12343 scm_string_to_obarray_symbol, scm_intern_symbol,
12344 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
12345 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
12346 Deprecated and moved to "symbols-deprecated.c".
12347 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
12348 (scm_init_symbols): Call scm_init_symbols_deprecated.
12349 * symbols-deprecated.c: New file.
12350 * Makefile.am: Added symbols-deprecated.c and related files in all
12351 the right places.
887dfa7d 12352
f3f9dcbc
MV
12353 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
12354 SCM_GLOBAL_VCELL_INIT): Deprecated.
12355 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
12356 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
887dfa7d 12357
f3f9dcbc
MV
12358 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
12359 SCM_GLOC_SYM.
12360
12361 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
12362 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
12363 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
12364 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
12365 Changed according to the `throughout' comments.
12366
12367 * modules.h, modules.c (scm_module_system_booted_p): Changed type
12368 to `int'.
12369 (scm_module_type): Removed.
12370 (the_root_module): Renamed to the_root_module_var. Now points to
12371 a variable instead of a vcell. Updated all uses.
12372 (scm_the_root_module): Return SCM_BOOL_F when module systems
12373 hasn't been booted yet.
12374 (SCM_VALIDATE_STRUCT_TYPE): Removed.
12375 (scm_post_boot_init_modules): Made static.
12376 (scm_set_current_module): Call scm_post_boot_init_modules on first
12377 call.
12378 (make_modules_in, beautify_user_module_x, resolve_module,
12379 try_module_autoload, module_make_local_var_x): Tacked on "_var"
12380 suffix. Now point to variables instead of vcells. Updated all
12381 uses.
12382 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
12383 and return SCM_BOOL_F in that case.
12384 (scm_module_transformer): Likewise.
12385 (sym_module, scm_lookup_closure_module, scm_env_module): New.
12386 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
12387 (scm_eval_closure_lookup): Do not allow new definitions when
12388 `interface' flag is set.
12389 (scm_standard_interface_eval_closure): New.
12390 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
12391 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
12392 scm_c_lookup, scm_c_module_define, scm_c_define,
12393 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
12394 scm_modules_prehistory): New.
12395 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
12396 instead of scm_intern0.
887dfa7d 12397
f3f9dcbc
MV
12398 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
12399 symbol.
12400
12401 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
12402 hashtable operations to maintain the keywords, not obarray ones.
12403
12404 * init.c (scm_load_startup_files): Do not call
12405 scm_post_boot_init_modules. This is done by
12406 scm_set_current_module now.
12407 (scm_init_guile_1): Call scm_modules_prehistory. Call
12408 scm_init_variable early on.
12409
12410 * goops.c (s_scm_sys_goops_loaded): Get
12411 var_compute_applicable_methods from scm_sym2var, not from a direct
12412 invocation of scm_goops_lookup_closure.
12413
12414 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
12415
12416 * gc.c: Added simple debugging hack to mark phase of GC: When
12417 activated, do not tail-call scm_gc_mark. This gives nice
12418 backtraces.
12419 (scm_unhash_name): Removed.
12420
12421 * feature.c (features): Renamed to features_var. Now points to a
12422 variable instead of a vcell. Updated all uses.
12423
12424 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
12425 `scm_current_module_lookup_closure' which will do the right thing
12426 when the module system hasn't been booted yet.
12427 (SCM_GLOC_SYM): Removed.
12428 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
12429 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
887dfa7d 12430
f3f9dcbc
MV
12431 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
12432 instead of with vcells. Do not overwrite `var' with the result of
12433 the lookup, use the new `real_var' instead. Remove `var2' in
12434 exchange (which was only used with threads).
12435 (sym_three_question_marks): New.
12436 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
12437 `SCM_GLOC_SYM'.
12438 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
12439 (scm_m_atfop): Expect the function definition to be a variable
12440 instead of a vcell.
12441 (scm_macroexp): Do not use `unmemocar', explicitely remember the
12442 symbol instead.
12443 (scm_unmemocopy): Removed thoughts about anti-macro interface.
12444 (scm_eval_args): Use more explicit code in the gloc branch of the
12445 atrocious struct ambiguity test. The optimizer will sort this
12446 out.
12447 (scm_deval_args): Likewise.
12448 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
12449 remember the symbol instead. Added some comments where
12450 scm_tc3_cons_gloc really exclusively refers to structs.
12451 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
12452 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
12453 of scm_sysintern in general.
12454
12455 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
12456 explicit magic.
12457
12458 * debug.c (s_scm_make_gloc): Only allow proper variables, no
12459 pairs. Put the variable directly in the gloc.
12460 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
12461 (scm_init_debug): Use scm_c_define instead scm_sysintern.
12462
12463 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
12464
12465 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
12466 scm_the_last_stack_fluid_var. It now points to a variable instead
12467 of a vcell. Updated all uses.
12468 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
12469 instead of a vcell. Updated all uses.
12470
12471 * _scm.h: Include "variables.h" and "modules.h" since almost
12472 everybody needs them now.
12473
12474 * root.h (scm_symhash, scm_symhash_vars): Removed.
12475 * gc.c (scm_init_storage): Do not initialize them.
887dfa7d 12476
7c33806a
DH
124772001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12478
12479 * eval.c (scm_init_eval): Initialize scm_undefineds and
58bee6a8 12480 scm_listofnull.
7c33806a
DH
12481
12482 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
12483 like the SCM_NEWCELL macro counterparts.
12484
12485 (scm_init_storage, scm_init_gc): Moved initialization of
12486 scm_tc16_allocated from scm_init_gc to scm_init_storage.
12487
12488 (scm_init_storage): Moved initialization of scm_undefineds and
12489 scm_listofnull to eval.c, initializion of scm_nullstr to
12490 strings.c, initializion of scm_nullvect to vectors.c.
12491
12492 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
12493 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
12494
12495 * init.c (scm_init_guile_1): Reordered some initializations and
12496 added dependcy information comments.
12497
12498 * load.c (scm_init_load): Use scm_nullstr.
12499
12500 * strings.c (scm_init_strings): Initialize scm_nullstr.
12501
12502 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
12503
11bbab47
MV
125042001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
12505
12506 * values.c (print_values): Print as a unreadable object, not as
9a5fa6e9 12507 multiple lines. Thanks to Matthias Köppe!
11bbab47 12508
5cd06d5e
DH
125092001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
12510
12511 * deprecation.c: Fixed copyright date.
12512
12513 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
12514 DEPRECATION_H to SCM_DEPRECATION_H.
12515
32bac999
TTN
125162001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
12517
12518 * guile-doc-snarf.in: Update copyright.
12519 Fix relative path bug. Thanks to Sergey Poznyakoff.
12520
c9dcc5ae
MV
125212001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12522
12523 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
12524 accept open ports. Thanks to Quetzalcoatl Bradley!
12525
7c582ec9
MG
125262001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12527
12528 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
12529 has 779 primitives on startup.
12530
284ab601
MV
125312001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
12532
12533 * eval.c (scm_i_eval): Copy expression before passing it to
12534 SCM_XEVAL. The copy operation was removed unintendedly during my
12535 change on 2001-03-25.
12536
910d1e40
ML
125372001-05-09 Michael Livshin <mlivshin@bigfoot.com>
12538
9a5fa6e9 12539 from Matthias Köppe (thanks!):
910d1e40
ML
12540
12541 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
12542 portable.
12543
12544 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
12545 docstring.
12546
56e55ac7
DH
125472001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12548
12549 * gc.c (scm_init_gc): Added FIXME comment.
12550
12551 * hooks.c: Since hooks don't have a name any more, it is not
12552 necessary to include objprop.h.
12553
12554 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
12555
12556 (symbol_name, scm_make_hook_with_name): Removed.
12557
12558 (scm_create_hook): Don't set the hook's name property.
12559
12560 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
12561
12562 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
12563
12564 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
12565
12566 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
12567 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
12568 FLOBUFLEN and define it unconditionally.
12569
d204b24c
MV
125702001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
12571
438201b4
MV
12572 * gh_data.c (gh_lookup): Call gh_module_lookup with
12573 `scm_current_module ()', not `#f'.
12574 (gh_module_lookup): Expect a module instead of an obarray as first
12575 argument and do lookup in that module.
56e55ac7 12576
d204b24c
MV
12577 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
12578 arrays. The length of array is already determined differently and
12579 scm_uniform_vector_length does not work on arrays.
12580
26c1d549
MV
125812001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
12582
fe7c2f88
MV
12583 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
12584 as well. "SCM (*)(...)" does not work on RedHat 7.1.
12585
26c1d549
MV
12586 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
12587 they are not used. Changed `wrong type' error into `wrong num
12588 args' error. Changed all callers.
56e55ac7 12589
26c1d549
MV
12590 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
12591 arguments are supplied.
12592
1c938eb8
TTN
125932001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
12594
12595 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
12596 describe `regexp/notbol' and `regexp/noteol' execution flags.
12597
3a6379f7
TTN
12598 * strop.c (scm_substring_move_x): Doc fix; nfc.
12599
c10ecc4c
MV
126002001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
12601
12602 * objects.c, objects.h (scm_valid_object_procedure_p): New.
12603 (scm_set_object_procedure_x): Use it to check argument. Fix
12604 docstring.
12605
12606 * evalext.c (scm_definedp): Fix docstring.
12607
a57a0b1e
GH
126082001-05-05 Gary Houston <ghouston@arglist.com>
12609
12610 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
12611 support.
12612
7a095584
NJ
126132001-05-04 Neil Jerram <neil@ossau.uklinux.net>
12614
12615 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
12616 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
12617 Change R4RS references to R5RS.
12618
12619 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
12620 docstring source are correctly reproduced in the output (ii)
12621 we don't anymore get occasional trailing quotes. Also reorganized
12622 and commented the code a little.
12623
12624 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
12625 fixes.
12626
dd2a6f3a
MG
126272001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12628
12629 * strop.c (scm_string_split): New procedure.
12630
12631 * strop.h (scm_string_split): Added prototype.
12632
00120130
GH
126332001-05-04 Gary Houston <ghouston@arglist.com>
12634
12635 * socket.c: define uint32_t if netdb.h doesn't. thanks to
12636 Dale P. Smith.
12637
b65e6bfe
MV
126382001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
12639
12640 * rw.c: Include "modules.h" and "strports.h".
12641
12642 * net_db.h (scm_gethost): Added prototype.
12643
12644 * deprecation.h, deprecation.c: New.
12645 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
12646 (DOT_X_FILES): Added "deprecation.x".
12647 (modinclude_HEADERS): Added "deprecation.h".
12648
12649 * init.c: Include "deprecation.h".
12650 (scm_init_guile_1): Call scm_init_deprecation.
1c938eb8 12651
b65e6bfe
MV
126522001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
12653
12654 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
12655 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
12656 New.
12657
b0e5fd8c
GH
126582001-04-29 Gary Houston <ghouston@arglist.com>
12659
12660 * rw.c: new file, implementing C part of module (ice-9 rw).
12661 (scm_read_string_x_partial): moved from ioext.c
12662 (scm_init_rw): new proc.
12663 * rw.h: new file.
12664 init.c: include rw.h and call scm_init_rw.
12665 Makefile.am: include rw.c and rw.h.
12666
0b2da99c
RB
126672001-04-28 Rob Browning <rlb@cs.utexas.edu>
12668
12669 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
12670 know what's supposed to happen to it.
12671
12672 * list.h (scm_list_star): deprecation expired - removed.
12673
12674 * numbers.h (scm_dblproc): deprecation expired - removed.
12675 (SCM_UNEGFIXABLE): deprecation expired - removed.
12676 (SCM_FLOBUFLEN): deprecation expired - removed.
12677 (SCM_INEXP): deprecation expired - removed.
12678 (SCM_CPLXP): deprecation expired - removed.
12679 (SCM_REAL): deprecation expired - removed.
12680 (SCM_IMAG): deprecation expired - removed.
12681 (SCM_REALPART): deprecation expired - removed.
12682 (scm_makdbl): deprecation expired - removed.
12683 (SCM_SINGP): deprecation expired - removed.
12684 (SCM_NUM2DBL): deprecation expired - removed.
12685 (SCM_NO_BIGDIG): deprecation expired - removed.
12686
12687 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12688 (scm_tc_dblr): deprecation expired - removed.
12689 (scm_tc_dblc): deprecation expired - removed.
12690 (scm_tc16_flo): deprecation expired - removed.
12691 (scm_tc_flo): deprecation expired - removed.
12692
12693 * tag.h (scm_tag): deprecation expired - removed.
12694
12695 * tag.c: (scm_tag): deprecation expired - removed.
12696
12697 * ioext.c: (scm_fseek): deprecation expired - removed.
12698
12699 * ioext.h (scm_fseek): deprecation expired - removed.
12700
12701 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12702
12703 * gh.h (gh_int2scmb): deprecation expired - removed.
12704
e3334972
NJ
127052001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12706
12707 * stacks.c (scm_make_stack): Fix typo in docstring.
12708
a0f979ac
RB
127092001-04-27 Rob Browning <rlb@cs.utexas.edu>
12710
12711 * error.c (scm_sysmissing): deprecation expired - removed.
12712
12713 * error.h (scm_sysmissing): deprecation expired - removed.
12714
12715 * gc.c
12716 (scm_init_gc): gc-thunk deprecation expired - removed.
12717 (scm_gc_vcell): deprecation expired - removed.
12718 (gc_async_thunk): scm_gc_vcell related code removed.
12719
12720 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12721
12722 * strings.h
12723 (SCM_NSTRINGP): deprecation expired - removed.
12724 (SCM_NRWSTRINGP): deprecation expired - removed.
12725
12726 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12727
12728 * chars.h
12729 (SCM_ICHRP): deprecation expired - removed.
12730 (SCM_ICHR): deprecation expired - removed.
12731 (SCM_MAKICHR): deprecation expired - removed.
12732
12733 * ports.h
12734 (SCM_INPORTP): deprecation expired - removed.
12735 (SCM_OUTPORTP): deprecation expired - removed.
12736
253081cf
MV
127372001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12738
12739 * modules.c (scm_module_type): New.
12740 (scm_post_boot_init_modules): Initialize from Scheme value.
12741 (the_module, scm_current_module, scm_init_modules): the_module is
12742 now a C only fluid.
12743 (scm_current_module): Export to Scheme.
12744 (scm_set_current_module): Do not call out to Scheme, do all the
12745 work in C. Export procedure to Scheme. Only accept modules, `#f'
12746 is no longer valid as the current module. Only set
12747 scm_top_level_lookup_closure_var and scm_system_transformer when
12748 they are not deprecated.
12749 (scm_module_transformer, scm_current_module_transformer): New.
12750
12751 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12752 scm_current_module_transformer, scm_module_transformer): New.
1c938eb8 12753
253081cf
MV
12754 * gh_data.c: Removed FIXME comment about gh_lookup returning
12755 SCM_UNDEFINED. That's the right thing to do.
12756
12757 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12758 into the conditionally compiled sections.
12759 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12760 scm_current_module_transformer instead of scm_system_transformer.
12761 * init.c (start_stack): Move initialization of
12762 scm_system_transformer to the deprecated section.
1c938eb8 12763
1f7f9ed4
NJ
127642001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12765
12766 * throw.c (scm_throw): Correct docstring.
12767
66c73b76
GH
127682001-04-22 Gary Houston <ghouston@arglist.com>
12769
eefae538
GH
12770 * socket.c: attempted to improve the docstrings slightly.
12771
66c73b76
GH
12772 * net_db.c: remove bogus "close" declaration.
12773 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12774 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12775 moved to socket.c.
12776 * net_db.h: declarations moved too.
12777
12778 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12779 long.
12780 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12781 (VALIDATE_INET6): new macro.
12782 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12783 inet-pton and inet-ntop.
12784 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12785 (scm_addr_vector): use ipv6_net_to_num.
1c938eb8 12786
7a7f7c53
DH
127872001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12788
12789 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12790 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12791
12792 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12793 when compiled in debug mode.
12794
12795 (scm_gc_sweep): Only call smob's free function if it is defined.
12796
12797 * print.c (scm_iprin1): No need to check for validity of smob
12798 type or existence of print function.
12799
12800 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12801 Resizing will not work well with preemptive threading.
12802
12803 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12804
12805 (scm_make_smob_type): Extracted initialization of smob
12806 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12807 of the critical section.
12808
12809 (scm_smob_prehistory): Initialize all smob descriptors. By
12810 default, don't assign a smob free function: Most smob types don't
12811 need one.
12812
12813 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12814
e1368a8d
GH
128152001-04-21 Gary Houston <ghouston@arglist.com>
12816
12817 * socket.c (FLIP_NET_HOST_128): new macro.
12818 (scm_fill_sockaddr): use new macro.
12819 (scm_addr_vector): completed IPv6 address support. added const
12820 to the address parameter.
12821
5a525b84
GH
128222001-04-20 Gary Houston <ghouston@arglist.com>
12823
12824 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12825 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12826 is defined.
12827 (scm_addr_vector): use a switch instead of multiple if statements.
12828 Add support for IPv6 (incomplete) .
e1368a8d 12829 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
5a525b84 12830
1a551638
DH
128312001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12832
12833 * struct.c (scm_free_structs): Only pairs may be accessed with
12834 SCM_C[AD]R.
12835
c07b3fef
MD
128362001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12837
a9d861e3
MD
12838 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12839
c07b3fef
MD
12840 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12841 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
12842 parentheses in order to get the correct associativity.
12843
af7546eb
DH
128442001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12845
12846 * unif.c (scm_array_to_list): Added missing handling of arrays of
12847 bytes. Thanks to Masao Uebayashi for the bug report.
12848
4daecfee
DH
128492001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12850
12851 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
12852 consistently.
12853
726d810a
DH
128542001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12855
12856 * procs.h (SCM_CLOSURE_FORMALS): New macro.
12857
12858 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
12859 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
1c938eb8 12860 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
726d810a
DH
12861 SCM_CLOSURE_FORMALS.
12862
12863 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
12864 (scm_i_procedure_arity): Prefer stronger predicates like
12865 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12866
12867 * macros.c (macro_print): Extracted macro printing code from
12868 print.c and simplified it.
12869
12870 (scm_macro_type): Use SCM_MACRO_TYPE;
12871
12872 (scm_init_macros): Use macro_print for printing macros.
12873
12874 * print.c (scm_print_opts): Improved option documentation.
12875
12876 (scm_iprin1): Extracted printing of macros to macros.c.
12877 Simplified printing of ordinary closures.
12878
12879 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
12880 Martin Grabmueller for the bug report.
12881
e038c042
DH
128822001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12883
12884 This patch eliminates some further applications of SCM_C[AD]R to
12885 non pair cells.
12886
12887 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
12888 never been applied to real pairs.
12889
12890 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
12891
12892 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
12893
12894 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
12895 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
12896 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
12897
12898 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
12899 Added.
12900
12901 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
12902 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
12903
12904 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
12905 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
12906 SCM_SET{AND,OR}_CAR.
12907
3453619b
GH
129082001-04-17 Gary Houston <ghouston@arglist.com>
12909
12910 * some initial support for IPv6:
1c938eb8 12911
3453619b
GH
12912 * socket.c (scm_fill_sockaddr): improve the argument validation.
12913 don't allocate memory until all args are checked. instead of
12914 unconditional memset of soka, try setting sin_len to 0 if
12915 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
12916 (scm_socket, scm_connect): extend docstrings for IPv6.
12917 (scm_init_socket): intern AF_INET6 and PF_INET6.
12918
216eedfc
DH
129192001-04-17 Niibe Yutaka <gniibe@m17n.org>
12920
12921 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
12922 matches SCM_DEFER_INTS at the beginning of the function.
12923
12924 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
12925
12926 * gc.c (scm_igc): Unconditionally call
12927 SCM_CRITICAL_SECTION_START/END.
12928
12929 * fluids.c (next_fluid_num): Unconditionally call
12930 SCM_CRITICAL_SECTION_START/END.
12931 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
12932
12933 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
12934 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
12935 Removed.
12936
12937 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
12938 Defined as nothing for the case of !defined(USE_THREADS).
12939 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
12940 Removed.
12941 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
12942 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
12943 LINE.
12944 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
12945 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
12946 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
12947 SCM_CRITICAL_SECTION_START/END.
12948 (SCM_REALLOW_INTS: Bug fix. Don't call
12949 SCM_THREAD_SWITCHING_CODE.
12950 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
12951 SCM_THREAD_SWITCHING_CODE directly.
12952 (SCM_ENTER_A_SECTION): Unconditionally use
12953 SCM_CRITICAL_SECTION_START/END. (was:
12954 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
12955
129562001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12957
12958 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
12959 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
12960 allowed to explicitly set this macro via the CFLAGS variable
12961 during make.
12962
12963 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
12964 (SCM_THREAD_CRITICAL_SECTION_START,
12965 SCM_THREAD_CRITICAL_SECTION_END): Renamed
12966 SCM_THREAD_CRITICAL_SECTION_START/END to
12967 SCM_CRITICAL_SECTION_START/END.
12968
f22ed5a0
KN
129692001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
12970
12971 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
12972 instead of bzero.
1c938eb8 12973
f22ed5a0 12974 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
1c938eb8 12975 (MISSING_BZERO_DECL): Remove the declaration.
f22ed5a0
KN
12976
12977 Thanks to NIIBE Yutaka.
12978
508ded1c
MD
129792001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12980
a087ba81
MD
12981 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
12982 goops module should be registered in order to work for an
12983 application which uses libguile statically linked.)
508ded1c 12984
e4b265d8
DH
129852001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
12986
12987 * numbers.[ch] (scm_num2long, scm_num2long_long,
12988 scm_num2ulong_long, scm_num2ulong): Argument position is an
12989 unsigned integer.
12990
12991 * environments.c (eval_environment_folder,
12992 import_environment_folder), gh_data.c (gh_scm2longs,
12993 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
12994 for integers and pointers, respectively.
12995
12996 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
12997 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
12998 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
12999 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
13000
13001 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
13002 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
13003 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
13004 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
13005 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
13006 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
13007
89d04205
NJ
130082001-04-09 Neil Jerram <neil@ossau.uklinux.net>
13009
13010 * strings.c (scm_read_only_string_p): Update docstring to reflect
13011 current (non-)usage of "read only" strings.
40f83c3e
NJ
13012 (scm_make_shared_substring): Clarify docstring by changing
13013 "semantics" to "arguments".
89d04205 13014
4d66be54
MG
130152001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13016
13017 * hooks.c (scm_make_hook, scm_make_hook_with_name),
13018 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
13019 improvements.
13020
1e6808ea
MG
130212001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13022
13023 The following changes make the documentation more consistent.
1c938eb8 13024
1e6808ea
MG
13025 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
13026 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
13027 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
13028 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
13029 ... @end lisp.
13030
13031 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
13032 (scm_array_dimensions, scm_make_shared_array),
13033 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
13034 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
13035 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
13036 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
13037 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
13038 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
13039 macros.c (scm_makmmacro), list.c (scm_append), environments.c
13040 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
13041 @example ... @end example to @lisp ... @end lisp.
13042
13043 * weaks.c (scm_weak_vector): Corrected docstring.
13044
13045 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
13046 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
13047 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
13048 (scm_hashx_set_x, scm_hashx_get_handle),
13049 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
13050 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
13051 vectors.c (scm_vector_fill_x), strings.c
13052 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
13053 objprop.c (scm_set_object_properties_x):
13054 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
13055 strports.c (scm_call_with_input_string), ports.c
13056 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
13057 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
13058 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
13059 (scm_make_weak_vector,scm_weak_vector_p),
13060 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
13061 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
13062 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13063 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
13064 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
13065 Made parameter names match documentation by renaming parameters
13066 and/or fixing docstrings.
1c938eb8 13067
1e6808ea
MG
13068 * numbers.c (scm_ash): Corrected Texinfo markup.
13069
13070 * strop.c (scm_string_index, scm_string_rindex),
13071 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
13072
13073 * vports.c (scm_make_soft_port), unif.c
13074 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
13075 (scm_dimensions_to_uniform_array, scm_transpose_array),
13076 (scm_array_in_bounds_p, scm_uniform_vector_ref),
13077 (scm_bit_count, scm_bit_position, scm_bit_count_star),
13078 (scm_array_to_list, scm_list_to_uniform_array),
13079 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
13080 (scm_open_input_string, scm_open_output_string),
13081 (scm_get_output_string), strop.c (scm_string_copy),
13082 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
13083 (scm_get_internal_real_time, scm_times),
13084 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
13085 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
13086 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
13087 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
13088 simpos.c (scm_system), random.c (scm_random_uniform),
13089 (scm_random_normal, scm_random_exp), ramap.c
13090 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
13091 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
13092 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
13093 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
13094 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
13095 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
13096 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
13097 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
13098 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
13099 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
13100 (scm_logand, scm_logior, scm_logxor, scm_lognot),
13101 (scm_integer_expt, scm_bit_extract, scm_logcount),
13102 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
13103 net_db.c (scm_inet_netof, scm_lnaof), modules.c
13104 (scm_interaction_environment), macros.c (scm_makacro),
13105 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
13106 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
13107 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
13108 (scm_fluid_ref), filesys.c (scm_open_fdes),
13109 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
13110 Docstring correction: `Returns' -> `Return'
13111
1c938eb8
TTN
13112 * gc.c (scm_set_debug_cell_accesses_x):
13113 (s_scm_gc_set_debug_check_freelist_x):
1e6808ea
MG
13114 * fluids.c (scm_fluid_p): Added texinfo markup.
13115
13116 * error.c (scm_strerror): Made docstring more precise.
13117
13118 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
13119 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
13120 (scm_symbol_p, scm_symbol_to_string), strorder.c
13121 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
13122 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
13123 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
13124 (scm_string_ci_geq_p), strop.c (scm_string_copy),
13125 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
13126
9a6976cd
DH
131272001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
13128
13129 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
13130 mode, as suggested by Michael Livshin.
13131
463b2219
ML
131322001-03-31 Michael Livshin <mlivshin@bigfoot.com>
13133
13134 * backtrace.c (display_backtrace_body): since the `print_state'
13135 variable is not used (instead its data field is used directly as
13136 `pstate'), protect it from the hungry compiler optimizations.
13137 thanks to Bill Schottstaedt for the report.
13138
61045190
DH
131392001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13140
13141 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
13142 It is only defined and used if guile is compiled with
13143 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
13144 let cells with a free_cell type tag be visible outside of the
13145 garbage collector when in debug mode.
13146
13147 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
13148
13149 (scm_assert_cell_valid): Use a local static variable to avoid
13150 recursion.
13151
13152 (MARK): Only check for rogue cell pointers in debug mode. Use
13153 scm_cellp for this purpose and place all checks for rogue pointers
13154 into that function. Further, since due to conservative scanning
13155 we may encounter free cells during marking, don't use the standard
13156 cell type accessor macro to determine the cell type.
13157
13158 (scm_cellp): Check if the cell pointer actually points into a
13159 card header.
13160
13161 (scm_init_gc): Initalize scm_tc16_allocated.
13162
13163 * gc.h (GCH): Renamed to SCM_GC_H.
13164
13165 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
13166 might be unnecessary, but I feel better this way :-)
13167
13168 (SCM_GC_CELL_TYPE): New macro.
13169
13170 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
13171 in guile, and it is unlikely that they will be applied to real
13172 pairs anyway.
13173
13174 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
13175
13176 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
13177 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
13178
13179 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
13180 make sure that in debug mode no free cell will ever be visible
13181 outside of the garbage collector.
13182
85d6df6a
DH
131832001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13184
13185 * async.c (scm_asyncs_pending): Don't use != to compare SCM
13186 values.
13187
13188 * async.c (scm_system_async), variable.c (scm_make_variable,
13189 scm_make_undefined_variable): Use scm_cons to create a pair.
13190
13191 * debug.c (scm_reverse_lookup): Perform proper type checking.
13192 Remove suspicious use of SCM_SLOPPY_CONSP.
13193
13194 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
13195 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
13196 the corresponding optimization.
13197
13198 * eval.c (iqq): Use proper type check.
13199
13200 (scm_m_expand_body): Remove redundant type checks.
13201
13202 (promise_print): Don't access promise cells as pairs.
13203
13204 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
13205 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
13206 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
13207 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
13208 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
13209
13210 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
13211 (scm_iprin1): Use new macro predicate and accessors.
13212
13213 * eval.h (scm_tc16_macro): Removed declaration. It is declared
13214 in macros.h.
13215
13216 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
13217 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
13218 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
13219 SCM_VARIABLE_H. Even the macros that are used to inhibit
13220 including a header file twice should be in the SCM_ namespace.
13221
13222 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
13223 properties.c (scm_primitive_property_ref,
13224 scm_primitive_property_del_x): Prefer stronger predicates like
13225 SCM_NULLP or SCM_FALSEP over SCM_IMP.
13226
13227 * gc.c (MARK): Use proper macros to access procedure-with-setter
13228 cell elements and closure cell elements.
13229
13230 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
13231 access free cells as pairs.
13232
13233 (scm_unprotect_object): scm_hashq_get_handle returns #f if
13234 no hashtab entry is found.
13235
13236 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
13237 SCM_CLR_PORT_OPEN_FLAG.
13238
13239 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
13240 use SCM_SET_C[AD]R for uninitialized cells.
13241
13242 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
13243 If the hashtable has no slots, return #f instead of '(). This
13244 unifies the return value with most assoc-functions.
13245
13246 (scm_hash_fn_ref): Use proper type check.
13247
13248 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
13249 Removed references to non-existing functions from documentation.
13250
13251 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
13252 access keyword cell elements.
13253
13254 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
13255 macros.
13256
13257 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
13258
13259 * print.c (scm_iprlist): Added comment. Improved loop
13260 conditions.
13261
13262 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
13263 pairs.
13264
13265 * smob.c (scm_markcdr): Don't access smob cells as pairs.
13266
13267 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
13268
13269 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
13270 cells as pairs.
13271
13272 * variable.c (variable_print, variable_equalp, scm_variable_ref,
13273 scm_variable_set_x): Use proper macros to access variable cell
13274 elements.
13275
13276 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
13277
13278 * variable.h (SCM_VARVCELL): Don't access variable cells as
13279 pairs.
13280
13281 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
13282 added FIXME comment, removed register specifier.
13283
1b27e91a
KN
132842001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
13285
13286 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
13287 * init.c (scm_init_guile_1): Don't init goopscore module.
13288
16c634ec
MV
132892001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13290
13291 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
13292
91344ceb
MG
132932001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13294
13295 * strop.c (scm_string_to_list): Fixed docstring markup.
13296 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
13297 (scm_string_downcase, scm_string_capitalize_x),
13298 (scm_string_capitalize): Rewrote and corrected docstrings.
13299 (scm_string_ci_to_symbol): Made docstring more explicit.
13300
07576812
MV
133012001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13302
13303 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
13304 eval.c can use it.
13305 (scm_call_with_values): Removed.
13306 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
13307 so that it can be exported.
13308 (scm_call_with_values): Removed.
1c938eb8 13309
07576812
MV
13310 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
13311 * eval.c: Include "libguile/values.h"
13312 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
13313 New.
13314 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
13315 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
13316 New delcarations to support above change.
13317
13318 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
13319 errors with last change.
1c938eb8 13320
07576812
MV
133212001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
13322
13323 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
13324 scm_i_eval): Moved the application of the system transformer from
13325 scm_i_eval to scm_primitive_eval.
13326
a17bb5fd
NJ
133272001-03-23 Neil Jerram <neil@ossau.uklinux.net>
13328
a6be01a4
NJ
13329 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
13330
a17bb5fd
NJ
13331 * strop.c (scm_string_index): Fix docstring line break
13332 regression.
13333
13334 * list.c (scm_cons_star): Fix docstring typo.
13335
be54b15d
DH
133362001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13337
13338 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
13339 (big2str), ports.c (scm_drain_input), read.c (scm_read,
13340 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
13341 scm_make_string, scm_string_append), strports.c (st_resize_port,
13342 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
13343 scm_makstr with calls to scm_allocate_string.
13344
13345 * strings.[ch] (scm_allocate_string): New function.
13346
13347 * strings.[ch] (scm_makstr): Deprecated.
13348
789ecc05
GH
133492001-03-18 Gary Houston <ghouston@arglist.com>
13350
6d163216
GH
13351 * posix.c (scm_tmpnam): check that return value from tmpnam is not
13352 NULL. rewrote the docstring.
13353 (scm_mkstemp): new procedure implementing "mkstemp!".
13354 * posix.h: declare scm_mkstemp.
13355
789ecc05
GH
13356 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
13357 normally it would be found in netdb.h.
13358
c6c79933
GH
133592001-03-17 Gary Houston <ghouston@arglist.com>
13360
e9e225e5
GH
13361 * sort.c (scm_sort): move sortvec variable to avoid a compiler
13362 warning when HAVE_ARRAYS is not defined. move len too.
13363
13364 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
13365 (EXTRA_DOT_X_FILES): let configure set the value.
13366 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
13367
c6c79933
GH
13368 * gc.c (scm_must_malloc): changed the comment explaining when
13369 scm_must variants of malloc/free etc., should be used, based on
13370 explanation from Dirk Herrmann.
13371 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
13372 string with procedure name. use scm_must_malloc instead of malloc.
13373 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
13374 of malloc/free.
13375 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
13376 scm_ungetc): use scm_must variants of malloc/realloc/free.
13377 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
13378
b3fcac34
DH
133792001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13380
13381 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
13382 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
13383 scm_wrong_type_arg instead.
13384
13385 (SCM_WNA): Deprecated.
13386
13387 * error.[ch] (scm_wta): Deprecated.
13388
13389 * numbers.c (s_i_log): Minor comment fix.
13390
13391 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
13392 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
13393 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
13394 wrong-num-args or misc errors.
13395
13396 * unif.c (scm_make_shared_array, scm_transpose_array,
13397 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
13398 Validate the rest argument (note: this is only done when guile is
13399 built with SCM_DEBUG_REST_ARGUMENT=1)
13400
13401 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
13402 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
13403
13404 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
13405 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
13406
68baa7e7
DH
134072001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13408
13409 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
13410 instead of scm_wrong_num_args.
13411
13412 * coop-threads.c: Don't include libguile/strings.h. (Was only
13413 needed for former implementation of SCM_WRONG_NUM_ARGS.)
13414
13415 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
13416 wrong-num-args errors.
13417
9f40cd87
DH
134182001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13419
13420 * error.[ch] (scm_error_num_args_subr): New function.
13421
5352393c
MG
134222001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13423
13424 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
13425 (scm_length, scm_append, scm_reverse, scm_list_ref),
13426 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
13427 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
13428 (scm_delete1_x), gc.c (scm_map_free_list),
13429 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
13430 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
13431 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
13432 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
13433 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
13434 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
13435 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
13436
13437 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
13438 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13439 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
13440 symbols.c (scm_symbol_interned_p), numbers.c
13441 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
13442 markup.
13443
a9205f07
KN
134442001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
13445
13446 * snarf.h (SCM_CONST_LONG): Deprecated.
13447 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
13448
6d583887
MV
134492001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13450
13451 * numbers.c (scm_num2ulong): Check that a bignum is positive
13452 before looking at the magnitude. Correctly check for overflow
13453 during conversion.
13454 (scm_num2long_long): Likewise.
13455 (scm_num2ulong_long): New.
13456 (ULONG_LONG_MAX): Define if not already defined.
13457 * numbers.h: (scm_num2ulong_long): New prototype.
1c938eb8 13458
e87a03fc
MG
134592001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13460
13461 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
13462
13463 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
13464 (SCM_OPOUTSTRPORTP): New predicate macros.
13465 (scm_open_input_string, scm_open_output_string),
13466 (scm_get_output_string): New prototypes.
1c938eb8 13467
e87a03fc
MG
13468 * strports.c (scm_open_input_string, scm_open_output_string),
13469 (scm_get_output_string): New procedures (SRFI-6 compliant).
13470 Made scm_tc16_strport non-static.
13471
160bb34a
DH
134722001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13473
13474 * macros.h (SCM_ASSYNT): Removed unused object argument from
13475 signature.
13476
13477 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
13478 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
13479 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
13480 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
13481 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
13482 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
13483 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
13484 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13485 scm_m_atdispatch): Removed unused object argument from call to
13486 SCM_ASSYNT.
13487
80dee77b
DH
134882001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13489
13490 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
13491 const int* to reflect that the input array of integers remains
13492 unchanged. Thanks to Brett Viren for the hint.
13493
d3dd80ab
MG
134942001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13495
13496 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
13497 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
13498 in various places.
13499 (gh_scm2newstr, gh_symbol2newstr): Change call to
13500 scm_must_malloc() to malloc(), because user-free()able memory is
13501 allocated.
13502
13503 * gc.c: Added declaration of `scm_debug_check_freelist'.
13504
26a3038d
MG
135052001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13506
13507 * ports.c (scm_port_mode): Changed `mode' array size to 4.
13508
1f3908c4
KN
135092001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
13510
13511 * strports.c (scm_object_to_string): New procedure.
13512 (scm_strprint_obj): Deprecated.
13513 * strports.h: Reflect the changes.
13514
e11208ca
DH
135152001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
13516
13517 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
13518
13519 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13520 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
13521 SCM_ASSYNT to check for correct argument types. Either use some
13522 SCM_VALIDATE_* macro or an explicit test.
13523
13524 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
13525 misc-errors.
13526
13527 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
13528 instead of calling scm_wta.
13529
67e8151b
MG
135302001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13531
13532 * load.c (scm_primitive_load, scm_primitive_load_path),
13533 (scm_sys_search_load_path): Corrected docstrings (file ->
13534 filename).
13535
13536 * eval.c (scm_force): Added texinfo markup to docstring.
13537 (scm_promise_p): Renamed parameter to `obj' to match docstring.
13538
13539 * debug-malloc.c: Reinserted #include <stdio.h>.
13540
e0c08f17
KN
135412001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
13542
e39c3de4
KN
13543 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
13544
e0c08f17
KN
13545 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
13546 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
13547 Use SCM_LISTn instead of scm_listify.
13548
e6e2e95a
MD
135492001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13550
13551 * _scm.h: Removed #include <errno.h>.
13552
13553 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
13554 errno variable (can be a macro on some systems, for example when
13555 using linux libc with threads).
13556
13557 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
13558 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
13559 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
13560 #include <errno.h> in these 20 out of 100 files.
1c938eb8 13561
97d0e20b
GH
135622001-03-10 Gary Houston <ghouston@arglist.com>
13563
13564 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
13565 not already defined.
13566
e75341b3
MD
135672001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13568
13569 * coop.c: Inserted #include <stdio.h>.
13570
13571 * iselect.c: Reinserted #include <stdio.h>.
13572
74355186
MV
135732001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
13574
13575 * posix.c: Replaced `#define' of __USE_XOPEN right before
13576 including unistd.h with a define of _GNU_SOURCE at the very top of
13577 the file.
13578
783e7774
KN
135792001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
13580
13581 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
13582 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
13583 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
13584 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
13585 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
13586 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
13587 print.c, procprop.c, procs.c, properties.c, ramap.c,
13588 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
13589 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
13590 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
1c938eb8 13591 Remove #include <stdio.h>
783e7774
KN
13592 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
13593
13594 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
13595
9a677c37
MG
135962001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13597
13598 * posix.c (scm_gethostname): Set initial name length to 256 for
13599 Solaris.
13600
94e6d793
MG
136012001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13602
13603 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13604 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13605 (scm_sethostname, scm_gethostname): New prototypes.
13606
13607 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
13608 <sys/file.h>, if present.
13609 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
13610 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
13611 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13612 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13613 (scm_sethostname, scm_gethostname): New procedures.
13614
650a1cf9
NJ
136152001-03-08 Neil Jerram <neil@ossau.uklinux.net>
13616
13617 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
13618 not optional (ii) "recommend" spelling correction.
13619
9636b49c
MD
136202001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13621
5e4a4d09
MD
13622 * ramap.c (racp): Removed optimization which caused array copying
13623 to fail if the two arrays shared storage. Re-inserted the IVDEP
13624 macros removed in the change of 2000-03-09. (Don't really have a
13625 complete grasp of what they are for, but they seem to be necessary
13626 on Crays. This needs testing!) Thanks to Miroslav Silovic.
13627
9636b49c
MD
13628 * hash.c (scm_string_hash): Don't downcase characters.
13629
04a4d666
MD
136302001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13631
9636b49c 13632 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
04a4d666
MD
13633 size from 277 --> 1009.
13634
13635 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
13636 function.
13637
13638 * coop-threads.c: Fixed change of 2001-03-06.
1c938eb8 13639
04a4d666
MD
13640 * validate.h: Code formatting.
13641
66418d34
KN
136422001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
13643
13644 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
13645 (*.doc): Add dependency on guile-snarf.awk.in.
13646
13647 * guile-snarf.awk.in: Neglect spaces at the end of
13648 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
13649 middle of docstrings. (To avoid the problem with gcc-2.96.)
13650
2ade72d7
DH
136512001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
13652
13653 * coop-threads.c (scm_call_with_new_thread), load.c
13654 (scm_primitive_load, scm_sys_search_load_path), random.c
13655 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
13656 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
13657 (potentially) issue a scm-misc-error or wrong-num-args error
13658 message.
13659
13660 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
13661 about the expected type with the wrong-type-arg error message.
13662
13663 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
13664 a C level bug that can't be fixed from scheme anyway.
13665
586d7da2
MD
136662001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13667
13668 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
13669 Duplicate bindings are OK in a let* since a let* is semantically
13670 equivalent to a nested set of let:s.
13671
1dd05fd8
MG
136722001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13673
13674 * print.c (scm_print_options): Fixed texinfo in docstring.
13675
13676 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13677 the underlying functions getservent, getprotoent or getnetent
13678 return NULL instead of signalling an error.
13679
439006bf
GH
136802001-03-04 Gary Houston <ghouston@arglist.com>
13681
13682 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13683 taking an unexpectedly large filename for an AF_UNIX socket from
13684 bind/connect/sendto (thanks to Martin Grabmueller).
1c938eb8 13685
439006bf
GH
13686 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13687 former and adjusted the latter.
13688 (scm_socket, scm_socketpair): cosmetic changes.
13689 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13690 size_t as socklen_t substitute. don't restrict args/return values
13691 to INUM: allow full range of int or size_t.
13692 (scm_fill_sockaddr): check arguments before allocating memory, to
13693 avoid leakage. use malloc, not scm_must_malloc.
13694 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13695 substitute. free the sockaddr structure before throwing an error.
13696 (scm_init_add_buffer): procedure removed, together with its static
13697 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13698 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13699 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13700 scm_sendto): use a local buffer instead of scm_addr_buffer.
13701 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13702 not size_t.
13703 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13704 call to detect whether recvfrom could be bothered to set the address.
13705 (scm_init_socket): don't call scm_init_addr_buffer.
13706
276dd677
DH
137072001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13708
13709 * debug.c (scm_procedure_source, scm_procedure_environment),
13710 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13711 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13712 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13713 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13714 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13715 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13716 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13717 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13718 scm_array_to_list, scm_array_prototype), validate.h
13719 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13720 scm_misc_error or scm_wrong_type_arg instead.
13721
13722 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13723
5e03762c
MD
137242001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13725
13726 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13727 (scm_sys_tag_body): Added.
13728
db4b4ca6
DH
137292001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13730
13731 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13732 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13733 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13734 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13735 options.c (scm_options), ports.c (scm_remove_from_port_table),
13736 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13737 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13738 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13739 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13740 instead.
13741
87e7741d
MD
137422001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13743
13744 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13745
d19b0aac
MV
137462001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13747
13748 * eval.c (scm_s_duplicate_bindings): New error message.
13749 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13750
2fd945df
MV
137512001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13752
13753 * eval.h (SCM_EVALIM2): New macro. Use it when a
13754 immediate, literal constant should be evaluated.
13755 * eval.c (scm_s_duplicate_formals): New error message string.
13756 (scm_c_improper_memq): New function.
13757 (scm_m_lambda): Check for duplicate arguments.
13758 (scm_ceval, scm_deval): When executing a body: only cons a new
13759 toplevel environment frame when it is different from the
13760 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13761 check for empty combinations; use SCM_EVALIM2 for the same reason
13762 in the non-toplevel loop.
13763 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13764 New labels with the meaning of their non-"nontoplevel" partners,
13765 but they are used when it is known that the body is not evaluated at
13766 top-level.
13767 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13768 reporting for empty combinations.
13769
9e6fc585
KN
137702001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13771
13772 * Remove dump facilities.
13773 * dump.c, dump.h: Removed.
13774 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13775 * init.c: Remove #include "libguile/dump.h".
13776 (scm_init_guile_1): Remove scm_init_dump.
13777 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13778 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13779 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13780 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13781
13782 * keywords.c: Remove #include "libguile/dump.h".
13783 (keyword_dump, keyword_undump): Removed.
13784 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13785
eae54bf0
MG
137862001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13787
13788 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13789 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13790 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13791 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13792 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13793 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13794 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13795 to @code{} as the texinfo manual recommends, converted the
13796 examples to use a @lisp{}-environment.
13797
13798 * strports.c (scm_eval_string): Cleaned up the docstring.
13799
13800 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13801 markup.
13802
13803 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13804 (scm_number_to_string, scm_string_to_number, scm_number_p)
13805 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13806 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13807 (scm_ash): Added texinfo markup and removed obsolete @refill.
13808 (scm_gr_p): Corrected comment.
13809 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13810 docstring) comments.
13811 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13812 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13813 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13814 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13815 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13816 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13817 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13818 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13819
23deee81
DH
138202001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13821
13822 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13823 (Obviously nobody compiles with SCM_RECKLESS defined...)
13824
13825 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13826
6fe692e9
MD
138272001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13828
13829 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13830
13831 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13832
27c37006
NJ
138332001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13834
13835 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13836 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13837 since use of `z' suggests that the arguments may be complex.
13838
13839 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
13840 typos.
13841
2069af38
NJ
138422001-02-23 Neil Jerram <neil@ossau.uklinux.net>
13843
13844 * dump.c (scm_binary_write, scm_binary_read), eval.c
13845 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
13846 scm_guardian_greedy_p, scm_make_guardian), fports.c
13847 (scm_file_port_p): Minor docstring fixes.
13848
b42ff180
MV
138492001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
13850
2069af38 13851 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
97ea55f8
MV
13852
13853 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
13854 scm_i_eval.
13855 (make_class_from_template): Do not bother to set the current
13856 module around the call to DEFVAR, scm_eval takes care of that.
13857 (scm_init_goops): Make scm_module_goops and
13858 scm_goops_lookup_closure permanent objects.
1c938eb8 13859
97ea55f8
MV
13860 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
13861 top level, create a fresh top-level environment for each
13862 expression instead of mutating the exisint frame. This is
13863 important when that frame is closed over.
13864
b42ff180
MV
13865 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
13866 SCM_DIGSPERLONG instead of DIGSPERLONG.
13867
09f2ab1e
MV
138682001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
13869
13870 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
13871 before applying arrow procedure in `cond' and before applying
13872 receiver procedure in call-with-current-continuation.
13873 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
13874 macro. The argument is expanded more than one time.
13875
13876 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
13877 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
13878
138792001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
13880
13881 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
13882 notice and license.
13883
7090240c
MG
138842001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13885
13886 * variable.c (scm_make_variable, scm_make_undefined_variable)
13887 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
13888 (scm_variable_bound_p), values.c (scm_values)
13889 (scm_call_with_values), unif.c (scm_bit_count)
13890 (scm_bit_set_star_x), symbols.c (scm_gentemp)
13891 (scm_gensym), strings.c (scm_string_p, scm_make_string)
13892 (scm_read_only_string_p, scm_string_length, scm_string_ref)
13893 (scm_string_set_x, scm_substring, scm_string_append), stime.c
13894 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
13895 (scm_copy_random_state, scm_random), print.c (scm_newline)
13896 (scm_write_char, scm_simple_format), debug-malloc.c
13897 (scm_malloc_stats), environments.c (scm_environment_p)
13898 (scm_environment_bound_p, scm_environment_ref)
13899 (scm_environment_fold, scm_environment_define)
13900 (scm_environment_undefine, scm_environment_set_x)
13901 (scm_environment_cell, scm_environment_observe)
13902 (scm_environment_observe_weak, scm_environment_unobserve)
13903 (scm_make_eval_environment, scm_eval_environment_p)
13904 (scm_eval_environment_set_local_x, scm_eval_environment_local)
13905 (scm_eval_environment_imported)
13906 (scm_eval_environment_set_imported_x, scm_make_import_environment)
13907 (scm_import_environment_p, scm_import_environment_imports)
13908 (scm_import_environment_set_imports_x, scm_make_export_environment)
13909 (scm_export_environment_p, scm_export_environment_private)
13910 (scm_export_environment_set_private_x)
13911 (scm_export_environment_signature)
13912 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
13913 Added texinfo markup.
13914
13915 * ports.c (scm_drain_input): Lowercased argument to @var.
13916 (scm_current_input_port, scm_current_output_port): Filled in
13917 missing explanation.
13918 (scm_current_load_port, scm_set_current_output_port)
13919 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
13920 Added texinfo markup.
13921
13922 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
13923 (scm_release_arbiter): Added texinfo markup to docstrings.
13924 Changed `Returns' to `Return'.
13925 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
13926
25703850
NJ
139272001-02-16 Neil Jerram <neil@ossau.uklinux.net>
13928
13929 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
13930 by doubling them to `@@'.
13931
73c0fdce
MG
139322001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13933
13934 * numbers.c (scm_lognot), random.c (scm_random,
13935 scm_random_normal, scm_random_solid_sphere_x,
13936 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
13937 scm_random_exp), dynwind.c
13938 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
1c938eb8 13939
73c0fdce
MG
13940 * goops.c (scm_sys_initialize_object, scm_instance_p,
13941 scm_class_name, scm_class_precedence_list, scm_class_slots,
13942 scm_class_environment, scm_generic_function_name,
13943 scm_generic_function_methods, scm_method_generic_function,
13944 scm_method_specializers, scm_method_procedure, scm_make_unbound,
13945 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
13946 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
13947 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
13948 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
13949 scm_class_direct_supers, scm_class_direct_slots,
13950 scm_class_direct_subclasses, scm_class_direct_methods,
13951 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
13952 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
13953 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
13954 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
13955 scm_memoized_environment, scm_procedure_name,
13956 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
13957 objects.c
13958 (scm_class_of, scm_entity_p, scm_operator_p,
13959 scm_set_object_procedure_x, scm_object_procedure,
13960 scm_make_class_object), hooks.c (scm_make_hook_with_name,
13961 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
13962 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
13963 scm_hook_to_list), lang.c
13964 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
13965 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
13966 (scm_print_options, scm_port_with_print_state,
13967 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
13968 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
13969 scm_make_procedure_with_setter, scm_procedure), throw.c
13970 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
13971 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
13972 scm_stack_ref, scm_stack_length, scm_frame_p,
13973 scm_last_stack_frame, scm_frame_number, scm_frame_source,
13974 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
13975 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
13976 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
13977 (scm_dirname, scm_basename), dynwind.c
13978 (scm_wind_chain), read.c (scm_read_options, scm_read,
13979 scm_read_hash_extend), gc.c
13980 (scm_unhash_name), eval.c (scm_eval_options_interface,
13981 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
13982 (scm_display_error, scm_set_print_params_x,
13983 scm_display_application, scm_display_backtrace, scm_backtrace),
13984 async.c (scm_async, scm_system_async, scm_async_mark,
13985 scm_system_async_mark, scm_run_asyncs, scm_noop,
13986 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
13987 scm_mask_signals): Added docstrings.
13988
e228a203
KN
139892001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
13990
13991 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
13992 address of car/cdr. (Thanks to Dirk Herrmann)
13993 Use scm_sizet to obtain the length of strings.
13994 (Thanks to Matthias Koeppe)
13995
1552a59d
MV
139962001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
13997
13998 * symbols.c (scm_mem2symbol): Put a empty statement after the
13999 next_symbol label. This is mandated by ANSI, appearantly.
14000
3178f751
MV
140012001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
14002
14003 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
14004 sense to compile for a specific kernel version. Do not include
14005 <asm/signal.h> while defining __KERNEL__. This hack should no
14006 longer be needed and caused problems.
14007
7af4defe
MV
140082001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
14009
14010 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
14011 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
14012 can not deal with immediates.
14013
5d6bb349
KN
140142001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
14015
14016 * list.c (scm_list_copy): Validate the first argument.
14017
ec9709f0
MV
140182001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
14019
14020 Fix evaluator so that top-level expressions are correctly
14021 evaluated with respect to the module system.
1c938eb8 14022
ec9709f0
MV
14023 * modules.h. modules.c (scm_current_module_lookup_closure): New
14024 function.
14025
14026 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
14027 prototypes.
14028 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
14029 names to better reflect their meaning.
14030
14031 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
14032 evaluated at top-level and synronize lookup closure before
14033 executing every subform.
14034 (scm_primitve_eval_x, scm_primitive_eval): New functions.
14035 (scm_eval_x, scm_eval): Reimplement in terms of
14036 scm_primitive_eval_x and scm_primitive_eval, respectively.
1c938eb8 14037
ec9709f0
MV
140382001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
14039
14040 * macros.c (scm_macro_name, scm_macro_transformer): Use
14041 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
14042 Thanks!
14043
42417394
KN
140442001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
14045
14046 * dump.c (scm_store_bytes): Store data size before data.
14047 (scm_restore_bytes): Restore data size. Takes a pointer to size.
14048 * dump.h (scm_restore_bytes): Updated.
14049
bf942687
KN
140502001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
14051
14052 * dump.c: Use double cells for update schedule.
14053
1be4270a
KN
140542001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
14055
14056 * ports.c (scm_unread_char): Take an optional argument.
14057
548728ea
MV
140582001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
14059
14060 * modules.h (scm_selected_module, scm_current_module): Renamed
14061 scm_selected_module to scm_current_module to synchronize Scheme
14062 and C names.
14063 (scm_select_module, scm_set_current_module): Likewise. Changed
14064 all uses.
1c938eb8 14065
548728ea
MV
14066 * ports.c (scm_port_for_each): Make a snapshot of the port table
14067 before iterating over it. The table might change while the user
14068 code is running. With the snapshot, the user can depend on the
c5408bc3 14069 fact that each port that existed at the start of the iteration is
548728ea
MV
14070 encountered exactly once. (ice-9 popen) depends on this.
14071
cb0d8be2
DH
140722001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14073
14074 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
14075
14076 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
14077 range checking for the size parameter. Thanks to Martin
14078 Grabmueller for the hint.
14079
14080 (scm_makstr): Reordered string initialization to make interrupt
14081 deferring unnecessary.
14082
14083 * vectors.c (scm_make_vector): Fixed range checking.
14084
e382fdbe
DH
140852001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14086
14087 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
14088
14089 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
14090 checking of the size parameter for type correctness and valid
14091 range. Thanks to Rob Browning for reporting the problem. Instead
14092 of deferring interrupts, scm_remember_upto_here_1 is used.
14093
bf8f0922
KN
140942001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14095
14096 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
14097 (scm_dump_cell_update): Removed.
14098 (scm_dump_update): Renamed from scm_dump_object_update.
14099 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
14100 a pointer instead of returning a value.
14101 * keywords.c (keyword_undump): Updated.
14102
914cceec
KN
141032001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14104
14105 * dump.c, dump.h: Modified a lot.
5f17c66f 14106 (SCM_DUMP_COOKIE): Version 0.1
914cceec
KN
14107 (scm_dump_mark): Removed.
14108 (scm_restore_cell_object, scm_store_cell_object): New functions.
14109
14110 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
14111 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
14112 New slots: dump, undump.
14113 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
14114 Updated.
14115
14116 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
14117 (keyword_undump): Renamed from keyword_alloc.
14118 (scm_init_keywords): Set keyword_dump and keyword_undump.
14119
ecf470a2
ML
141202001-02-03 Michael Livshin <mlivshin@bigfoot.com>
14121
14122 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
14123 the deprecated SCM_DOUBLE_CELLP.
14124
14125 * tags.h (SCM_DOUBLE_CELLP): deprecated.
14126
03416a99
KN
141272001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
14128
14129 * dump.c, dump.h: New files.
14130 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
14131 * init.c: #include "libguile/dump.h".
14132 (scm_init_guile_1): Call scm_init_dump.
14133 * smob.h (scm_smob_descriptor): New slots: dump_mark,
14134 dump_dealloc, dump_store, undump_alloc, undump_restore,
14135 undump_init.
14136 * smob.c (scm_make_smob_type): Init the new slots.
14137 (scm_set_smob_dump, scm_set_smob_undump): New functions.
14138 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
14139
14140 * keywords.c: #include "libguile/dump.h".
14141 (keyword_dealloc, keyword_alloc): New functions.
14142 (scm_init_keywords): Set smob_dump and smob_undump.
14143
00ffa0e7
KN
141442001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
14145
14146 * vectors.c (scm_c_make_vector): New function.
14147 * vectors.h (scm_c_make_vector): Declared.
14148 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
14149 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
14150 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
14151 (scm_make_method_cache, scm_i_vector2list,
14152 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
14153 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
14154 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
14155 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
14156 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
14157 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
14158 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
14159 (scm_vector, scm_make_vector): Use scm_c_make_vector.
14160
14161 * hashtab.c (scm_c_make_hash_table): New function.
14162 * hashtab.h (scm_c_make_hash_table): Declared.
14163 * environments.c (scm_make_leaf_environment,
14164 scm_make_eval_environment), gc.c (scm_init_storage),
14165 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
14166 Use scm_c_make_hash_table.
14167
b8446ce8
MD
141682001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14169
14170 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
14171
e3239868
DH
141722001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14173
14174 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
14175 end of docstring.
14176
14177 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
14178 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
14179 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
14180 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
14181 srcprop.c (scm_source_properties, scm_set_source_properties_x,
14182 scm_source_property, scm_set_source_property_x), sort.c
14183 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
14184 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
14185 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
14186 docstrings.
14187
41ee56dd
MD
141882001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14189
14190 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
14191 really get that arg.
14192
b6311c08
KN
141932001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
14194
14195 * goops.c (s_scm_get_keyword): Bug fix.
14196
a49af0c0
DH
141972001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14198
14199 The following patch was sent by Martin Grabmueller. It makes sure
14200 that in case of parameter errors the correct function name is
14201 shown, and that parameter types are only checked once.
14202
14203 * strop.c (string_copy, string_upcase_x, string_downcase_x,
14204 string_capitalize_x): New functions. Each one performs the core
14205 functionality of the corresponding scm_* function.
14206
14207 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
14208 scm_string_downcase_x, scm_string_downcase,
14209 scm_string_capitalize_x, scm_string_capitalize): Reduced to
14210 parameter checking wrappers of the above functions.
14211
13070bd3
DH
142122001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14213
14214 * continuations.c, dynl.c, keywords.c, load.c: Include
14215 strings.h. Thanks to Bill Schottstaedt for the bug report.
14216
2f2b390c
DH
142172001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14218
14219 * backtrace.c (display_header): Make sure that line and column
14220 information is shown independent of whether the port the code was
14221 read from had an associated filename. Thanks to Martin
14222 Grabmueller for providing this patch.
14223
efa40607
DH
142242001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14225
14226 * fports.[ch] (scm_file_port_p): New primitive.
14227
a98bddfd
DH
142282001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14229
14230 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
14231 These are now defined in fports.c, strports.c and vports.c.
14232
14233 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
14234 vports.c (scm_tc16_sfport): Made variables (were macros defined in
14235 tags.h).
14236
14237 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
14238 (scm_make_sfptob): Made static. These return a type code now.
14239
14240 fports.c (scm_init_fports), strports.c (scm_init_strports),
14241 vports.c (scm_init_vports): Create the corresponding port types.
14242
14243 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
14244 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
14245
14246 * init.c (scm_init_guile_1): Make sure strports are initialized
14247 before gdbint.
14248
14249 * ports.[ch] (scm_make_port_type): Changed the return type to
14250 scm_bits_t.
14251
14252 * ports.c (scm_ports_prehistory): Don't create any port types
14253 here.
14254
14255 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
14256 against scm_tc16_fport directly.
14257
0419a528
DH
142582001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14259
14260 * srcprop.c (scm_set_source_property_x): Fix to handle
14261 (set-source-property! <obj> 'copy <datum>) correctly.
14262
6d36532c
GH
142632001-01-24 Gary Houston <ghouston@arglist.com>
14264
14265 * filesys.c (scm_link): docstring fix.
14266 * fports.h (scm_setfileno): obsolete declaration removed.
14267 * posix.c: bogus popen declaration removed.
14268
14269 * rdelim.c: new file, split from ioext.c.
14270 * rdelim.h: new file, split from ioext.h
14271 * Makefile.am: add rdelim.c and related files.
14272 * init.c: call scm_init_rdelim. include rdelim.h.
14273
3ba5a6c2
DH
142742001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14275
14276 This patch was sent by Martin Grabmueller and makes sure that
14277 parameter errors are reported correctly by the lexicographic
14278 ordering predicates.
14279
14280 * strorder.c (string_less_p, string_ci_less_p): New functions.
14281
14282 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
14283 functionality into string_less_p, string_ci_less_p respectively.
14284 The remaining code is just a wrapper to do the parameter
14285 checking.
14286
14287 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
14288 parameters and call string_less_p instead of scm_string_less_p.
14289
14290 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
14291 Check the parameters and call string_less_ci_p instead of
14292 scm_string_ci_less_p.
14293
e40a4095
DH
142942001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14295
ed6a2db9
DH
14296 This patch modifies scm_display_error to perform parameter
14297 checking. Thanks to Neil Jerram for the bug report.
14298
e40a4095
DH
14299 * backtrace.[ch] (scm_i_display_error): New function.
14300
14301 * backtrace.c (scm_display_error): Added parameter check and
14302 extracted the core functionality into function
14303 scm_i_display_error.
14304
14305 * throw.c (handler_message): Call scm_i_display_error to display
14306 the error message.
14307
f1e06a96
MD
143082001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14309
14310 * eval.c (SCM_APPLY): Added # args check for application of
14311 procedures with arity 3. (Thanks to Anders Holst.)
14312
30ea841d
DH
143132001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14314
14315 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
14316
14317 (SCM_OPDIRP): Deprecated.
14318
14319 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
14320 SCM_OPN.
14321
14322 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
14323 Instead, give an explicit error message in case the directory is
14324 closed.
14325
14326 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
14327 instead of SCM_OPENP and SCM_CLOSEDP.
14328
14329 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
14330
312ae976
DH
143312001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
14332
14333 * eval.c (inner_eval, scm_eval): Move all real functionality into
14334 inner_eval. Avoid to copy the expression twice by inlining some
14335 code from scm_i_eval.
14336
4567ed78
DH
143372001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
14338
14339 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
14340 now has to be the last clause, as required by R5RS. Thanks to
14341 Martin Grabmueller for the patch.
14342
10288a09
GH
143432001-01-18 Gary Houston <ghouston@arglist.com>
14344
14345 * ioext.c: further simplify scm_read_string_x_partial by defining
14346 a macro SCM_EBLOCK.
14347
8f379a8f
DH
143482001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14349
14350 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
14351
5c75b29f
DH
143522001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14353
14354 * __scm.h: Added comment about architecture and compiler
14355 properties that are required by guile.
14356
14357 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14358 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
14359
14360 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
14361
14362 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
14363
14364 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14365 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
14366
ac0c002c
DH
143672001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
14368
14369 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
14370 to the names in limits.h.
14371
14372 * numbers.c (abs_most_negative_fixnum): Added.
14373
14374 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
14375 fixnum-min) special case.
14376
14377 (scm_big_and): Fix for negative first parameter.
14378
14379 (scm_bit_extract): Fix for fixnum paramters.
14380 Thanks to Rob Browning for the bug report.
14381
14382 (scm_init_numbers): Initialize abs_most_negative_fixnum.
14383
debe0dc2
DH
143842001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
14385
14386 * symbols.c (scm_symbol_bound_p): Fixed comment.
14387 Thanks to Chris Cramer.
14388
8a39e3fc
DH
143892001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
14390
14391 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
14392 Thanks to Bill Schottstaedt.
14393
322ec19d
ML
143942001-01-11 Michael Livshin <mlivshin@bigfoot.com>
14395
9a5fa6e9 14396 from Matthias Köppe:
1c938eb8 14397
322ec19d
ML
14398 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
14399 casts its result, so doesn't yield an lvalue per ANSI C.
14400
14401 * goops.c (s_scm_sys_set_object_setter_x): use
14402 SCM_SET_ENTITY_SETTER.
14403 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
14404
14405 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
14406 its result, so doesn't yield an lvalue per ANSI C.
14407 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
14408 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
14409 SCM_GC_SET_CARD_FLAGS.
14410 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
14411
14412 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
14413
60d02d09
GH
144142001-01-08 Gary Houston <ghouston@arglist.com>
14415
14416 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
14417 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
14418 socket.c (scm_recvfrom): use the new macro, plus minor docstring
14419 changes.
14420 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
14421 for fdes. if current input port is used, check that it's a file
14422 port.
14423
c2da2648
GH
144242001-01-06 Gary Houston <ghouston@arglist.com>
14425
14426 * ioext.c (scm_read_string_x_partial): new procedure, implements
14427 read-string!/partial.
14428 * ports.c (scm_take_from_input_buffers): new procedure used by
14429 scm_read_string_x_partial.
14430 (scm_drain_input): use scm_take_from_input_buffers.
14431
4651d663
MV
144322001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
14433
14434 * validate.h (SCM_VALIDATE_NUMBER): New.
14435
c0a5d888
ML
144362001-01-03 Michael Livshin <mlivshin@bigfoot.com>
14437
14438 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
14439 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
14440 SET_DESTROYED): new defines/macros.
14441 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
14442 (add_to_live_list): takes a `guardian_t *' now, not SCM.
14443 (guardian_print): print more info.
14444 (guardian_apply): check if the guardian is destroyed, and throw an
14445 error if so. take one more optional argument `throw_p'.
14446 (scm_guard): depending on the value of `throw_p', return a boolean
14447 result.
14448 (scm_get_one_zombie): remove redundant property test.
14449 (guardian_t): represent the various (currently 3, I hope nothing
14450 more gets added) boolean fields as bit flags.
14451 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
14452 (scm_destroy_guardian_x): new procedure.
14453
14454 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
14455 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
14456
0c6d2191
GH
144572001-01-01 Gary Houston <ghouston@arglist.com>
14458
14459 * fports.c (fport_write): bugfix: handle short writes for
14460 unbuffered ports too. optimize the buffered case by minimizing
14461 the number of write/flush calls.
14462 (write_all): new helper procedure.
14463
a51fe247 14464The ChangeLog continues in the file: "ChangeLog-2000"
d9f71a07
LC
14465
14466;; Local Variables:
14467;; coding: utf-8
14468;; End: