Fix c-tokenize.c error: 'input' defined but not used, when compiling with GCC 4.3.0
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
6d4e1f62
NJ
12008-05-05 Neil Jerram <neil@ossau.uklinux.net>
2
3 * c-tokenize.lex: #define YY_NO_INPUT.
4
bd22f1c7
LC
52008-04-26 Ludovic Courtès <ludo@gnu.org>
6
7 * read.c (scm_read_sexp): Remove extraneous semi-colon at
8 end-of-line, which broke compilation with GCC 2.7. Reported by
9 Alain Guibert <alguibert+bts@free.fr>.
10
535b3592
LC
112008-04-24 Ludovic Courtès <ludo@gnu.org>
12
13 * Makefile.am (DEFAULT_INCLUDES): New. Fixes compilation on
14 Tru64 where our "random.h" would shadown libc's one.
15 (INCLUDES): Add "-I$(top_buildir)", which is normally in
16 `DEFAULT_INCLUDES'.
17 * gen-scmconfig.c: Include <libguile/gen-scmconfig.h>, not
18 "gen-scmconfig.h" since that file is under `$(builddir)'.
19
f5c2af4b
LC
202008-04-16 Ludovic Courtès <ludo@gnu.org>
21
22 * ports.c (scm_getc, scm_putc, scm_puts): Moved...
23 * inline.h: ... here. Noticeably improves `read' performance.
24
ef4cbc08
LC
252008-04-15 Ludovic Courtès <ludo@gnu.org>
26 Julian Graham <joolean@gmail.com>
27
28 * read.c (scm_keyword_postfix): New.
29 (scm_read_opts): Update docstring for `keywords'.
30 (scm_read_mixed_case_symbol): Add support for postfix keywords.
31
07db6fcd
LC
322008-04-13 Ludovic Courtès <ludo@gnu.org>
33
34 * inline.h (SCM_C_USE_EXTERN_INLINE): New macro. Use it to make
35 sure "extern" declarations are produced when "extern inline" is
9dca8935 36 used. Simplify macrology around inline definitions.
07db6fcd 37
7dc9ae71
LC
382008-04-10 Ludovic Courtès <ludo@gnu.org>
39
40 * inline.h (SCM_C_EXTERN_INLINE): Special-case Apple's GCC
41 4.0-based compiler, which doesn't support GNU inline semantics
42 at all in C99 mode but doesn't define `__GNUC_STDC_INLINE__'.
43 See http://thread.gmane.org/gmane.network.gnutls.general/1135 .
44
54ee7cdf
AW
452008-04-10 Andy Wingo <wingo@pobox.com>
46
4650d115
AW
47 * struct.c (scm_struct_ref, scm_struct_set_x): "Light" structs
48 have no hidden words (members of the SCM_STRUCT_DATA(x) array
49 accessed with negative indices). In that case, determine the
50 number of fields from the length of the struct layout
51 descriptor. (Most GOOPS instances are light structs.)
52
4125c767
AW
53 * goops.c (wrap_init): Initialize 'u' slots to 0, not some random
54 SCM value.
55
56 * goops.c (get_slot_value, set_slot_value): In the struct
54ee7cdf
AW
57 allocation case, don't poke the slots array directly -- we should
58 go through struct-ref/struct-set! code so that we get the
59 permissions and allocation ('u' versus 'p') correct.
60
979eade6
LC
612008-04-03 Ludovic Courtès <ludo@gnu.org>
62
63 * inline.h (SCM_C_EXTERN_INLINE): New macro, addresses the
64 "extern inline" semantic change in C99 mode with GCC 4.3 and
65 later and the warning in C99 mode with GCC 4.2. Use it in the
66 inline function definitions.
67
2a1d0688
NJ
682008-03-24 Neil Jerram <neil@ossau.uklinux.net>
69
70 Applying patch from Julian Graham, containing minor fixes to his
71 thread enhancements:
72
73 * threads.c (to_timespec): Change 1000000 multiplier to
74 1000000000.
75 (unchecked_unlock_sym, allow_external_unlock_sym,
76 recursive_sym): Use SCM_SYMBOL.
77 (scm_make_mutex_with_flags): When raising unsupported option
78 error, report what the unsupported option was.
79 (fat_mutex_unlock): When raising errors, unlock m->lock first.
80 (fat_cond_timedwait): Removed.
81 (scm_timed_wait_condition_variable): Call fat_mutex_unlock
82 directly instead of via fat_cond_timedwait.
83
c2ad98ad
LC
842008-03-10 Ludovic Courtès <ludo@gnu.org>
85
86 * eval.c, filesys.c: Enclose `alloca' blob in `#ifndef alloca',
87 as per Gnulib's `alloca'. This should fix compilation on
88 FreeBSD 6.
89
bca69a9f
NJ
902008-03-09 Neil Jerram <neil@ossau.uklinux.net>
91
92 * numbers.c: Only define scm_from_complex_double if it will
93 actually be used.
94
6180e336
NJ
952008-03-08 Julian Graham <joolean@gmail.com>
96
97 * threads.c (scm_join_thread_timed, scm_thread_p,
98 scm_make_mutex_with_flags, scm_lock_mutex_timed,
99 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p): New
100 functions.
101 (thread_mark): Updated to mark new struct field `mutexes'.
102 (do_thread_exit): Notify threads waiting on mutexes locked by exiting
103 thread.
104 (scm_join_thread, scm_make_mutex, scm_make_recursive_mutex,
105 scm_mutex_lock): Reimplement in terms of their newer
106 counterparts.
107 (scm_abandoned_mutex_error_key): New symbol.
108 (fat_mutex)[unchecked_unlock, allow_external_unlock]: New fields.
109 (fat_mutex_lock): Reimplement to support timeouts and abandonment.
110 (fat_mutex_trylock, scm_try_mutex): Remove fat_mutex_trylock and
111 reimplement scm_try_mutex as a lock attempt with a timeout of zero.
112 (fat_mutex_unlock): Allow unlocking from other threads and unchecked
113 unlocking; implement in terms of condition variable wait.
114 (scm_timed_wait_condition_variable): Reimplement in terms of
115 fat_mutex_unlock.
116 * threads.h (scm_i_thread)[mutexes]: New field.
117 (scm_join_thread_timed, scm_thread_p, scm_lock_mutex_timed,
118 scm_unlock_mutex_timed, scm_mutex_p, scm_condition_variable_p):
119 Prototypes for new functions.
120
61b6542a
LC
1212008-03-06 Ludovic Courtès <ludo@gnu.org>
122
123 * eval.c (scm_eval): If MODULE_OR_STATE is not a dynamic state,
124 make sure it's a module. Reported by David I. Lehn.
125
3f520967
LC
1262008-03-02 Ludovic Courtès <ludo@gnu.org>
127
128 * pairs.h (scm_is_pair): Moved declaration to `inline.h'.
129 * inline.h: Make sure `extern' declarations are not produced
130 when `inline' is supported but GCC is not used. This
131 fixes "mixed linkage" errors with compilers such as
132 DEC/Compaq/HP CC.
133
fa80e280
NJ
1342008-02-27 Neil Jerram <neil@ossau.uklinux.net>
135
136 * _scm.h (errno): Remove declarations that have been there
137 forever, and are known to conflict on some platforms with that
138 provided by <errno.h>, which we include unconditionally. If
139 <errno.h> doesn't provide a errno declaration, what is the point
140 of it?
141
a2c25234
LC
1422008-02-23 Ludovic Courtès <ludo@gnu.org>
143
144 * numbers.c (scm_make_rectangular): Rename argument to
145 `real_part' and `imaginary_part' to work around Solaris 2.10
146 headers which define `imaginary' as a macro. Patch by Tim
147 Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>.
148
bfb64eb4
LC
1492008-02-22 Ludovic Courtès <ludo@gnu.org>
150
4fcb27c4
LC
151 * read.c (strncasecmp): Add declaration when
152 `HAVE_DECL_STRNCASECMP' is undefined. Fixes compilation on
153 NetBSD 1.6.
154
bfb64eb4
LC
155 * gc.c (scm_ia64_ar_bsp)[linux]: Don't discard `const' qualifier
156 of OPAQUE.
157
5305df84
LC
1582008-02-21 Ludovic Courtès <ludo@gnu.org>
159
160 Fix bug #22369.
161
162 * goops.c (scm_add_slot): Add `SCM_UNDEFINED' as last argument
a2c25234
LC
163 to `scm_list_n ()'. Thanks to René Köcher
164 <shirk87@googlemail.com>.
5305df84 165
25a640ca
LC
1662008-02-17 Ludovic Courtès <ludo@gnu.org>
167
168 * script.c (scm_compile_shell_switches): Update copyright year.
169
9a6fac59
LC
1702008-02-16 Ludovic Courtès <ludo@gnu.org>
171
172 * gc_os_dep.c: Add NetBSD/alpha support. Patch by Greg Troxel
173 <gdt@ir.bbn.com>.
174
5b5179f8
LC
1752008-02-12 Ludovic Courtès <ludo@gnu.org>
176
177 * guile-snarf.in (tempdir): Honor `$TMPDIR'.
178
4b26c03e
NJ
1792008-02-11 Neil Jerram <neil@ossau.uklinux.net>
180
181 * numbers.c (SCM_COMPLEX_VALUE): Use GUILE_I instead of _Complex_I
182 directly, and only if GUILE_I was defined by the configure step.
183 (scm_log, scm_log10, scm_exp, scm_sqrt): Use SCM_COMPLEX_VALUE
184 code only if SCM_COMPLEX_VALUE is defined.
185
7f74cf9a
LC
1862008-02-07 Ludovic Courtès <ludo@gnu.org>
187
188 Fix bug #21378.
189 Thanks to David Diffenbaugh <davediff@nbcs.rutgers.edu>.
190
191 * read.c (scm_read_quote): Don't use `__FUNCTION__' since it is
192 not supported by Sun CC on Solaris 9.
193 (scm_read_keyword): Likewise.
194 * strings.c (scm_take_locale_stringn): Remove
195 `SCM_C_INLINE_KEYWORD' to allow compilation with Sun CC.
196
86a597f8
NJ
1972008-02-07 Julian Graham <joolean@gmail.com>
198
199 * threads.c (do_thread_exit, scm_cancel_thread,
200 scm_set_thread_cleanup_x, scm_thread_cleanup): Lock on thread-specific
201 admin mutex instead of `thread_admin_mutex'.
202 * threads.h (scm_i_thread)[admin_mutex]: New field.
203 * throw.c (make_jmpbuf): Don't enter critical section during thread
204 spawn -- there is a possibility of deadlock if other threads are
205 exiting.
206
4a19ed04
NJ
2072008-02-06 Neil Jerram <neil@ossau.uklinux.net>
208
209 * gc-malloc.c (scm_gc_malloc): Return NULL if requested size is 0.
210 (scm_gc_free): Don't call `free' if mem is NULL.
211
189171c5
LC
2122008-02-06 Ludovic Courtès <ludo@gnu.org>
213
214 * numbers.c (scm_i_mkbig, scm_i_long2big, scm_i_ulong2big,
215 scm_i_clonebig, scm_i_bigcmp, scm_i_dbl2big, scm_i_dbl2num,
216 scm_i_normbig): Remove `SCM_C_INLINE_KEYWORD' since these are
217 declared as `extern' in `numbers.h'. This precluded compilation
218 on Solaris 9 with Sun CC (reported by David Halik
219 <dhalik@nbcs.rutgers.edu>).
220
d05bcb2e
NJ
2212008-02-05 Neil Jerram <neil@ossau.uklinux.net>
222
223 * fports.c (fport_seek): Make dependent on GUILE_USE_64_CALLS.
224
225 * _scm.h: Make definition of CHOOSE_LARGEFILE depend on
226 GUILE_USE_64_CALLS.
227
3ac8359a
NJ
2282008-02-01 Neil Jerram <neil@ossau.uklinux.net>
229
230 * modules.c (the_root_module): Moved before scm_current_module.
231 (scm_current_module): Return the root module if `the-module' fluid
232 gives #f.
233
d3cf93bc
NJ
2342008-01-22 Neil Jerram <neil@ossau.uklinux.net>
235
7df13834
NJ
236 * COPYING: Removed.
237
d3cf93bc
NJ
238 * __scm.h, _scm.h, weaks.c: Update copyright statement to LGPL.
239
15bd90ea
NJ
2402008-01-18 Neil Jerram <neil@ossau.uklinux.net>
241
242 * hashtab.c (scm_hash_fn_create_handle_x): If supplied assoc_fn
243 returns neither a pair nor #f, signal a wrong-type-arg error.
244 (Thanks to Gregory Marton for reporting this.)
245
5c004b6d
NJ
2462007-12-29 Neil Jerram <neil@ossau.uklinux.net>
247
248 * gc.c (mark_gc_async): Change "func_data" to "fn_data", to avoid
249 clash with AIX header file.
250 * hooks.c (scm_c_hook_add, scm_c_hook_remove): Same again.
251 * hooks.h (scm_t_c_hook_function, scm_c_hook_add,
252 scm_c_hook_remove): Same again.
253
9cc37597
LC
2542007-12-08 Ludovic Courtès <ludo@gnu.org>
255
256 * __scm.h (SCM_EXPECT, SCM_LIKELY, SCM_UNLIKELY): New macros.
257 (SCM_ASSERT, SCM_ASSERT_TYPE, SCM_ASRTGO, SCM_GASSERT0,
258 SCM_GASSERT1, SCM_GASSERT2, SCM_GASSERTn): Use them.
259 * eval.c (ASSERT_SYNTAX, ASSERT_SYNTAX_2): Likewise.
260 * eval.i.c (CEVAL): Use branch prediction hints for syntax
261 errors, wrong number of arguments and similar.
262 * numbers.c (scm_sum): Use `SCM_LIKELY' for the sum of two
263 immediate numbers.
264 (scm_difference, scm_product, scm_i_divide): Likewise.
265 * validate.h (SCM_ASSERT_RANGE): Use `SCM_UNLIKELY'.
266
7d1fc872
LC
2672007-12-04 Ludovic Courtès <ludo@gnu.org>
268
693758d5
LC
269 * ports.c (scm_c_read): Validate PORT as an open input port.
270 (scm_c_write): Validate PORT as an open output port.
271
7d1fc872
LC
272 * socket.c (scm_accept): Leave guile mode using
273 `scm_std_select ()' before calling `accept(2)'. Reported by
274 dskr <dskr@mac.com>.
275
ee834df4
LC
2762007-10-27 Ludovic Courtès <ludo@gnu.org>
277
278 * fports.c (scm_i_evict_port): Expect a port, rather than a pair
279 containing the port. Fixes a bug in the new port table (2007-08-26).
280 (scm_evict_ports): Use `scm_c_port_for_each ()'.
281
acbfb594
NJ
2822007-10-21 Neil Jerram <neil@ossau.uklinux.net>
283
284 * eval.c (unmemoize_delay): Extend the environment before
285 unmemoizing the promise thunk. This fixes a segmentation fault
286 reported by Frank Schwidom.
287
2e77f720
LC
2882007-10-20 Julian Graham <joolean@gmail.com>
289
290 Add support for thread cancellation and user-defined thread
291 cleanup handlers. Small rework by Ludovic Courtès.
292
293 * null-threads.h (scm_i_pthread_cancel,
294 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
295 * pthread-threads.h (scm_i_pthread_cancel,
296 scm_i_pthread_cleanup_push, scm_i_pthread_cleanup_pop): New.
297 * scmsigs.c (scm_i_signal_delivery_thread,
298 signal_delivery_thread_mutex): New.
299 (signal_delivery_thread): Leave when `read_without_guile ()'
300 returns zero.
301 (start_signal_delivery_thread): Acquire SIGNAL_DELIVERY_THREAD
302 before spawning the thread. Initialize
303 SCM_I_SIGNAL_DELIVERY_THREAD.
304 (ensure_signal_delivery_thread): Renamed to...
305 (scm_i_ensure_signal_delivery_thread): this.
306 (scm_i_close_signal_pipe): New.
307 * scmsigs.h: Updated.
308 * threads.c (thread_mark): Mark `t->cleanup_handler'.
309 (guilify_self_1): Initialize `t->cleanup_handler' and
310 `t->canceled'.
311 (do_thread_exit): Invoke `t->cleanup_handler'.
312 (on_thread_exit): Call `scm_i_ensure_signal_delivery_thread ()'.
313 Call `scm_i_close_signal_pipe ()' when the next-to-last thread
314 vanishes.
315 (scm_leave_guile_cleanup): New.
316 (scm_i_with_guile_and_parent): Use `scm_i_pthread_cleanup_push ()'
317 and `scm_leave_guile_cleanup ()' to leave guile mode, rather
318 than call `scm_leave_guile ()' after FUNC.
319 (scm_cancel_thread, scm_set_thread_cleanup_x,
320 scm_threads_cleanup): New.
321 (scm_all_threads): Remove SCM_I_SIGNAL_DELIVERY_THREAD from the
322 returned list.
323 * threads.h (scm_i_thread)[cleanup_handler, canceled]: New
324 fields.
325 Add declarations of new functions.
326
d41668fa
LC
3272007-10-17 Ludovic Courtès <ludo@gnu.org>
328
329 * read.c (CHAR_IS_BLANK_): Add `\r' (ASCII 0x0d). This fixes a
330 regression compared to 1.8.2. Reported by Puneet
331 <schemer@gmail.com>.
332
66302618
LC
3332007-10-10 Ludovic Courtès <ludo@gnu.org>
334
335 * pthread-threads.h (SCM_I_PTHREAD_MUTEX_INITIALIZER): Check
336 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
337 * gen-scmconfig.h.in
338 (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER): New.
339 * gen-scmconfig.c (main): Define
340 `SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER'.
341
1445e449
LC
3422007-10-04 Ludovic Courtès <ludo@gnu.org>
343
344 * i18n.c (scm_make_locale)[!USE_GNU_LOCALE_API]: Don't call
345 `leave_locale_section ()' on failure of
346 `enter_locale_section ()' since the mutex is not held and locale
347 settings are unchanged.
348 (scm_nl_langinfo)[!USE_GNU_LOCALE_API]: Use
349 `restore_locale_settings ()' instead of `leave_locale_section ()'
350 since the mutex is not held.
351
29776e85
LC
3522007-10-02 Ludovic Courtès <ludo@gnu.org>
353
354 * threads.c (on_thread_exit): Don't call `scm_leave_guile ()'
355 since we're already in non-guile mode. Reported by Greg Toxel
356 for NetBSD.
357
61d3568b
LC
3582007-10-01 Ludovic Courtès <ludo@gnu.org>
359
360 * ports.c (flush_output_port): Expect directly a port instead of
361 a pair. Fixes a bug in the new port table (2007-08-26).
362
68eccd8b
KR
3632007-09-11 Kevin Ryde <user42@zip.com.au>
364
365 * posix.c (scm_putenv): Confine the putenv("NAME=") bit to mingw, use
366 putenv("NAME") as the fallback everywhere else. In particular this is
367 needed for solaris 9. Reported by Frank Storbeck.
368
454866e0
LC
3692007-09-03 Ludovic Courtès <ludo@gnu.org>
370
371 * read.c (flush_ws): Handle SCSH block comments.
372
f43f3620
LC
3732007-09-03 Ludovic Courtès <ludo@gnu.org>
374
375 Fix alignment issues which showed up at least on SPARC.
376
377 * socket.c (scm_t_max_sockaddr, scm_t_getsockopt_result): New.
378 (scm_inet_pton): Change DST to `scm_t_uint32' for correct
379 alignment.
380 (scm_getsockopt): Change OPTVAL to `scm_t_getsockopt_result' for
381 correct alignment.
382 (_scm_from_sockaddr): Change ADDRESS to `scm_t_max_sockaddr *'.
383 (scm_from_sockaddr): Cast ADDRESS to `scm_t_max_sockaddr *'.
384 (MAX_SIZE_UN, MAX_SIZE_IN6): Removed.
385 (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
386 Use `scm_t_max_sockaddr' instead of "char max_addr[MAX_ADDR_SIZE]".
387
8d4d5dfc
KR
3882007-09-03 Kevin Ryde <user42@zip.com.au>
389
390 * numbers.c (scm_log): Test HAVE_CLOG as well as HAVE_COMPLEX_DOUBLE
391 before using clog(). It's possible for gcc to provide the "complex
392 double" type, but for the system not to have the complex funcs.
393 (scm_exp): Ditto HAVE_CEXP for cexp().
394 (clog, cexp, carg): Remove fallback definitions. These only
395 duplicated the code within scm_log and scm_exp, and the latter have to
396 exist for the case when there's no "complex double". So better just
397 fix up the conditionals selecting between the complex funcs and plain
398 doubles than worry about fallbacks.
399
1ac5fb45
LC
4002007-09-02 Ludovic Courtès <ludo@gnu.org>
401
402 * socket.c (scm_make_socket_address): Free C_ADDRESS after use.
403 This fixes a memory leak.
404
b87e6d04
HWN
4052007-08-26 Han-Wen Nienhuys <hanwen@lilypond.org>
406
5dbc6c06
HWN
407 * fports.c gc-card.c gc.c gc.h ioext.c ports.c ports.h weaks.h
408 gc.c: replace port table with weak hash table. This simplifies
409 memory management, and fixes freed cells appearing in
410 port-for-each output.
411
b87e6d04
HWN
412 * init.c (cleanup_for_exit): abort cleanup if init_mutex is still
413 held.
414
2baec6a9
LC
4152007-08-23 Ludovic Courtès <ludo@gnu.org>
416
492faee1 417 * read.c (scm_read_quote): Record position and copy source
8d4d5dfc 418 expression when asked to. Reported by Kevin.
492faee1 419
2baec6a9
LC
420 * stime.c: Define `_REENTRANT' only if not already defined.
421
1f11c61a
KR
4222007-08-21 Kevin Ryde <user42@zip.com.au>
423
424 * gc-card.c (scm_i_card_statistics): Record scm_tc7_number types as
425 tc16 values so big, real, complex and fraction can be distinguished.
426
427 (scm_i_tag_name): Return "number" for scm_tc7_number, not NULL. NULL
428 was making numbers come out as "type 23" in gc-live-object-stats.
429 Fix tests of the tc16 number types, they were checked under
430 scm_tc7_number, but the values went down the tag>=255 smob case.
431 Put smob case under scm_tc7_smob instead of using tag>=255, per
432 recommendation in comments with scm_tc7_smob to use symbolic values.
433 Use SCM_TC2SMOBNUM to extract scm_smobs index, instead of explicit
434 code. Lose some unnecessary "break" statements.
435
436 (scm_i_card_statistics): Use scm_hashq_create_handle_x and modify the
437 element returned, rather than two lookups scm_hashq_ref and
438 scm_hashq_set_x.
439
949ec9f9
KR
4402007-08-17 Kevin Ryde <user42@zip.com.au>
441
442 * stime.c: Add #define _REENTRANT, to get gmtime_r() prototype on
443 solaris 2.6. Reported by anirkko.
444
6caac03c
LC
4452007-07-29 Ludovic Courtès <ludo@gnu.org>
446
447 * Makefile.am (INCLUDES): Added Gnulib includes.
448 (gnulib_library): New.
449 (libguile_i18n_v_@LIBGUILE_I18N_MAJOR@_la_LIBADD): Added
450 `$(gnulib_library)'.
451 (libguile_la_LIBADD): Likewise.
452
453 * posix.c: Don't define `_GNU_SOURCE' since `gl_EARLY' arranges
454 to define it when available.
455 * srfi-14.c: Likewise.
f7439099
LC
456 * i18n.c: Likewise. Include Gnulib's <alloca.h>
457 * eval.c: Include Gnulib's <alloca.h>.
458 * filesys.c: Likewise.
459 * read.c: Don't include <strings.h> and don't provide an
460 `strncasecmp ()' replacement; use Gnulib's <string.h> and
461 `strncasecmp ()' instead.
6caac03c 462
e08f3f7a
LC
4632007-07-25 Ludovic Courtès <ludo@gnu.org>
464
465 * eval.c (macroexp): When `scm_ilength (res) <= 0', return
466 immediately. This used to produce a circular memoized
467 expression, e.g., for `(set (quote x) #t)'.
468
7337d56d
LC
4692007-07-22 Ludovic Courtès <ludo@gnu.org>
470
471 Overhauled the reader, making it faster.
472
473 * gdbint.c (tok_buf, tok_buf_mark_p): Removed.
474 (gdb_read): Don't use a token buffer. Use `scm_read ()' instead
475 of `scm_lreadr ()'.
476
477 * read.c: Overhauled. No longer use a token buffer. Use a
478 on-stack C buffer in the common case and use Scheme strings when
479 larger buffers are needed.
480 * read.h (scm_grow_tok_buf, scm_flush_ws, scm_casei_streq,
481 scm_lreadr, scm_lreadrecparen): Removed.
482 (scm_i_input_error): Marked as `SCM_NORETURN'.
483
df449722
LC
4842007-07-15 Ludovic Courtès <ludo@gnu.org>
485
486 * script.c (scm_compile_shell_switches): Updated copyright year.
487
b1f57ea4
LC
4882007-07-11 Ludovic Courtès <ludo@gnu.org>
489
490 * goops.c (scm_sys_method_more_specific_p): Added docstring.
491 Make sure LEN is greater than or equal to the minimum length of
492 specializers of M1 and M2. This fixes a segfault later on in
493 `more_specificp ()' if TARGS is too small. Reported by Marco
494 Maggi <marco.maggi-ipsu@poste.it>.
495
d3075c52
LC
4962007-06-26 Ludovic Courtès <ludo@gnu.org>
497
498 * fluids.c (next_fluid_num): When growing ALLOCATED_FLUIDS, make
499 sure to free the previous array after the new one has been
500 installed. This leak is made visible by running
501 "(define l (map (lambda (i) (make-fluid)) (iota 255)))"
502 from the REPL within Valgrind.
503
7a5fb796
LC
5042007-06-12 Ludovic Courtès <ludo@chbouib.org>
505
506 * socket.c (scm_inet_ntop): In the `AF_INET' case, declare `addr4'
507 as an `scm_t_uint32' rather than re-using `addr6'. This fixes a
508 bus error on SPARC (and possibly others) due to unaligned access.
509
a1ef7406
LC
5102007-06-07 Ludovic Courtès <ludovic.courtes@laas.fr>
511
512 * posix.c (scm_ttyname): Check whether RESULT is NULL before
513 making a string from it (reported by Dan McMahill). Don't call
514 `scm_from_locale_string ()' before the mutex is released.
515
3dcf3373
LC
5162007-05-26 Ludovic Courtès <ludo@chbouib.org>
517
518 * eval.c (scm_m_define): Updated comment. Changed order for value
519 evaluation and `scm_sym2var ()' call, which is perfectly valid per
520 R5RS. This reverts the change dated 2004-04-22 by Dirk Herrmann.
521
608860a5
LC
5222007-05-05 Ludovic Courtès <ludo@chbouib.org>
523
524 Implemented lazy duplicate binding handling.
525
526 * modules.c (scm_export): Renamed to...
527 (scm_module_export): This. Now public.
528 (module_variable): Removed.
529 (default_duplicate_binding_procedures_var): New variable.
530 (default_duplicate_binding_handlers, resolve_duplicate_binding,
531 module_imported_variable, scm_module_local_variable,
532 scm_module_variable): New functions.
533 (scm_module_import_interface): Rewritten.
534 (scm_module_reverse_lookup): Exported as a Scheme function.
535 * modules.h (scm_module_index_duplicate_handlers,
536 scm_module_index_import_obarray): New macros.
537 (scm_module_variable, scm_module_local_variable,
538 scm_module_export): New declarations.
539
1911e3da
LC
5402007-04-17 Ludovic Courtès <ludovic.courtes@laas.fr>
541
542 * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
543 `#endif'. Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
544
1d8ce4c0
HWN
5452007-04-09 Han-Wen Nienhuys <hanwen@lilypond.org>
546
547 * numbers.c (carg): provide carg, cexp, clog in case they are
548 missing.
549
afb49959
LC
5502007-03-12 Ludovic Courtès <ludovic.courtes@laas.fr>
551
552 * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
553 `FRAC_DIGITS', etc., which are GNU extensions. Reported by
554 Steven Wu.
555
b3aa4626
KR
5562007-03-08 Kevin Ryde <user42@zip.com.au>
557
558 * struct.c, struct.h (scm_make_vtable): New function, providing
559 `make-vtable'.
560 * stacks.c (scm_init_stacks): Use it.
561
5622007-03-06 Kevin Ryde <user42@zip.com.au>
563
564 * struct.c (scm_make_struct): Check for R,W,O at end of layout when
565 allocating a tail array. If there's no such then those tail fields
566 are uninitialized and garbage SCMs there can cause a segv if printed
567 (after fetching with struct-ref).
568
5692007-02-22 Kevin Ryde <user42@zip.com.au>
570
571 * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
572 (scm_usleep): Update docstring per manual, cross reference sleep.
573
574 * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
575 scm_struct_init is not within that section. scm_struct_init can
576 thrown an error, which within a critical section results in an
577 abort().
578
03291373
NJ
5792007-02-19 Neil Jerram <neil@ossau.uklinux.net>
580
581 * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
582 is included in the distribution.
652dbce6 583 (noinst_HEADERS): And the same for eval.i.c.
03291373 584
a2f00b9b
LC
5852007-01-31 Ludovic Courtès <ludovic.courtes@laas.fr>
586
587 * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
588 unconditionally. Include <langinfo.h> and <nl_types.h> when
589 available.
590 (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
591 SCM_LIST_OR_INTEGER_P): New macros.
592 (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
593 as powers of two instead of `(1 << LC_*)'.
594 (scm_i_locale_free): New function/macro.
595 (scm_global_locale): New global variable.
596 (smob_locale_free): Use `scm_i_locale_free ()'.
597 (smob_locale_mark): Check whether the SMOB is `%global-locale'.
598 (get_current_locale_settings): Return `EINVAL' instead of `errno'
599 when `setlocale' fails.
600 (restore_locale_settings): Likewise.
601 (install_locale_categories): Likewise.
602 (install_locale): Likewise. Stop the locale stack traversal when
603 all categories have been handled.
604 (get_current_locale, category_to_category_mask,
605 category_list_to_category_mask): New function.
606 (scm_make_locale): Use them. Accept both lists of `LC_*' values
607 and single `LC_*' values as the first argument. Handle the case
608 where BASE_LOCALE is `%global-locale'. When `USE_GNU_LOCALE_API',
609 duplicate C_BASE_LOCALE before using it.
610 (scm_nl_langinfo, define_langinfo_items): New functions.
611 (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
612 `nl-langinfo' and invoke `define_langinfo_items ()'.
613 * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
614 * posix.c: Include <xlocale.h> when available.
615 (scm_i_locale_mutex): Always define it. Statically initialized.
616 (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
617 acquiring the locale mutex.
618 (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
619
b3aa4626
KR
6202007-01-27 Kevin Ryde <user42@zip.com.au>
621
622 * ports.c (scm_port_line, scm_set_port_line_x), read.c
623 (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
624 port line number type, should be "long" not "int", as per line_number
625 field of scm_t_port. (Makes a difference only on 64-bit systems, and
626 only then for a linenum above 2Gig.)
627
2a8d66b0
HWN
6282007-01-25 Han-Wen Nienhuys <hanwen@lilypond.org>
629
630 * vector.c: remove comment as per kryde's request.
631
b3aa4626
KR
6322007-01-25 Kevin Ryde <user42@zip.com.au>
633
634 * sort.c (scm_stable_sort): Return empty list for input empty list, as
635 done in guile 1.6 and as always done by plain `sort'. Was falling
636 through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda.
637
cb90e2cb
HWN
6382007-01-22 Han-Wen Nienhuys <hanwen@lilypond.org>
639
8cb7939c
HWN
640 * vectors.c (s_scm_vector_move_right_x): complain about naming.
641
d00a0704
HWN
642 * srcprop.c: regularize comments.
643
3d178652
HWN
644 * eval.c: remove superfluous ifndef DEVAL.
645
243ebb61
HWN
646 * private-options.h: idem.
647
648 * eval.i.c: copyright nitpicking.
649
0ee05b85
HWN
650 * eval.c: distangle. move duplicate code to eval.i.c and include
651 twice.
652
653 * eval.i.c: new file.
654
22fc179a
HWN
655 * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
656 eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
657 read.h, stacks.c, symbols.c, throw.c: use private-options.h
658
659 * private-options.h: new file: contain hardcoded option
660 definitions.
661
cb90e2cb
HWN
662 * private-gc.h: add FSF header.
663
62560650
HWN
6642007-01-19 Han-Wen Nienhuys <hanwen@lilypond.org>
665
72f19c26
HWN
666 * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
667 memoize-symbol is set.
668
669 * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
670
671 * eval.c (CEVAL): add memoize_symbol trap.
672
03347a97
HWN
673 * options.c (scm_options_try): new function. This allows error
674 reporting before changing options in a critical section.
675
b0763985
HWN
676 * srcprop.c: use double cell for storing source-properties. Put
677 filename in the plist, and share between srcprops if possible.
678 Remove specialized storage.
679
680 * srcprop.h: remove macros without SCM_ prefix from
681 interface. Remove specialized storage/type definitions.
682
62560650
HWN
683 * read.c: idem.
684
685 * print.c: idem.
686
687 * eval.c: terminate option lists with 0.
688
689 * options.c: remove n (for length) from scm_option_X
690 functions. Detect option list length by looking for NULL name.
691
42ddb3cb
LC
6922007-01-19 Ludovic Courtès <ludovic.courtes@laas.fr>
693
694 * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
695 is equal to S1 and FIELD2 is equal to S2. This avoids infinite
696 recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
697 added by `make-vtable-vtable'. Reported by Marco Maggi.
698
937038e8
HWN
6992007-01-18 Han-Wen Nienhuys <hanwen@lilypond.org>
700
701 * throw.c (scm_ithrow): more refined error message: print symbols
702 too.
703
23d72566
KR
7042007-01-16 Kevin Ryde <user42@zip.com.au>
705
706 * feature.c, feature.h (scm_set_program_arguments_scm): New function,
707 implementing `set-program-arguments'.
708
709 * filesys.c (scm_init_filesys): Use scm_from_int rather than
710 scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
711 O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
712 O_LARGEFILE. These are all int not long, per arg to open().
713 (scm_init_filesys): Use scm_from_int rather than scm_from_long for
714 F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
715 are all ints (per command arg to fcntl). Likewise FD_CLOEXEC which is
716 an int arg to fcntl.
717
718 * posix.c (scm_putenv): Correction to "len" variable, was defined only
719 for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
720 Move it to where it's used. Reported by Hugh Sasse.
721
722 * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
723 and SCM_CRITICAL_SECTION_END, believe not needed. Their placement
724 meant #\nul in the input (detected by scm_to_locale_string) and a bad
725 flags arg (detected by scm_to_int) would throw from a critical
726 section, causing an abort().
727
728 * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
729 REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
730 REG_NOTEOL; they're all ints not longs (per args to regcomp and
731 regexec).
732
a2c40dc7
HWN
7332007-01-10 Han-Wen Nienhuys <hanwen@lilypond.org>
734
735 * throw.c (scm_ithrow): print out key symbol and string arguments
736 when error happens inside a critical section, and document why.
737
391f57e6
HWN
7382007-01-06 Han-Wen Nienhuys <hanwen@lilypond.org>
739
740 * read.c (s_scm_read_hash_extend): document #f argument to
741 read-hash-extend.
742
23d72566
KR
7432007-01-04 Kevin Ryde <user42@zip.com.au>
744
745 * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
746 scm_minor_version, scm_micro_version, scm_effective_version,
747 scm_version, scm_init_version): Use SCM_API instead of just extern,
748 for the benefit of mingw. Reported by Cesar Strauss.
749
93632e3c
HWN
7502007-01-03 Han-Wen Nienhuys <hanwen@lilypond.org>
751
752 * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
753 too.
754 (gc_update_stats): update scm_gc_cells_allocated_acc too.
755
23d72566
KR
7562006-12-27 Kevin Ryde <user42@zip.com.au>
757
758 * threads.c (get_thread_stack_base): In mingw with pthreads we can use
759 the basic scm_get_stack_base. As advised by Nils Durner.
760
761 * threads.c (get_thread_stack_base): Add a version using
762 pthread_get_stackaddr_np (when available), for the benefit of MacOS.
763 As advised by Heikki Lindholm.
764
765 * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
766 to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw. Reported by Nils
767 Durner.
768
7692006-12-24 Kevin Ryde <user42@zip.com.au>
770
771 * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
772 error if pid is not our own process, instead of silently doing nothing.
773
774 * print.c (scm_write, scm_display, scm_write_char): Disable port close
775 on EPIPE. This was previously disabled but introduction of HAVE_PIPE
776 check in configure.in unintentionally enabled it. Believe that
777 testing errno after scm_prin1 or scm_putc is bogus, a long ago error
778 can leave errno in that state. popen.test "no duplicates" output test
779 provoked that.
780
e2bf3b19
HWN
7812006-12-23 Han-Wen Nienhuys <hanwen@lilypond.org>
782
783 * numbers.c (scm_i_fraction_reduce): move logic into
784 scm_i_make_ratio(), so fractions are only read.
785 scm_i_fraction_reduce() modifies a fraction when reading it. A
786 race condition might lead to fractions being corrupted by reading
787 them concurrently.
788
789 Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
790 comparisons between reduced and unreduced fractions go wrong.
791
792 * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
793 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
794 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
795 SCM_FRACTION_REDUCED.
796
23d72566
KR
7972006-12-16 Kevin Ryde <user42@zip.com.au>
798
799 * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
800 more direct for a procedure called raise.
801 (kill): Remove mingw fake fallback.
802
8032006-12-15 Kevin Ryde <user42@zip.com.au>
804
805 * scmsigs.c: Conditionalize process.h, add io.h believe needed for
806 _pipe on mingw.
807
8082006-12-14 Kevin Ryde <user42@zip.com.au>
809
810 * threads.c (thread_print): Cope with the case where pthread_t is a
811 struct, as found on mingw. Can't just cast to size_t for printing.
812 Reported by Nils Durner.
813
814 * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw. Copy the
815 fallback pipe() using _pipe() from posix.c. Reported by Nils Durner.
816
8172006-12-13 Kevin Ryde <user42@zip.com.au>
818
819 * eval.c (scm_m_define): Set 'name procedure property on any
820 scm_procedure_p, not just SCM_CLOSUREP. In particular this picks up
821 procedures with setters as used in srfi-17.
822
823 * posix.c (scm_crypt): Check for NULL return from crypt(), which the
824 linux man page says is a possibility.
825
f30e1bdf
LC
8262006-12-12 Ludovic Courtès <ludovic.courtes@laas.fr>
827
828 * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
42ddb3cb 829 instead of RES (reported by Szavai Gyula). This allows the use of
f30e1bdf
LC
830 negative lower bounds.
831 (scm_i_read_array): Make sure LEN is non-negative (reported by
42ddb3cb 832 Szavai Gyula).
f30e1bdf
LC
833
834 (scm_array_in_bounds_p): Iterate over S instead of always
835 comparing indices with the bounds of S[0]. This fixes
836 `array-in-bounds?' for arrays with a rank greater than one and
837 with different lower bounds for each dimension.
838
23d72566
KR
8392006-12-05 Kevin Ryde <user42@zip.com.au>
840
841 * numbers.c (scm_product): For flonum*inum and complex*inum, return
842 exact 0 if inum==0. Already done for inum*flonum and inum*complex,
843 and as per R5RS section "Exactness".
844
8452006-12-03 Kevin Ryde <user42@zip.com.au>
846
847 * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
848 allow $AWK from the environment to override. It had syntax gremlins,
849 and the presence of a $(AWK) variable set by AC_PROG_AWK in the
850 Makefile stopped it having any effect. Use just $(AWK), which can be
851 overridden with "make AWK=xxx" in the usual way if desired.
852
22be72d3
LC
8532006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr>
854
855 * libguile/vectors.c (scm_vector_to_list): Fixed list
856 construction: elements were not copied when INC is zero (see
857 "shared array" example in `vectors.test'). Reported by
858 Szavai Gyula.
859
b89c4943
LC
8602006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
861
862 * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
863 (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
864 (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
865 libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
866 (DOT_X_FILES): Added `gettext.x'.
867 (DOT_DOC_FILES): Likewise.
868 (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
869 (modinclude_HEADERS): Added `gettext.h'.
870 (EXTRA_DIST): Added `libgettext.h'.
871
872 * gettext.h: Renamed to...
873 * libgettext.h: New file.
874
875 * i18n.c: Renamed to...
876 * gettext.c: New file.
877
878 * i18n.h: Renamed to...
879 * gettext.h: New file.
880
881 * i18n.c, i18n.h, locale-categories.h: New files.
882
883 * init.c: Include "libguile/gettext.h" instead of
884 "libguile/i18n.h".
885 (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
886 `scm_init_i18n ()'.
887
888 * posix.c: Include "libguile/gettext.h" instead of
889 "libguile/i18n.h" Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
890 (USE_GNU_LOCALE_API): New macro.
891 (scm_i_locale_mutex): New variable.
892 (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
893
894 * posix.h: Include "libguile/threads.h".
895 (scm_i_locale_mutex): New declaration.
896
f3e3f530
NJ
8972006-11-17 Neil Jerram <neil@ossau.uklinux.net>
898
899 * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
900
d9f71a07
LC
9012006-11-08 Ludovic Courtès <ludovic.courtes@laas.fr>
902
903 * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
904 "sweep_stats" arguments; use them instead of accessing the global
905 variables `scm_gc_cells_collected' and `scm_gc_cells_collected_1'.
906
907 * libguile/gc-segment.c (scm_i_sweep_some_cards): Reset SWEEP
908 before each iteration of the loop.
909 (scm_i_sweep_some_segments): Reset SWEEP at each iteration.
910 (scm_i_get_new_heap_segment): Take an additional argument
911 SWEEP_STATS. Compute MIN_CELLS as a function of it.
912
913 * libguile/gc.c (scm_gc_cells_collected,
914 scm_gc_cells_collected_1): Removed.
915 (scm_i_gc_sweep_stats, scm_i_gc_sweep_stats_1): New.
916 (scm_gc_cells_marked_acc, scm_gc_cells_swept_acc,
917 scm_gc_time_taken, scm_gc_mark_time_taken, scm_gc_times,
918 scm_gc_cell_yield_percentage, protected_obj_count): Made `static'.
919 (scm_gc_stats): Use `scm_i_gc_sweep_stats' instead of
920 `scm_gc_cells_(collected|swept)'.
921 (gc_update_stats): New.
922 (gc_end_stats): Use `scm_i_gc_sweep_stats' and
923 `scm_i_gc_sweep_stats_1' instead of the former globals.
924 (scm_gc_for_newcell): Invoke `gc_update_stats ()' after each
925 `scm_i_sweep_some_segments' call. This fixes a bug where the GC
926 would keep allocating new segments instead of re-using collected
927 cells (because `scm_gc_cells_collected' would remain zero).
928
929 * libguile/gc.h (scm_gc_cells_swept, scm_gc_cells_collected,
930 scm_gc_cell_yield_percentage): Removed.
931
932 * libguile/private-gc.h (scm_gc_cells_collected_1): Removed.
933 (scm_i_adjust_min_yield): Updated.
934 (scm_i_get_new_heap_segment): Updated.
935
dd18d312
NJ
9362006-11-02 Neil Jerram <neil@ossau.uklinux.net>
937
938 * modules.c: Correct comment saying that low-level environments
939 will be used "in the next release".
940
941 * init.c: Comment out #include of environments.h.
942 (scm_i_init_guile): Comment out scm_environments_prehistory() and
943 scm_init_environments() calls.
944
945 * Makefile.am (libguile_la_SOURCES): Remove environments.c.
946 (DOT_X_FILES): Remove environments.x.
947 (DOT_DOC_FILES): Remove environments.doc.
948 (modinclude_HEADERS): Remove environments.h.
949
9a5fa6e9
NJ
9502006-10-25 Neil Jerram <neil@ossau.uklinux.net>
951
952 IA64 HP-UX GC patch from Hrvoje Nikšić. (Thanks!)
953
954 * threads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp() and
955 scm_ia64_register_backing_store_base() instead of Linux-specific
956 implementations.
957
958 * gc.h (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp):
959 New declarations.
960
961 * gc.c (__libc_ia64_register_backing_store_base): Declaration
962 removed.
963 (scm_ia64_register_backing_store_base, scm_ia64_ar_bsp): New, with
964 implementations for Linux and HP-UX.
965
966 * coop-pthreads.c (SCM_MARK_BACKING_STORE): Use scm_ia64_ar_bsp()
967 and scm_ia64_register_backing_store_base() instead of
968 Linux-specific implementations.
969
970 * continuations.h (__libc_ia64_register_backing_store_base):
971 Declaration removed.
972 (scm_t_contregs): New "fresh" field.
973
974 * continuations.c (ia64_getcontext): Removed.
975 (scm_make_continuation): Use continuation fresh field instead of
976 interpreting getcontext return values (which isn't portable). Use
977 scm_ia64_ar_bsp() and scm_ia64_register_backing_store_base()
978 instead of Linux-specific implementations.
979 (copy_stack_and_call): Use scm_ia64_register_backing_store_base()
980 instead of Linux-specific implementation.
981
982 * _scm.h (__ia64__): Also detect __ia64.
983
8ab3d8a0
KR
9842006-10-03 Kevin Ryde <user42@zip.com.au>
985
986 * eval.c (SCM_APPLY): For scm_tc7_subr_2o, throw wrong-num-args on 0
987 arguments or 3 or more arguments. Previously 0 called proc with
988 SCM_UNDEFINED, and 3 or more silently used just the first 2.
989
9902006-09-28 Kevin Ryde <user42@zip.com.au>
991
992 * fports.c, ports.c (ftruncate): Use "HAVE_CHSIZE && ! HAVE_FTRUNCATE"
993 for chsize fallback, instead of hard-coding mingw. Mingw in fact
994 supplies ftruncate itself these days.
995
996 * ports.c (fcntl.h): Can include this unconditionally, no need for
997 __MINGW32__.
998
999 * ports.c (truncate): Conditionalize on "HAVE_FTRUNCATE && !
1000 HAVE_TRUNCATE" so as not to hard-code mingw. Use "const char *" and
1001 "off_t" for parameters, per usual definition of this function, rather
1002 than "char *" and "int". Use ftruncate instead of chsize. Check for
1003 error on final close.
1004
10052006-09-27 Kevin Ryde <user42@zip.com.au>
1006
1007 * numbers.c (scm_log10): Check HAVE_CLOG10, clog10() is not available
1008 in mingw.
1009
1010 * posix.c (scm_execl, scm_execlp, scm_execle): Cast "const char *
1011 const *" for mingw to suppress warnings from gcc (which are errors
1012 under the configure default -Werror). Reported by Nils Durner.
1013
10142006-09-26 Kevin Ryde <user42@zip.com.au>
1015
1016 * _scm.h (scm_to_off64_t, scm_from_off64_t): New macros.
1017 * fports.c (scm_open_file): Use open_or_open64.
1018 (fport_seek_or_seek64): New function, adapting fport_seek.
1019 * fports.c, fports.h (scm_i_fport_seek, scm_i_fport_truncate): New
1020 functions.
1021 * ports.c (scm_seek, scm_truncate_file): Use scm_i_fport_seek and
1022 scm_i_fport_truncate to allow 64-bit seeks and truncates on fports.
1023
1024 * ports.c (scm_truncate_file): Update docstring per manual.
1025
10262006-09-23 Kevin Ryde <user42@zip.com.au>
1027
1028 * numbers.c, numbers.h (scm_log, scm_log10, scm_exp, scm_sqrt): New
1029 functions.
1030
9a5fa6e9 10312006-09-20 Ludovic Courtès <ludovic.courtes@laas.fr>
a17d2654
LC
1032
1033 * srfi-14.c: Include <config.h>. Define `_GNU_SOURCE'.
1034 (make_predset, define_predset, make_strset, define_strset, false,
1035 true): Removed.
1036 (SCM_CHARSET_UNSET, CSET_BLANK_PRED, CSET_SYMBOL_PRED,
1037 CSET_PUNCT_PRED, CSET_LOWER_PRED, CSET_UPPER_PRED,
1038 CSET_LETTER_PRED, CSET_DIGIT_PRED, CSET_WHITESPACE_PRED,
1039 CSET_CONTROL_PRED, CSET_HEX_DIGIT_PRED, CSET_ASCII_PRED,
1040 CSET_LETTER_AND_DIGIT_PRED, CSET_GRAPHIC_PRED, CSET_PRINTING_PRED,
1041 CSET_TRUE_PRED, CSET_FALSE_PRED, UPDATE_CSET): New macros.
1042 (define_charset, scm_srfi_14_compute_char_sets): New functions.
1043 (scm_init_srfi_14): Use `define_charset ()' instead of
1044 `define_predset ()' and `define_strset ()'.
1045
1046 * srfi-14.h (scm_c_init_srfi_14): Removed.
1047 (scm_srfi_14_compute_char_sets): New declaration.
1048
1049 * posix.h: Include "srfi-14.h".
1050 (scm_setlocale): Invoke `scm_srfi_14_compute_char_sets ()' after a
1051 successful `setlocale ()' call.
1052
8ab3d8a0
KR
10532006-09-08 Kevin Ryde <user42@zip.com.au>
1054
1055 * socket.c (scm_init_socket): Add MSG_DONTWAIT.
1056 (scm_recvfrom): Update docstring from manual.
1057
418122ce
RB
10582006-08-31 Rob Browning <rlb@defaultvalue.org>
1059
1060 * ports.c (scm_c_port_for_each): Add a
1061 scm_remember_upto_here_1(ports) at the end of the function to fix
1062 a GC bug.
1063
b5944f66
NJ
10642006-08-28 Neil Jerram <neil@ossau.uklinux.net>
1065
1066 * backtrace.c (scm_display_backtrace_with_highlights): Minor
1067 improvements to docstring.
1068 (scm_backtrace_with_highlights): Analogous improvements.
1069
8ab3d8a0
KR
10702006-08-12 Kevin Ryde <user42@zip.com.au>
1071
1072 * gen-scmconfig.h.in (SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT):
1073 New, set from configure.
1074 * gen-scmconfig.c (SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT): New output
1075 to scmconfig.h.
1076 * pthread-threads.h (SCM_I_PTHREAD_ONCE_INIT): Use
1077 SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT to cope with Solaris.
1078 Reported by Claes Wallin.
1079
b0b0deff
NJ
10802006-08-11 Neil Jerram <neil@ossau.uklinux.net>
1081
1082 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
1083 frame, not a stack).
1084
8ab3d8a0
KR
10852006-07-25 Kevin Ryde <user42@zip.com.au>
1086
1087 * threads.c (get_thread_stack_base): Restrict HAVE_PTHREAD_GETATTR_NP
1088 on pthreads version, since pthread_getattr_np not available on solaris
1089 and macos. Reported by Claes Wallin.
1090
10912006-07-24 Kevin Ryde <user42@zip.com.au>
1092
1093 * filesys.c (dirfd): Test with #ifndef rather than HAVE_DIRFD, since
1094 it's a macro on MacOS X. Reported by Claes Wallin.
1095
1096 * posix.c (sethostname): Give prototype if not HAVE_DECL_SETHOSTNAME,
1097 for the benefit of Solaris 10. Reported by Claes Wallin.
1098
1099 * socket.c (scm_htonl, scm_ntohl): Use scm_to_uint32 rather than
1100 NUM2ULONG, to enforce 32-bit range check on systems with 64-bit long.
1101
11022006-07-21 Kevin Ryde <user42@zip.com.au>
1103
1104 * eval.c, filesys.c (alloca): Update <alloca.h> etc blob, per current
1105 autoconf recommendation. Should fix Solaris 10 reported by Claes
1106 Wallin.
1107
1108 * threads.c: Include <string.h>, needed for memset() which is used by
1109 FD_ZERO() on Solaris 10. Reported by Claes Wallin.
1110
b4912378
RB
11112006-07-18 Rob Browning <rlb@defaultvalue.org>
1112
1113 * continuations.c: Add __attribute__ ((returns_twice)) to the
1114 ia64_getcontext prototype so that gcc will make the right
1115 arrangements and avoid an illegal instruction during
1116 call-with-current-continuation.
1117
9a5fa6e9 11182006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
eaa94eaa
LC
1119
1120 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
1121 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
1122
8ab3d8a0
KR
11232006-07-08 Kevin Ryde <user42@zip.com.au>
1124
1125 * environments.c (core_environments_unobserve): Use if/else rather
1126 than ?: for "SET" bits, avoiding complaints from AIX xlc compiler
1127 about them not being rvalues. Reported by Mike Gran.
1128
1129 * Makefile.am (version.h): Don't use $< in an explicit rule, it's not
1130 portable and in particular fails on OpenBSD and AIX (see autoconf
1131 manual too). Reported by Mike Gran.
1132
11332006-06-25 Kevin Ryde <user42@zip.com.au>
1134
1135 * stime.c (bdtime2c): tm_gmtoff is seconds East, so take negative of
1136 tm:gmtoff which is seconds West. Reported by Aaron VanDevender.
1137 (bdtime2c): Test HAVE_STRUCT_TM_TM_GMTOFF for tm_gmtoff, rather than
1138 HAVE_TM_ZONE.
1139 (scm_strptime): Use tm_gmtoff from the strptime result when that field
1140 exists, it's set by glibc strptime "%s".
1141
9a5fa6e9 11422006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
d15ad007
LC
1143
1144 * eq.c: Include "struct.h", "goops.h" and "objects.h".
1145 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
1146 are not GOOPS instances.
1147 * struct.c: Include "eq.h".
1148 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
1149 hand-written code.
1150 (scm_i_struct_equalp): New.
1151 * struct.h (scm_i_struct_equalp): New declaration.
1152
c862d0e0
KR
11532006-06-06 Kevin Ryde <user42@zip.com.au>
1154
1155 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
1156 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
1157 reported by Mattias Holm.
b4912378 1158
c862d0e0
KR
11592006-06-03 Kevin Ryde <user42@zip.com.au>
1160
1161 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
1162 unused variable warning when elisp disabled. Reported by Ryan
1163 VanderBijl.
1164
1165 * throw.c (scm_handle_by_message): Add dummy return value to avoid
1166 compiler warning on cygwin. Reported by Ryan VanderBijl.
1167
1168 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
1169 duplicate of EXTRA_DOT_DOC_FILES.
1170 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
1171 Add scmconfig.h to dependencies, since these all run cpp. Helps a
1172 parallel "make -j2". Reported by Mattias Holm.
1173
11742006-05-30 Kevin Ryde <user42@zip.com.au>
1175
1176 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
1177 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
1178 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
1179 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
1180 port type descriptor, same as scm_make_port_type return value.
1181
af4f8612
MV
11822006-05-30 Marius Vollmer <mvo@zagadka.de>
1183
1184 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
1185 of the arguments is a array. This allows vectors to be equal to
1186 one-dimensional arrays.
1187
18bffcd0
MV
11882006-05-29 Marius Vollmer <mvo@zagadka.de>
1189
1190 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
1191 that we have a pair before accessing its cdr. Thanks to Bill
1192 Schottstaedt!
1193
c862d0e0
KR
11942006-05-28 Kevin Ryde <user42@zip.com.au>
1195
1196 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
1197 by "The Senator".
1198
11992006-05-27 Marius Vollmer <mvo@zagadka.de>
b0c0a310
MV
1200
1201 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
1202 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
1203
c862d0e0
KR
12042006-05-26 Kevin Ryde <user42@zip.com.au>
1205
1206 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
1207 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
1208 Reported by "The Senator".
1209 For select and ioctl, move fdes into those conditionals, to avoid
1210 unused variable warning when neither of those used.
1211
12122006-05-23 Kevin Ryde <user42@zip.com.au>
1213
1214 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
1215 It's unused and will be in stdio.h anyway (if it's anywhere).
1216
12172006-05-20 Kevin Ryde <user42@zip.com.au>
1218
1219 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
1220 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
1221
1222 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
1223 symlink). Probably can't create symlinks with mknod anyway though.
1224
1225 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
1226 generation.
1227
12282006-05-15 Kevin Ryde <user42@zip.com.au>
1229
1230 * simpos.c, simpos.h (scm_primitive__exit): New function.
1231 (scm_primitive_exit): Update docstring, no longer the best exit after
1232 a fork.
1233
12342006-05-09 Kevin Ryde <user42@zip.com.au>
1235
1236 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
1237 rather than converting to doubles, to avoid inf or nan when the inputs
1238 are too big for a double but the quotient does fit. This affects
1239 conversions exact->inexact of big fractions.
1240
1241 * filesys.c (scm_open_fdes): Use open64.
1242 (scm_init_filesys): Add O_LARGEFILE.
1243
1244 * ports.c (scm_seek): Use lseek64.
1245 (scm_truncate_file): Use ftruncate64.
1246
4a342b19
MV
12472006-05-08 Marius Vollmer <mvo@zagadka.de>
1248
1249 * private-gc.h (CELL_P): Also check that the potential pointer is
1250 correctly aligned for a cell. Thanks to Miroslav Lichvar!
1251
c862d0e0
KR
12522006-04-18 Rob Browning <rlb@defaultvalue.org>
1253
1254 * _scm.h: Add back error if the size of off_t is unknown. The bug
1255 was actually in guile-readline's configuration.
1256
12572006-04-18 Kevin Ryde <user42@zip.com.au>
1258
1259 * posix.c (scm_mkstemp): Update docstring from the manual, in
1260 particular file mode 0600 is not guaranteed.
1261
281ab5e2
KR
12622006-04-17 Kevin Ryde <user42@zip.com.au>
1263
1264 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
1265 size, to help the guile-readline build where off_t is unused.
1266
2b829bbb
KR
12672006-04-16 Kevin Ryde <user42@zip.com.au>
1268
1269 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
1270 (scm_readdir): Use readdir64.
1271 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
1272 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
1273 and ftruncate take off_t not size_t.
1274 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
1275 available.
1276
12772006-04-06 Kevin Ryde <user42@zip.com.au>
1278
1279 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
9a5fa6e9 1280 instead of toggling it. Reported by Ludovic Courtès.
2b829bbb
KR
1281
12822006-03-26 Marius Vollmer <mvo@zagadka.de>
1283
1284 * threads.c (get_thread_stack_base): Use scm_get_stack_base
1285 instead of accessing __libc_stack_end directly, and only do this
1286 when pthread_attr_getstack is known not to work for the main
1287 thread or when not using pthreads at all.
1288
1289 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
1290 unknown instead of returning NULL.
1291
9a5fa6e9 12922006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1293
1294 * numbers.c (scm_i_mem2number): Renamed to
1295 scm_c_locale_stringn_to_number.
1296 * numbers.c, print.c, read.c: Updated callers.
1297 * numbers.h: Update function declaration.
1298
12992006-03-11 Neil Jerram <neil@ossau.uklinux.net>
1300
1301 * unif.c (string_set): Don't return in a void function. (Reported
1302 by Mike Gran.)
1303
1304 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
1305 rather than void*, so we can do pointer arithmetic on it.
1306 (Reported by Mike Gran.)
1307 (s_scm_uniform_vector_write): Ditto.
1308
13092006-03-10 Neil Jerram <neil@ossau.uklinux.net>
1310
1311 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
1312 oldra is not an array. (Reported by Steve Juranich.)
1313
1314 * threads.c (do_unlock): Renamed from "unlock", which is defined
1315 in unistd.h on QNX. (Reported by Matt Kraai.)
1316
13172006-03-04 Kevin Ryde <user42@zip.com.au>
1318
1319 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
1320 not SCM_CRITICAL_SECTION_START.
1321
1322 * eval.c, posix.c: Change comments from C++ to C style. Reported by
1323 Mike Gran.
1324
13252006-02-28 Kevin Ryde <user42@zip.com.au>
1326
1327 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
1328
13292006-02-26 Kevin Ryde <user42@zip.com.au>
1330
1331 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
1332 NAME_MAX is not available, which is so on Solaris 10. Report and help
1333 by Bill Schottstaedt.
1334
1335 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
1336 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
1337 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
1338 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
1339 use "unsigned char", not signed char. This ensures comparisons are
1340 the same as `char<?' etc, and is also the same as guile 1.6 did.
1341 Reported by Sven Hartrumpf.
1342
4a9f83ff
MD
13432006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
1344
1345 * random.c: Test for SCM_HAVE_T_UINT64 instead of
1346 SCM_HAVE_T_INT64.
1347 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
1348 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
1349 scm_t_int32.
1350
29d8c124 13512006-01-04 Ludovic Courtès <ludovic.courtes@laas.fr>
4c7016dc
HWN
1352
1353 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
1354 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
1355 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
1356 Take into account SEG->SPAN when computing CELLS_SWEPT.
1357 (scm_i_sweep_segment): Take one more argument, similarly.
1358 (scm_i_sweep_all_segments): Likewise.
1359 (scm_i_sweep_some_segments): Likewise.
1360 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
1361 refer to SCM_GC_CELLS_COLLECTED.
1362
1363 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
1364 argument, an `scm_i_sweep_statistics' object.
1365 Change the way DELTA is collected: don't take into account
1366 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
1367
1368 * gc-malloc.c (scm_realloc): Pass an extra argument
1369 to `scm_i_sweep_all_segments ()'.
1370
1371 * gc.c (gc_start_stats): Updated accordingly.
1372 (gc_end_stats): Take an additional SWEEP_STATS argument.
1373 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
1374 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
1375 Decrement SCM_CELLS_ALLOCATED.
1376 (scm_i_gc): Likewise.
1377
1378 * private-gc.h (scm_i_sweep_*): Updated function
1379 prototypes accordingly.
1380 (scm_t_sweep_statistics): New type.
1381 (scm_i_sweep_statistics_init): New macro.
1382 (scm_i_sweep_statistics_sum): New macro
1383
9a5fa6e9 13842006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
2b829bbb
KR
1385
1386 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
1387 LEN. Without this, too much collectable memory gets unregistered,
1388 which results in an underflow of SCM_MALLOCATED in
1389 `decrease_mtrigger()'.
1390
1391 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
1392 equal to SCM_MALLOCATED.
1393
13942006-02-13 Marius Vollmer <mvo@zagadka.de>
1395
1396 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
1397 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
1398 configured --without-threads.
1399 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
1400
1aaa1c17
MV
14012006-02-12 Marius Vollmer <mvo@zagadka.de>
1402
1403 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
1404 filling when the fill parameter is omitted, as documented, but
1405 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
1406 can not store characters.
1407
d7c6575f
NJ
14082006-02-09 Neil Jerram <neil@ossau.uklinux.net>
1409
1410 * socket.c (scm_c_make_socket_address): Pass address_size pointer
1411 on to scm_fill_sockaddr call.
1412
43e01b1e
NJ
14132006-02-04 Neil Jerram <neil@ossau.uklinux.net>
1414
1415 * throw.h (scm_c_catch, scm_c_with_throw_handler,
1416 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
1417
1418 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
1419 (struct pre_unwind_data): New, replaces struct lazy_catch.
1420 (scm_c_catch): New, replaces scm_internal_catch as the primary
1421 catch API for C code; adds pre-unwind handler support.
1422 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
1423 compatibility.
1424 (tc16_pre_unwind_data, pre_unwind_data_print,
1425 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
1426 "lazy_catch" equivalents.
1427 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
1428 as the primary C API for a "lazy" catch.
1429 (scm_internal_lazy_catch): Now just a wrapper for
1430 scm_c_with_throw_handler, for back compatibility.
1431 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
1432 pre-unwind handler support.
1433 (scm_catch): Now just a wrapper for
1434 scm_catch_with_pre_unwind_handler, for back compatibility.
1435 (scm_with_throw_handler): New.
1436 (scm_lazy_catch): Update comment to say that the handler can
1437 return, and what happens if it does.
1438 (toggle_pre_unwind_running): New.
1439 (scm_ithrow): When identifying the throw target, take running
1440 flags into account. In general, change naming of things from
1441 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
1442 don't unwind the dynamic context first. Add dynwind framing to
1443 manage the running flag of a throw handler. If a lazy catch or
1444 throw handler returns, rethrow the same exception again. Add
1445 pre-unwind support to the normal catch case (SCM_JMPBUFP).
1446
1447 * root.c (scm_internal_cwdr): Add NULL args to
1448 scm_i_with_continuation_barrier call.
1449
1450 * dynwind.c: Change comment mentioning lazy-catch to mention
1451 pre-unwind data and throw handler also.
1452
1453 * continuations.h (scm_i_with_continuation_barrier): Add
1454 pre-unwind handler args.
1455
1456 * continuations.c (scm_i_with_continuation_barrier): Add
1457 pre-unwind handler args, and pass on to scm_c_catch (changed from
1458 scm_internal_catch).
1459 (c_handler): Remove scm_handle_by_message_noexit call.
1460 (scm_c_with_continuation_barrier): Call
1461 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1462 as the pre-unwind handler.
1463 (scm_handler): Remove scm_handle_by_message_noexit call.
1464 (s_scm_with_continuation_barrier): Call
1465 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
1466 as the pre-unwind handler.
1467
2b829bbb
KR
14682006-02-04 Kevin Ryde <user42@zip.com.au>
1469
1470 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
1471
72098928
KR
14722006-02-03 Kevin Ryde <user42@zip.com.au>
1473
1474 * list.c, list.h (scm_list): Restore this function for use from C.
1475 It's a complete no-op but in theory might used by someone.
1476
aa092c5d
MV
14772006-01-30 Marius Vollmer <mvo@zagadka.de>
1478
1479 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
1480 so that it gets unlocked in all cases.
1481 (SCM_APPLY, CEVAL): Likewise.
1482
661ae7ab
MV
14832006-01-29 Marius Vollmer <mvo@zagadka.de>
1484
ee51ba31
MV
1485 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
1486 scm_is_typed_array instead.
1487
661ae7ab
MV
1488 Renamed the "frames" that are related to dynamic-wind to "dynamic
1489 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
1490 Updated documentation.
1491
99e370f6
MV
1492 Disabled "futures":
1493
1494 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
1495 * eval.c, init.c: Comment out all 'future' related things.
1496
15ccf10b
MV
14972006-01-28 Marius Vollmer <mvo@zagadka.de>
1498
1499 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
1500 to inline.h to make it inline.
1501
9a5fa6e9 15022005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
fd0a5bbc
HWN
1503
1504 * strings.c (scm_i_take_stringbufn): New.
1505 (scm_i_c_take_symbol): New.
1506 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
1507
1508 * strings.h (scm_i_c_take_symbol): New.
1509 (scm_i_take_stringbufn): New.
1510
1511 * symbols.c (lookup_interned_symbol): New function.
1512 (scm_i_c_mem2symbol): New function.
1513 (scm_i_mem2symbol): Use `lookup_symbol ()'.
1514 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
1515 creating a new Scheme string.
1516 (scm_from_locale_symboln): Likewise.
1517 (scm_take_locale_symbol): New.
1518 (scm_take_locale_symboln): New.
1519
1520 * symbols.h (scm_take_locale_symbol): New.
1521 (scm_take_locale_symboln): New.
1522
2ca2ffe6
HWN
15232006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1524
1525 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
1526 free_count.
1527
c255614e
HWN
15282005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
1529
1530 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
1531 upon error
1532
29295b0c
NJ
15332005-12-29 Neil Jerram <neil@ossau.uklinux.net>
1534
9a5fa6e9 1535 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
29295b0c
NJ
1536 the GC when allocated_fluids_len is zero.
1537
2824f4dc
NJ
15382005-12-14 Neil Jerram <neil@ossau.uklinux.net>
1539
ec3a8ace
NJ
1540 * load.c (the_reader, the_reader_fluid_num): New.
1541 (scm_primitive_load): Support custom reader.
1542 (scm_init_load): Init the_reader and the_reader_fluid_num; export
1543 the_reader as `current-reader'.
1544
2824f4dc
NJ
1545 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
1546 (rather than an uninitialized pointer on the stack).
1547
d9c36d2a
MV
15482005-12-07 Marius Vollmer <mvo@zagadka.de>
1549
6a88895b
MV
1550 Reported by Bruce Korb:
1551
1552 * init.c (invoke_main_func): Don't call exit here. Throws that
1553 are only caught by scm_with_guile will bypass us and would cause
1554 scm_boot_guile to return erroneously.
1555 (scm_boot_guile): Expect scm_with_guile to return and call exit
1556 here, passing it an appropriate exit code.
1557
1558 From Andy Wingo:
d9c36d2a
MV
1559
1560 * script.c (scm_find_executable): Compile fix -- fgetc returns an
1561 unsigned char cast to an int, or -1 for EOS.
1562
b54df254
MV
15632005-12-06 Marius Vollmer <mvo@zagadka.de>
1564
08f489c9
MV
1565 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
1566 non-const.
9a5fa6e9 1567 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
08f489c9 1568
b54df254
MV
1569 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
1570 scm_enter_guile): Removed from public API. See comment at
1571 scm_without_guile for the rationale.
1572
1573 * scmsigs.c (read_without_guile): New.
1574 (signal_delivery_thread): Use it instead of
1575 scm_leave_guile/read/scm_enter_guile.
1576
9d9ce2b5
MV
1577 From Stephen Compall:
1578
1579 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
1580 (CEVAL): Evaluate SRFI 61 cond clauses.
1581
9a5fa6e9 15822005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
9fb5c8f9
NJ
1583
1584 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
1585 This was typically hit when running `gc-live-object-stats' right
1586 after starting Guile.
1587
efeac8ae
KR
15882005-11-30 Kevin Ryde <user42@zip.com.au>
1589
1590 * srfi-13.c (scm_string_append_shared): No copying if just one
1591 non-empty string in args.
1592
606183ba
KR
15932005-11-26 Kevin Ryde <user42@zip.com.au>
1594
1595 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
9a5fa6e9 1596 by Ludovic Courtès.
606183ba
KR
1597
1598 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
1599 "register".
1600
1601 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
1602 scm_malloc returning NULL, it never does that.
1603 * putenv.c (putenv): Likewise.
1604
1605 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
1606 much too big to want to inline.
1607
9a5fa6e9 16082005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
dbb5de29
NJ
1609
1610 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
1611 the value at its top. This fixes a reference leak.
1612 (PUSH_REF): Perform `pstate->top++' after calling
1613 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
1614 effects.
1615
9a5fa6e9 16162005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
3f98874a
NJ
1617
1618 * gc.c (scm_weak_vectors): Removed.
1619
f07d2b20
KR
16202005-11-12 Kevin Ryde <user42@zip.com.au>
1621
1622 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
9a5fa6e9 1623 by Ludovic Courtès.
f07d2b20 1624
bedd3f5f
MV
16252005-11-07 Marius Vollmer <mvo@zagadka.de>
1626
1627 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
1628 SCM_CRITICAL_SECTION_START/END since the code inside the critical
1629 section might exit non-locally.
1630
7c9c0169
NJ
16312005-11-04 Neil Jerram <neil@ossau.uklinux.net>
1632
1633 * eval.c (sym_instead): New symbol.
1634 (ENTER_APPLY): Remove optional use of a continuation when making
1635 trap call.
1636 (scm_debug_opts): Change doc for 'cheap option to make clear that
1637 it is now obsolete.
1638 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
1639 making trap calls, and implement substitution of eval expressions
1640 and return values using the values that the trap call handlers
1641 return.
1642
1643 * debug.h (SCM_CHEAPTRAPS_P): Removed.
1644
9a5fa6e9 16452005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
64cdbfc7
KR
1646
1647 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
1648 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
1649 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
1650 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
1651 scm_c_make_socket_address): New functions.
1652 * socket.h: Add prototypes.
1653
fc9f596c
KR
16542005-10-24 Kevin Ryde <user42@zip.com.au>
1655
1656 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
1657 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
1658 POSIX spec examples, the latter are not available on for instance
1659 NetBSD.
1660
1661 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
1662 posix.texi.
1663
1664 * stime.c (scm_strftime): Update docstring from posix.texi.
1665
0460c6e1
MV
16662005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1667
1668 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
1669
1670 * null-threads.h, pthread-threads.h
1671 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
1672 (scm_i_pthread_mutexattr_recursive): New.
1673
1674 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
1675 (scm_i_critical_section_mutex): Do not initialize statically.
1676 (scm_threads_prehistory): Initialize
1677 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
1678 here.
1679
1680 * eval.c (source_mutex): Do not initialiaze statically.
1681 (scm_init_eval): Do it here, using
1682 scm_i_pthread_mutexattr_recursive.
1683
7b4a9e52
MV
16842005-09-05 Marius Vollmer <mvo@zagadka.de>
1685
1686 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
1687 New.
1688 (sym_reader): New.
1689 (scm_print_opts): Added "quote-keywordish-symbols" option.
1690 (quote_keywordish_symbol): New, for evaluating the option.
1691 (scm_print_symbol_name): Use it.
1692 (scm_init_print): Initialize new option to sym_reader.
1693
5defc05d
NJ
16942005-08-15 Neil Jerram <neil@ossau.uklinux.net>
1695
1696 * eval.c (eval_letrec_inits): New.
1697 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
1698
036482e9
MV
16992005-08-12 Marius Vollmer <mvo@zagadka.de>
1700
1701 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
1702 Peter Gavin!
1703
5c347f8c
KR
17042005-08-12 Kevin Ryde <user42@zip.com.au>
1705
1706 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
1707
bc721aa2
KR
17082005-08-06 Kevin Ryde <user42@zip.com.au>
1709
1710 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
1711 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
1712 scm_string_index, scm_string_index_right, scm_string_skip,
1713 scm_string_skip_right, scm_string_count, scm_string_map,
1714 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
1715 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
1716 procedures called in loops.
1717
126c81db
KR
17182005-08-02 Kevin Ryde <user42@zip.com.au>
1719
1720 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
1721 avoid lots of copying where previoulsy growing by only 80 bytes at a
1722 time.
1723
7f278dc6
MV
17242005-08-01 Marius Vollmer <mvo@zagadka.de>
1725
1726 * modules.h, modules.c (scm_eval_closure_module): Removed, we
1727 already have scm_lookup_closure_module, which does the same thing.
1728
cb5c4b07
MV
17292005-08-01 Marius Vollmer <mvo@zagadka.de>
1730
1731 New marking algorithm for weak hashtables that fixes the problem
1732 that references from the non-weak value to the associated weak
1733 key (for example) would prevent the entry from ever being dropped.
1734
1735 Guardians have been changed back to their original semantics and
1736 are no longer greedy and no longer drop cycles.
1737
1738 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
1739 hashtable and guardian machinery but call the relevant functions
1740 directly.
1741
1742 * guardians.h, guardians.c, deprecated.h,
1743 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
1744 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
1745 Deprecated and moved into deprecated.[ch].
1746
1747 * guardians.h, guardians.c: Mostly rewritten.
1748 (scm_i_init_guardians_for_gc,
1749 scm_i_identify_inaccessible_guardeds,
1750 scm_i_mark_inaccessible_guardeds): New.
930888e8 1751 (scm_make_guardian): Removed greedy_p argument.
cb5c4b07
MV
1752
1753 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
1754 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
1755 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
1756 (scm_weaks_prehistory): Removed.
1757 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
1758 scm_i_mark_weak_vectors_non_weaks,
1759 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
1760 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
1761 scm_scan_weak_vectors): Removed.
1762
1763 * hashtab.h (scm_i_scan_weak_hashtables): New.
1764 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
1765 SCM_WVECTF_NOSCAN.
1766 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
1767 t->n_items.
1768 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
1769 to latter. Do not scan the alists themselves, this is done by the
1770 weak vector code now. Just update the element count.
1771
1772 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
1773 to latter. The type is now only part of the cell word.
1774 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
1775
1776 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
1777
3e2073bd
MD
17782005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
1779
1780 Some changes towards making it possible to run Guile on the EM64T
1781 platform.
1782
1783 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
1784 mallocating for (unsigned long *bounds).
1785
1786 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
1787 scm_t_bits before storing them in the type word.
1788
1789 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
1790 scm_t_bits to int.
1791
e8ac8e75
KR
17922005-07-12 Kevin Ryde <user42@zip.com.au>
1793
1794 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
1795 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
1796 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
1797 than scm_makfrom0str.
1798 Reported by Ken Raeburn.
1799
1800 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
1801 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
1802 returning SCM_GC_CARD_BVEC.
1803
1804 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
1805 rather than latin-1 acute accent, the latter may not print on all
1806 terminals.
1807
1808 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
1809 trailing deletions, so as to return a substring if those are the only
1810 changes.
1811
adc0677d
KR
18122005-07-10 Kevin Ryde <user42@zip.com.au>
1813
1814 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
1815 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
1816 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
1817 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
1818
8fecbb19
HWN
18192005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
1820
1821 * gc-card.c (scm_i_card_statistics): init tag.
1822
1823 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
1824
fc9c5d06
HWN
18252005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
1826
8fecbb19
HWN
1827 * fports.c (s_scm_open_file): add the b flag for binary to the doc
1828 string.
fc9c5d06 1829
08fce816
KR
18302005-06-25 Kevin Ryde <user42@zip.com.au>
1831
1832 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
1833 last change, use plain copy-on-write substrings, the individual
1834 descriptions in the srfi don't mention shared storage (only the
1835 introduction does).
1836
1837 * strings.c (scm_take_locale_stringn): Use realloc to make room for
1838 null-terminator, rather than mallocing a whole new block.
1839 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
1840
fc4abd0e
MV
18412005-06-12 Marius Vollmer <mvo@zagadka.de>
1842
e3da8a30
MV
1843 * ramap.c (scm_array_index_map_x): First test for real arrays,
1844 then check for generalized vectors. This ensures that the
1845 generalized vector case need only work with zero-origin ranges.
12097c77
MV
1846 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
1847 to access the target array, making these functions work with all
1848 kinds of arrays, not just bit arrays.
e3da8a30 1849
fc4abd0e
MV
1850 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
1851 gh_list.c, gh_predicates.c: Deprecated everything.
1852
1853 * environments.c (environment_default_folder,
1854 environment_default_observer): Do not use gh_call3, gh_call1.
1855
e4da0740
HWN
18562005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
1857
1858 * modules.c (s_scm_eval_closure_module): new function. Return the
1859 module inside an eval-closure.
1860
1861 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
1862 table. This means that procedure properties are GC'd if the
1863 procedure dies.
1864
27667158
KR
18652005-06-11 Kevin Ryde <user42@zip.com.au>
1866
1867 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
1868 charset cases, count chars kept and build a string in a second pass,
1869 rather than using a cons cell for every char kept. Use a shared
1870 substring when nothing removed (such sharing is allowed by the srfi).
1871
8a00ba71
HWN
18722005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
1873
1874 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
1875 string, so live object stats can be sorted with string<?.
1876
a677679f
MV
18772005-06-06 Marius Vollmer <mvo@zagadka.de>
1878
2ff668b0
MV
1879 * print.c (iprin1): When writing a string, collect all characters
1880 that can be printed directly into one call to scm_lfwrite.
1881 Previously, every character was output with its own call to
1882 write(2) on unbuffered ports.
1883
589f22f6
MV
1884 * eval.c (scm_eval_options_interface): Use
1885 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
1886 and SCM_CRITICAL_SECTION_END.
1887
a677679f
MV
1888 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
1889 check for generalized vectors. This ensures that the generalized
1890 vector case need only work with zero-origin ranges.
1891
f8cda9ee
KR
18922005-06-06 Kevin Ryde <user42@zip.com.au>
1893
1894 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
1895 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
1896 matched.
1897
cdac1be4
MV
18982005-06-05 Marius Vollmer <mvo@zagadka.de>
1899
6642f7ac
MV
1900 * eval.c: Added comment on how to make case 1.1 of
1901 r5rs_pitfall.test succeed.
1902
cdac1be4
MV
1903 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
1904
1905 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
1906
1907 * socket.c: Remove obsolete comment about socklen_t.
1908 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
1909
1910 * numbers.h (isnan)[__MINGW32__]: Remove.
1911
1912 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
1913 DEFAULT_INCLUDES when cross compiling.
1914
1915 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
1916
a677679f 1917 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
cdac1be4
MV
1918 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
1919 from Jan's patch.)
1920
9e664475
MV
19212005-05-22 Marius Vollmer <mvo@zagadka.de>
1922
188d0c5e
MV
1923 * unif.c (scm_make_shared_array): Add old base to new base since
1924 scm_array_handle_pos does not include the base.
1925 (scm_aind): Likewise.
1926
9e664475
MV
1927 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
1928 output port.
1929
5a6d139b
NJ
19302005-05-12 Neil Jerram <neil@ossau.uklinux.net>
1931
1932 Mac OS X compile warning fixes, reported by Richard Todd.
1933
1934 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
1935 that it is signed.
1936
1937 * strports.c (st_resize_port): Add unsigned char cast.
1938 (scm_mkstrport): Make read/write_buf cast unsigned.
1939
1940 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
1941
1942 * rdelim.c (scm_read_line): Initialize slen.
1943
1944 * load.c (scm_search_path): Remove weird >=1, and add
1945 parentheses to clarify conditions.
1946
1947 * hash.c (scm_hasher): Add const unsigned char cast.
1948
1949 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
1950
b01532af
NJ
19512005-05-11 Neil Jerram <neil@ossau.uklinux.net>
1952
9a5fa6e9 1953 Fix C99isms reported by Ludovic Courtès:
b01532af
NJ
1954
1955 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
1956 code.
1957
1958 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
1959 of code.
1960
1961 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
1962 of code.
1963 (scm_i_card_statistics): Add block for declarations of tag_as_scm
1964 and current.
1965
229a0710
NJ
19662005-05-10 Neil Jerram <neil@ossau.uklinux.net>
1967
1968 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
1969 compile warning reported by Werner Scheinast.
1970
645dd3fc
HWN
19712005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
1972
80038021
HWN
1973 * list.h: remove scm_list()
1974
645dd3fc
HWN
1975 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
1976 SCM_DEBUG_CELL_ACCESSES
1977 (FLUID_NEXT_LOC): idem.
1978
9a68a4a8
KR
19792005-04-30 Kevin Ryde <user42@zip.com.au>
1980
1981 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
1982 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
1983 zero when re==0 and im<0. Reported by Jean Crepeau.
1984
0640cdaa
KR
19852005-04-25 Kevin Ryde <user42@zip.com.au>
1986
1987 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
4d54ee35
KR
1988 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
1989 few sensible uses (like filling with a random number generator say),
1990 but has been allowed in the past and so should be kept.
0640cdaa 1991
c0b85e9c
KR
19922005-04-23 Kevin Ryde <user42@zip.com.au>
1993
1994 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
1995 scm_hash_fn_remove_x.
1996
1997 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
1998 the caller when cons* is reached through apply.
1999
2000 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
2001 list is called using apply, under the debugging evaluator.
2002 (scm_list): Remove.
2003
c51682b4
KR
2004 * list.c, list.h (scm_make_list): New code, moving make-list from
2005 boot-9.scm.
8cb2eff8 2006
c0575bde
KR
20072005-04-14 Kevin Ryde <user42@zip.com.au>
2008
2009 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
2010 converted from scheme code in boot-9.scm.
2011
47a298d9
KR
20122005-04-11 Kevin Ryde <user42@zip.com.au>
2013
2014 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
2015 Validate list argument, scm_string_append and scm_string_append_shared
2016 don't do that to their rest argument (in a normal build).
2017
8ea3dc2e
MV
20182005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2019
2020 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
2021 closure can not be stored since it is no longer valid at GC time.
2022 (make_hash_table): Initialize 'hash_fn' field.
2023 (scm_i_rehash): Only store hash_fn in hash table when closre is
2024 NULL.
2025 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
2026 non-NULL. Always use a NULL closure.
2027 (scm_hash_fn_create_handle_x): Also rehash when table contains too
2028 few entries.
2029
08d2020d
MV
20302005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2031
2032 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
2033 argument; always use scm_delq_x. The delete_fn function works on
2034 the handle, not the key, and it therefore makes no sense to make
2035 it configurable. Changed all callers.
2036 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
2037 (scm_hash_clear): Accept plain vectors as hashtables.
2038 (scm_delx_x): Removed.
2039
cb975c21
HWN
20402005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
2041
2042 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
2043 compatibility with gcc -std=c99.
2044
4c908f2c
MD
20452005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2046
2047 * async.h (scm_mask_ints): Removed left over reference to
2048 scm_root.
2049
2050 * threads.c: Removed fprintf debug statements.
2051
d193b04b
NJ
20522005-03-24 Neil Jerram <neil@ossau.uklinux.net>
2053
2054 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
2055
c29748cd
NJ
20562005-03-23 Neil Jerram <neil@ossau.uklinux.net>
2057
2058 * debug.c (scm_make_memoized): Remove unnecessary critical
2059 section, and simplify by using SCM_RETURN_NEWSMOB.
2060
e654b062
MD
20612005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2062
2063 * strings.h (SCM_STRING_UCHARS): Added missing argument.
2064
4bc6f1c6
KR
20652005-03-18 Kevin Ryde <user42@zip.com.au>
2066
2067 * arbiters.c (FETCH_STORE) [generic C]: Should be
9a5fa6e9 2068 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
4bc6f1c6 2069
f1531813
KR
20702005-03-13 Kevin Ryde <user42@zip.com.au>
2071
2072 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
2073 srfi-60.
2074
2075 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
2076 because OR-ing bits into a negative can reduce the value to an inum.
2077
2078 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
2079 casting inum to double since that can lose precision.
2080
a9fae247
MV
20812005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2082
2083 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
2084 (guilify_self_1): Initialize it.
2085
2086 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
2087 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
2088 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
2089 field.
2090 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
2091 recursively.
2092 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
2093 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
2094 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
2095 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
2096 scm_after_gc_c_hook here.
2097 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
2098 scm_after_gc_c_hook when a full GC has in fact been performed.
2099 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
2100
2101 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
2102 scm_gc_heap_lock.
2103
2104 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
2105 scm_gc_running_p while the scm_i_sweep_mutex is locked.
2106
2107 * inline.h (scm_cell, scm_double_cell): Do not check
2108 scm_gc_running_p, allocation during sweeping is OK.
2109
2110 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
2111 not set scm_block_gc.
2112
2113 * init.c (scm_i_init_guile): Do not set scm_block_gc.
2114
2115 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
2116 instead of scm_malloc. The latter can not be used during GC.
2117
d1c38e11
MV
21182005-03-09 Marius Vollmer <mvo@zagadka.de>
2119
2120 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
2121 years.
2122
99ec43c1
MV
21232005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2124
2125 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
2126 scm_gc_running_p. Sweeping can happen in parallel with
2127 allocation.
2128
2129 * inline.h: Updated comments for current threading implementation.
2130
2131 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
2132 (scm_i_thread): Removed unused signal_asyncs field.
2133 (threads_mark): Do not mark it.
2134 (guilify_self_1): Do not initialize it. Do initialize
2135 continuation_root field.
2136 (do_thread_exit): Do not remove thread from all_threads list.
2137 (on_thread_exit): Do it here, after leaving guile mode.
2138 (sleep_level): Removed.
2139 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
2140 returning. Do not support recursive sleeps.
2141 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
2142 entry. Do not support recursive sleeps.
2143
2144 * fluids.c (ensure_state_size, ensure_all_state_sizes,
2145 resize_all_states): Collapsed ensure_state_size and
2146 ensure_all_state_sizes into one function named resize_all_states.
2147 Allocate new vectors outside of single threaded region. Do only
2148 simple things inside that region.
2149 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
2150 while adding to the global lists.
2151
2152
461f34aa
MV
21532005-03-08 Marius Vollmer <mvo@zagadka.de>
2154
2155 libltdl is no longer distributed. We expect it to be installed
2156 already.
2157
2158 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
2159 (libguile_la_LIBADD): Removed @LIBLTDL@.
2160
4e047c3e
MV
21612005-03-07 Marius Vollmer <mvo@zagadka.de>
2162
2163 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
2164 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
2165 they also block/unblock execution of asyncs and call
2166 scm_async_click which is declared in async.h but threads.h can not
2167 include async.h since async.h already includes threads.h.
2168 (scm_i_critical_section_level): New, for checking mistakes in the
2169 use of the SCM_CRITICAL_SECTION_* macros.
2170 (scm_i_critical_section_mutex): Make it a recursive mutex so that
2171 critical sections can be nested.
2172
2173 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
2174 not zero.
2175
2176 * threads.h, threads.c (scm_frame_lock_mutex): New.
2177 (scm_frame_critical_section): Take mutex as argument.
2178 (framed_critical_section_mutex): New, used as default for above.
2179 (scm_init_threads): Initialize it.
2180 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
2181 scm_i_critical_section_mutex; both are initialized statically.
2182
2183 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
2184 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
b9d9ad3a
MV
2185 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
2186 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
4e047c3e
MV
2187
2188 * debug.c (scm_debug_options): Replace
2189 SCM_CRITICAL_SECTION_START/END with a frame and
2190 scm_frame_critical_section.
2191
2192 * continuations.c (scm_make_continuation): No longer a critical
2193 section.
2194 (scm_dynthrow): Abort when scm_i_critical_section_level is
2195 not zero.
2196
d0a45bff
MV
21972005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2198
db6673e5
MV
2199 * threads.c (scm_try_mutex): Renamed argument for consistency.
2200
d0a45bff
MV
2201 * root.c (scm_call_with_dynamic_root): New docstring.
2202
2203 * eval.c: Define _GNU_SOURCE.
2204
9de87eea
MV
22052005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2206
2207 Big merge from the mvo-thread-cleanup branch. The main changes
2208 are:
2209
2210 - The dynamic roots functionality has been split into dynamic
2211 states and continuations barriers. Fluids have been
2212 reimplemented and can now be garbage collected.
2213
2214 - Initialization of Guile now works in a multi-thread friendly
2215 manner. Threads can freely enter and leave guile mode.
2216
2217 - Blocking on mutexes or condition variables or while selecting
2218 can now be reliably interrupted via system asyncs.
2219
2220 - The low-level threading interface has been removed.
2221
2222 - Signals are delivered via a pipe to a dedicated 'signal delivery
2223 thread'.
2224
2225 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
2226
2227 * throw.c (scm_handle_by_message): Exit only the current thread,
2228 not the whole process.
2229 (scm_handle_by_message_noexit): Exit when catching 'quit.
2230
2231 * scmsigs.c (take_signal, signal_delivery_thread,
2232 start_signal_delivery_thread, ensure_signal_delivery_thread,
2233 install_handler): Reimplemented signal delivery as explained in
2234 the comments.
2235
2236 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
2237 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
2238 scm_i_sched_yield, scm_i_pthread_sigmask,
2239 SCM_I_PTHREAD_MUTEX_INITIALIZER,
2240 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
2241 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
2242 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
2243 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
2244 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
2245 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
2246 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
2247 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
2248 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
2249 scm_i_pthread_key_create, scm_i_pthread_setspecific,
2250 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
2251 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
2252 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
2253 when using pthreads.
2254 * null-threads.c, null-threads.h: Provide dummy definitions for
2255 the above symbols when not using pthreads.
2256
2257 * modules.h, modules.c (scm_frame_current_module): New.
2258
2259 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
2260 instead of scm_internal_dynamic_wind.
2261
2262 * init.h, init.c (restart_stack, start_stack): Removed.
2263 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
2264 (scm_boot_guile_1): Removed.
2265 (scm_i_init_mutex): New.
2266 (really_cleanup_for_exit, cleanup_for_exit): New.
2267 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
2268 Moved around some init funcs. Call
2269 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
2270 with atexit.
2271
2272 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
2273 Use "!scm_is_eq" instead of "!=".
2274
2275 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
2276 SCM_USE_COOP_THREADS): Removed.
2277
2278 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
2279 maintained. Unlock scm_i_sweep_mutex before running
2280 scm_after_gc_c_hook.
2281 (scm_permanent_object): Allocate outside of critical section.
2282 (cleanup): Removed.
2283
2284 * fluids.h, fluids.c: Reimplemented completely.
2285 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
2286 SCM_FAST_FLUID_SET): Reimplemented as functions.
2287 (scm_is_fluid): New.
2288 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
2289 (scm_make_dynamic_state, scm_dynamic_state_p,
2290 scm_is_dynamic_state, scm_current_dynamic_state,
2291 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
2292 scm_c_with_dynamic_state, scm_with_dynamic_state,
2293 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
2294
2295 * feature.c (progargs_fluid): New.
2296 (scm_program_arguments, scm_set_program_arguments): Use it instead
2297 of scm_progargs.
2298 (scm_init_feature): Allocate it. Also, only add "threads" feature
2299 when SCM_USE_PTHREAD_THREADS is true.
2300
2301 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
2302 scm_make_rec_mutex, with all the consequences.
2303 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
2304 scm_internal_dynamic_wind. Handle dynamic states as second
2305 argument.
2306
2307 * threads.h, threads.c (scm_internal_select): Renamed to
2308 scm_std_select and discouraged old name.
2309 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
2310 and scm_std_usleep.
2311 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
2312 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
2313 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
2314 SCM_THREAD_DATA): Removed.
2315 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
2316 (scm_i_thread): New.
2317 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
2318 Use scm_assert_smob_type.
2319 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
2320 scm_thread_self, scm_thread_yield, scm_mutex_init,
2321 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
2322 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
2323 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
2324 scm_cond_init, scm_cond_destroy, scm_cond_wait,
2325 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
2326 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
2327 scm_thread_select): Removed. Replaced with scm_i_pthread
2328 functions as appropriate.
2329 (scm_in_guile, scm_outside_guile): Removed.
2330 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
2331 take a ticket.
2332 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
2333 New.
2334 (scm_i_frame_single_threaded): New.
2335 (scm_init_threads_default_dynamic_state): New.
2336 (scm_i_create_thread): Removed.
2337 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
2338 (scm_make_recursive_mutex): New.
2339 (scm_frame_critical_section): New.
2340 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
2341 latter, changed all uses.
2342 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
2343 scm_i_set_last_debug_frame): New, use them instead of scm_root
2344 stuff.
2345 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
2346 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
2347 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
2348 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
2349 (remqueue): Allow the removal of already removed cells. Indicate
2350 whether a real removal has happened.
2351 (scm_thread): Removed, replaced with scm_i_thread.
2352 (make_thread, init_thread_creatant): Removed.
2353 (cur_thread): Removed.
2354 (block_self, unblock_from_queue): New.
2355 (block, timed_block, unblock): Removed.
2356 (guilify_self_1, guilify_self_2, do_thread_exit,
2357 init_thread_key_once, init_thread_key,
2358 scm_i_init_thread_for_guile, get_thread_stack_base,
2359 scm_init_guile): New initialisation method.
2360 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
2361 thread creation.
2362 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
2363 "fair" to fat and implemented new semantics, including reliable
2364 interruption.
2365 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
2366 (scm_threads_mark_stacks): Explicitly mark handle.
2367 (scm_std_select): Allow interruption by also selecting on the
2368 sleep_pipe.
2369 (scm_i_thread_put_to_sleep): Handle recursive requests for
2370 single-threadedness.
2371 (scm_threads_prehistory, scm_init_threads): Put current thread
2372 into guile mode via guileify_self_1 and guileify_self_2,
2373 respectively.
2374
2375 * fluid.h (SCM_FLUIDP): Deprecated.
2376
2377 * coop-threads.c: Removed.
2378
2379 * continuations.h, continuations.c (scm_with_continuation_barrier,
2380 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
2381 New.
2382
2383 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
2384 (async_mutex): New.
2385 (scm_async_click): Protected with async_mutex. Do not deal with
2386 signal_asyncs, which are gone. Set cdr of handled async cell to
2387 #f.
2388 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
2389 current sleep.
2390 (scm_system_async_mark_for_thread): Do not use scm_current_thread
2391 since that might not work during early initialization.
2392
2393 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
2394 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
2395 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
2396 and SCM_CRITICAL_SECTION_END.
2397 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
2398 SCM_CRITICAL_SECTION_START/END.
2399
2400 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
2401 (libguile_la_SOURCES): Added null-threads.c
2402 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
2403 threads-plugin.c.
2404 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
2405
2406 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
2407 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
2408 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
2409 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
2410 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
2411 scm_make_root): Removed or deprecated. Replaced with references
2412 to the current thread, dynamic state, continuation barrier, or
2413 some fluid, as appropriate.
2414 (root_mark, root_print): Removed.
2415 (scm_internal_cwdr): Reimplemented guts with
2416 scm_frame_current_dynamic_state and
2417 scm_i_with_continuation_barrier.
2418 (scm_dynamic_root): Return current continuation barrier.
2419
2420
ad3d5a65
MV
24212005-02-28 Marius Vollmer <mvo@zagadka.de>
2422
2423 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
2424 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
2425 cleanliness.
2426 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
2427 IP_DROP_MEMBERSHIP.
2428 Thanks to Greg Troxel!
2429
73a90115
MD
24302005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2431
2432 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
2433 block.
2434
5d2cb3ab
MV
24352005-02-25 Marius Vollmer <mvo@zagadka.de>
2436
2437 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
2438 so that no two weak alist vectors share a spine.
2439 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
2440 during GC before inserting the new alist cell.
2441
838c4126
MV
24422005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2443
2444 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
2445 the hashtable.
2446 (scm_hash_fn_create_handle_x): Likewise.
2447 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
2448
29fed193
MD
24492005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2450
2451 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
2452 the prototypical examples mentioned in the old reference manual.
2453 Instead keep the old semantics of dispatching on type. (Yes, this
2454 is extremely ugly, but the whole point of keeping the deprecated
2455 interface is not to break old code.)
2456
9cc49060
MD
24572005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2458
2459 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
2460 scm_i_array_dims.
2461
8447f463
KR
24622005-01-28 Kevin Ryde <user42@zip.com.au>
2463
2464 * numbers.c (scm_ash): Rewrite using shifts, much faster than
2465 integer-expt and multiply/divide. Inexacts and fractions no longer
2466 supported (they happened to work before for left shifts, but not
2467 right). Don't really need inexacts and fractions, since ash is
2468 documented as a "bitwise operation", and all the rest of those only
2469 take exact integers.
2470
1367aa5e
HWN
24712005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
2472
856fca7e
HWN
2473 * gc-card.c (scm_i_card_statistics): map structs, closures and
2474 subrs to one tag.
2475
1367aa5e 2476 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
856fca7e 2477 (tag_table_to_type_alist): ignore unknown types.
1367aa5e
HWN
2478
2479 * gc-segment.c (scm_i_all_segments_statistics): new function.
2480 (scm_i_heap_segment_statistics): new function
2481
2482 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
2483 statistics on the number of live objects of each type.
2484
2485 * gc-card.c (scm_i_tag_name): new function.
2486 (scm_i_card_statistics): new function.
2487
333db3b8
KR
24882005-01-24 Kevin Ryde <user42@zip.com.au>
2489
2490 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
2491 POSIX and C99 don't document errno being set. Reported by Bruno
2492 Haible.
2493 (scm_flock): Update docstring from manual.
2494
8447f463
KR
2495 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
2496 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
2497 a 64-bit system.
2498
2499 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
2500 sa_handler, needs to be a long on 64-bit systems where int is only 32
2501 bits.
2502
88f59e53
MV
25032005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2504
0eeb2611
MV
2505 * environments.c (obarray_enter, obarray_replace): Call
2506 SCM_HASHTABLE_INCREMENT when adding a new entry.
2507
88f59e53
MV
2508 * objects.c: Include goops.h for the scm_class_of prototype.
2509
2510 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
2511 sizes to be smaller than the maximum lengths of vectors.
2512
219b2868
MV
25132005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2514
2515 * ports.c, smob.c: Include "libguile/goops.h".
2516
2517 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
2518 scm_class_char, scm_class_pair, scm_class_procedure,
2519 scm_class_string, scm_class_symbol,
2520 scm_class_procedure_with_setter, scm_class_primitive_generic,
2521 scm_class_vector, scm_class_null, scm_class_real,
2522 scm_class_complex, scm_class_integer, scm_class_fraction,
2523 scm_class_unknown, scm_port_class, scm_smob_class,
2524 scm_no_applicable_method, scm_class_of): Moved from objects to
2525 goops since they are only useable once goops has been loaded.
2526 (scm_classes_initialized): Removed.
2527 (scm_class_of): Do not check it.
2528 (create_standard_classes): Do not set it.
2529
009c6b9c
MV
25302005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2531
50472546
MV
2532 * objects.h, objects.c (scm_classes_initialized): New.
2533 (scm_class_of): Signal error when scm_classes_initialized is zero.
2534 * goops.c (create_standard_classes): Set scm_classes_initialized
2535 to one.
2536
009c6b9c
MV
2537 * random.c (scm_random_solid_sphere_x): Use
2538 scm_c_generalized_vector_length instead of
2539 scm_uniform_vector_length.
2540
7719cbe9
MV
25412005-01-16 Marius Vollmer <mvo@zagadka.de>
2542
2543 * script.c (scm_compile_shell_switches): Removed debugging output.
2544
1ec44fed
KR
25452005-01-15 Kevin Ryde <user42@zip.com.au>
2546
2547 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
2548 docstrings from manual.
2549 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
2550
6e4cd850
MV
25512005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2552
0b5a0521
MV
2553 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
2554 its value.
2555
2556 Implement u64 and s64 uniform numeric vectors with bignums when
2557 scm_t_uint64 and scm_t_int64 are not available.
2558
2559 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
2560 scm_array_handle_u64_elements,
2561 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
2562 scm_u64vector_writable_elements): Do not define when scm_t_uint64
2563 is not available.
2564 (scm_take_s64vector, scm_array_handle_s64_elements,
2565 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
2566 scm_s64vector_writable_elements): Likewise for scm_t_int64.
2567 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
2568 scm_t_int64/scm_t_uint64 are not available.
2569 (uvec_mark): New, to mark the bignums.
2570 (alloc_uvec): Initialize bignums.
2571 (uvec_fast_ref): Return bignums directly.
2572 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
2573 assert_exact_integer): New.
2574 (uvec_fast_set): Use them to validate the bignums.
2575 (scm_init_srfi_4): Set mark function of smob when needed.
2576 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
2577 scm_int64_max.
2578
6e4cd850
MV
2579 Recognize 1.4 -e syntax.
2580
2581 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
2582 (scm_compile_shell_switches): Use them to recognize and convert
2583 1.4 "-e" syntax.
2584
3b698afe
MV
25852005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2586
2587 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
2588 deprecated features that once were macros but are now functions
2589 back into macros.
2590
d6dc83a9
MV
25912005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2592
49086691
MV
2593 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
2594 * deprecation.c (scm_issue_deprecation_warning,
2595 scm_c_issue_deprecation_warning_fmt): Use it.
2596 (mode): Removed.
2597 (print_summary): New.
2598 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
2599 mode.
2600
d6dc83a9
MV
2601 Deprecated SCM_ARRAY* macros.
2602
2603 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
2604 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
2605 version. Changed all uses.
2606 (scm_tc16_array, scm_i_tc16_array,
2607 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
2608 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
2609 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
2610 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
2611 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
2612 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
2613 SCM_ARRAY_V, SCM_I_ARRAY_V,
2614 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
2615 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
2616 scm_t_array, scm_i_t_array): Likewise.
2617 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
2618 Moved from unif.h to unif.c.
2619 (scm_c_array_rank): New.
2620 (scm_array_rank): Reimplement using it.
2621
2622 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
2623 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
2624 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
2625
dc91d8de
MV
26262005-01-11 Marius Vollmer <mvo@zagadka.de>
2627
2628 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
2629 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
2630 scm_c_generalized_vector_ref and scm_cvref, and
2631 scm_c_generalized_vector_set_x, respectively.
2632 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
2633 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
2634
2635 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
2636 former to latter and made public. Changed all uses.
2637 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
2638 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
2639 (scm_i_shap2ra): New internal version of scm_shap2ra.
2640 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
2641 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
2642 (scm_ra_set_contp): Deprecated, changed all uses to
2643 scm_i_ra_set_contp.
2644 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
2645
66d33784
MV
26462005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2647
b06f099d
MV
2648 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
2649 Trotts!
2650
5d35ad81
MV
2651 * unif.c (scm_list_to_typed_array): Allow the specification of the
2652 upper bound as well. This is needed for empty arrays.
2653 (l2ra): Give needed number of elements in error message.
2654 (scm_i_print_array): Print length information for arrays that need
2655 it.
2656 (scm_i_read_array): Parse it.
2657
66d33784
MV
2658 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
2659 scm_i_object_chars, scm_i_object_length): Brought back from the
2660 dead.
2661
d7d7d401
MV
26622005-01-10 Marius Vollmer <mvo@zagadka.de>
2663
74c58fce
MV
2664 * ramap.c: Replaced single-index uses of scm_array_set_x with
2665 scm_c_generalized_vector_set_x.
2666
d7d7d401
MV
2667 * unif.c (scm_array_rank, scm_array_dimensions,
2668 scm_shared_array_offset, scm_shared_array_increments,
2669 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
2670 to simplify code and make it more general.
2671 (scm_shared_array_root): Work with all kinds of arrays, including
2672 naked vectors.
2673 (indices_to_pos): New.
74c58fce
MV
2674 (scm_make_shared_array): Use it instead of scm_aind; use handle
2675 for oldra.
2676
4475d3fe
KR
26772005-01-10 Kevin Ryde <user42@zip.com.au>
2678
2679 * posix.c (scm_mkstemp): Update docstring from manual.
2680
d3ddc95e
KR
2681 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
2682
8c8491f5
MV
26832005-01-09 Marius Vollmer <mvo@zagadka.de>
2684
b89ecc6f
MV
2685 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
2686 scm_i_uniform_vector_set_proc): New.
2687 (u8ref, u8set, s8ref, s8set, etc): New.
2688 (uvec_reffers, uvec_setters): New.
2689 (uvec_to_list): Use generic scm_array_handle_ref instead of
2690 uvec_fast_ref since scm_array_handle_ref should be faster now.
8cb01d9f
MV
2691 (coerce_to_uvec, scm_c_uniform_vector_ref,
2692 scm_c_uniform_vector_set_x): Likewise.
b89ecc6f
MV
2693
2694 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
2695 New.
2696 (scm_t_array_handle): Added ref, set, elements and
2697 writable_elements for fast inline operation of
2698 scm_array_handle_ref and scm_array_handle_set.
2699 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
2700 and replaced with inline code that simply calls the ref/set
2701 members of the handle.
2702 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
2703 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
2704 New.
2705 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
2706 and memoize_set.
2707 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
2708 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
2709 scm_bit_invert_x): Correctly multiply index with increment in the
2710 general case.
2711
8c8491f5
MV
2712 * unif.c (scm_array_handle_set): Correctly execute only one
2713 alternative. D'Oh!
2714 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
2715 the array; this covers all cases with much simpler code.
2716
2717 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
2718 as well.
2719
cd5d55c7
MV
27202005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2721
2722 * srfi-4.c (uvec_type): New.
2723 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
2724 scm_c_uniform_vector_x): Use it to get concrete type.
2725
2726 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
2727 fit the docs.
2728
2729 * unif.c (ra2l): Handle zero rank arrays.
2730 (scm_i_print_array): Print zero rank arrays specially.
2731 (tag_to_type): Return #t for an empty tag, not the empty symbol.
2732 (scm_i_read_array): Allow zero rank arrays.
2733
a4aad74e
MV
27342005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2735
2736 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
2737 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
2738 and SCM_SET_HASHTAB_BUCKET.
2739
2740 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
2741 Removed ref_stack field.
2742 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
2743 of a print state. Use them everywhere instead of ref_stack.
2744
3a40d5e1
MV
2745 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
2746
a4aad74e
MV
2747 * srfi-4.c: Include deprecation.h.
2748
2749 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
2750 deprecated.c, eq.c
2751 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
2752 (scm_vector_elements, scm_vector_writable_elements,
2753 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
2754 unif.[hc].
2755 (SCM_SIMPLE_VECTOR_LOC): Removed.
2756 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
2757 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
2758 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
2759 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
2760 latter. Changed use in eq.c.
2761
f01fe441
MV
27622005-01-07 Marius Vollmer <mvo@zagadka.de>
2763
2764 Make the uniform vector routines also deal with one dimensional
2765 arrays.
2766
2767 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
2768 SCM_SMOB_PREDICATE in this file.
2769 (is_uvec): Also recognize one-dimensional uniform numeric arrays
2770 of the right type.
2771 (scm_is_uniform_vector): Likewise.
2772 (uvec_fast_ref): Made BASE param const.
2773 (uvec_writable_elements, uvec_elements): New.
2774 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
2775 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
2776 scm_c_uniform_set_x): Use them to also deal with one-dimensional
2777 arrays.
2778 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
2779 argument convention.
2780 (scm_uniform_vector_to_list): Let uvec_to_list do all the
2781 checking.
2782 (scm_uniform_vector_length): Use uvec_length.
2783
2aaf5726
MV
27842005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2785
2786 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
2787 scm_c_uniform_vector_size): Removed.
2788 (scm_array_handle_uniform_element_size): New.
2789
2790
2791 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
2792 type of POS parameter to be signed, positions can be negative.
2793 (scm_array_handle_release): New, changed all uses of
2794 scm_t_array_handle to properly call it.
2795 (scm_vector_get_handle, scm_generalized_vector_get_handle):
2796 Renamed former to latter, changed all uses.
2797
34ae52fc
MV
27982005-01-05 Marius Vollmer <mvo@zagadka.de>
2799
2800 Updated bitvector routines to also use scm_t_array_handles.
2801
2802 * unif.h (scm_bitvector_elements,
2803 scm_bitvector_writable_elements): Use a scm_t_array_handle and
2804 deliver offset, length and increment to caller. Changed all uses.
2805 (scm_bitvector_release_elements,
2806 scm_frame_bitvector_release_elements,
2807 scm_bitvector_release_writable_elements,
2808 scm_frame_bitvector_release_writable_elements): Removed.
2809 (scm_array_handle_bit_elements,
2810 scm_array_handle_bit_writable_elements,
2811 scm_array_handle_bit_elements_offset): New.
2812 (scm_make_typed_array): The special value for non-initialized
2813 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
2814 was a valid value to fill bitvectors with, so it can't really be
2815 specialed out.
2816
c4cb7628
KR
28172005-01-04 Kevin Ryde <user42@zip.com.au>
2818
2819 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
2820 Reported by Bill Schottstaedt.
2821
0356881d
MV
28222005-01-02 Marius Vollmer <mvo@zagadka.de>
2823
2824 * sort.c (quicksort): Added INC parameter for non-contigous
2825 vectors.
2826 (quicksort1): New, for contigous vectors. Both functions are
2827 generated from the same code by including "quicksort.i.c".
2828 (scm_restricted_vector_sort_x): Call one of quicksort and
2829 quicksort1, depending on increment of vector.
2830 (scm_sort): Simply call scm_sort_x on a copy of the list or
2831 vector.
2832 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
2833 size_t, added inc parameter.
2834 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
2835 so that it doesn't leak.
2836 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
2837 list or vector.
2838
2839 * ramap.c (scm_array_map_x): Do not try to convert fill value
2840 before filling, any necessary conversion is done while storing.
2841
2842 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
2843 doing it inline.
2844
2845 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
2846 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
2847 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2848
2849 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
2850 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
2851 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
2852 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
2853 objects.c, ports.c, posix.c, print.c, random.c, read.c,
2854 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
2855 vector elements API or simple vector API, as appropriate. Removed
2856 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
2857 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2858
2859 * srfi-4.h, srfi-4.c,
2860 srfi-4.i.c (scm_array_handle_uniform_elements,
2861 scm_array_handle_uniform_writable_elements,
2862 scm_uniform_vector_elements,
2863 scm_uniform_vector_writable_elements):
2864 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
2865 scm_t_array_handle, deliver length and increment.
2866 (scm_array_handle_<foo>_elements,
2867 scm_array_handle_<foo>_writable_elements): New.
2868
2869 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
2870 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
2871
2872 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
2873 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
2874 scm_array_handle_set, scm_array_handle_elements
2875 scm_array_handle_writable_elements, scm_vector_get_handle): New.
2876 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
2877 scm_dimensions_to_uniform_array): Deprecated for real.
2878 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
2879 snarfing wont allow a mismatch between C and Scheme arglists.
2880 (scm_make_shared_array, scm_enclose_array): Correctly use
2881 scm_c_generalized_vector_length instead of
2882 scm_uniform_vector_length.
2883
2884 * validate.h (SCM_VALIDATE_VECTOR,
2885 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
2886 of SCM_VECTORP.
2887
2888 * weaks.h, weaks.c: Use new internal weak vector API from
2889 vectors.h.
2890
2891 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
2892 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
2893 'extra' to being regular sources.
2894 (noinst_HEADERS): Added quicksort.i.c.
2895 * quicksort.i.c: New file.
2896
2897 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
2898 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
2899 and reimplemented. Replaced all uses with scm_vector_elements,
2900 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
2901 appropriate.
2902 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
2903 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
2904 SCM_SIMPLE_VECTOR_LOC): New.
2905 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
2906 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
2907 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
2908 Removed.
2909 (scm_vector_copy): New.
2910 (scm_vector_elements, scm_vector_writable_elements): Use
2911 scm_t_array_handle, deliver length and increment. Moved to
2912 unif.h. Changed all uses.
2913 (scm_vector_release_elements,
2914 scm_vector_release_writable_elements,
2915 (scm_frame_vector_release_elements,
2916 scm_frame_vector_release_writable_elements): Removed.
2917 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
2918 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
2919 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
2920 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
2921 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
2922 weak vectors.
2923
0336d18b
MV
29242004-12-29 Marius Vollmer <mvo@zagadka.de>
2925
2926 No longer use creators to specify the type of an array. Creators
2927 expose the fact that arrays are wrapped around vectors, but that
2928 might change.
2929
2930 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
2931 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
2932 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
2933 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
2934 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
2935 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
2936 uvec_proc_vars): Removed.
2937 (scm_i_generalized_vector_creator): Removed.
2938 (scm_i_generalized_vector_type): New.
2939
2940 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
2941 scm_make_typed_array, scm_array_type, scm_list_to_array,
2942 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
2943 (scm_array_creator): Removed.
2944 (scm_array_p): Deprecated second PROT argument.
2945 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
2946 Deprecated, reimplemented in terms of scm_make_typed_array and
2947 scm_list_to_typed_array.
2948 (scm_i_proc_make_vector, scm_i_proc_make_string,
2949 scm_i_proc_make_bitvector): Removed.
2950 (type_creator_table, init_type_creator_table, type_to_creator,
2951 make_typed_vector): New.
2952 (scm_i_convert_old_prototype): Removed.
2953 (prototype_to_type): New.
2954 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
2955 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
2956 minor added clarity.
2957 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
2958 instead of scm_make_uve.
2959 (tag_creator_table, scm_i_tag_to_creator): Removed.
2960 (tag_to_type): New.
2961 (scm_i_read_array): Use scm_list_to_typed_array instead of
2962 scm_list_to_uniform_array.
2963
277e8472
MV
29642004-12-27 Marius Vollmer <mvo@zagadka.de>
2965
32b26202
MV
2966 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
2967 (scm_bitvector_writable_elements): New.
2968 (scm_bitvector_release, scm_bitvector_release_elements):
2969 Renamed former to latter. Added explicit call to
2970 scm_remember_upto_here_1.
2971 (scm_frame_bitvector_release,
2972 scm_frame_bitvector_release_elements): Renamed former to latter.
2973 (scm_bitvector_release_writable_elements,
2974 scm_bitvector_release_writable_elements): New.
2975 Changed all uses as required by the changes above.
2976
2977 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
2978 scm_u8vector_elements, etc): Made return value "const".
2979 (scm_uniform_vector_writable_elements,
2980 scm_u8vector_writable_elements, etc): New.
2981 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
2982 Renamed former to latter. Added explicit call to
2983 scm_remember_upto_here_1.
2984 (scm_frame_uniform_vector_release,
2985 scm_frame_uniform_vector_release_elements): Renamed former to latter.
2986 (scm_uniform_vector_release_writable_elements,
2987 scm_frame_uniform_vector_release_writable_elements): New. Takes
2988 crown of longest identifier yet.
2989 Changed all uses as required by the changes above.
2990
277e8472
MV
2991 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
2992 void.
2993 (scm_is_vector, scm_vector_p, scm_vector_length,
2994 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
2995 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
2996 scm_vector_move_left_x, scm_vector_move_right_x,
2997 scm_vector_fill_x): handle one-dimensional arrays.
32b26202
MV
2998 (scm_vector_elements, scm_vector_release_elements,
2999 scm_vector_frame_release_elements, scm_vector_writable_elements,
3000 scm_vector_release_writable_elements,
3001 scm_vector_frame_release_writable_elements): New.
3002 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
3003 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
277e8472
MV
3004
3005 * ramap.c (scm_ramapc, scm_raeql): Use
3006 scm_c_generalized_vector_length instead of
3007 scm_uniform_vector_length.
3008 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
3009 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
3010
49c51610
MV
30112004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3012
3013 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
3014 member for relocating debug frames.
3015 (scm_make_continuation): Set it.
3016
3017 * stacks.c (read_frame, read_frames, scm_make_stack,
3018 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
3019 of continuations instead of calculating the offset ourselves.
3020 Relocate 'vect' member of scm_t_debug_frame.
3021
3b2ee265
KR
30222004-12-16 Kevin Ryde <user42@zip.com.au>
3023
3024 * ramap.c (scm_array_map_x): Check for at least one source argument.
3025
e120686a
KR
30262004-12-14 Kevin Ryde <user42@zip.com.au>
3027
3028 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
3029 the C code so for the final call to the predicate procedure is a tail
3030 call, per SRFI-13 spec.
3031
680b5237
KR
30322004-12-10 Kevin Ryde <user42@zip.com.au>
3033
3034 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
3035 recent revision to the reference manual.
3036
3037 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
3038 with "%", C99 says it's well-defined.
3039
3040 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
3041 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
3042 bother trying to fit scm_from_ulong, not really worth the trouble if
3043 addresses are more than 4 bytes usually.
3044
446d320c
KR
30452004-11-30 Kevin Ryde <user42@zip.com.au>
3046
3047 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
3048 arm32. Reported by Greg Troxel.
3049
f2654760
MV
30502004-11-14 mvo <mvo@zagadka.de>
3051
3052 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
3053
3054 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
3055
d550e35f
MV
30562004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3057
3058 Enclosed arrays are now their own smob. This has been done to
3059 make the code more explicit about them and to prepare for the time
f2654760
MV
3060 when generalized vectors include arbitrary one-dimensional
3061 arrays. (Uptonow, enclosed arrays have been recognized by their
3062 use of an array as their storage 'vector'. When all generalized
3063 vectors are allowed as storage, including one-dimensional arrays,
3064 this will no longer work.)
d550e35f
MV
3065
3066 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
3067 New.
3068 (exactly_one_third, singp): Removed.
3069 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
3070 scm_shared_array_offset, scm_shared_array_increments): Handle
3071 enclosed arrays explicitely.
3072 (scm_array_rank): Likewise. Also, do not return zero for
3073 non-arrays, signal an error instead since arrays with rank zero do
3074 exist.
3075 (scm_i_make_ra): New, for specifying the tag of the new array.
3076 (scm_make_enclosed_array): Use it.
3077 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
3078 (scm_make_shared_array): Use scm_c_generalized_vector_length
3079 instead of scm_uniform_vector_length.
3080 (scm_array_in_bounds_p): Rewritten to be much cleaner.
3081 (scm_i_cvref): New, doing the job of scm_cvref.
3082 (scm_cvref): Use scm_i_cvref.
3083 (scm_array_ref): Do not accept non-arrays when no indices are
3084 given. Use scm_i_cvref to do the actual access.
3085 ("uniform-array-set1"): Do not register.
3086 (scm_array_set_x, scm_uniform_array_read_x,
3087 scm_uniform_array_write): Handle enclosed arrays explicitly.
3088 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
3089 handle enclosed arrays.
3090 (scm_array_to_list): Handle enclosed arrays explicitly.
3091 (rapr1): Removed.
3092 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
3093 enclosed arrays.
3094 (scm_i_print_enclosed_array): New.
3095 (tag_proto_table, tag_creator_table): Renamed former to latter.
3096 Added "a" and "b" for strings and bitvectors, resp.
3097 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
3098 latter. Tag "a" is in the table now, no need to handle it as a
3099 legacy tag.
3100 (scm_raprin1): Just call scm_iprin1.
3101 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
3102 explicitly.
3103 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
3104 Use scm_i_print_array as printer for scm_tc16_array.
3105
2ed34885
MV
31062004-11-10 Marius Vollmer <mvo@zagadka.de>
3107
823086c1
MV
3108 * ramap.c (cind): Changed second arg to be pointer to long instead
3109 of uniform vector.
3110 (scm_ramapc): Allocate index vector with scm_malloc and not as
d550e35f 3111 uniform vector. Wrap it in a frame so that it gets properly freed.
823086c1
MV
3112 (scm_array_index_map_x): Likewise.
3113
3114 * unif.c: Changed all uses of scm_array_prototype to
3115 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
3116 prototype is known.
3117 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
3118 in terms of scm_uniform_vector_read_x and
3119 scm_uniform_vector_write, respectively. Strings and
3120 bitvector support has been dropped.
3121
2ed34885
MV
3122 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
3123 needed files directly. Include config.h, <unistd.h> and <io.h>
3124 when available.
3125 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
3126
2c72f253
MV
31272004-11-09 Marius Vollmer <mvo@zagadka.de>
3128
3129 * gh_data.c (gh_uniform_vector_length): Properly use
3130 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
3131
3cc0a296
MV
31322004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3133
3134 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
3135 New.
3136 (scm_i_uniform_vector_creator): Removed.
3137 (scm_i_generalized_vector_creator): New.
3138 (scm_uniform_vector_length, scm_uniform_element_size): Do not
3139 handle generalized vectors, only uniform numeric vectors.
3140 (alloc_uvec): Do length check here...
3141 (make_uvec): ...but not here.
3142 (coerce_to_uvec): Use new generalized vector functions to handle
3143 all kinds of vectors in one go.
3144
3145 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
3146 remaining scm_tc7_unused tags to get a neatly ordered list.
3147
3148 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
3149 longer handle scm_tc7_bvect bitvectors.
3150
3151 * ramap.c: Use the new generalized vector functions to handle all
3152 vector like things.
3153
3154 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
3155 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
3156 scm_generalized_vector_length, scm_generalized_vector_ref,
3157 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
3158 scm_is_generalized_vector, scm_c_generalized_vector_length,
3159 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
3160 New.
3161
3162 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
3163 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
3164 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
3165 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
3166 scm_c_bitvector_length, scm_c_bitvector_ref,
3167 scm_c_bitvector_set_x, scm_bitvector_elements,
3168 scm_bitvector_release, scm_frame_bitvector_release,
3169 scm_tc16_bitvector, bitvector_free, bitvector_print,
3170 bitvector_equalp, count_ones, find_first_one): New.
3171 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
3172 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
3173 using the new C API for bitvectors and maybe count_ones or
3174 find_first_one, as appropriate.
3175 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
3176 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
3177 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
3178 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
3179 new functions from above.
3180 (scm_i_proc_make_vector, scm_i_proc_make_string,
3181 scm_i_proc_make_bitvector): Made non-static for use in
3182 scm_i_generalized_vector_creator.
3183 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
3184 (scm_make_uve): Validate that the created object is a generalized
3185 vector.
3186 (scm_i_legacy_tag): Removed.
3187 (scm_i_print_array): Do it here.
3188 (scm_raprin1): Only print enclosed arrays.
3189
3190 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
3191
c24d026b
MV
31922004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3193
1f2328fe
MV
3194 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
3195 added portability.
3196
3197 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
3198 for "space". Thanks to Bruce Korb!
3199
c24d026b
MV
3200 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
3201 only after dest has been set. Thanks to Hyper Division!
3202
3203 * gh_data.c (gh_uniform_vector_length): Use
3204 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
3205
d4ea47c8
MV
32062004-11-03 Marius Vollmer <mvo@zagadka.de>
3207
3208 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
3209 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
3210 SCM_SET_UVECTOR_LENGTH): Removed.
3211
236288e2
MV
32122004-11-02 Marius Vollmer <mvo@zagadka.de>
3213
9a5fa6e9 3214 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
236288e2
MV
3215 Thanks!
3216
3217 * backtrace.c (scm_display_backtrace_with_highlights): Join the
3218 first and the second line of the SCM_DEFINE macro call, since old
3219 preprocessors cannot handle definitions that are split into two
3220 lines.
3221
3222 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
3223 declarations.
3224
3225 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
3226 scm_t_uint32 to fix the mismatch between the function declaration
3227 and definition.
3228
3229 * sort.c (quicksort): Don't use C99 variable declarations.
3230
3231 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
3232 SCM_BOOL_F if no type matches.
3233
3234 * threads.c (thread_print): Cast a pointer to size_t when printing
3235 with scm_uintprint.
3236
3237 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
3238 defined.
3239 (scm_array_prototype): Deprecated.
3240
f738b51d
MV
32412004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3242
5d1015ec
MV
3243 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
3244 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
3245 more efficient access to the u32vector.
3246
034486df
MV
3247 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
3248 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
3249 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
3250
3251 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
3252 instead of the old-style dvectors.
3253
3254 * gh_data.c: Use new-style uniform arrays in place of old-style
3255 ones.
3256
3257 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
3258 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
3259
3260 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
3261 instead of old-sytle uvectors.
3262
3263 * convert.c, convert.i.c: Rewritten completely, using
3264 scm_any_to_u8vector, etc and other new-style uniform vector
3265 functions.
3266
3267 * random.c (scm_random_solid_sphere_x,
3268 scm_random_hollow_sphere_x): Do not validate vector argument, this
3269 is already done elsewhere.
3270
3271 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
3272 scm_any_to_u8vector, etc): New.
3273 (scm_uniform_element_size, scm_uniform_vector_length): Do no
3274 longer handle old-style uniform vectors.
3275
f738b51d
MV
3276 * read.c (scm_lreadr): Bugfix: include the last bit in the
3277 bit vector.
3278
5e9c05a1
MV
32792004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3280
327114a2
MV
3281 * unif.h, unif.c (scm_array_creator): New.
3282 (scm_i_get_old_prototype): New.
3283 (scm_array_prototype): use it to return old-style prototype, never
3284 return creators.
3285 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
3286 arg of SCM_UNDEFINED. The latter is wrong.
3287
5e9c05a1
MV
3288 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
3289 (make_uve): Removed.
3290 (scm_i_proc_make_vector, scm_i_proc_make_string,
3291 scm_i_proc_make_u1vector): New.
3292 (scm_init_unif): Initialize them.
3293 (scm_i_convert_old_prototype): New.
3294 (scm_make_uve): Use it to get the creator procedure. Removed all
3295 old code that created old-style uniform vectors.
3296 (scm_array_p): Handle generic vectors.
3297 (scm_dimensions_to_uniform_array): Do not fill new array with
3298 prototype when that is a procedure.
3299 (scm_list_to_uniform_array): Also accept a list of lower bounds as
3300 the NDIM argument.
3301 (scm_i_print_array): Print rank for shared or non-zero-origin
3302 vectors.
3303 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
3304 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
3305 which I do not understand yet.
3306 (scm_array_prototype): Explicitely handle generic vectors.
327114a2 3307
5e9c05a1
MV
3308 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
3309 (iflo2str): Use icmplx2str for complex numbers.
3310
3311 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
3312 scm_i_uniform_vector_prototype): Removed.
3313 (scm_i_uniform_vector_creator): New.
3314 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
3315 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
3316 Updated all tables and generic functions to support them.
3317 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
3318 (scm_init_srfi_4): Initialize them.
3319
3320 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
3321 sizeof(CTYPE) as explained in the comment.
3322
3323 * read.c (scm_lreadr): Call scm_i_read_array for all characters
50472546 3324 following '#' that can start an array. Explicitely disambiguate
5e9c05a1
MV
3325 'i' and 'e' between introducing numbers and uniform vectors. Do
3326 not call scm_i_read_homogenous_vector, since that is also handled
3327 by scm_i_read_array now.
3328
f984af07
MV
33292004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3330
3331 First cut at integrating uniform vectors from srfi-4 with the rest
3332 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
3333 vector. The plan is to gradually replace one type after the other
3334 until none is left and then to consider general cleanups and
3335 optimizations.
3336
3337 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
3338
3339 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
3340 scm_uniform_vector_ref, scm_uniform_vector_set_x,
3341 scm_uniform_vector_to_list, scm_is_uniform_vector,
3342 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
3343 scm_uniform_vector_elements, scm_uniform_vector_element_size,
3344 scm_uniform_vector_release): New.
3345 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
3346 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
3347 from unif.h, unif.c and extended to handle both the old and new
3348 uniform vectors.
3349
3350 * tags.h (scm_tc7_byvect): Commented out.
3351
3352 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
3353 the former to the latter.
3354 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
3355 srfi-4.h, srfi-4.c.
3356 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
3357 (scm_array_p, scm_array_rank, scm_array_dimensions,
3358 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
3359 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
3360 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
3361 vectors. Removed code for scm_tc7_byvect.
3362 (scm_dimensions_to_uniform_array): Fill array with 0 when
3363 prototype is #\nul.
3364 (scm_i_print_array_dimension, scm_i_legacy_tag,
3365 scm_i_print_array): New.
3366 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
3367 for scm_tc7_byvect.
3368
3369 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
3370 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
3371 uniform vectors. Removed code for scm_tc7_byvect
3372
3373 * print.c (iprin1): Removed code for scm_tc7_byvect.
3374 * objects.c (scm_class_of): Likewise.
3375 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
3376 * gc-card.c (scm_i_sweep_card): Likewise.
3377 * evalext.c (scm_self_evaluating_p): Likewise.
3378 * eq.c (scm_equal_p): Likewise.
3379
3380 * gh_data.c (gh_chars2byvect): Reimplemented with
3381 scm_make_s8vector.
3382 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
3383
3384 * srfi-4.c (take_uvec): New.
3385 (alloc_uvec): Use it.
3386 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
3387
3388 * random.c (vector_scale, vector_scale_x): Renamed former to the
3389 latter, since it modifies its argument.
3390 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
3391 Do not use scm_universal_vector_length for non-uniform vectors.
3392 Use scm_f64vector_elements to access innards of uniform vectors.
3393
3394 * convert.i.c: Convert srfi-4 style uniform vectors when
3395 requested.
3396 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
3397 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
3398
79d52182
MV
33992004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3400
3401 * numbers.h, numbers.c (scm_i_print_double): New.
3402
3403 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
3404 ../srfi/ but heavily modified.
3405 * Makefile.am: Add them in all the right places.
3406 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
3407 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
3408 '#u', and '#s'.
3409
3410 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
3411 and made non-static. Changed all uses.
3412
6191ccec
MV
34132004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3414
e64e80b0
MV
3415 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
3416 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
3417 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
3418 scm_uintprint to print unsigned integers, raw heap words, and
3419 adresses, using a cast to scm_t_bits to turn pointers into
3420 integers.
3421
3422 * unif.c: Include "libguile/print.h".
3423
c90ac3a8
MV
3424 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
3425 scm_t_intmax values.
3426 (scm_uint2str): New, for scm_t_uintmax.
3427 (scm_iint2str): Argument type changed to scm_t_intmax,
3428 reimplemented in terms of scm_uint2str.
3429
3430 * print.c, print.h (scm_uintprint): New, for printing
3431 scm_t_uintmax values.
3432 (scm_intprint): Argument type changed to scm_t_intmax.
3433
77c2594f
MV
3434 * sort.c (quicksort, scm_merge, scm_merge_list_x,
3435 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
3436 strategic places so that the loops can be interrupted.
3437
6191ccec
MV
3438 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
3439 "-I$(top_srcdir)/libguile-ltdl".
3440 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
3441 "../libguile-ltdl/libguile-ltdl.a".
3442
3443 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
3444 all references to scm_lt_* with just lt_*. Include <ltdl.h>
3445 instead of <libguile-ltdl.h>.
3446
77600f3e
MV
34472004-10-20 Marius Vollmer <mvo@zagadka.de>
3448
3449 * sort.c (quicksort): Copy pivot out of the array while
3450 constructing the partitions; it could get overwritten otherwise.
3451 Because of the ultimate insertion sort, this bug did not cause
3452 quicksort to fail, it just put all the burdon on the insertion
3453 sort and was thus very slow. Thanks to Rolan Orre for reporting
3454 the slowness!
3455
5000379b
MV
34562004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3457
192cd792
MV
3458 * numbers.c (scm_i_range_error): New.
3459 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
3460 scm_out_of_range.
3461
3462 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
6191ccec 3463 endpos. State inclusiveness/exclusiveness of bounds in docstring.
192cd792
MV
3464
3465 * unif.c (scm_array_p): When no prototype is given, explicitely
3466 test for allowable types, do not simply return true. Thanks to
3467 Roland Orre for reporting this!
3468
5000379b
MV
3469 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
3470
3471 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
3472 segment to scm_max_segment_size.
3473
497eb0b7
HWN
34742004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
3475
1367aa5e
HWN
3476 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
3477
497eb0b7
HWN
3478 * inline.h (scm_double_cell): abort if GC running.
3479 (scm_cell): idem.
3480
aef0bdb4
MV
34812004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3482
3483 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
3484 pos == 0.
3485
3486 Keywords no longer store a 'dash symbol'. Instead, they store a
3487 symbol with their real name.
3488
3489 * keywords.h, keywords.c, deprecated.h, deprecated.c
3490 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
3491 terms of scm_is_keyword and scm_keyword_dash_symbol.
3492
3493 * keywords.h, keywords.c, discouraged.h, discouraged.c
3494 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
3495 scm_c_make_keyword): Discouraged.
3496
3497 * keywords.h, keywords.c (scm_symbol_to_keyword,
3498 scm_keyword_to_symbol): Implemented in C.
3499 (scm_is_keyword, scm_from_locale_keyword,
3500 scm_from_locale_keywordn): New.
3501
3502 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
3503
3504 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
3505 scm_from_locale_keyword instead of scm_c_make_keyword.
3506
3507 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
3508 better error message.
3509
3510 * deprecated.c: Include discouraged.h and keywords.h.
3511
3512 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
3513 reading '#:' or ':'. See NEWS for consequences.
3514
818deb11
MV
35152004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3516
43c25626
MV
3517 * read.c (scm_lreadr): Revert change from 2004-09-22: string
3518 literals are now read-write again (until SCM_STRING_CHARS is
3519 removed).
3520
3521 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
3522 strings with an error message that blames SCM_STRING_CHARS.
3523
3524 * options.c (change_option_setting): Use scm_car instead of
3525 explicit type check plus SCM_CAR.
3526
3527 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
3528 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
3529 (scm_iprin1): Use them instead of the previoulsy hardcoded
3530 strings.
3531 (scm_init_print): Initialize them.
3532
3533 * backtrace.c (display_frame_expr): Do not remove control
3534 characters from the final string. Print it directly using
3535 scm_display.
3536
818deb11
MV
3537 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
3538 Thanks to Roland Orre!
3539
d748089e
KR
35402004-09-29 Kevin Ryde <user42@zip.com.au>
3541
3542 * regex-posix.c (scm_regexp_exec): Correction to last change, should
3543 be whole original string in match struct, not offsetted substring.
3544
0ff7e3ff
HWN
35452004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
3546
3547 * gc.c (scm_gc_unprotect_object): abort if called during GC.
3548
ad7de4b8
MV
35492004-09-24 Marius Vollmer <mvo@zagadka.de>
3550
2edf319f
MV
3551 * Makefile.am (EXTRA_DIST): Added gettext.h.
3552
d180337b
MV
3553 * smob.c, smob.h (scm_assert_smob_type): New.
3554
05d7cf89 3555 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
ad7de4b8
MV
3556 Include GUILE_CFLAGS.
3557 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
3558 now.
3559 (libpath.h): Put GUILE_CFLAGS in the build-info.
3560
c9fedf8a
MV
35612004-09-23 Marius Vollmer <mvo@zagadka.de>
3562
3563 * print.h (scm_print_state): Added highlight_objects.
3564 * print.c (make_print_state, scm_free_print_state): Initialize it
3565 to SCM_EOL.
3566 (scm_iprin1): Wrap output in '{...}' when object is contained in
3567 highlight_objects.
3568
3569 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
3570 scm_backtrace_with_highlights): New. Set highlight_objects of
3571 printstate.
3572
3573 * error.c (scm_error_scm): Document new meaning of data/rest
3574 argument for out-of-range and wrong-type-arg errors.
3575 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
3576 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
3577 exception so that it gets highlighted in the backtrace.
3578 Don't talk about "argument" when not giving a position.
3579
3580 * throw.c (handler_message): The rest argument is the fourth
3581 argument, not everything after the third. Call
3582 scm_display_backtrace_with_highlights, passing the rest argument
3583 when appropriate.
3584
d5ac9b2a
MV
35852004-09-22 Marius Vollmer <mvo@zagadka.de>
3586
3587 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
3588 <bruno@clisp.org>:
3589
3590 * i18n.c: Handle --disable-nls (thanks Bruno).
3591
3592 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
3593 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
3594
3595 * i18n.c (scm_i_to_lc_category): New name and export. Support all
3596 LC categories.
05d7cf89 3597 * posix.c (scm_setlocale): Use it.
d5ac9b2a
MV
3598
3599 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
3600 scm_bind_textdomain_codeset): Make wrappers similar to C function
3601 they wrap.
3602
3603 * i18n.h: New file.
3604 * i18n.c: New file.
3605 * gettext.h: New file, taken from GNU gettext.
3606 * init.c: Include libguile/i18n.h.
3607 (scm_init_guile_1): Add call to scm_init_i18n().
3608 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
3609 (DOT_X_FILES): Add i18n.x.
3610 (DOT_DOC_FILES): Add i18n.doc.
3611 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
3612 (modinclude_HEADERS): Add i18n.h.
3613
d2e53ed6
MV
36142004-09-22 Marius Vollmer <mvo@zagadka.de>
3615
2cdfe016
MV
3616 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
3617
d2e53ed6
MV
3618 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
3619 discouraged.h. Replaced all uses with scm_is_pair.
3620 (SCM_I_CONSP): New name for SCM_CONSP.
3621
3622 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
3623 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
3624 scm_cadr, etc): New.
3625 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
3626 uses with scm_is_null.
5dd82006 3627
d2e53ed6
MV
3628 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
3629 instead of explicit code.
5dd82006 3630
5dfdf243
MV
36312004-09-22 Marius Vollmer <mvo@zagadka.de>
3632
b50c53e5
MV
3633 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
3634 Reworded logic a bit so that #f is returned immediately when s1 is
3635 too short to contain s2.
3636
5dfdf243 3637 * regex-posix.c (scm_regexp_exec): Convert string to
05d7cf89 3638 zero-terminated locale string before matching against it.
5dfdf243
MV
3639
3640 * strings.h, strings.c (scm_substring_read_only,
3641 scm_c_substring_read_only, scm_i_substring_read_only): New.
3642 (RO_STRING_TAG, IS_RO_STRING): New.
3643 (scm_i_string_writable_chars): Bail on read-only strings.
3644
3645 * read.c (scm_lreadr): use scm_c_substring_read_only for string
3646 literals, thus making them read-only as specified by R5RS.
3647
22ab5ba3
MV
36482004-09-22 Marius Vollmer <mvo@zagadka.de>
3649
3650 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
3651 by testing for smobs before insisting on equal SCM_CELL_TYPES.
3652
2663421c
MV
36532004-09-21 Marius Vollmer <mvo@zagadka.de>
3654
0d83cb90
MV
3655 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
3656 numbers.c.
3657 (scm_to_mpz, scm_from_mpz): New.
9a5fa6e9 3658 Thanks to Andreas Vögele!
0d83cb90 3659
2663421c
MV
3660 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
3661 just on a line of its own.
3662
3663 * srfi-13.c (scm_string_any, scm_string_every,
3664 scm_string_tabulate, string_upcase_x, string_down_case_x,
3665 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
3666 size_t instead of int for indices into strings. Make sure that no
9a5fa6e9 3667 over- or underflow occurs. Thanks to Andreas Vögele!
2663421c
MV
3668 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
3669 indices, which can also be negative.
3670
b00b73f9
MV
36712004-09-20 Marius Vollmer <mvo@zagadka.de>
3672
3673 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
3674
3675 * threads.c (scm_threads_mark_stacks): Call
3676 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
3677 only used once.
3678
adba74f3
HWN
36792004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
3680
05d7cf89 3681 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
adba74f3
HWN
3682 Bugfix: when subtracting unsigned values, make sure that result
3683 does not wrap.
3684
f6de32c8
KR
36852004-09-09 Kevin Ryde <user42@zip.com.au>
3686
3687 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
3688 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
9a5fa6e9 3689 by Andreas Vögele.
f6de32c8 3690
e548be5f
MV
36912004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3692
eb8d0af1
MV
3693 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
3694
e548be5f
MV
3695 * eq.c (real_eqv): Pretend that all NaNs are equal.
3696
3697 * numbers.c (scm_integer_expt): Do not accept inexact integers.
3698
e7acba81
MV
36992004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3700
874fbad1
MV
3701 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
3702 use size_t for some locals instead of int.
3703
e7acba81
MV
3704 * read.c (scm_flush_ws): Detect "#!"-style comments here.
3705 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
3706 (skip_scsh_block_comment): Use scm_input_error instead of
3707 scm_misc_error in case of EOF.
3708
5de12658
KR
37092004-09-07 Kevin Ryde <user42@zip.com.au>
3710
3711 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
5de12658
KR
3712 Bug report by Bill Schottstaedt.
3713
3714 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
3715 column.
3716 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
3717
3718 * posix.c (scm_access): Update docstring per manual.
3719
3720 * posix.c (scm_nice): Correction to error detection. Reported by
3721 Matthias Koeppe.
3722
3723 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
3724 throw error before unlocking mutex with SCM_ALLOW_INTS.
3725
e227addf
KR
37262004-09-06 Kevin Ryde <user42@zip.com.au>
3727
3728 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
3729 available. This also gets around CLK_TCK being absent when
3730 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
3731
edea856c
SJ
37322004-09-03 Stefan Jahn <stefan@lkcc.org>
3733
3734 * threads.c (scm_threads_mark_stacks): Fixed local variable
3735 definitions.
3736
e7acba81 3737 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
edea856c
SJ
3738 local variable definitions.
3739
3740 * stime.c (_POSIX_C_SOURCE): Do not define this item on
3741 MinGW32 because it conflicts with its pthread headers.
874fbad1
MV
3742 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
3743 (scm_strftime): Using scm_from_locale_string() instead of
edea856c
SJ
3744 scm_makfrom0str().
3745
874fbad1 3746 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
edea856c
SJ
3747 part.
3748
3749 * numbers.c (scm_init_numbers): Removed check_sanity() call
3750 inside GUILE_DEBUG. The function has been removed somewhen...
3751
3752 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
3753 MinGW32 because it conflicts with its pthread headers.
3754
d9eb2d67
MV
37552004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3756
3757 * strings.c (SCM_STRINGP): Accept all strings.
3758 (SCM_STRING_CHARS): Reject shared substrings here.
3759
3760 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
3761 the Copyright years.
3762
c495c342
KR
37632004-08-27 Kevin Ryde <user42@zip.com.au>
3764
3765 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
3766 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
3767 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
3768
57aa5515
MV
37692004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3770
3771 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
3772 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
3773 scm_i_symbol_is_interned, scm_i_mem2symbol,
3774 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
3775
ce25760f
MV
37762004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3777
19ff6ffc
MV
3778 * srfi-13.c: First cut at thread-safeness and proper use of
3779 scm_i_string_chars et al. Copious scm_remember_upto_heres have
3780 been inserted. Made sure that no internal string pointer is used
3781 across a SCM_TICK or a possible GC.
3782
ce25760f
MV
3783 * script.c (scm_compile_shell_switches): Use
3784 scm_from_locale_string instead of scm_makfrom0str.
3785
3786 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
3787 always been.
3788
c5080b51
MV
37892004-08-25 Marius Vollmer <mvo@zagadka.de>
3790
3791 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
3792 strop.c.
3793
3794 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
3795 * strop.h, strop.c: Removed, they are now empty.
3796 * Makefile.am: Updated for new and removed files.
3797
3798 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
3799 to scm_string_to_symbol.
3800
3801 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3802 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
3803 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
3804 charset instead of libc functions.
3805
3806 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
3807 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
3808 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
3809 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
3810 instead of explicit code.
3811
3812 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
3813 "srfi-13.h" instead of "strop.h".
3814
3815 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
3816 scm_init_srfi_14. Do not call scm_init_strop.
3817
4b0d27f2
MV
38182004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3819
3820 * numbers.c (scm_inf_p): Synced docstring back from manual.
3821
3ece39d6
MV
38222004-08-22 Marius Vollmer <mvo@zagadka.de>
3823
3824 * strings.c (get_str_buf_start): New helper function.
3825 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
3826 scm_i_string_char, scm_i_string_writable_chars): Use it.
3827 (scm_i_substring_copy): Make START argument optional for C
3828 callers, for upcoming SRFI-13 integration.
3829
38302004-08-21 Marius Vollmer <mvo@zagadka.de>
3831
3832 From Richard Todd, Thanks!
3833
3834 * script.c (scm_compile_shell_switches): added '-L' switch to add
3835 to the %load-path.
3836
5fa0939c
DH
38372004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3838
3839 * eval.c (unmemoize_exprs): When dropping internal body markers
3840 from the output during unmemoization, also drop those that are not
3841 immediately at the beginning of a body.
3842
2146fdeb
MV
38432004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3844
c1f54b3d
MV
3845 * eval.c (scm_lookupcar1): Report "Variable used before given a
3846 value" insetad of an "Unbound" one for variables that are found
3847 but still contain SCM_UNDEFINED.
2146fdeb
MV
3848
3849 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
3850 expects a null-terminated string in the locale encoding, but
3851 scm_i_string_writable_chars doesn't give that. Fixed by letting
3852 mkstemp modify a locale version of the tmpl argument and copying
3853 the result back into tmpl.
3854
3855 * strop.c (scm_substring_move_x): Store into str2, not str1.
3856
d4f76919
KR
38572004-08-20 Kevin Ryde <user42@zip.com.au>
3858
3859 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
3860 to modify the input string.
3861
b5247a6b
MV
38622004-08-19 Marius Vollmer <mvo@zagadka.de>
3863
3864 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
3865 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
3866 scm_c_symbol_length.
3867
f26b9395
MV
38682004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3869
3870 New string implementation, with copy-on-write strings and
3871 mutation-sharing substrings, and a new internal string API.
3872 Symbols can now share memory with strings.
3873
3874 * tags.h (scm_tc7_stringbuf): New tag.
3875
3876 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
3877 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
3878 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
3879 uses.
3880 (scm_i_make_string, scm_c_make_string): New, to replace
3881 scm_allocate_string. Updated all uses.
3882 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
3883 SCM_STRING_LENGTH): Deprecated.
3884 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
3885 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
3886 Discouraged. Replaced all uses with scm_from_locale_string or
3887 similar, as appropriate.
3888 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
3889 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
3890 scm_substring_shared, scm_substring_copy): New.
3891
3892 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
3893 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
3894 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
3895 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
3896 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
3897 Deprecated.
3898 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
3899 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
3900 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
3901 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
3902 Updated all uses.
3903 (scm_gensym): Generate only the number suffix in the buffer, just
3904 string-append the prefix.
3905
3906 * error.c (scm_memory_error): Do not try to throw, just abort.
3907 Throwing will not work anyway.
3908
3909 * gh.h, gh-data.c (gh_set_substr): Made src const.
3910
3911 * ports.c (scm_i_mode_bits_n): New, for counted strings.
3912 (scm_mode_bits): Use it.
3913 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
3914 a vector normally and fill that instead of consing a list with a
3915 blocked GC.
3916
3917 * read.c (scm_i_casei_streq): New, for counted strings.
3918
3919 * threads.c (gc_section_count): Removed, thread-sleeping can not
3920 be nested.
3921 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
3922 admin mutex so that we can be put to sleep by other threads while
3923 blocking on that mutex. Lock all the heap mutex of all threads,
3924 including ourselves.
3925 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
3926 call scm_i_enter_guile.
3927 (scm_thread_mark_stacks): Expect all threads to be suspended.
3928
3929 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
3930 scm_gc_mallocated, for now.
3931 (scm_init_storage): Initialize it.
3932 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
3933
3934 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
3935 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
3936 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
3937 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
3938
cd505b38
MV
3939 * strop.c (scm_string_copy): Use scm_c_substring to get a
3940 copy-on-write string.
3941
8a807b26
KR
39422004-08-18 Kevin Ryde <user42@zip.com.au>
3943
3944 * arbiters.c (FETCH_STORE): New macro.
3945 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
3946 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
3947 scm_try_arbiter and scm_release_arbiter.
3948 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
3949 for speed on i386, otherwise using mutex.
3950
3951 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
3952 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
3953 exact and inexact is #f.)
3954
3955 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
3956 to get thread safety of scm_ttyname.
3957
3958 * ports.c (ttyname): Remove prototype, unused.
3959
d6cd4c36 3960 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
1f3cc0d3 3961 Reported by Michael Tuexen.
d6cd4c36 3962
fa0c0a4b
MV
39632004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3964
3965 * load.c (scm_init_load_path): Do not pass NULL to
3966 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
3967 not set. Thanks to Bill Schottstaedt.
3968
70f7ee41
MV
39692004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3970
3971 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
3972 locale strings instead of accessing their internals.
3973 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
3974 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
3975 SCM_STRING_CHARS and SCM_STRING_LENGTH.
3976
3977 * simpos.c (scm_system): Convert SCM strings to locale strings
3978 instead of accessing their internals.
3979
3980 * script.c (scm_compile_shell_switches): Convert version to locale
3981 string before printing it.
3982
3983 * rdelim.c (scm_read_delimited_x): Avoid
3984 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
3985 of scm_from_long for the returned number of read characters.
3986
3987 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
3988 scm_i_mode_bits to avoid accessing internals of SCM string from C.
3989
3990 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
3991 Use them instead of SCM_SYSCALL when one or two strings need to be
3992 converted into locale strings.
3993 (my_rename): New, gathers platform dependent code for renaming.
3994 (scm_rename): Use it.
3995 (scm_readlink, scm_copy_file): Convert SCM strings to locale
3996 strings instead of accessing their internals.
3997 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
3998 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
3999 SCM_STRING_LENGTH.
4000
4001 * extensions.c (load_extension): Convert lib and init to locale
4002 strings instead of accessing the internals directly.
4003 (scm_c_load_extension): Use scm_from_locale_string instead of
4004 scm_makfrom0str.
4005
4006 * fports.h, fports.c (scm_i_fdes_to_port): New, like
4007 scm_fdes_to_port, but take mode bits directly instead of as a C
4008 string.
4009 (scm_i_fdes_to_port): Implement using above.
4010 (scm_open_file): Use scm_i_fdes_to_port together with
4011 scm_i_mode_bits to avoid accessing internals of SCM string from C.
4012 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
4013 with scm_i_mode_bits to avoid accessing internals of SCM string
4014 from C.
4015
4016 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
4017 SCM string as argument.
4018
4019 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
4020 bits directly instead of C string.
4021 (scm_void_port): Implement using above.
4022 (scm_sys_make_void_port): Use scm_i_void_port together with
4023 scm_i_mode_bits to avoid accessing internals of SCM string.
4024
4025 * strings.h, strings.c (scm_i_get_substring_spec): New.
4026
4027 * socket.c, rw.c, deprecated.h, validate.h
4028 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
4029 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
4030 scm_to_locale_string, etc.
4031 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
4032 above, plus scm_i_get_substring_spec.
4033
4034 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
4035 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
4036 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
4037 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
4038 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
4039 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
4040 with more explicit scm_remember_upto_here_1, etc, or introduced
4041 them in the first place.
4042
4043 * posix.c (WITH_STRING): New helper macro. Use it where one
4044 locale string is needed for a short piece of code.
4045 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
4046 when one locale string is needed.
4047 (scm_mkstemp): Convert tmpl to a locale string.
4048 (scm_putenv): Rewritten to use only C strings.
4049 (scm_setlocale, scm_crpt): Convert argument strings to locale
4050 strings.
4051
40522004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4053
4054 * load.c (scm_primitive_load_path): Do not check for absolute
4055 filenames when scm_sys_search_load_path returns false, which will
4056 return absolute filenames unchanged.
4057
bb26cc2d
MV
40582004-08-11 Marius Vollmer <mvo@zagadka.de>
4059
4060 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
4061 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
4062 of an alist. Thanks to Matthias Koeppe!
4063
02573e4c
MV
40642004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4065
4066 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
4067 Moved from string.h to deprecated.h.
4068
4069 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
4070
f9751e86 4071 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
02573e4c
MV
4072 SCM_I_MAKE_STRING_TAG, changed all uses.
4073 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
4074 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
4075 respectively. For a short time, the old names are still there as
4076 aliases. Not all uses have been changed yet, but the ones in
4077 strings.c have.
4078 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
4079 SCM_T_BITS_MAX.
4080 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
4081 scm_take_locale_string, scm_take_locale_stringn,
4082 scm_to_locale_string, scm_to_locale_stringn,
4083 scm_to_locale_stringbuf): New.
4084 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
4085 deprecated.[hc]. Implemented in terms of the new functions above.
4086 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
4087 scm_makfrom0str): Reimplemented in terms of the new functions from
4088 above. They will be discouraged shortly.
4089 (scm_substring): Do not use scm_mem2string.
4090 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
4091 to replace similar code from posix.c, simpos.c, and dynl.c.
4092 (scm_string_append): Use memcpy instead of explicit loop. Do not
4093 use register keyword. Use plain 'char' instead of 'unsigned
4094 char'.
4095
4096 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
4097 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
4098
4099 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
4100 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4101 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
4102 not as a pointer. Use scm_remember_upto_here_1 to protect it.
4103
4104 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
4105 string. This avoids a conversion round-trip.
4106
4107 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
4108 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
4109 SCM_I_STRING_LENGTH, respectively.
4110 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
4111
4112 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
4113 of a string, call scm_display on the string itself.
4114
4115 * dynwind.c, dynwind.h (scm_frame_free): New.
4116
4117 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
4118 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
4119 Replaced uses of SCM_STRING_CHARS with proper uses of
4120 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
4121 Replaced scm_mem2string with scm_from_locale_string.
4122
4123 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
4124 Removed, replaced all uses with scm_i_allocate_string_pointers.
4125
4126 * load.h, load.c (scm_internal_parse_path): Removed.
4127 (scm_parse_path): Use scm_string_split to do the work.
4128 (scm_init_load_path): Use scm_parse_path instead of
4129 scm_internal_parse_path.
4130 (scm_search_path): Rewritten string handling part of the code in
4131 terms of scm_to_locale_stringbuf and so that it is thread safe.
4132
4133 * error.c (scm_error_scm): Throw directly instead of calling
4134 scm_error, this avoids the back and forth conversion of SUBR and
4135 MESSAGE and also plugs a memory leak.
4136 (scm_error): Call scm_error_scm.
4137
4138 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
4139 (display_header): Print FNAME when it is true, not
4140 merely when it is a string.
4141
4142 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
4143 unceremoniously. They were unused by Guile itself, and external
4144 use should stop immediately.
4145
4146
409eb4e5
MV
41472004-08-10 Marius Vollmer <mvo@zagadka.de>
4148
4149 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
4150 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
4151 deprecated versions installed in deprecated.h and deprecated.c.
4152 Changed all uses.
4153
a00eaf19
RB
41542004-08-06 Rob Browning <rlb@defaultvalue.org>
4155
4156 * net_db.c (scm_resolv_error): don't cause an exception while
4157 trying to throw an exception -- call scm_misc_error with correct
4158 arguments. The previous arguments needed a format escape that
4159 wasn't in any of the format strings.
4160
bcb88c93
KR
41612004-08-06 Kevin Ryde <user42@zip.com.au>
4162
8f094b97
KR
4163 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
4164 so as not to depend on signedness of plain char. For byvect range
4165 check, throw out-of-range rather than wrong-type-arg.
4166
bcb88c93
KR
4167 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
4168 signed byte range checks by using scm_to_schar and scm_from_schar,
4169 don't want to depend on signedness of C char.
4170
29e61124
KR
41712004-08-05 Kevin Ryde <user42@zip.com.au>
4172
4173 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
4174 SCM_DEFER_INTS.
4175 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
4176 guaranteed if multiple threads compete to unlock.
4177 Update docstrings per doc/ref/api-scheduling.texi.
4178
99de794f
KR
4179 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
4180 stat on the filename, to be certain a file rename can't mean we get
4181 info on one filesystem object but open another. This fstat usage is
4182 similar to Emacs copy-file.
4183
29e61124
KR
4184 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
4185
4186 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
4187 SIGINT and SIGQUIT, since those values are ints.
4188
759aa8f9
MV
41892004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4190
7241f213
MV
4191 * num2integral.i.c, num2float.i.c: Removed.
4192 * Makefile.am (noinst_HEADERS): Updated.
4193
f9656a9f
MV
4194 * numbers.h. numbers.c (scm_make_ratio): Renamed to
4195 scm_i_make_ratio and made static, replaced uses with scm_divide.
96d8c217
MV
4196 (scm_complex_p): New, export as "complex?" to Scheme.
4197 (scm_number_p): Export as "number?" to Scheme.
4198 (scm_is_complex, scm_is_number): New.
4199 (scm_c_make_rectangular, scm_c_make_polar): New.
4200 (scm_make_rectangular, scm_make_polar): Use above.
4201 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
4202 New.
4203 (scm_make_complex): Discouraged by moving to discouraged.h and
4204 discouraged.c. Replaced all uses with scm_c_make_rectangular.
4205
759aa8f9
MV
4206 * discouraged.h, discouraged.c, numbers.c, numbers.h
4207 (scm_is_rational): New.
4208 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
4209 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
4210 Removed prototypes.
4211 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
4212 Discouraged by moving to discouraged.h and discouraged.c.
4213 Replaced all uses with scm_from_double.
4214 (scm_num2float, scm_num2double): Discouraged by moving prototype
4215 to discouraged.h and rewriting in terms of scm_to_double.
4216 Replaced all uses with scm_to_double.
4217 (scm_to_double): Do not implement in terms of scm_num2dbl, use
4218 explicit code.
4219 (scm_from_double): Do not implement in terms of scm_make_real, use
4220 explicit code.
4221
531bf3e6
MV
42222004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4223
759aa8f9
MV
4224 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
4225
531bf3e6
MV
4226 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
4227 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
4228
4229 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
4230 Renamed to SCM_I_* in order to avoid collisions with the versions
4231 defined in deprecated.h.
4232
4233 * discouraged.h, discouraged.c: New files.
4234
4235 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
4236 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
4237 deprecated to being discouraged by moving to discouraged.h.
4238
4239 * numbers.h, numbers.c, discouraged.h, discouraged.c
4240 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
4241 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
4242 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
4243 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
4244 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
4245 scm_num2ulong_long): Discouraged by moving to discouraged.h and
4246 discouraged.c and reimplementing in terms of scm_from_* and
4247 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
4248 functions.
4249
4250 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
4251 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
4252 scm_i_size2big, scm_i_ptrdiff2big): Removed.
4253 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
4254 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
4255 explicit code.
4256
5ec82e96
KR
42572004-08-02 Kevin Ryde <user42@zip.com.au>
4258
4259 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
4260 and current usage and migration.
4261
58f28989
KR
42622004-07-31 Kevin Ryde <user42@zip.com.au>
4263
4264 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
4265 it's not thread safe.
4266 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
4267 advantage of this.
4268 * fports.c (scm_open_file): Use scm_strerror likewise.
4269 * filesys.c (scm_stat, scm_lstat): Ditto.
4270
4271 * filesys.c (scm_copy_file): Avoid fd leak when destination file
4272 cannot be opened.
4273
4274 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
4275 update, for thread safety.
4276 (gensym_counter): Move into scm_gensym which is its only user.
4277 (scm_init_symbols): No need to explicitly initialize gensym_counter.
4278
03696aab
MV
42792004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4280
51fdb325
MV
4281 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
4282 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
4283 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
4284 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
4285 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
4286 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
4287 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
4288 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
4289 defined in terms of scm_to_signed_integer, etc, but in terms of
4290 scm_to_int8, etc.
4291
4292 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
4293
03696aab
MV
4294 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
4295 no longer used.
4296
4297 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
4298 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
4299
4300 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
4301 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
4302 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
4303 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
4304 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
4305 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
4306 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
4307
4308 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
4309 the functions below.
4310
4311 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
4312 conv-uinteger.i.c.
4313
4314 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
4315 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
4316 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
4317 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
4318 scm_from_uint64): Turned from macros into proper functions.
4319 (scm_to_signed_integer, scm_to_unsigned_integer,
4320 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
4321 conv-integer.i.c and conv-uinteger.i.c, as well.
4322
4323 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
4324 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
4325 the limits. Those are always defined.
4326
1f15779e
KR
43272004-07-29 Kevin Ryde <user42@zip.com.au>
4328
4329 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
4330
48360eb3
KR
43312004-07-28 Kevin Ryde <user42@zip.com.au>
4332
4333 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
4334 safety.
4335
c3f3c841
KR
4336 * unif.c (scm_array_set_x): For svect, use scm_num2short for
4337 consistency with other vector types and to get arg and func name into
4338 error message.
4339
c82f8ed6
MV
43402004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4341
4342 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
4343 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
4344 scm_from_bool, respectively.
4345 (SCM_NINUMP): Added.
4346
4347 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
4348 deprecated.h. Replaced all uses with scm_is_eq.
4349
317b4c4a
KR
43502004-07-24 Kevin Ryde <user42@zip.com.au>
4351
4352 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
4353 * posix.c (scm_crypt): Use it to protect static data in crypt().
4354
e11e83f3
MV
43552004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4356
4357 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
c82f8ed6 4358 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
e11e83f3
MV
4359 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
4360 versions to deprecated.h and deprecated.c. Changed all uses to
4361 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
4362 scm_from_*, as appropriate.
4363
4364 * dynwind.c (scm_i_dowinds): Removed unused code that would call
4365 the unexisting scm_cross_dynwind_binding_scope for inums on the
4366 windlist.
4367
a55c2b68
MV
43682004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4369
4370 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
e11e83f3 4371 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
a55c2b68
MV
4372 byte-wise address to a SCM integer. Changed all uses.
4373 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
4374 scm_to_ipv6 and added type and range checking, for converting from
4375 an IPv& byte-wise address to a SCM integer. Changed all uses.
4376 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
4377 is now done by scm_to_ipv6.
4378
4379 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
4380 not accept inexact integers.
4381
4382 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
4383 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
4384 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
4385 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
4386 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
4387 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
4388 fixnum/bignum distinction visible. Changed all uses to
4389 scm_to_size_t or similar.
4390
43912004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4392
4393 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
4394
48a06bd5
KR
43952004-07-10 Kevin Ryde <user42@zip.com.au>
4396
4397 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
4398 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
4399 such a size causes divide-by-zeros in scm_hasher.
4400
052fbfd9
KR
4401 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
4402 leak.
4403
43240c9c
MV
44042004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4405
4406 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
4407 Rewritten using the same logic as scm_to_signed_integer and
4408 scm_to_unsigned_integer, respectively, which is better(tm). Also,
4409 use CHAR_BIT instead of hardcoding 8.
4410 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
4411 SCM_I_LLONG_MIN etc. instead.
4412
4413 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
4414 SCM_I_MAKINUM and changed all uses.
4415 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
4416
a3de8e7b
MV
4417 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
4418 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
43240c9c
MV
4419 them by assuming twos-complement.
4420
c9eb03bb
MV
44212004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4422
4423 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
4424 configure now produces.
4425 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
4426 definitions, giving the limits of the integer types defined by
4427 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
4428 LLONG_MIN or LONG_LONG_MIN is hard to get at.
4429
4430 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
4431 SHORT_MIN.
4432 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
4433 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
4434 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
4435 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
4436 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
4437 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
4438 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
4439 scm_from_uintmax): New.
4440
7888309b
MV
44412004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4442
4443 * tags.h (scm_is_eq): New.
4444
4445 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
4446 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
4447 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
4448 scm_from_bool, and scm_is_bool, respectively.
4449
4450 * boolean.h (scm_is_bool): Fix bug in prototype.
4451 (scm_from_bool): The argument is "x" not "f", stupid.
4452
4453 * boolean.c (scm_is_bool): Fix typo.
4454
4455 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
4456 scm_is_unsigned_integer, scm_to_signed_integer,
4457 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
4458 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
4459 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
4460 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
4461 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
4462 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
4463 New.
4464
800570a6
MV
44652004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4466
4467 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
4468 scm_to_bool): New.
4469
9fcf3cbb
DH
44702004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4471
4472 * backtrace.c (display_expression, display_frame): Call
4473 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
4474 single memoized expression.
4475
4476 * debug.c (memoized_print): Don't try to unmemoize the memoized
4477 object, since we can't know whether it holds a single expression
4478 or a body.
4479
4480 (scm_mem_to_proc): Removed check for lambda expression, since it
4481 was moot anyway. Whoever uses these functions for debugging
4482 purposes should know what they do: Creating invalid memoized code
4483 will cause crashes, independent of whether this check is present
4484 or not.
4485
4486 (scm_proc_to_mem): Take the closure's code as it is and don't
4487 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
4488 memoized code should not be modified.
4489
4490 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
4491 scm_unmemoize from public use, but made scm_i_unmemoize_expr
4492 available as a guile internal function instead. However,
4493 scm_i_unmemoize_expr will only work on memoized objects that hold
4494 a single memoized expression. It won't work with bodies.
4495
4496 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
4497 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
4498 i. e. a list of expressions.
4499
4500 * eval.c (unmemoize_exprs): Drop internal body markers from the
4501 output during unmemoization.
4502
4503 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
4504 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
4505 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
4506 as guile internal functions instead. scm_i_unmemoize_expr will
4507 only work on a single memoized expression, while
4508 scm_i_unmemocopy_body will only work on bodies.
4509
90df793f
DH
45102004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4511
4512 * eval.c (unmemoize_exprs): Handle semi-memoized code.
4513
4514 (scm_cons_source, scm_primitive_eval): Prefer higher level
4515 predicate SCM_FALSEP over SCM_IMP.
4516
8048c00b
RB
45172004-06-15 Rob Browning <rlb@defaultvalue.org>
4518
4519 * script.c (scm_shell_usage): minor phrasing change.
4520
4521 * gc_os_dep.c: update ifdefery for macosx.
4522 (scm_get_stack_base): separate result initialization from
4523 declaration to slience warnings with macosx and hp-ux using gcc
9a5fa6e9 4524 3.3. Thanks to Andreas Vögele.
8048c00b 4525
d93294d4
HWN
45262004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
4527
4528 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
4529
212e58ed
DH
45302004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4531
4532 * list.[ch] (scm_i_finite_list_copy): New internal function to
4533 copy lists that are known to be finite (though not necessarily
4534 proper).
4535
4536 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
4537 a closure's argument list like an expression of a body.
4538
4539 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
4540 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
4541 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
4542 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
4543 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
4544 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
4545 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
4546 unmemoize_builtin_macro): New static functions and symbols.
4547
4548 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
4549 now has a slightly different meaning: The memoized form that is
4550 receives as its argument is now interpreted as a sequence of
4551 expressions from a body.
4552
4553 (unmemocar, scm_unmemocar): Since the whole functionality of
4554 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
4555 has its old content back and is deprecated, while unmemocar has
4556 been removed.
4557
4558 (SCM_BIT7): Removed.
4559
4560 (CEVAL): For unmemoizing a single expression, call
4561 unmemoize_expression instead of scm_unmemocopy, which now expects
4562 a sequence of body expressions. Eliminated unnecessary empty
4563 environment frame when executing let* forms. Eliminated
4564 unmemoization step from evaluator.
4565
9ccea370
MV
45662004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4567
4568 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
4569 macroexp and made static. Added new version of scm_macroexp that
4570 emits a deprecation warning and then calls macroexp.
4571 (scm_m_undefine): Issue deprecation warning.
4572
57d23e25
DH
45732004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4574
4575 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
4576 Modified to make set! work on symbols that represent syntactic
4577 keywords.
4578
141521ad
HWN
45792004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
4580
4581 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
4582 compound expression as lvalue errors.
4583
7c2f56a4
MV
45842004-05-24 Marius Vollmer <mvo@zagadka.de>
4585
4586 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
4587 WINDER_DATA to a SCM.
4588
366ecaec
DH
45892004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4590
4591 * goops.c (compute_getters_n_setters, create_standard_classes,
4592 scm_add_slot): Compute closures by calling scm_i_eval_x on a
4593 lambda expression rather than creating them with scm_closure.
4594
26ecfa39
DH
45952004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4596
4597 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
4598 misplaced syntactic keywords. This will not work unless guile's
4599 defmacro feature is deprecated.
4600
4601 (scm_m_case): Fixed a bug that caused the list of labels to grow
4602 with every case form.
4603
f865229a
KR
46042004-05-19 Kevin Ryde <user42@zip.com.au>
4605
4606 * numbers.c (scm_round_number): For inum and big, just return x. For
4607 real, use scm_round for 2^54-1 etc problems covered there.
4608
4609 * numbers.c (trunc): Remove #define to scm_truncate when the C library
4610 doesn't provide trunc. This was for when `truncate' was done as a
4611 scm_tc7_dsubr, no longer required.
4612
4613 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
4614 to stack marking call, two parameters and no cast on t->base.
4615
63947c7a
MV
46162004-05-18 Marius Vollmer <mvo@zagadka.de>
4617
4618 * hashtab.c (rehash_after_gc): Bug fix: properly link the
4619 processed hashtables back into the weak_hashtables list. Thanks
4620 to Bill Schottstaedt!
4621
e7313a9d
DH
46222004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4623
4624 * eval.c (unmemoize_quote): New static function.
4625
4626 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
4627 representation of 'quote' and '@slot-ref' to an improper list.
4628 This reduces execution time, the number of cells used to hold the
4629 memoized code, and thus also reduces garbage collection time.
4630
4631 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
4632
4633 (SCM_CEVAL): Changed macro handling to also work with macros that
4634 return improper lists. Added an assertion, that the code returned
4635 by a macro transformer will not lead to cycles in the memoized
4636 code.
4637
e5156567
DH
46382004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4639
4640 No functional change, just rearrangements of functions within the
4641 file.
4642
4643 * eval.c (scm_ilookup, scm_unbound_variable_key,
4644 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
4645 the definitions used for execution, since that's where they will
4646 belong to later.
4647
651f07f8
DH
46482004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4649
4650 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
4651 throughout guile, has not been part of an official release yet,
4652 and the concept of sloppy predicates has never been a good idea.
4653
4654 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
4655 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
4656 Simplified.
4657
770e048f
DH
46582004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4659
4660 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
4661 to make explicit what happens.
4662
2ff08405
DH
46632004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4664
4665 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
4666 explicit what happens.
4667
4668 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
4669 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
4670
89afb9cd
MV
46712004-05-11 Marius Vollmer <mvo@zagadka.de>
4672
4673 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
4674 is indeed a procedure when it isn't a number.
4675
3d5ebfa9
MV
46762004-05-10 Marius Vollmer <mvo@zagadka.de>
4677
4678 Convert floating point numbers into strings with an arbitrary
4679 radix. Thanks to Richard Todd!
4680
4681 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
4682 fit.
4683 (fx): Removed.
4684 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
4685 number_chars): New, to support variable radices.
4686 (idbl2str): Use above instead of the old base-10 only tables.
4687 (iflo2str): Pass on new RADIX argument to idbl2str.
4688 (scm_number_to_string): Pass radix to iflo2str.
4689 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
4690 iflo2str.
4691 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
4692 possible radices.
4693
3ae69bb4
KR
46942004-05-10 Kevin Ryde <user42@zip.com.au>
4695
4696 * numbers.c (scm_logbit_p): Correction to test above the end of an
4697 inum. Reported by Jan Konecny.
4698
27968825
MV
46992004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4700
4701 * gc.h (scm_t_cell): Fields are now of type SCM instead of
4702 scm_t_bits. Updated all users.
4703 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
4704 duplicating the code.
4705 (SCM_CELL_OBJECT_LOC): New.
4706 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
4707 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
4708
4709 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
4710 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
4711 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
4712 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
4713 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
4714 SCM_SMOB_OBJECT_3_LOC): New.
4715 * smob.c (scm_i_set_smob_flags): New function.
4716
4717 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
4718 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
4719 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
4720 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
4721 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
4722 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
4723
4724 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
4725 taking the address of SCM_CELL_WORD_1, the latter being no longer
4726 an lvalue.
4727
4728 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
4729 of casting SCM_CELL_WORD_LOC.
4730
3cf17ef0
KR
47312004-05-02 Kevin Ryde <user42@zip.com.au>
4732
37026925 4733 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
9a5fa6e9 4734 --disable-deprecated. Reported by Andreas Vögele.
37026925 4735
3cf17ef0 4736 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
9a5fa6e9 4737 particular on HP-UX). Reported by Andreas Vögele.
3cf17ef0 4738
c5854598
KR
4739 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
4740 code has support for. Fixes building with AIX cc, which is ansi but
4741 doesn't define __STDC__. Reported by Keith Crane.
4742 (var_start): Remove macro, this variation no longer required.
4743 (scm_list_n): Use va_start directly.
4744
f26c1a32
KR
47452004-05-01 Kevin Ryde <user42@zip.com.au>
4746
4747 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
9a5fa6e9 4748 is now gone. Reported by Andreas Vögele.
f26c1a32 4749
dfa6017e
KR
47502004-04-28 Kevin Ryde <user42@zip.com.au>
4751
4752 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
4753 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
4754 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
9a5fa6e9 4755 subscript. Reported by Andreas Vögele.
dfa6017e
KR
4756 Also cast through unsigned char to avoid passing negatives to those
4757 macros if input contains 8-bit values.
4758
4759 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
4760 corrections to range check for signed numbers. Remove
4761 scm_remember_upto_here_1(num) from these checks, since num is used
4762 subsequently anyway.
4763
4764 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
4765 avoid warning from gcc 3.4. Reported by Hyperdivision.
4766
4767 * numbers.c (scm_bit_extract): Use min instead of MIN.
4768 (MIN): Remove, this conflicts with similar macro defined by limits.h
9a5fa6e9 4769 on HP-UX. Reported by Andreas Vögele.
dfa6017e
KR
4770
4771 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
9a5fa6e9 4772 particular on HP-UX). Reported by Andreas Vögele.
dfa6017e 4773
a0d06a00 4774 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
9a5fa6e9 4775 Reported by Andreas Vögele.
a0d06a00 4776
dfa6017e
KR
4777 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
4778 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
9a5fa6e9 4779 by Andreas Vögele.
dfa6017e 4780
36245b66
DH
47812004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4782
4783 * eval.c (s_macro_keyword): New static identifier.
4784
4785 (scm_m_define): Change order to first create binding and
4786 evaluating the expression afterwards.
4787
4788 (scm_m_set_x): Memoize complete set! expression. Only leave
4789 symbols if no binding exists at memoization time. Throw error if
4790 assigning to a syntactic keyword.
4791
4792 (lazy_memoize_variable): New function.
4793
4794 (CEVAL): When execution set!, perform lazy memoization if
4795 unmemoized symbol is detected.
4796
4797 * modules.c (module_variable): Return variables with unbound
4798 value.
4799
4800 * tags.h: Fix comment.
4801
4d81111e
KR
48022004-04-25 Kevin Ryde <user42@zip.com.au>
4803
da8bcb2f
KR
4804 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
4805 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
4806 in 8-bit locales, and ensures consistency with char-upper-case? and
4807 char-lower-case? which already use ctype.h.
4808 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
4809 Remove.
4810 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
4811
4d81111e
KR
4812 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
4813 call. Reported by Hyperdivision.
4814
4815 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
4816 Reported by Hyperdivision.
4817
4818 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
4819 Hyperdivision.
4820
7e6e6b37
DH
48212004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4822
4823 Hide the implementation of ilocs and isyms in eval.c.
4824
4825 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4826 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
4827 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
4828 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
4829 eval.h to eval.c.
4830
4831 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
4832 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
4833 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
4834 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
4835 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
4836 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
4837 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
4838 renamed to ISYMNUM.
4839
4840 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
4841 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
4842 Extracted printing of ilocs and isyms to guile internal functions
4843 scm_i_print_iloc, scm_i_print_isym of eval.c.
4844
caab294f
KR
48452004-04-22 Kevin Ryde <user42@zip.com.au>
4846
7aaf4758
KR
4847 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
4848
caab294f
KR
4849 * numbers.c (scm_round): Test for x already an integer, to avoid bad
4850 rounding in x+0.5 when x is a big value already an integer. In
4851 certain hardware rounding cases x+0.5 can give an adjacent integer,
4852 leading to that as the result, when we really just wanted x itself.
4853
b1cb24ff
DH
48542004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4855
4856 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
4857
4858 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
4859 added const qualifiers, cast intentionally unused expressions to
4860 void for emphasis, improved comment.
4861
5065b40d
DH
48622004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4863
4864 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
4865 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
4866 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
4867 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
4868 Defined the tc8-tag for flags to be 0x04, which will mean that
4869 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
4870 to the reduced number of bits and the simpler bit pattern for
4871 SCM_BOOL_F, certain machines may be able to use more efficient
4872 processor instructions to deal with SCM_BOOL_F.
4873
4874 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
4875 never been defined in a released version, thus no need to
4876 deprecate them.
4877
4878 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
4879 instead of tc9 tags.
4880
4881 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
4882 of tc9 tags.
4883
4884 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
4885 could have used this definition.
4886
4887 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
4888 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
4889 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
4890 as isyms, as special isyms don't exist any more.
4891
9fa6c119
KR
48922004-04-18 Kevin Ryde <user42@zip.com.au>
4893
e08d2eee
KR
4894 * filesys.c (scm_readdir): Use readdir_r when available, for thread
4895 safety.
4896
9fa6c119
KR
4897 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
4898 explicit swapping code.
4899
c9cdd396
KR
49002004-04-15 Kevin Ryde <user42@zip.com.au>
4901
4902 * cpp_sig_symbols.in: Add SIGSYS.
4903
4904 * list.c (scm_append_x): Use iterative style, to avoid non-tail
4905 recursion.
4906
4907 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
4908 frac/big and frac/frac, use scm_less_p for exact comparison.
4909
83ac9c59
KR
4910 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
4911 with big/inum.
4912
84a4be9a
KR
4913 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
4914
84fad130
HWN
49152004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
4916
6b69393d
HWN
4917 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
4918
84fad130
HWN
4919 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
4920 scm_c_{up,down}case.
4921 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
4922 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
4923
c3110a30
KR
49242004-04-06 Kevin Ryde <user42@zip.com.au>
4925
0b288f36
KR
4926 * numbers.c (scm_ash): Remove stray "}" in docstring.
4927
ea2508c8
KR
4928 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
4929 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
4930 calling mpz_cmp_ui in most cases.
4931
c3110a30
KR
4932 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
4933 for big == abs(most-negative-fixnum) special case.
4934 (abs_most_negative_fixnum): Remove, no longer used.
4935
4936 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
4937 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
4938 calling (sigaction NSIG).
4939
4940 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
4941 and fork error cases to do this.
4942
dec40cd2
DH
49432004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4944
4945 * eval.c (CEVAL): Don't distinguish between short and long
4946 instructions when dispatching - just always dispatch on the
4947 instruction code, which is common for short and long instructions.
4948 Further, removed unnecessary goto statements and added comment.
4949
0e7bb795
DH
49502004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4951
4952 * eval.c (scm_unmemocopy): Don't distinguish between short and
4953 long instructions when dispatching - just always dispatch on the
4954 instruction code, which is common for short and long instructions.
4955 Further, removed unnecessary goto statements, fixed indentation
4956 and replaced SCM_IMP predicates by SCM_NULLP.
4957
f9986767
DH
49582004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4959
4960 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
4961 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
4962 'checkmacro'.
4963
fbc42231
KR
49642004-03-31 Kevin Ryde <user42@zip.com.au>
4965
4966 * simpos.c: Include <signal.h> for SIG_IGN and friends.
4967
434f2f7a
DH
49682004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
4969
4970 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
4971 SCM_DEBUGGINGP:
4972
4973 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
4974 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
4975 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
4976 single interface that also matches the naming conventions.
4977 Probably scm_debug_mode_p should be part of the private interface
4978 anyway.
4979
4980 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
4981 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
4982 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
4983 to scm_debug_mode_p.
4984
4985
4986 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
4987
4988 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
4989 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
4990 from debug.h to eval.h.
4991
4992 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
4993 more, just leave it with setting scm_debug_mode_p, which is
4994 equivalent for practical purposes.
4995
4996 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
4997 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
4998
4999 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
5000
5001 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
5002 static and renamed it to ceval throughout. Provide a new exported
5003 but deprecated function scm_ceval as a wrapper for backwards
5004 compatibility. The same is done for the deval/scm_deval pair of
5005 functions.
5006
5007 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
5008 throughout. Defined CEVAL to ceval or deval, based on compilation
5009 phase.
5010
5011 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
5012 to ceval and deval instead of calling *scm_ceval_ptr.
5013
5014 * eval.c (dispatching_eval): New deprecated static function.
5015
5016 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
5017 to emulate its old behaviour as closely as possible.
5018
5019
5020 Change the evaluator such that only expressions for which pair? is
5021 true are passed to CEVAL, and such that all other expressions are
5022 evaluated outside of CEVAL:
5023
5024 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
5025 expression that is assumed to be memoized already. All but
5026 expressions of the form '(<form> <form> ...)' are evaluated inline
5027 without calling an evaluator.
5028
5029 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
5030 expressions of the form '(<form> <form> ...)' inline without
5031 calling an evaluator.
5032
5033 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
5034 the special case of unmemoized symbols passed on the top level.
5035
5036 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
5037 is known that the expression passed to CEVAL is of the form
5038 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
5039 now it is known that the input expression of CEVAL is a pair.
5040
50412004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5fb64383
DH
5042
5043 * eval.c (is_self_quoting_p): New static function.
5044
5045 (scm_m_quote): Use is_self_quoting_p.
5046
5047 (copy_tree): Corrected typo in comment.
5048
702551e6
HWN
50492004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
5050
bfefbf18
HWN
5051 * eval.c (s_scm_copy_tree): idem.
5052
5053 * list.c (s_scm_filter): remove "pointer" from doc string.
5054
702551e6
HWN
5055 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
5056
5057 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
5058
5059 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
5060 (display_frame): idem.
5061 (display_backtrace_file_and_line): idem.
5062
5063 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
5064 arguments.
5065
3cd23214
KR
50662004-03-26 Kevin Ryde <user42@zip.com.au>
5067
88a7ae1f
KR
5068 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
5069
3cd23214
KR
5070 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
5071 big==0 since that never occurs.
5072
5073 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
5074 scm_modular_expt, matching scheme level name `modulo-expt'.
5075
5076 * numbers.c (scm_modular_expt): Return a negative remainder for a
5077 negative divisor, the same as `modulo' does.
5078
50792004-03-26 Eric Hanchrow <offby1@blarg.net>
5080
5081 * numbers.c, numbers.h (scm_modular_expt): New function.
5082
2926035a
KR
50832004-03-25 Kevin Ryde <user42@zip.com.au>
5084
5085 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
5086 return inexact as required by r5rs.
5087
62360b89
DH
50882004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
5089
5090 * eval.c: Separated some definitions relevant for execution from
5091 the memoization part of the file.
5092
5093 (copy_tree): New static function
5094
5095 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
5096 structures are detected now and will lead to an exception instead
5097 of forcing guile to run in an endless loop, using up all the
5098 system's memory. Second, arrays in the cdr of an improper list
5099 are now copied. See the new test cases in eval.test.
5100
51012004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
b28f5b3c
DH
5102
5103 * posix.c (scm_gethostname): Make sure len is initialised before
5104 it is used. Restructured to (hopefully) represent possible
5105 configurations more clearly in the code. Added unwind handler.
5106
3bd3bae8
KR
51072004-03-23 Kevin Ryde <user42@zip.com.au>
5108
5109 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
5110 MAXHOSTNAMELEN when available.
5111
254bf78d
MV
51122004-03-21 Marius Vollmer <mvo@zagadka.de>
5113
5114 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
5115 terminator. Rewritten the logic as a state machine, I must have
5116 been doing too much VHDL lately...
5117
5118 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
5119 themselves. Thanks to Han-Wen Nienhuys!
5120
5121 * list.c: Changed docstrings so that they no longer talk about
5122 returning 'pointers' to something.
5123
009c34a2
HWN
51242004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5125
5126 * gc.c: remove set_debug_cell_accesses! when
5127 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
5128 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
5129 debugging conditionally.
5130
54733c95
KR
51312004-03-21 Kevin Ryde <user42@zip.com.au>
5132
5133 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
5134
bbaf8747
KR
51352004-03-20 Kevin Ryde <user42@zip.com.au>
5136
5137 * posix.c (scm_gethostname): Preserve errno across free() call.
5138
726f82e7
HWN
51392004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
5140
5141 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
5142 free cells.
5143
e1350d6a
KR
51442004-03-14 Kevin Ryde <user42@zip.com.au>
5145
5146 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
5147 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
5148
62055253
KR
51492004-03-07 Kevin Ryde <user42@zip.com.au>
5150
5151 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
5152 than "GMT" always.
5153 (filltime): Make zname parameter "const".
5154
92e64b87
MD
51552004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
5156
5157 * threads.c, threads.h (scm_c_scm2thread): New function.
5158
004ad931
KR
51592004-02-29 Kevin Ryde <user42@zip.com.au>
5160
5161 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
5162 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
5163 particular don't assume "defined (__alpha__) && ! defined (linux)"
5164 means OSF. Remove "SCO" code, which was not really SCO specific and
5165 which John W. Eaton advises should be long past being needed.
5166
5167 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
5168 error throw.
5169
72ea45ac
KR
51702004-02-24 Kevin Ryde <user42@zip.com.au>
5171
5172 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
5173
2af0602e
KR
51742004-02-22 Kevin Ryde <user42@zip.com.au>
5175
5176 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
5177 complex, same as for two args. (Handle only inum, big, real, frac).
5178
b114eafe
KR
51792004-02-21 Kevin Ryde <user42@zip.com.au>
5180
5181 * posix.c (scm_crypt): Use new HAVE_CRYPT.
5182 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
db752bb5 5183 Reported by Andreas Voegele.
b114eafe 5184
1e55d288
NJ
51852004-02-20 Neil Jerram <neil@ossau.uklinux.net>
5186
5187 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
5188 validation.
5189
5190 * read.c (scm_lreadparen): Removed.
5191 (scm_lreadparen1): Renamed scm_i_lreadparen.
5192
eb741d98
HWN
51932004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
5194
5195 * list.c (scm_list_n): validate non-immediate arguments;
5196 this will catch forgotten a SCM_UNDEFINED.
5197
4e28ba5e
MV
51982004-02-18 Marius Vollmer <mvo@zagadka.de>
5199
5200 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
5201 Thanks to Bill Schottstaedt!
5202
5203 * socket.h (scm_gethost): Removed prototype it is already in
5204 "net_db.h". Thanks to Bill Schottstaedt!
5205
ef861ead
KR
52062004-02-18 Kevin Ryde <user42@zip.com.au>
5207
5208 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
5209 order parameter to mpz_import, in fact with just one word there's no
5210 order to worry about at all.
5211
5212 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
5213 and frac==complex, make an exact comparison rather than converting
5214 with fraction2double.
5215
5216 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
5217 shared library, since environ is not directly available there.
5218
5219 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
5220 standard.
5221
5222 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
5223 errno EINVAL in case localtime and gmtime don't set it.
5224 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
5225 SCM_SYSERROR, since mktime and strptime generally don't set errno.
5226
ae43d08e 52272004-02-16 Kevin Ryde <kevin@swox.se>
292dfa7f 5228
c9ea6462
KR
5229 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
5230 which were permitted in the past for these.
5231
292dfa7f
KR
5232 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
5233 previous change to numbers.c.
5234
ae43d08e
KR
5235 * script.c (scm_shell_usage): Print bug-guile email address, as per
5236 GNU standard. Reported by Han-Wen Nienhuys.
5237
711a9fd7
MD
52382004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5239
5240 * unif.c (scm_make_uve): Removed local variable and simplified
5241 code in order to avoid compiler used uninitialized warnings.
5242
5243 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
5244 scm_hash_map.
5245 (scm_hash_fold): Use scm_call_3 directly in the call to
5246 scm_internal_hash_fold instead of going via fold_proc (which is
5247 now removed).
5248 (scm_hash_for_each): Use a trampoline +
5249 scm_internal_hash_for_each_handle.
5250 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
5251 functions.
5252
3da7f6b2
KR
52532004-02-12 Kevin Ryde <user42@zip.com.au>
5254
344a212f
KR
5255 * ports.c (scm_port_line): In docstring, note first line is 0.
5256 (scm_set_port_line_x): In docstring, note first line is 0.
5257 (scm_port_column): In docstring, there's no default to current input
5258 port, and remove shared port-line @defun.
5259 (scm_set_port_column_x): In docstring, there's no default to current
5260 input port, note first column is 0, remove shared set-port-line!
5261 @defun.
5262
3da7f6b2
KR
5263 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
5264 convert args the same way that array-set! does.
5265
5266 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
5267 for dvect.
5268 (scm_array_p): Add missing "break"s in switch, fix llvect test look
5269 for "l" not "s", fix dvect to be false for singp(prot) since such a
5270 value is for fvect.
5271 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
88531a74
KR
5272 (exactly_one_third): New variable.
5273 (scm_init_unif): Initialize it.
3da7f6b2 5274
cd21f5eb
NJ
52752004-02-10 Neil Jerram <neil@ossau.uklinux.net>
5276
5277 * read.c (scm_read_opts): Change `escaped-parens' to
5278 `elisp-strings'.
5279
16353acc
NJ
52802004-02-08 Neil Jerram <neil@ossau.uklinux.net>
5281
5282 * read.c (scm_read_opts): New opts `elisp-vectors' and
5283 `escaped-parens'.
5284 (s_vector): New.
5285 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
5286 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
5287 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
5288 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
5289 `escaped-parens' option set.
5290 (scm_read_token): If elisp vector syntax active, disallow [ and ]
5291 in tokens.
5292 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
5293 (scm_lreadparen1): New.
5294
5295 * read.h: Remove conditionally compiled last arg to
5296 scm_lreadparen.
5297 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
5298
f62b9dff
HWN
52992004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
5300
5301 * eval.c (m_expand_body): remove stray variable new_body.
5302
ef5b6b61
MV
53032004-01-22 Marius Vollmer <mvo@zagadka.de>
5304
5305 * eval.c (m_expand_body): Rewrite the expression in place (by
5306 overwriting FORMS) also when a letrec is constructed, not only
5307 when no definitions are found. Do not return rewritten expression
5308 to emphasize the in-place rewriting. Changed all users.
5309
7eec4c37
HWN
53102004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
5311
5312 * gc.c: add protected_object_count, a number that is dumped from
5313 gc_stats()
5314
25ffbdac
MV
53152004-01-11 Marius Vollmer <mvo@zagadka.de>
5316
5317 * dynwind.h, dynwind.c (scm_frame_unwind,
5318 scm_frame_unwind_handler): Renamed and changed all uses.
5319 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
5320
08568c95
KR
53212004-01-11 Kevin Ryde <user42@zip.com.au>
5322
5323 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
5324 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
5325 changes made to scheme-compound.texi.
5326
5565749c
MV
53272004-01-10 Marius Vollmer <mvo@zagadka.de>
5328
25ffbdac
MV
5329 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
5330 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
5331
5332 * guile-snarf.in: Use mkdir to create a unique temporary directory
5333 that we can safely use. Thanks to Stefan Nordhausen!
5565749c 5334
fc6bb283
MV
53352004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5336
7ebccde8
MV
5337 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
5338 argument since it is always zero now. Changed all callers.
5339 Removed code for handling fluids.
96e3b2f8
MV
5340
5341 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
5342 the wind chain explicitely. Use scm_c_with_fluid for the common
5343 case of only one fluid.
5344 (scm_with_fluid): New.
5345 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
5346
fc6bb283 5347 * fluids.h, fluids.c (scm_frame_fluid): New.
96e3b2f8
MV
5348 (scm_with_fluid): New.
5349 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
fc6bb283
MV
5350
5351 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
5352 do the unwinding directly. It is simple enough.
5353
5354 * dynwind.h, dynwind.c: Did the following renamings:
5355 scm_begin_frame -> scm_frame_begin,
5356 scm_end_frame -> scm_frame_end,
5357 scm_on_unwind -> scm_frame_unwind,
5358 scm_on_rewind -> scm_frame_rewind,
5359 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
5360 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
5361 Changed all uses.
5362
5363 * aync.h, async.c: Did the follwing renamings:
5364 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
5365 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
5366 Changed all uses.
5367
5368 * ports.h, ports.c: Did the follwing renamings:
5369 scm_with_current_input_port -> scm_frame_current_input_port,
5370 scm_with_current_output_port -> scm_frame_current_output_port,
5371 scm_with_current_error_port -> scm_frame_current_error_port.
5372 Changed all uses.
5373
298ab996
KR
53742004-01-07 Kevin Ryde <user42@zip.com.au>
5375
5376 * numbers.c (s_bignum): Remove, not used since gmp bignums.
5377 Reported by Richard Todd.
5378
ba40113e
KR
5379 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
5380 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
5381
298ab996
KR
5382 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
5383 traversing the args list, fixes segv if an improper list is given.
5384 Reported by Rouben Rostamian.
5385
aacff585
MV
53862004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5387
5388 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
5389 swap_data on stack, use a 'malloc obj'.
5390
5391 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
5392 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
5393 scm_i_... since they are internal. Changed all uses.
5394
5395 * dynwind.c (frame_print): Removed, use the default printer.
5396 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
5397 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
5398 to protect SCM values.
5399
5400 * dynwind.h (SCM_F_WIND_EXPLICITELY,
5401 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
5402 Changed all uses.
5403 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
5404
49c00ecc
MV
54052004-01-05 Marius Vollmer <mvo@zagadka.de>
5406
5407 * ports.h, ports.c (scm_with_current_input_port,
5408 scm_with_current_output_port, scm_with_current_error_port): New.
5409
5410 * async.h, async.c (scm_with_blocked_asyncs,
5411 scm_with_unblocked_asyncs): New.
5412
dab514a8
MV
54132004-01-03 Marius Vollmer <mvo@zagadka.de>
5414
5415 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
5416 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
5417 New.
5418 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
5419 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
5420 function when the outermost wind point has been reached. The
5421 latter is used to copy a continuation stack at the right time.
5422 scm_dowinds remains available.
5423 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
5424 tc16_guard, guards_print): Removed.
5425 (scm_internal_dynamic_wind): Reimplemented using frames.
5426
5427 * continuations.c (copy_stack): New, do only the stack copying
5428 part of copy_stack_and_call.
5429 (copy_stack_and_call): Copy the stack after unwinding and before
5430 rewinding.
5431 (scm_dynthrow): Do not call scm_dowinds, this is now done by
5432 copy_stack_and_call.
5433
441a25d9
KR
54342004-01-04 Kevin Ryde <user42@zip.com.au>
5435
5436 * numbers.c (scm_less_p): Don't convert frac to float for compares,
dab514a8 5437 can give bad results due to rounding.
441a25d9 5438
e0499207
KR
5439 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
5440 setzone/restorezone protection for DOS.
5441
89fcf1b4
MV
54422003-12-26 Marius Vollmer <mvo@zagadka.de>
5443
5444 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
5445 and scm_t_uintmax to be defined in scmconfig.h
5446
caff34d4
KR
54472003-12-03 Kevin Ryde <user42@zip.com.au>
5448
5449 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
5450
5451 * numbers.c (scm_make_ratio): Check for numerator equal to
5452 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
5453 giving integer -1.
5454
5455 * numbers.c (scm_real_part): Return fraction unchanged rather than
5456 converting to flonum.
5457
2d0b85ac
DH
54582003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5459
5460 * modules.c (module_variable): Fixed (and thus simplified) the
5461 definition of SCM_BOUND_THING_P to reflect the fact that since
5462 after the 1.4 series of guile, obarrays only hold variable
5463 objects.
5464
2297981d
MV
54652003-11-30 Marius Vollmer <mvo@zagadka.de>
5466
5467 * numbers.c (scm_logand): It's "#b...", not "#\b...".
5468
5469 From Paul Jarc:
5470
5471 * read.c (scm_lreadr): Signal an error for invalid escape
5472 sequences in strings. Code cleanups too.
5473
5474 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
5475 writing control characters in strings.
5476
54772003-11-21 Marius Vollmer <mvo@zagadka.de>
5478
5479 * ports.c (scm_drain_input): Bug fix: only access the port after
5480 checking that it indeed is one.
5481
5c264007
DH
54822003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5483
5484 * eval.c (s_bad_define): New static identifier.
5485
5486 (m_body): Fixed comment.
5487
5488 (scm_m_define): Don't generate memoized code for definitions that
5489 are not on the top level. As a consequence, no memoized code at
5490 all is generated for definitions any more: Top level definitions
5491 are executed immediately during memoization and internal
5492 definitions are handled separately in m_expand_body.
5493
5494 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
5495 definitions. Consequently, there is no unmemoizing code any more
5496 that might modify the environment. Thus, the old scm_unmemocopy
5497 is removed and the old unmemocopy is renamed to scm_unmemocopy.
5498
5499 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
5500 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
5501 over SCM_NIMP in places, where the argument is known to be part of
5502 a proper list.
5503
018d4730
KR
55042003-11-21 Kevin Ryde <user42@zip.com.au>
5505
5506 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
5507 for bignums.
5508
5509 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
5510 to share some shifting.
5511
5512 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
5513 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
5514 since gc does this.
5515
4bca30d8
MV
55162003-11-19 Marius Vollmer <mvo@zagadka.de>
5517
fb16d26e
MV
5518 * numbers.c (scm_make_ratio): Rewritten to have a simpler
5519 structure. Previously, not all cases with a negative denominator
5520 were covered.
5521
4bca30d8
MV
5522 * numbers.c (mem2decimal_from_point): use scm_divide instead of
5523 scm_divide2real when forming the fractional part. This allows
5524 "#e1.2" to yield 6/5.
5525
5526 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
5527 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
5528 fractions were equal to each other regardless of value. Ooops.
5529
5530 * numbers.c (scm_rationalize): Return an inexact result when given
5531 inexact arguments.
5532
5533 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
5534 non-numbers.
5535
bdf26b60
MV
55362003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5537
5538 Support for exact fractions from Bill Schottstaedt! Thanks!
5539
5540 * print.c (scm_iprin1): Handle fractions.
5541
5542 * objects.h (scm_class_fraction): New.
5543 * objects.c (scm_class_fraction): New.
5544 (scm_class_of): Handle fractions.
5545
5546 * hash.c (scm_hasher): Handle fractions.
5547
5548 * numbers.c: New code for handling fraction all over the place.
5549 (scm_odd_p, scm_even_p): Handle inexact integers.
5550 (scm_rational_p): New function, same as scm_real_p.
5551 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
5552 New exact functions that replace the inexact 'dsubr'
5553 implementations.
5554 (scm_numerator, scm_denominator): New.
5555
5556 * numbers.h (SCM_NUMP): Recognize fractions.
5557 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
5558 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
5559 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
5560 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
5561 SCM_FRACTION_REDUCED): New.
5562 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
5563 New prototypes.
5564 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
5565 scm_rational_p): New prototypes.
5566 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
5567 scm_i_print_fraction): New prototypes.
5568
5569 * goops.c (create_standard_classes): Create "<fraction>" class.
5570
5571 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
5572
5573 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
5574 case in the switch, but do nothing for now.
5575
5576 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
5577 to doubles when calling 'dsubr' functions.
5578
5579 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
5580
28fda544
RB
55812003-11-18 Rob Browning <rlb@defaultvalue.org>
5582
5583 * gen-scmconfig.c (main): remove public definition of
5584 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
5585 direct typedef of long_long and ulong_long inside deprecated block
5586 when appropriate.
5587
5588 * deprecated.h: move long_long and ulong_long definitions to
5589 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
5590 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
5591
b58e7420
MV
55922003-11-17 Marius Vollmer <mvo@zagadka.de>
5593
9a1d7d7c
MV
5594 * hash.c (scm_string_hash): New hashing algorithm that takes the
5595 complete string into account.
5596
b58e7420
MV
5597 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
5598 is a list. This allows (@ ...) to work with set!.
9a1d7d7c
MV
5599 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
5600 SCM_ASSYNT.
b58e7420
MV
5601
5602 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
5603 the "-e" option instead of scm_str2symbol. This allows things
5604 like (@ ...) to be specified for the entry point.
5605
461bffb1
DH
56062003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5607
5608 * eval.c (scm_m_letstar): Create memoized code in place to
5609 minimize consing.
5610
6f81708a
DH
56112003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5612
5613 * eval.c (s_splicing): Commented and reformulated.
5614
5615 (lookup_global_symbol, lookup_symbol): New static functions.
5616
5617 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
5618
5619 (try_macro_lookup, literal_p): Use lookup_symbol instead of
5620 creating a temporary pair for scm_lookupcar.
5621
5622 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
5623 created deprecated wrapper function scm_unmemocar.
5624
5625 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
5626 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
5627 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
5628 undefineds, sym_three_question_marks): Moved around without
5629 modifications.
5630
5631 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
5632
910b5125
DH
56332003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5634
5635 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
5636 m_expand_body, scm_m_expand_body): Grouped together with m_body.
5637 No further modifications.
5638
c86c440b
DH
56392003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5640
5641 * eval.c (s_mixed_body_forms): New static identifier.
5642
5643 (canonicalize_define, scm_m_define): The check for a bad
5644 expression is performed in canonicalize_define now.
5645
5646 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
5647 static helper functions for m_expand_body.
5648
5649 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
5650 expand user defined macros. Fixed handling of the definition/
5651 expression boundary. Fixed handling of definitions grouped with
5652 'begin. Use canonicalize_define to expand definitions.
5653
3890131a
MV
56542003-11-13 Marius Vollmer <mvo@zagadka.de>
5655
b58e7420
MV
5656 * read.c (scm_lreadr): detect EOF after backslash, and interpret
5657 \xNN hexadecimal sequences. From Paul Jarc, thanks!
5658
5df36eac
MV
5659 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
5660 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
5661 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
5662 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
5663 New macros from Paul Jarc. Thanks!
5664
3890131a
MV
5665 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
5666 return NULL when the machine type is unknown. Previously,
5667 gc_os_dep.c would refuse to compile.
5668
430b8401
DH
56692003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5670
5671 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
5672 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
5673 scm_m_body to m_body.
5674
328dc9a3
DH
56752003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
5676
5677 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
5678 public use of scm_m_expand_body in eval.h. In eval.c, renamed
5679 scm_m_expand_body to m_expand_body and made it static. Added
5680 deprecated wrapper scm_m_expand_body.
5681
5682 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
5683 of scm_m_expand_body.
5684
c2337a61
KR
56852003-11-09 Kevin Ryde <user42@zip.com.au>
5686
5687 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
5688 argument. Reported by Mike Gran.
5689
ced8edb0
DH
56902003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5691
5692 * eval.c (s_missing_body_expression): New static identifier.
5693
5694 (s_body): Removed.
5695
5696 (scm_m_expand_body): Fixed core dump when passing a body with
5697 defines, but without expressions (see additions to syntax.test).
5698 Use ASSERT_SYNTAX to signal syntax errors.
5699
0f572ba7
DH
57002003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5701
5702 * eval.c (canonicalize_define): New static helper function.
5703
5704 (memoize_define, canonicalize_define): Extract handling of
5705 function currying to canonicalize_define.
5706
2510c810
DH
57072003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5708
5709 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5710 Make sure that error checking in debug mode is not worse than in
5711 standard mode.
5712
34adf7ea
DH
57132003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5714
5715 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
5716 handled in scm_m_body any more, but rather in scm_m_lambda.
5717
5718 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
5719 scm_m_letrec, scm_m_expand_body): Check for validity is done by
5720 calling functions of scm_m_body.
5721
5722 (scm_m_lambda): Avoid unnecessary consing when creating the
5723 memoized code.
5724
89bff2fc
DH
57252003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5726
5727 * eval.c (s_expression): Added comment.
5728
5729 (s_empty_combination, error_unbound_variable): New static
5730 identifiers.
5731
5732 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
5733 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
5734 signal syntax errors.
5735
5736 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
5737 scheme objects.
5738
60a49842
DH
57392003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5740
5741 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
5742 Grouped together with unmemocopy, without modifications.
5743
5744 (build_binding_list, unmemocopy): Renamed names of list arguments
5745 and variables to reflect the actual order of the list elements.
5746
70c1c108
DH
57472003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5748
5749 * eval.c (s_defun): New static identifier.
5750
5751 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
5752 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5753 when creating the memoized code.
5754
0ee39677
KR
57552003-10-19 Kevin Ryde <user42@zip.com.au>
5756
5757 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
5758
5759 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
5760 in accordance with R5RS, which just mpz_get_d doesn't really give.
5761
9a848baf
DH
57622003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5763
5764 * eval.c (s_bad_slot_number): New static identifier.
5765
5766 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
5767 signal syntax errors. Avoid unnecessary consing when creating the
5768 memoized code.
5769
da48db62
DH
57702003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5771
5772 * eval.c (scm_m_cont, scm_m_at_call_with_values,
5773 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
5774 errors. Avoid unnecessary consing when creating the memoized
5775 code.
5776
5777 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
5778 standard case. Make sure line and file information are copied to
5779 every created expression.
5780
82b3e2c6
DH
57812003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5782
5783 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
5784 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
5785 when creating the memoized code.
5786
5787 (scm_m_atbind): Reversed the order, in which the init expressions
5788 are stored and executed. The order of execution is now equal to
5789 the order in which the initializers of the let-forms are executed.
5790 Use check_bindings and transform_bindings.
5791
5792 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
5793 !SCM_NULLP. Added some comments.
5794
21628685
DH
57952003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5796
5797 * eval.c: Sorted include files alphabetically.
5798
5799 (scm_m_begin): Added comment.
5800
5801 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5802 unnecessary consing when creating the memoized code.
5803
5804 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
5805 syntax errors. Be more specific about the kind of error that was
5806 detected.
5807
5808 (scm_m_quote, unmemocopy): As an optimization, vector constants
5809 are now inserted unquoted into the memoized code. During
5810 unmemoization the quotes are added again to provide syntactically
5811 correct code.
5812
d6754c23
DH
58132003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5814
5815 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
5816 scm_m_expand_body, check_bindings): Extracted syntax checking of
5817 bindings to new static function check_bindings.
5818
5819 (scm_m_let, memoize_named_let): Extracted handling of named let to
5820 new static function memoize_named_let.
5821
5822 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
5823 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
5824 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
5825 unnecessary consing when creating the memoized code.
5826
03a3e941
DH
58272003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5828
5829 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
5830 static identifiers.
5831
5832 (s_clauses, s_formals, s_duplicate_formals): Removed.
5833
5834 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
5835 specific about the kind of error that was detected. Prepare for
5836 easier integration of changes for separated memoization.
5837
da48db62 58382003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4610b011
DH
5839
5840 * eval.c (s_duplicate_binding): New static identifier.
5841
5842 (scm_m_case): Call scm_c_memq instead of implementing it inline.
5843
5844 (scm_m_define): Added comment about how we check for duplicate
5845 formals.
5846
5847 (scm_m_do): Added check for duplicate bindings.
5848
5849 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5850 unnecessary consing when creating the memoized code.
5851
5852 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
5853 scm_c_improper_memq to c_improper_memq, since it is not exported.
5854
5855 (transform_bindings): Call scm_c_memq rather than
5856 scm_c_improper_memq.
5857
5858 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
5859
da48db62 58602003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
a954ce1d
DH
5861
5862 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
5863 static identifiers.
5864
5865 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
5866 specific about the kind of error that was detected. Avoid use of
5867 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
5868 code, this way also making sure that file name, line number
5869 information etc. remain available.
5870
da48db62 58712003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8ae95199
DH
5872
5873 * eval.c (memoize_as_thunk_prototype): New static function.
5874
5875 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
5876 Avoid unnecessary consing when creating the memoized code.
5877
9b9a35b6
KR
58782003-10-12 Kevin Ryde <user42@zip.com.au>
5879
5880 * list.c (scm_append): Track argument number and use in error.
5881
cc56ba80
DH
58822003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5883
5884 * eval.c (s_missing_expression, s_bad_variable): New static
5885 identifiers.
5886
5887 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
5888 R5RS terminology for the naming of variables. Be more specific
5889 about the kind of error that was detected. Make sure file name,
5890 line number etc. are added to all freshly created expressions.
5891 Avoid unnecessary consing when creating the memoized code.
5892
609a8b86
DH
58932003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5894
5895 * eval.c (s_extra_expression, s_misplaced_else_clause,
5896 s_bad_cond_clause, s_missing_recipient): New static identifiers.
5897
5898 (s_extra_case_clause): Removed.
5899
5900 (scm_m_case, scm_m_cond): If a clause appears after an else
5901 clause, report a misplaced else clause.
5902
5903 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
5904 specific about the kind of error that was detected. Handle bound
5905 'else and '=>. Avoid unnecessary consing when creating the
5906 memoized code.
5907
5908 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5909 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
5910 syntactic keyword '=>.
5911
58a2510b
DH
59122003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5913
5914 * eval.c (scm_m_case): Allow empty lists of case labels.
5915
2a6f7afe
DH
59162003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5917
5918 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
5919
5920 * print.c (scm_isymnames): Add names for the new memoizer codes.
5921
5922 * eval.c (s_missing_clauses, s_bad_case_clause,
5923 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
5924 literal_p): New static identifiers.
5925
5926 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
5927 specific about the kind of error that was detected. Check for
5928 duplicate case labels. Handle bound 'else. Avoid unnecessary
5929 consing when creating the memoized code.
5930
5931 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
5932 the syntactic keyword 'else.
5933
e6729603
DH
59342003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5935
5936 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
5937 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
5938
5939 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
5940 unnecessary consing when creating the memoized code.
5941
9ddeb776
KR
59422003-10-09 Kevin Ryde <user42@zip.com.au>
5943
5944 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
5945 cast gives for values bigger than a long, or for nan or inf.
5946
df5af69a
DH
59472003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5948
5949 * smob.h (scm_make_smob_type): Made the declaration match the
5950 definition.
5951
da0e6c2b
MV
59522003-10-07 Marius Vollmer <mvo@zagadka.de>
5953
5954 * goops.c, objects.h, smob.c, smob.h: Make type names char
5955 const * instead of char *. Thanks to Paul Jarc!
5956
591924eb
KR
59572003-10-02 Kevin Ryde <user42@zip.com.au>
5958
ff6ea7b9 5959 * strports.c (scm_call_with_output_string): scm_get_output_string
591924eb
KR
5960 rather than scm_strport_to_string, so as to guard against the port
5961 having been closed by the called procedure. Reported by Nic Ferrier.
5962
f03314f9
DH
59632003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5964
5965 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
5966
5967 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
5968 tags.h to deprecated.h.
5969
534c55a9
DH
59702003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5971
5972 This set of patches introduces a new tc7 code scm_tc7_number for
5973 numbers. Bignums, reals and complex numbers are turned from smobs
5974 into subtypes of scm_tc7_number.
5975
5976 * tags.h (scm_tc7_number): New.
5977
5978 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
5979 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
5980 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
5981 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
5982 (scm_class_of), print.c (scm_iprin1), smob.c
5983 (scm_smob_prehistory): Don't handle bignums, reals and complex
5984 numbers as subtypes of scm_tc7_smob any more.
5985
5986 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
5987 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
5988
29c4382a
DH
59892003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
5990
5991 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
5992 sizeof (scm_t_complex) to determine the memory size of the
5993 malloc'd area for complex numbers.
5994
47ae1f0e
DH
59952003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5996
5997 * numbers.c (scm_bigequal): Fixed.
5998
859b6b2f
MV
59992003-09-16 Marius Vollmer <mvo@zagadka.de>
6000
6001 * stime.c (scm_current_time): 'time' does not set errno so don't
6002 use SCM_SYSERROR for reporting errors.
6003
e17d318f
DH
60042003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
6005
6006 This set of patches eliminates the dependency between the
6007 implementation of evaluator specific memoization codes and special
6008 constants like #f, '() etc. ('flags'), which are not evaluator
6009 specific. The goal is to remove definitions of evaluator
6010 memoization codes completely from the public interface. This will
6011 make it possible to experiment more freely with optimizations of
6012 guile's internal representation of memoized code.
6013
6014 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
6015
6016 * print.c (iflagnames): New array, holding the printed names of
6017 guile's special constants ('flags').
6018
6019 (scm_isymnames): Now holds only the printed names of the
6020 memoization codes.
6021
6022 (scm_iprin1): Separate the handling of memoization codes and
6023 guile's special constants.
6024
6025 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
6026 SCM_IFLAGNUM): new
6027
6028 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
6029 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
6030 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
6031 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
6032 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
6033 values.
6034
6035 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
6036
6037 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
6038 tc9 macros and scm_tc9_flag.
6039
eecac806
MV
60402003-09-15 Marius Vollmer <mvo@zagadka.de>
6041
6042 * posix.c (scm_setgroups): Check that the gid list is not too
6043 long. Thanks to Paul Jarc!
6044
22f2cf2d
DH
60452003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
6046
6047 * tags.h: Reduced the number of short instructions from 14 to 13.
6048 The typecode of the former 14th short instruction is now used to
6049 represent long instructions. Changed some comments to reflect
6050 this fact.
6051
6052 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
6053 previously used by SCM_IM_DEFINE.
6054
6055 (SCM_IM_DEFINE): Turned into a long instruction.
6056
6057 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
6058 instruction.
6059
6060 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
6061 code that is separate from all instructions, one level of dispatch
6062 for long instructions can be eliminated.
6063
6064 * print.c (scm_isymnames): Removed some commented code.
6065
62f548e1
MV
60662003-09-12 Marius Vollmer <mvo@zagadka.de>
6067
97a61c5f
MV
6068 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
6069 compiler on IA64.
6070
50e0ba57
MV
6071 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
6072
6073 * modules.c (scm_module_reverse_lookup): Check that the obarray
6074 really is a hashtable and do nothing if not.
6075
62f548e1
MV
6076 * inline.h: Use "extern inline" only with GCC. Use "static
6077 inline" else.
6078
0d5e3480
DH
60792003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6080
6081 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
6082 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6083
6084 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
6085 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
6086 deprecated.h.
6087
6b412e91
DH
60882003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6089
6090 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
6091 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6092
6093 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
6094 0.0==some_expression to some_expression==0.0. The latter is
6095 better readable. The former is preferred by some people, since it
6096 leads to a compiler error when confusing == with =. However, when
6097 using gcc, a warning will be issued if in an if-statement an
6098 assigment appears. Since many Guile developers are using gcc,
6099 such errors will not remain unnoticed anyway. We can therefore
6100 focus on better readability.
6101
7e3b25bf
DH
61022003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6103
6104 * tags.h: Added description of Guile's type system. Removed some
6105 old and misleading comments.
6106
3ea39242
DH
61072003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6108
6109 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
6110 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
6111
5d7d39ff
DH
61122003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6113
6114 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
6115
6116 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
6117 respective SLOPPY macro.
6118
baa84a20
DH
61192003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6120
6121 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
6122 type string, not SCM_TYP7S.
6123
ba15f500
KR
61242003-09-03 Kevin Ryde <user42@zip.com.au>
6125
6126 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
6127 2s-complement.
6128
53bb8782
KR
6129 * stime.c (scm_strptime): Add comment about glibc strptime %s and
6130 current timezone requiring SCM_DEFER_INTS.
6131
defdc4b4
NJ
61322003-08-30 Neil Jerram <neil@ossau.uklinux.net>
6133
6134 * script.c (scm_compile_shell_switches): Make -s switch optional
6135 if file to be loaded does not begin with a `-'. (Thanks to Aaron
6136 VanDevender for the patch!)
6137
0f008a15
KR
61382003-08-30 Kevin Ryde <user42@zip.com.au>
6139
6140 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
6141 and to have non-integer types rejected as per other logical funcs.
6142
438a3ba1
KR
61432003-08-28 Kevin Ryde <user42@zip.com.au>
6144
6145 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
6146
98dceb37
KR
61472003-08-23 Kevin Ryde <user42@zip.com.au>
6148
6149 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
6150 thread safe, and could take a long time too.
6151
1fa79a38
KR
61522003-08-22 Kevin Ryde <user42@zip.com.au>
6153
6154 * numbers.c (scm_difference): Correction to bignum - negative inum.
6155
d97f9b42
KR
61562003-08-14 Kevin Ryde <user42@zip.com.au>
6157
6158 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
6159 [__GNUC__]: Use volatile asm macros rather than a function call.
6160 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
6161 macros while defining functions.
6162
6163 * simpos.c (getenv): Use <stdlib.h> for prototype.
6164 (scm_system): In docstring, refer to status:exit-val rather than
6165 "functions above".
6166
b9052fcc
KR
61672003-08-09 Kevin Ryde <user42@zip.com.au>
6168
6169 * srcprop.c (scm_source_properties): Return plist from hash if it's a
6170 list set by source-properties! rather than an SRCPROPS object,
6171
8e5b4b9e
KR
61722003-07-29 Kevin Ryde <user42@zip.com.au>
6173
6174 * properties.c (scm_primitive_property_ref): In docstring, note
6175 parameters to not-found-proc, use hyphens rather than underscores for
6176 that parameter name.
6177 (scm_primitive_property_set_x): In docstring, VAL is the value
6178 parameter not CODE.
6179
20703ac4
MV
61802003-07-27 Marius Vollmer <mvo@zagadka.de>
6181
c6ccee34
MV
6182 * print.c (scm_print_symbol_name): handle more weird characters by
6183 escaping the symbol name properly. Thanks to Paul Jarc!
6184
2f4931bf
MV
6185 * posix.h (scm_setgroups): New prototype.
6186 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
6187 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
6188 Don't use SCM_WRITABLE_VELTS.
6189
265c456f
MV
6190 * gc.h (SCM_GC_SET_CELL_BVEC): New.
6191 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
6192 Matthias Koeppe!
6193
20703ac4
MV
6194 * __scm.h (SCM_C_INLINE_KEYWORD): New.
6195 * numbers.c: Use it in place of SCM_C_INLINE so that the code
6196 compiles when SCM_C_INLINE is undefined.
6197
59c4bb82
DH
61982003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6199
6200 * __scm.h: Reformulated the architecture and compiler properties
6201 in terms of properties of scm_t_bits and SCM variables rather than
6202 in terms of c standard types. This is since it is not known which
6203 of the standard types scm_t_bits and SCM variables will be defined
6204 to.
6205
d7850c8d
KR
62062003-07-24 Kevin Ryde <user42@zip.com.au>
6207
6208 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
6209 and real.
6210
8a0c514f
KR
62112003-07-18 Kevin Ryde <user42@zip.com.au>
6212
6213 * numbers.c (scm_product): In complex * bignum, correction to
6214 REAL/IMAG fetch, x is the complex, not y.
6215
0aacf84e
MD
62162003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6217
6218 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
6219 scm_inf_p test as Scheme values.
6220 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
6221 and a positive inum.
6222 Use GNU indentation style.
6223
192de9a4
DH
62242003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
6225
6226 * values.c (scm_values): Build lists of length 1 by using
6227 scm_list_1 instead of using scm_cons.
6228
bbb4438a
KR
62292003-07-10 Kevin Ryde <user42@zip.com.au>
6230
b58c85ce
KR
6231 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
6232 * list.c (scm_list_n): Ditto.
6233
bbb4438a
KR
6234 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
6235
287f8ad1
KR
62362003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
6237
6238 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
6239 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
6240 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
6241 the other using intptr_t.
6242
005d2366
KR
62432003-07-08 Kevin Ryde <user42@zip.com.au>
6244
0aacf84e 6245 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
6246 (scm_magnitude): Use hypot.
6247
6248 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
6249 @footnote since it doesn't go through to guile-procedures.txt.
6250
6251 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
6252 outside @var to quieten makeinfo, and use @code.
6253
cbfe8e62
HWN
62542003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6255
6256 * gc-malloc.c (decrease_mtrigger): new function
6257 (increase_mtrigger): new function, separate debug registering and
6258 mtrigger administration.
6259 (scm_gc_realloc): bugfix: do mtrigger administration before the
6260 actual realloc, for the realloc might invalidate a GC-d segment of
6261 memory. Thanks to Sam Hocevar for pointing this out.
6262 (scm_gc_realloc): use scm_malloc_reregister instead of
6263 unregistering and registering in sequence.
6264
aeb4c2e1
HWN
62652003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6266
6267 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
6268
4c27f8d2
HWN
62692003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6270
6271 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
6272 clauses.
6273
983e697d
MV
62742003-06-29 Marius Vollmer <mvo@zagadka.de>
6275
6276 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
6277 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
6278 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
6279 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
6280 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
6281 the release_1_6 branch.
6282
78b6566e
SJ
62832003-06-25 Stefan Jahn <stefan@lkcc.org>
6284
6285 * continuations.c: Redeclaration of getcontext() via the
6286 __asm__ ("getcontext") directive.
6287
6288 * continuations.h: Include <ucontext.h> instead of
6289 <sys/ucontext.h>.
6290
1ebb8497
KR
62912003-06-21 Kevin Ryde <user42@zip.com.au>
6292
6293 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
6294 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
6295 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
6296 available.
6297 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
6298 (isfinite): Remove, conflicts with C99 isfinite().
6299
fbf85ba4
MV
63002003-06-19 Marius Vollmer <mvo@zagadka.de>
6301
6302 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
6303 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
6304 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
6305 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
6306 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
6307 the release_1_6 branch.
6308
fcc5d734
SJ
63092003-06-14 Stefan Jahn <stefan@lkcc.org>
6310
6311 * threads.h: Redefined scm_getspecific() and scm_setspecific()
6312 to be functions instead of macros.
6313
6314 * threads.c: Conditionalized inclusion of <sys/time.h> and
6315 <unistd.h>.
6316 (scm_getspecific, scm_setspecific): Made these two function
6317 real part of the API.
6318
6319 * posix.c (s_scm_putenv): Added some code to make a
6320 (putenv "FOO="), i.e. setting an empty string, work also on
6321 Win32 systems. Thanks to Kevin Ryde for the proposal.
6322
c3ae8e07
KR
63232003-06-12 Kevin Ryde <user42@zip.com.au>
6324
75b14838
KR
6325 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
6326 freebsd to comment about need to use unsetenv.
c3ae8e07 6327
9d9fa092
MV
63282003-06-02 Marius Vollmer <mvo@zagadka.de>
6329
6330 * ports.c (scm_peek_char): Safe the column of the port around the
6331 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
6332
f2478375
KR
63332003-06-07 Kevin Ryde <user42@zip.com.au>
6334
6335 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
6336 and friends required by scm_t_bits setups.
6337
6375e040
DH
63382003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6339
6340 * tags.h (scm_tc2_int): Added.
6341
6342 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
6343 scm_tc2_int.
6344
6345 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
6346 scm_tcs_closures): Hard coded values replaced by symbolic ones.
6347
f5c6ec2f
DH
63482003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6349
6350 * eval.c: Partially undid my patch from 2003-05-31. This patch
6351 caused the segfault referenced in the previous changelog entry.
6352
47dbd81e
DH
63532003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
6354
6355 * tags.h: Fixed comment about the immediate type code layout.
6356
6357 * eval.c: Fixed handling of non-special instructions. Without
6358 this patch, guile will segfault on (#\0) and similar instructions.
6359
3ec52c51
KR
63602003-06-05 Kevin Ryde <user42@zip.com.au>
6361
6362 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
6363 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
6364
e418bd7c
KR
6365 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
6366 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
6367
d0624e39
DH
63682003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6369
6370 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
6371 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
6372 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
6373 generalized it to apply not only to C level functions but also to
6374 scheme level functions.
6375
6376 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
6377 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
6378 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
6379 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
6380 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
6381 respectively.
6382
6383 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
6384 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
6385 eval.h into eval.c and a copy is placed into deprecated.h.
6386
6387 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
6388 into eval.c. This definition was not part of the API in any
6389 officially released version of guile and thus does not need to go
6390 through a phase of deprecation.
6391
e90c3a89
DH
63922003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
6393
d0624e39
DH
6394 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
6395 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
6396 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
6397 definitions are make static and renamed from scm_s_xxx to s_xxx.
6398 In deprecated.c the original definitions are copied.
6399
d0624e39
DH
6400 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
6401 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
6402 eval.h into eval.c and a copy (slightly modified to work in user
6403 code) is placed into deprecated.h.
6404
6405 * eval.c: Use the local static s_xxx definitions instead of the
6406 scm_s_xxx definitions throughout.
6407
14b18ed6
DH
64082003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
6409
6410 This set of patches separates the representation of the cxr family
6411 of functions (car, cdr etc.) from the dsubr family of functions
6412 (i. e. functions that take a double precision floating point
6413 argument). Further, the algorithm for handling the cxr function
6414 is improved.
6415
6416 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
6417 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
6418 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
6419 cosh, tanh), objects.c (scm_class_of), procprop.c
6420 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
6421 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
6422 typecode for the dsubr family of functions.
6423
6424 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
6425 ramap_dsubr.
6426
6427 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
6428 (scm_init_pairs): Make use of the (now usable) second cell element
6429 of a scm_tc7_cxr function to implement the cxr family of functions
6430 more efficiently.
6431
2ca0d207
DH
64322003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
6433
6434 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
6435 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
6436 end of an if-else-if-sequence of checks.
6437
9a069bdd
DH
64382003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6439
6440 * eval.c (SCM_CEVAL): Improved readability of call-with-values
6441 execution. Generalize apply_closure to apply_proc and use that
6442 for call-with-values.
6443
e910e9d2
DH
64442003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6445
6446 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
6447 a non closure.
6448
1e498fbd
SJ
64492003-05-30 Stefan Jahn <stefan@lkcc.org>
6450
6451 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
6452 appropriately for mingw32 hosts.
6453
6454 * numbers.h: Defining copysign(), isnan() and finite() to
6455 be prefixed by a single '_' for mingw32 hosts.
6456
c47e2599
KR
64572003-05-30 Kevin Ryde <user42@zip.com.au>
6458
6459 * numbers.c (z_negative_one): New variable.
6460 (scm_init_numbers): Initialize it.
6461 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
6462
2e945bcc
SJ
64632003-05-29 Stefan Jahn <stefan@lkcc.org>
6464
6465 * win32-dirent.c: Use malloc() instead of scm_malloc().
6466
6467 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
6468 warning.
6469
6470 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
6471 mingw32 build.
6472
6473 * modules.c (s_scm_module_import_interface): Renamed local
6474 variable interface to _interface. Seems like 'interface'
6475 is a special compiler directive for the mingw32 compiler.
6476
6477 * mkstemp.c: Provide prototype to avoid compiler warning.
6478
6479 * load.c (s_scm_search_path): Fixed absolute and relative
6480 path detections for native Windows platforms.
6481
6482 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
6483 to build on mingw32).
6484
6485 * gc-freelist.c ("s_scm_map_free_list",
6486 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
6487
6488 * fports.c (fport_fill_input): Disable use of
6489 fport_wait_for_input() on Win32 platforms.
6490
6491 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
6492
6493 * Makefile.am: Modified some rules for cross compiling.
6494
ddd8f927
DH
64952003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6496
6497 * eval.c (SCM_CEVAL): In case of an application, all checks for a
6498 proper function object and the correct number of arguments are now
6499 performed in the application part of SCM_CEVAL.
6500
6501 (scm_badformalsp): Removed.
6502
f8ba2197
DH
65032003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6504
6505 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
6506
79f55b7c
MD
65072003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6508
a502595f
MD
6509 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
6510 always being false by inserting preprocessor conditional. (Thanks
6511 to Bruce Korb.)
6512
79f55b7c
MD
6513 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
6514 (void *) in order to avoid an aliasing warning; thanks to Bruce
6515 Korb.)
6516
6517 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
6518
6519 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
6520 SCM_STACK_PTR.
6521
6522 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
6523 thread->base --> t->base.
6524
6525 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
6526
47dee228
MV
65272003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6528
6529 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
6530 scm_variable_set_name_hint, scm_builtin_variable,
6531 scm_internal_with_fluids, scm_make_gsubr,
6532 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
6533 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
6534 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
6535 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
6536 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
6537 scm_make_subr_with_generic, scm_make_subr_opt,
6538 scm_call_catching_errors, scm_make_smob_type_mfpe,
6539 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
6540 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
6541 branch. Some have been slightly rewritten.
6542 (scm_i_object_chars, scm_i_object_length): New, to support
6543 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
6544
e681d187
DH
65452003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6546
6547 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
6548 names and inits in the memoized code of do.
6549
7e59d9d4
MD
65502003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6551
6552 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
6553 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
6554 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
6555 a compilation error if error-on-warning is enabled).
6556
9950a42c
MV
65572003-05-17 Marius Vollmer <mvo@zagadka.de>
6558
6559 * c-tokenize.lex: Gobble up complete lines after a '#'. This
6560 removes preprocessor directives from the snarfage that might
6561 otherwise confuse us. These directives appear when compiling with
6562 "-g3", for example.
6563
0068984b
HWN
65642003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6565
26e68795
HWN
6566 * ChangeLog: add my surname
6567
0068984b
HWN
6568 * srcprop.c (scm_finish_srcprop): use
6569 scm_gc_register_collectable_memory()
6570 (scm_make_srcprops): idem.
6571
131805f0
HWN
65722003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6573
6574 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
6575 wrap-around for scm_mtrigger
6576 (scm_gc_register_collectable_memory): abort on overflowing
6577 scm_mallocated().
6578
d4611024
KR
65792003-05-13 Kevin Ryde <user42@zip.com.au>
6580
6581 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
6582 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
6583
7aaf8dc9
MD
65842003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6585
dfd03fb9
MD
6586 * backtrace.c (scm_display_error_message): Introduced fancy
6587 printing with max level 7 and length 10. (Purpose: avoid printing
6588 gigantic objects in error messages.)
6589
6590 * print.c, print.h (scm_i_port_with_print_state): New function.
6591
6592 * print.c (scm_iprin1, scm_printer_apply,
6593 scm_port_with_print_state): Use scm_i_port_with_print_state.
6594 (scm_simple_format): Modified not to destroy print states.
6595 (print_state_mutex): New mutex.
6596 (scm_make_print_state, scm_free_print_state, scm_prin1):
6597 Lock/unlock print_state_mutex.
6598
7aaf8dc9
MD
6599 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
6600 Use current names in definitions.
6601
a4d9ffa1
KR
66022003-05-10 Kevin Ryde <user42@zip.com.au>
6603
6604 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
6605
d25e96a4
KR
6606 * numbers.c (scm_integer_length): On negative bignums, adjust
6607 mpz_sizeinbase to account for it looking at absolute value where we
6608 want ones-complement.
6609
6610 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
6611 since we're only using the ulong return value, and x might not fit.
6612
5bf6a6f0
DH
66132003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6614
6615 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
6616 read. This will allow to make the definition in read.c static.
6617
f58c472a
DH
66182003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6619
6620 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
6621 from evalext to eval. This will allow to make some of the
6622 definitions in eval.c static.
6623
90382aeb
KR
66242003-05-06 Kevin Ryde <user42@zip.com.au>
6625
6626 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
6627 (scm_logcount): Use mpz_com, not mpz_neg.
6628
3b88ed2a
DH
66292003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6630
6631 The purpose of this patch is to make guile's internal memoizers
6632 distinguishable from memoizing macros created on the scheme level
6633 or from user provided primitive memoizing macros. The reason is,
6634 that the internal memoizers are the only ones that are allowed to
6635 transform their scheme input into memoizer byte code, while all
6636 other memoizing macros may only transform scheme code into new
6637 scheme code.
6638
6639 To achieve this, a new macro type 'builtin-macro!' is introduced.
6640 Currently, 'builtin-macro!'s are handled as memoizing macros, but
6641 this will change when the memoizer and executor are separated.
6642
6643 * macros.[ch] (scm_i_makbimacro): New.
6644
6645 * macros.h (SCM_BUILTIN_MACRO_P): New.
6646
6647 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
6648
6649 * eval.c, goops.c: All of guile's primitive memoizing macros are
6650 primitive builtin-macros now.
6651
6652 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
6653 builtin-macros are handled equally to memoizing macros.
6654
b0780eb1
MV
66552003-05-04 Marius Vollmer <mvo@zagadka.de>
6656
6657 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
6658 work around a bug in GCC 2.95.2 but is now a bug in itself.
6659
1cbf4fe9
MV
66602003-05-02 Marius Vollmer <mvo@zagadka.de>
6661
6662 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
6663 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
6664 scm_tcs_symbols): New.
6665
1a61d41b
MV
66662003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6667
096ecbaf
MV
6668 * deprecated.h, deprecated.c (scm_protect_object,
6669 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
6670 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
6671 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
6672 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
6673 scm_ensure_user_module, scm_load_scheme_module, scm_port,
6674 scm_ptob_descriptor, scm_port_rw_active,
6675 scm_close_all_ports_except): New.
6676
1a61d41b
MV
6677 * ports.c (scm_c_port_for_each): New function, mostly copied from
6678 scm_port_for_each.
6679 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
6680 * ports.h (scm_c_port_for_each): New prototype.
6681
c8e1d354
MD
66822003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6683
6684 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
6685 macro was introduced in anticipation of GOOPS method compilation
6686 code.)
6687
6688 * goops.c: Removed binding of @dispatch.
6689
a4aa2134
DH
66902003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6691
6692 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
6693 instructions that bind the macros on the scheme level back to
6694 goops.c in order to make sure again that the bindings go into the
6695 (oop goops) module and are not visible from the outside.
6696
9fbee57e
DH
66972003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6698
6699 * eval.c: Non functional change: Separated R5RS and non-R5RS
6700 macros into different sections of the file and ordered the
6701 memoizers alphabetically.
6702
12841895
DH
67032003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6704
6705 * eval.c (scm_ilookup): Rewritten to improve readability.
6706
6a3f13f0
DH
67072003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
6708
6709 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6710 Partially reverted patch from 2003-04-23 in oder to find a better
6711 compromise between readability and debuggability.
6712
b0c5d67b
DH
67132003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6714
6715 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
6716 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
6717 definitions of the special goops memoizers from goops.[ch] to
6718 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
6719 throughout guile.
6720
b9ad392e
MD
67212003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6722
6723 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
6724
6725 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
6726
6727 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
6728
6729 * ioext.c (scm_fdes_to_ports): Ditto.
6730
6731 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
6732 lock/unlock scm_i_port_table_mutex.
6733
6734 * strports.c (scm_mkstrport): Ditto.
6735
6736 * ports.c (scm_void_port, scm_port_for_each): Ditto.
6737
6738 * fports.c (scm_fdes_to_port): Ditto.
6739
d0b07b5d
DH
67402003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6741
6742 This set of patches contains no functional changes, only debatable
6743 minor stylistic ones. Still, in order to prepare a patch between
6744 my local copy and the CVS version, I decided to submit the changes
6745 below. Then, the patch will hopefully only contain relevant
6746 modifications :-)
6747
6748 * eval.c (iqq): Added const specifier.
6749
6750 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6751 Use NULL instead of 0 to indicate that a pointer is returned.
6752 Removed some misleading 'fall through' comments.
6753
6754 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
6755 Split up long expressions into smaller ones to be more debugging
6756 friendly.
6757
a98e8e98
DH
67582003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6759
6760 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
6761 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
6762 rather than casting to SCM.
6763
c178c3a6
DH
67642003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6765
6766 * sort.c, pairs.h: Removed unnecessary includes.
6767
d339981a
DH
67682003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
6769
6770 * sort.c: Replaced hand-made trampline code by the new official
6771 mechanism from eval.c. This fixes a segfault in the new test file
6772 sort.test.
6773
6774 (quicksort, compare_function, scm_restricted_vector_sort_x,
6775 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
6776 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
6777 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
6778 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
6779 eval.c.
6780
6781 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
6782 cmp_fun_t): Removed.
6783
6784 (compare_function): Added.
6785
6786 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
6787 arithmetics with index arithmetics. Changed quicksort to work on
6788 an array of SCM values instead of an array of characters. Avoid
6789 bytewise copying of SCM elements. Avoid allocating memory on the
6790 stack with alloca. Fixed some comments.
6791
821f18a4
DH
67922003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6793
6794 * eval.c (EXTEND_ENV): Eliminated.
6795
6796 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
6797 EXTEND_ENV.
6798
94fb5a6e
DH
67992003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6800
6801 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
6802
6803 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
6804 compiling with SCM_DEBUG==1 by moving definition behind prototype.
6805
6806 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
6807 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
6808 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
6809 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
6810 functions such that they check if the object is a non-immediate.
6811 Further, renamed identifiers to use the scm_dbg_ prefix and made
6812 their inclusion into the lib dependent of the
6813 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
6814
fce0b22d
DH
68152003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6816
6817 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
6818 debug option.
6819
1685446c
DH
68202003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6821
821f18a4 6822 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
6823 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
6824 any calls to SCM_NCONSP any more.
6825
6826 * unif.c (l2ra): Eliminate redundant check.
6827
9ff1720f
DH
68282003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6829
6830 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
6831 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
6832 SCM_NNULLP. Now, guile itself does not include any calls to
6833 SCM_NNULLP any more.
6834
05b15362
DH
68352003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6836
6837 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
6838 scm_copy_tree): Place assignment expressions which are part of
6839 other expressions into an expression of their own.
6840
0c88d7df
DH
68412003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6842
6843 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
6844 compare SCM values with !=.
6845
5cb22e96
DH
68462003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6847
6848 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
6849 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
6850 and definition of the memoizer for the generalized set! macro from
6851 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
6852 define the macro object.
6853
6854 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
6855 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
6856 eval.c, it is made static and renamed to s_set_x.
6857
6858 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
6859 over SCM_N<foo>.
6860
a44a9715
DH
68612003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6862
6863 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
6864 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
6865 to undefineds and registered the object as a permanent object.
6866
6867 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
6868 static in eval.c, renamed it to f_apply and registered the object
6869 as a permanent object.
6870
1b43d24c
DH
68712003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6872
5cb22e96 6873 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
6874 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
6875
aec16f99
DH
68762003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6877
6878 * numbers.c (scm_logtest): Fixed argument bug in the call to
6879 mpz_and, which showed up when compiling with SCM_DEBUG defined.
6880
f96460ce
DH
68812003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6882
6883 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
6884 type errors that showed up when compiling with SCM_DEBUG defined.
6885
d0f6ceb8
DH
68862003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6887
6888 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
6889 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
6890 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
6891 fix compile errors with --disable-deprecated.
6892
19a7a089
RB
68932003-04-17 Rob Browning <rlb@defaultvalue.org>
6894
6895 * numbers.c (scm_integer_expt): fix case where we were declaring
6896 vars in the middle of a statement block. Thanks to Thamer
6897 Al-Harbash.
6898
47cd67db
MD
68992003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6900
0fd7dcd3
MD
6901 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
6902 change.
6903
47cd67db
MD
6904 * eq.c (scm_eqv_p): Turned into a primitive generic.
6905
3b8b889c
RB
69062003-04-16 Rob Browning <rlb@defaultvalue.org>
6907
312006bb
RB
6908 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
6909 Thanks to Boyd Gerber.
6910 Added check for __arm__ in addition to arm for LINUX and copied
6911 __s390__ defines from upstream libgc. Thanks to James Treacy for
6912 reporting the problems.
c7ef2ea1 6913
3b8b889c
RB
6914 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
6915
6916 * socket.c: use SCM_CHAR_BIT.
6917
6918 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
6919
6920 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
6921
43261b39
MD
69222003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6923
6924 * feature.c (scm_init_feature): Always add threads feature.
6925
58241edc
MD
69262003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6927
6928 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
6929 scm_at_assert_bound_ref. (We don't want the unbound check. See
6930 oop/goops/active-slot.scm.)
6931
94e91275
RB
69322003-04-14 Rob Browning <rlb@defaultvalue.org>
6933
6934 * tags.h: scm_t_intptr should have been intptr_t.
6935
3071ea27
RB
69362003-04-13 Rob Browning <rlb@defaultvalue.org>
6937
6938 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
6939 test. Instead use
6940 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
6941 as gc_os_dep.c suggests is appropriate.
6942
6943 * goops.c (prep_hashsets): make static to match prototype.
6944 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
6945 Chin.
6946
6947 * c-tokenize.lex: remove trailing comma from enum. Thanks to
6948 Albert Chin.
6949
6950 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
6951 Klausner.
6952
21ab2aeb
MD
69532003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6954
6955 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
6956 indicated through extra fields in getters-n-setters.
6957 (scm_add_slot): Adapted to new format of getters_n_setters slot.
6958 (Thanks to Andy Wingo.)
6959
dff96e95
HWN
69602003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6961
6962 * gc-segment.c: add comment
6963
07921c76
RB
69642003-04-07 Rob Browning <rlb@defaultvalue.org>
6965
b5331f10
RB
6966 * debug.h: change "id" arg name to "info_id" to avoid objective-c
6967 clash.
6968
07921c76
RB
6969 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
6970 and add regression test to standalone/.
6971
69722003-04-06 Rob Browning <rlb@defaultvalue.org>
6973
6974 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
6975 Thanks to Dale P. Smith.
6976
6977 * random.c: #include gmp.h.
6978 (scm_c_random_bignum): normalize result on return.
6979
6980 * init.c: #include gmp.h.
6981
6982 * numbers.h: remove the gmp.h #include (not needed now).
6983
6984 * posix.h: change occurences of "id" to something else so we don't
6985 cause trouble when included via objective-c (can't hurt, might
6986 help). Still have usage in debug.h, though.
6987
938f6b7c
MD
69882003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6989
372691d8
MD
6990 * random.c (scm_c_random_bignum): Don't generate a random number
6991 equal to m (the second argument of scm_c_random_bignum); only
6992 generate numbers in the range 0 <= r < m.
c5f268f8
MD
6993 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
6994 scm_var_random_state.
372691d8 6995
938f6b7c
MD
6996 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
6997 clause.
6998
6cdb8c3f
RB
69992003-04-05 Rob Browning <rlb@defaultvalue.org>
7000
938f6b7c 7001 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
7002 uses before any code.
7003
15635be5
MD
70042003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7005
1ecfd013
MD
7006 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
7007 not top_srcdir.
7008
15635be5
MD
7009 * hashtab.c (rehash_after_gc): Clear to_rehash list before
7010 processing it in order to avoid an infinite loop.
7011
7012 * print.c (scm_prin1): Remember old state of pstate->writingp.
7013
73be1d9e
MV
70142003-04-05 Marius Vollmer <mvo@zagadka.de>
7015
7016 * Changed license terms to the plain LGPL thru-out.
7017
ad815c06
RB
70182003-04-04 Rob Browning <rlb@defaultvalue.org>
7019
7020 * socket.c (FLIPCPY_NET_HOST_128): new macro.
7021 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
7022 rewrite to handle GMP bignums.
7023
7024
7025 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
7026
7027 * ports.c (scm_getc): minor tweak.
7028
7029 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
7030 rewrite to handle GMP bignums.
7031
7032 * numbers.c: rewrite *many* functions to handle GMP bignums.
7033
7034 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
7035 handle GMP bignums.
7036
7037 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
7038
7039 * init.c (check_config): remove SCM_BIGDIG conditionals.
7040 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
7041
7042 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
7043
7044 * eval.c: remove SCM_BIGDIG conditionals.
7045
7046 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
7047
6cdb8c3f
RB
70482003-03-31 Rob Browning <rlb@defaultvalue.org>
7049
7050 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
7051 to Kevin Ryde.)
7052
70532003-03-27 Rob Browning <rlb@defaultvalue.org>
7054
7055 * threads.h: fix various preprocessor usages of new public
7056 symbols to expect 0 or 1 values rather than 1 or undefined.
7057 i.e. change #ifdef to #if, etc.
7058
7059 * threads.c: fix various preprocessor usages of new public
7060 symbols to expect 0 or 1 values rather than 1 or undefined.
7061 i.e. change #ifdef to #if, etc.
7062
7063 * tags.h: fix various preprocessor usages of new public
7064 symbols to expect 0 or 1 values rather than 1 or undefined.
7065 i.e. change #ifdef to #if, etc.
7066
7067 * stacks.c: fix various preprocessor usages of new public
7068 symbols to expect 0 or 1 values rather than 1 or undefined.
7069 i.e. change #ifdef to #if, etc.
7070
7071 * stackchk.h: fix various preprocessor usages of new public
7072 symbols to expect 0 or 1 values rather than 1 or undefined.
7073 i.e. change #ifdef to #if, etc.
7074
7075 * stackchk.c: fix various preprocessor usages of new public
7076 symbols to expect 0 or 1 values rather than 1 or undefined.
7077 i.e. change #ifdef to #if, etc.
7078
7079 * sort.c: fix various preprocessor usages of new public
7080 symbols to expect 0 or 1 values rather than 1 or undefined.
7081 i.e. change #ifdef to #if, etc.
7082
7083 * read.c: fix various preprocessor usages of new public
7084 symbols to expect 0 or 1 values rather than 1 or undefined.
7085 i.e. change #ifdef to #if, etc.
7086
7087 * random.c: fix various preprocessor usages of new public
7088 symbols to expect 0 or 1 values rather than 1 or undefined.
7089 i.e. change #ifdef to #if, etc.
7090
7091 * print.c: fix various preprocessor usages of new public
7092 symbols to expect 0 or 1 values rather than 1 or undefined.
7093 i.e. change #ifdef to #if, etc.
7094
7095 * objects.c: fix various preprocessor usages of new public
7096 symbols to expect 0 or 1 values rather than 1 or undefined.
7097 i.e. change #ifdef to #if, etc.
7098
7099 * numbers.h: fix various preprocessor usages of new public
7100 symbols to expect 0 or 1 values rather than 1 or undefined.
7101 i.e. change #ifdef to #if, etc.
7102
7103 * null-threads.c: fix various preprocessor usages of new public
7104 symbols to expect 0 or 1 values rather than 1 or undefined.
7105 i.e. change #ifdef to #if, etc.
7106
7107 * lang.c: fix various preprocessor usages of new public
7108 symbols to expect 0 or 1 values rather than 1 or undefined.
7109 i.e. change #ifdef to #if, etc.
7110
7111 * lang.h: fix various preprocessor usages of new public
7112 symbols to expect 0 or 1 values rather than 1 or undefined.
7113 i.e. change #ifdef to #if, etc.
7114
7115 * iselect.h: 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
7119 * init.c: fix various preprocessor usages of new public
7120 symbols to expect 0 or 1 values rather than 1 or undefined.
7121 i.e. change #ifdef to #if, etc.
7122
7123 * gh_data.c: fix various preprocessor usages of new public
7124 symbols to expect 0 or 1 values rather than 1 or undefined.
7125 i.e. change #ifdef to #if, etc.
7126
7127 * gh.h: fix various preprocessor usages of new public
7128 symbols to expect 0 or 1 values rather than 1 or undefined.
7129 i.e. change #ifdef to #if, etc.
7130
7131 * gen-scmconfig.c: change most new public symbols to be defined to
7132 0 or 1 rather than being either 1 or undefined.
7133
7134 * gc_os_dep.c: fix various preprocessor usages of new public
7135 symbols to expect 0 or 1 values rather than 1 or undefined.
7136 i.e. change #ifdef to #if, etc.
7137 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
7138
7139 * gc.h: fix various preprocessor usages of new public
7140 symbols to expect 0 or 1 values rather than 1 or undefined.
7141 i.e. change #ifdef to #if, etc.
7142
7143 * gc-card.c: fix various preprocessor usages of new public
7144 symbols to expect 0 or 1 values rather than 1 or undefined.
7145 i.e. change #ifdef to #if, etc.
7146
7147 * gc-mark.c: fix various preprocessor usages of new public
7148 symbols to expect 0 or 1 values rather than 1 or undefined.
7149 i.e. change #ifdef to #if, etc.
7150
7151 * feature.c: fix various preprocessor usages of new public
7152 symbols to expect 0 or 1 values rather than 1 or undefined.
7153 i.e. change #ifdef to #if, etc.
7154
7155 * evalext.c: fix various preprocessor usages of new public
7156 symbols to expect 0 or 1 values rather than 1 or undefined.
7157 i.e. change #ifdef to #if, etc.
7158
7159 * eval.h: fix various preprocessor usages of new public
7160 symbols to expect 0 or 1 values rather than 1 or undefined.
7161 i.e. change #ifdef to #if, etc.
7162
7163 * eval.c: fix various preprocessor usages of new public
7164 symbols to expect 0 or 1 values rather than 1 or undefined.
7165 i.e. change #ifdef to #if, etc.
7166
7167 * eq.c: fix various preprocessor usages of new public
7168 symbols to expect 0 or 1 values rather than 1 or undefined.
7169 i.e. change #ifdef to #if, etc.
7170
7171 * coop.c: fix various preprocessor usages of new public
7172 symbols to expect 0 or 1 values rather than 1 or undefined.
7173 i.e. change #ifdef to #if, etc.
7174
7175 * coop-threads.c: fix various preprocessor usages of new public
7176 symbols to expect 0 or 1 values rather than 1 or undefined.
7177 i.e. change #ifdef to #if, etc.
7178
7179 * coop-pthreads.c: fix various preprocessor usages of new public
7180 symbols to expect 0 or 1 values rather than 1 or undefined.
7181 i.e. change #ifdef to #if, etc.
7182
7183 * coop-defs.h: fix various preprocessor usages of new public
7184 symbols to expect 0 or 1 values rather than 1 or undefined.
7185 i.e. change #ifdef to #if, etc.
7186
7187 * convert.i.c: fix various preprocessor usages of new public
7188 symbols to expect 0 or 1 values rather than 1 or undefined.
7189 i.e. change #ifdef to #if, etc.
7190
7191 * continuations.c: fix various preprocessor usages of new public
7192 symbols to expect 0 or 1 values rather than 1 or undefined.
7193 i.e. change #ifdef to #if, etc.
7194
7195 * _scm.h: fix various preprocessor usages of new public symbols to
7196 expect 0 or 1 values rather than 1 or undefined. i.e. change
7197 #ifdef to #if, etc.
7198
d11d697a
MV
71992003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7200
9686f86d
MV
7201 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
7202
7203 * deprecated.c, deprecated.h: New files, to collect deprecated
7204 things in one place.
7205 * Makefile.am: Added them in all the right places.
7206
d11d697a
MV
7207 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
7208 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
7209 builds work.
9686f86d
MV
7210 (DOT_X_FILES): Removed "iselect.x".
7211 (DOT_DOC_FILES): Removed "iselect.doc".
d11d697a 7212
e3c0c3b9
RB
72132003-03-25 Rob Browning <rlb@defaultvalue.org>
7214
7215 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
7216 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
7217
7218 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
7219
7220 * vports.c: #include <config.h> if HAVE_CONFIG_H.
7221
7222 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
7223 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7224
7225 * threads.h: replace usage of struct timespect with
7226 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
7227 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
7228 favor of scm_t_timespec from scmconfig.h.
7229
7230 * threads.c: move libguile/_scm.h include to the top so we pick up
7231 any critical defines like _GNU_SOURCE early. Replace usage of
7232 struct timespect with scm_t_timespec. Replace usage of
7233 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
7234 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
7235
7236 * threads-plugin.h: replace usage of struct timespect with
7237 scm_t_timespec.
7238
7239 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
7240 usage of struct timespect with scm_t_timespec.
7241
7242 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
7243 HAVE_INTTYPES_H handling to scmconfig.h. #include
7244 "libguile/__scm.h". Rework handling for scm_t_bits,
7245 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
7246 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
7247 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
7248 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
7249 SCM_HAVE_ARRAYS.
7250
7251 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
7252
7253 * struct.c: #include <config.h> if HAVE_CONFIG_H.
7254
7255 * strports.c: #include <config.h> if HAVE_CONFIG_H.
7256
7257 * strop.c: #include <config.h> if HAVE_CONFIG_H.
7258
7259 * stime.h: move handling of time related headers to scmconfig.h.
7260
7261 * stime.c: #include <config.h> if HAVE_CONFIG_H.
7262
7263 * stacks.c: replace usage of STACK_GROWS_UP with
7264 SCM_STACK_GROWS_UP.
7265
7266 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7267 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7268
7269 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7270 of uint32 and HAVE_UINT_32 with scm_t_int32.
7271
7272 * smob.c: #include <config.h> if HAVE_CONFIG_H.
7273
7274 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
7275
7276 * script.c: #include <config.h> if HAVE_CONFIG_H.
7277
7278 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
7279
7280 * scmconfig.h.top: new file -- preamble for scmconfig.h.
7281
7282 * rw.c: #include <config.h> if HAVE_CONFIG_H.
7283
7284 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
7285
7286 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7287
7288 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
7289
7290 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7291 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
7292 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
7293 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7294
7295 * ramap.c: replace usage of HAVE_LONG_LONGS with
7296 "SCM_SIZEOF_LONG_LONG != 0".
7297
7298 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
7299 "libguile/scmconfig.h".
7300
7301 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
7302
7303 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7304 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7305
7306 * posix.c: #include <config.h> if HAVE_CONFIG_H.
7307
7308 * ports.c: #include <config.h> if HAVE_CONFIG_H.
7309
7310 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7311
7312 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
7313 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
7314 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
7315 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
7316 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
7317 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
7318 "SCM_SIZEOF_LONG_LONG != 0".
7319
7320 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
7321 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
7322 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
7323 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
7324
7325 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
7326
7327 * null-threads.h: replace usage of struct timespect with
7328 scm_t_timespec.
7329
7330 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
7331
7332 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
7333 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
7334 scm_t_uint64 and rename usages.
7335
7336 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
7337
7338 * load.c: #include <config.h> if HAVE_CONFIG_H.
7339
7340 * iselect.h: move handling of time related headers to scmconfig.h.
7341 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
7342 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
7343 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
7344
7345 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7346 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7347 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7348
7349 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
7350
7351 * inline.h: #include "libguile/__scm.h" at the top. Change code
7352 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
7353 what to do instead of creating a new public #define. Rename usage
7354 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
7355 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
7356 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
7357
7358 * inline.c: rearrange handling -- now we just #define
7359 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
7360 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
7361 appropriate, and we use that in inline.h along with the above
7362 define to determine how to respond.
7363
7364 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7365 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7366
7367 * guile.c: #include <config.h> if HAVE_CONFIG_H.
7368
7369 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7370 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7371
7372 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7373
7374 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
7375
7376 * gen-scmconfig.c: new file -- see comments in file for details.
7377
7378 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
7379
7380 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
7381 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7382
7383 * gc.h: replace usage of SIZEOF_LONG with
7384 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
7385 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
7386 since we handle that in scmconfig.h now.
7387
7388 * gc.c: #include <config.h> if HAVE_CONFIG_H.
7389
7390 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7391 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
7392 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7393
7394 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
7395
7396 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7397 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7398
7399 * fports.c: #include <config.h> if HAVE_CONFIG_H.
7400
7401 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
7402
7403 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7404 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
7405
7406 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
7407
7408 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7409 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
7410
7411 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
7412 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
7413 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7414 with "SCM_SIZEOF_LONG_LONG != 0".
7415
7416 * error.c: #include <config.h> if HAVE_CONFIG_H.
7417
7418 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
7419 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
7420 with "SCM_SIZEOF_LONG_LONG != 0".
7421
7422 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
7423
7424 * coop.c: replace usage of struct timespect with scm_t_timespec.
7425 #include <config.h> if HAVE_CONFIG_H.
7426
7427 * coop-threads.c: #include "libguile/_scm.h" early. Replace
7428 usage of struct timespect with scm_t_timespec. Replace usage of
7429 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7430
7431 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
7432 usage of struct timespect with scm_t_timespec. Replace usage of
7433 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
7434
7435 * coop-defs.h: move handling of time related headers to
7436 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
7437 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
7438 timespect with scm_t_timespec.
7439
7440 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7441
7442 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7443
7444 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
7445 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
7446
7447 * continuations.c: move libguile/_scm.h include to the top so we
7448 pick up any critical defines like _GNU_SOURCE early.
7449
7450 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
7451
7452 * async.c: #include <config.h> if HAVE_CONFIG_H.
7453
7454 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
7455
7456 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
7457 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
7458
7459 * __scm.h: move libguile/scmconfig.h include up to the top, so
7460 we're sure to pick up any critical defines like _GNU_SOURCE early.
7461 #include <limits.h> removed in favor of scmconfig.h inclusion when
7462 appropriate. STDC_HEADERS based inclusion of stdlib.h,
7463 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
7464 scmconfig.h inclusion when appropriate. Various Win32 related
7465 definitions removed in favor of scmconfig.h inclusion when
7466 appropriate.
7467 (HAVE_UINTPTR_T): definition removed (see NEWS).
7468 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
7469 (HAVE_LONG_LONGS): definition removed (see NEWS).
7470 (HAVE_LONG_LONG): definition removed (see NEWS).
7471 (HAVE_PTRDIFF_T): definition removed (see NEWS).
7472
7473 * Makefile.am: scmconfig.h is now generated by building and
7474 running gen-scmconfig.h and capturing its output. gen-scmconfig
7475 uses config.h and the configure.in generated gen-scmconfig.h to
7476 decide what to output. See gen-scmconfig.c for details.
7477 (noinst_PROGRAMS): add gen-scmconfig.
7478 (gen_scmconfig_SOURCES): new variable.
7479 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
7480 cross-compiling right.
7481 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
7482 (BUILT_SOURCES): add scmconfig.h.
7483
25e0bf97
MV
74842003-03-19 Marius Vollmer <mvo@zagadka.de>
7485
7486 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
7487 Adrian Bunk. Thanks!
7488
74b6d6e4
MD
74892003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7490
7491 * goops.c (make_class_from_template): New fourth arg:
7492 applicablep.
7493 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
7494 cpls.
7495
7496 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
7497
7498 * goops.c, objects.c, objects.h (scm_make_extended_class): New
7499 second arg: applicablep.
7500 (scm_i_inherit_applicable): New function.
7501
7502 * goops.c, goops.h (scm_class_applicable,
7503 scm_class_extended_accessor): New classes.
7504
5c9e7dad
DH
75052003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
7506
7507 * procs.c (scm_procedure_documentation): Removed redundant
7508 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
7509 predicates.
7510
f8af5c6d
MD
75112003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7512
c614a00b
MD
7513 * list.c, list.h (scm_filter, scm_filter_x): New functions.
7514
109c2c9f
MD
7515 * modules.c (scm_module_import_interface): New function.
7516
f8af5c6d
MD
7517 * goops.c, goops.h (scm_class_accessor_method): Renamed from
7518 scm_class_accessor.
7519 (scm_class_accessor): New class.
7520
a48d60b1
MD
75212003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7522
7523 * goops.c (scm_primitive_generic_generic): Enable primitive
7524 generic if not enabled.
7525 (scm_sys_goops_loaded): Setup unextended primitive generics.
7526
7527 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
7528
7529 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
7530 snarf macros.
7531
7532 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
7533 testing example. All uses of SCM_GPROC should be converted.)
7534
7535 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
7536 scm_assoc.
7537
7538 * eq.c (scm_equal_p): Turned into a primitive generic.
7539
84edc049
RB
75402003-02-27 Rob Browning <rlb@defaultvalue.org>
7541
7542 * Makefile.am (scmconfig.h): new target -- generate file from
7543 ../config.h.
7544 (modinclude_HEADERS): remove version.h.
7545 (nodist_modinclude_HEADERS): add version.h.
7546
ea5c9285
MD
75472003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7548
b4a1358c
MD
7549 This fixes a serious GC bug, introduced during the latest
7550 reorganization of the GC, which disabled freeing of structs and
7551 GOOPS objects:
7552
7553 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
7554 SCM_EOL.
53af8255
MD
7555 (scm_struct_prehistory): Move scm_free_structs to
7556 scm_before_mark_c_hook.
ea5c9285 7557
b4a1358c
MD
7558 * gc-card.c (sweep_card): Check that we haven't swept structs on
7559 this card before. That can happen if scm_i_sweep_all_segments has
7560 been called from some other place than scm_igc.
7561
c35738c1
MD
75622003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7563
231a4ea8
MD
7564 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
7565 (since hash tables now adapt their size).
7566
7567 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
7568 (current number of prehistory bindings; hashtable code will select
7569 a prime which is greater than this value).
7570
7571 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
7572 (current number of initial symbols).
7573
7574 * properties.c (scm_init_properties): Don't specify size of
7575 scm_properties_whash.
7576
7577 * objprop.c (scm_init_objprop): Don't specify size of
7578 scm_object_whash.
7579
7580 * keywords.c (scm_init_keywords): Don't specify a hash table size.
7581
c35738c1
MD
7582 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
7583
7584 The following changes introduce the use of resizable hash tables
7585 throughout Guile. It also renames the old *-hash-table* functions
7586 to *-alist-vector* and places them, together with the rest of the
7587 weak vector support, in the module (ice-9 weak-vector). We should
7588 probably introduce a new, better, API for weak references, for
7589 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
7590 look like and are used like ordinary pairs.)
7591
7592 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
7593 leaf_environment_fold, obarray_remove_all): Use hashtable
7594 accessors.
7595
7596 * gc.c (scm_init_storage): Moved hook initialization to
7597 scm_storage_prehistory.
7598 (scm_storage_prehistory): New function.
7599 (scm_igc): Added commentary about placement of
7600 scm_after_sweep_c_hook.
7601
7602 * gc-mark.c (scm_mark_all): Use hashtable accessors.
7603 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
7604 SCM_WVECT_WEAK_VALUE_P.
7605
7606 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
7607 functions.
7608 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
7609 Removed.
7610 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
7611 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
7612
7613 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
7614 calls to scm_storage_prehistory and scm_hashtab_prehistory.
7615
7616 * modules.c (module-reverse-lookup): Use hashtable accessors.
7617
7618 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
7619
7620 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
7621 scm_make_weak_value_alist_vector,
7622 scm_make_doubly_weak_alist_vector): New functions.
7623
7624 * weaks.c (scm_init_weaks_builtins): New function.
7625
7626 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
7627 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
7628 SCM_WVECT_NOSCAN_P): New macros.
7629
7630 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
7631 and SCM_WVECT_WEAK_VALUE_P.
7632
7633 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
7634 allocate_weak_vector and exported.
7635
0a4c1355
MD
76362003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7637
7638 * hashtab.c: Undid thread safety. (We decided that it's better to
7639 let the user explicitly protect the tables (or not) according what
7640 is suitable for the application.)
7641
87ca11ff
MD
76422003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7643
7644 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
7645 thread safe and handle resizing tables.
7646 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
7647 SCM_DEFER/ALLOW_INTS.
7648
f59a096e
MD
76492003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7650
7651 * hashtab.c (scm_vector_to_hash_table,
7652 scm_c_make_resizing_hash_table, scm_make_hash_table): New
7653 functions.
7654 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
7655 safe and handle resizing tables.
7656
7657 * weaks.c (scm_make_weak_key_hash_table,
7658 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
7659 Size argument made optional. Return resizable table if not
7660 specified.
7661
4b612c5b
MD
76622003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7663
7664 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
7665 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
7666
b3d7f6df
MD
76672003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7668
7669 * debug.c (scm_procedure_source): Handle all objects for which
7670 procedure? is #t. (Thanks to Bill Schottstaedt.)
7671
756414cf
MD
76722003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7673
361d631f
MD
7674 * futures.c (mark_futures): Don't need to mark data of recycled
7675 futures.
7676 (scan_futures, cleanup_undead): Be smarter about marking
7677 futures---avoid unnecessary passes through future lists.
7678
756414cf
MD
7679 * futures.h, futures.c: New files; Introduced recycling of
7680 futures. For fine-grained threading this lifts performance to
7681 another level. We can now use parallelization in inner loops of
7682 Guile programs without impossible overhead.
7683
7684 * threads.h, threads.c: Moved futures to their own file.
7685
7686 * Makefile.am (libguile_la_SOURCES): Added futures.c.
7687 (DOT_X_FILES): Added futures.x.
7688 (DOT_DOC_FILES): Added futures.doc.
7689 (modinclude_HEADERS): Added futures.h.
7690
7691 * threads.c, threads.h (scm_i_create_thread): Renamed from
7692 create_thread and made global.
7693
7694 * futures.c (scm_make_future): New procedure.
7695
7696 * eval.c: #include "libguile/futures.h".
7697
7698 * init.c: #include "futures.h"
7699 (scm_init_guile_1): Call scm_init_futures.
7700
7701 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
7702
7703 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
7704
7705 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
7706 functions.
7707
7708 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
7709
b4debead
MD
77102003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7711
7712 * threads.c (create_thread): Don't unwind dynwind chain of parent
7713 thread before creation. Just start the new thread with an empty
7714 dynwind chain.
7715
93f26b7b
MD
77162003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7717
7718 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
7719
38d8927c
MD
77202003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7721
41c96c32
MD
7722 * threads.c (scm_timed_wait_condition_variable): Support timed
7723 waiting also for simple condition variables.
7724
38d8927c
MD
7725 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
7726 of calling the procedure change-object-class.
7727
9cf5d9b7
MD
77282003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7729
7730 * ramap.c (scm_ramapc): Typo in error message.
7731
bbf8d523
MD
77322003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7733
b46fae00
MD
7734 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
7735 slots with instance allocation.
7736
bbf8d523
MD
7737 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
7738 class.
7739 (scm_compute_applicable_methods): Use scm_generic_function_methods.
7740
7741 * goops.c (scm_generic_function_methods): Support extended
7742 generic functions.
7743
ebf9b47c
MD
77442002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7745
7746 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 7747 Thanks to Neil for pointing this out!
ebf9b47c 7748
14a9ba3f
NJ
77492002-12-29 Neil Jerram <neil@ossau.uklinux.net>
7750
7751 * lang.h: Remove declarations matching definitions removed from
7752 lang.c (just below).
7753
c6a040a8
NJ
77542002-12-28 Neil Jerram <neil@ossau.uklinux.net>
7755
6054d805
NJ
7756 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
7757 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
7758 and already commented out.
7759
c6a040a8
NJ
7760 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
7761 scm_lreadparen): Support reading vectors with Elisp syntax if
7762 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
7763 is not currently defined, and there isn't even a configure switch
7764 to enable it yet.)
7765
3742c12f
MV
77662002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
7767
7768 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
7769 builds work.
7770 (EXTRA_DIST): Added version.h.in.
7771
fb50ef08
MD
77722002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7773
7774 This change makes it possible for one thread to do lazy sweeping
7775 while other threads are running. Now only the mark phase need to
7776 have all threads asleep. We should look further into this issue.
7777 Presently, I've put the locking of scm_i_sweep_mutex at
7778 "conservative" places due to my current lack of knowledge about
7779 the garbage collector. Please feel free to restrict these regions
7780 further to allow for maximal parallelism!
7781
7782 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
7783
7784 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
7785 scm_gc_register_collectable_memory): Substitute locking of
7786 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
7787 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
7788 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
7789 the single-thread section (which now only contains the mark
7790 phase).
7791 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
7792 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
7793
7794 * threads.c (gc_section_mutex): Removed.
7795
9ed24633
MD
77962002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7797
0d48aca5
MD
7798 * threads.c (create_thread): Clear parent field in root state in
7799 order not to unnecessarily remember dead threads.
7800
9ed24633
MD
7801 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
7802 (scm_trampoline_1, scm_trampoline_2): Use them.
7803
29717c89
MD
78042002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7805
7806 Partial introduction of real plugin interface.
7807
7808 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
7809 (EXTRA_DIST): Added threads-plugin.c.
7810
7811 * threads-plugin.h, threads-plugin.c: New files.
7812
7813 * threads.h: #include "libguile/threads-plugin.h".
7814
7815 * threads.c: #include "libguile/threads-plugin.c".
7816
7817 * pthread-threads.c: Temporarily remove debugging functions.
7818
7819 * threads.c, threads.h (scm_yield): Added back.
7820
e29e0b09
MD
78212002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7822
7823 * threads.c (really_launch): Detach before unlocking
7824 thread_admin_mutex in order not to risk being joined.
7825 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
7826 thread_admin_mutex locked during GC.
7827
7828 * pthread-threads.c, pthread-threads.h: Improvements to debugging
7829 functions.
7830
0b6843b1 78312002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 7832
6da2dfc4
MD
7833 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
7834 support for debugging mutex operations.
7835
1b92fb6b
MD
7836 * threads.c (scm_thread): Removed filed joining_threads.
7837 (thread_print): Print thread number as well as address of thread
7838 structure.
0b6843b1
MD
7839 (scm_join_thread): Bugfix.
7840 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
7841 scm_timed_wait_condition_variable, scm_signal_condition_variable,
7842 scm_broadcast_condition_variable): Use the low-level API.
7843 (scm_all_threads): Return copy of thread list (to prevent
7844 unintended destruction).
7845 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 7846
93cd4dcd
MD
7847 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
7848 pthread "native" recursive mutex support.
7849
2ff4f181
MD
78502002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7851
28d52ebb
MD
7852 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
7853 Simply lock a thread C API recursive mutex.
7854 (SCM_NONREC_CRITICAL_SECTION_START,
7855 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7856 SCM_REC_CRITICAL_SECTION_END): Removed.
7857
7858 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
7859 direct calls to scm_rec_mutex_lock / unlock around the three calls
7860 to scm_m_expand_body.
7861
7862 * eval.c, eval.h (promise_free): New function.
7863 (scm_force): Rewritten; Now thread-safe; Removed
7864 SCM_DEFER/ALLOW_INTS.
7865
7866 * pthread-threads.h: Added partially implemented plugin interface
7867 for recursive mutexes. These are, for now, only intended to be
7868 used internally within the Guile implementation.
7869
7870 * pthread-threads.c: New file.
7871
7872 * threads.c: Conditionally #include "pthread-threads.c".
7873
7874 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
7875 thread-safe;
7876
7877 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
7878 SCM_GLOBAL_REC_MUTEX): New macros.
7879
7880 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
7881 macros---use mutexes instead.
7882
7883 * tags.h (SCM_IM_FUTURE): New tag.
7884
7885 * eval.c (scm_m_future): New primitive macro.
7886 (SCM_CEVAL): Support futures.
7887 (unmemocopy): Support unmemoization of futures.
7888
7889 * print.c (scm_isymnames): Name of future isym.
7890
2ff4f181
MD
7891 * version.c: Unmade some changes to my private copy that got
7892 committed by mistake.
7893
392d2833
MD
78942002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7895
e200ddee
MD
7896 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
7897 2002-12-10.
7898
392d2833
MD
7899 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
7900
7901 * gc.c (scm_gc_sweep): Call it here instead, which is a more
7902 logical place.
7903
7904 * threads.c (create_thread): Remember root object until the handle
7905 of the new thread is on all_threads list.
7906
7907 * root.c (scm_make_root): Moved copying of fluids until after
7908 creation of root handle so that the fluids are GC protected. Also
7909 removed the critical section.
7910
c4c52ebe
MD
79112002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7912
960c408c
MD
7913 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
7914
3cdde9d6 7915 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 7916 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
7917 (scm_realloc): Serialize call to realloc
7918 (scm_calloc): Same for calloc.
7919 Thanks to Wolfgang Jaehrling!
7920 (Now we have to make sure all calls to malloc/realloc are made
7921 through scm_malloc.)
7922
960c408c
MD
7923 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
7924
c4c52ebe
MD
7925 * threads.c (really_launch): Release heap (to prevent deadlock).
7926 (create_thread): Release heap before locking thread admin mutex.
7927
b0dc3d71
MD
79282002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7929
7930 * threads.c (scm_i_thread_invalidate_freelists): New
7931 function.
7932
7933 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
7934
7935 * modules.c (scm_export): Inserted a return statement.
7936
06e80f59
HWN
79372002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7938
7939 * modules.c (scm_export): new function
7940
7941 * gc-card.c: add a note about malloc()/free() overhead.
7942
a12611c3
MD
79432002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
7944
7945 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
7946 in srcdir.
7947
c7fabadf
MD
79482002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7949
7950 These changes remove scm_ints_disabled (which hasn't has any
7951 effect in Guile for quite some time).
7952
7953 * async.c, error.h (scm_ints_disabled): Removed.
7954
7955 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
7956 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
7957 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
7958 (old_ints): Removed.
7959
7960 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
7961 critical section.
7962 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
7963 SCM_ALLOW_INTS.
7964
9bc4701c
MD
79652002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
7966
52340b65
MD
7967 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
7968 Removed accidental #if 0 around these functions.
7969
9bc4701c
MD
7970 These changes are the start of support for preemptive
7971 multithreading. Marius and I have agreed that I commit this code
7972 into the repository although it isn't thoroughly tested and surely
7973 introduces many bugs. The bugs should only be exposed when using
7974 threads, though. Signalling and error handling for threads is
7975 very likely broken. Work on making the implementation cleaner and
7976 more efficient is needed.
7977
7978 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
7979 (SCM_NONREC_CRITICAL_SECTION_START,
7980 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
7981 SCM_REC_CRITICAL_SECTION_END): New macros.
7982 (SCM_CRITICAL_SECTION_START/END): Defined here.
7983
7984 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
7985 the three calls to scm_m_expand_body.
7986
7987 * gc.h: #include "libguile/pthread-threads.h";
7988 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
7989
7990 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
7991 scm_t_key;
7992
7993 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
7994 access.
7995
7996 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
7997
7998 * gc-freelist.c, threads.c (really_launch): Use
7999 SCM_FREELIST_CREATE.
8000
8001 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
8002
8003 * gc.c (scm_i_expensive_validation_check, scm_gc,
8004 scm_gc_for_newcell): Put threads to sleep before doing GC-related
8005 heap administration so that those pieces of code are executed
8006 single-threaded. We might consider rewriting these code sections
8007 in terms of a "call_gc_code_singly_threaded" construct instead of
8008 calling the pair of scm_i_thread_put_to_sleep () and
8009 scm_i_thread_wake_up (). Also, we would want to have as many of
8010 these sections eleminated.
8011
8012 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
8013
8014 * inline.h: #include "libguile/threads.h"
8015
8016 * pthread-threads.h: Macros now conform more closely to the
8017 pthreads interface. Some of them now take a second argument.
8018
8019 * threads.c, threads.h: Many changes.
8020
80212002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
8022
8023 * Makefile.am (version.h): Changed $^ --> $< in rule for
8024 version.h.
8025
b2cbe8d8
RB
80262002-12-08 Rob Browning <rlb@defaultvalue.org>
8027
8028 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
8029 (SCM_MINOR_VERSION): use @--@ substitution now.
8030 (SCM_MICRO_VERSION): use @--@ substitution now.
8031 (scm_effective_version): new function prototype.
8032
8033 * version.c (scm_effective_version): new function, also add
8034 effective-version.
8035
8036 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
8037 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
8038 SCM_LIBRARY_DIR.
8039 (version.h): generate this here rather than configure.in. This
8040 approach tracks source edits better (i.e. more immediately).
8041 Might be worth considering for other .in files too.
8042
5441c65c
MV
80432002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
8044
8045 Reorganized thread package selection. A thread package now only
8046 implements a small set of pthread like functions and Guile
8047 implements the rest on top of that. Guile's implementation is
8048 what the "coop-pthreads" package has been previously. Support for
8049 "coop" threads has been removed until I get time to add it again.
8050
8051 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
8052 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
8053 null-threads.c, coop-pthreads.c.
8054 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
8055 pthread-threads.h.
8056
8057 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
8058
8059 * threads.h: Do not include "libguile/coop-defs.h". Include
8060 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
8061 (previously deprecated) C level thread API prototypes. They are
8062 now in the thread package specific headers, "null-threads.h" and
8063 "pthread-threads.h".
8064 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
8065 New.
8066 (scm_threads_init): Removed.
8067 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
8068 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
8069 SCM_I_THREAD_SWITCH_COUNT): Define here.
8070 (scm_single_thread_p): Removed.
8071 (scm_call_with_new_thread): Take two args directly instead of list
8072 of two args.
8073 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
8074 SCM_SET_THREAD_LOCAL_DATA): Define here.
8075
8076 * threads.c: Merged with "coop-pthreads.c".
8077
8078 * null-threads.h: Implement pthread-like API as a set of macros.
8079
8080 * pthread-threads.h: New, implement pthread-like API by deferring
8081 to pthread itself.
8082
8083 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
8084 has been lost in the reorganization.
8085
504d99c5
MD
80862002-12-01 Mikael Djurfeldt <mdj@linnaeus>
8087
8088 The following change makes it possible to move procedure
8089 application dispatch outside inner loops. The motivation was
8090 clean implementation of efficient replacements of R5RS primitives
8091 in SRFI-1.
8092
8093 The semantics is clear: scm_trampoline_N returns an optimized
8094 version of scm_call_N (or NULL if the procedure isn't applicable
8095 on N args).
8096
8097 Applying the optimization to map and for-each increases efficiency
8098 noticeably. For example, (map abs ls) is 8 times faster than
8099 before.
8100
8101 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
8102
8103 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
8104
8105 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
8106 (map, for-each): Handle also application on two args as a special
8107 case; Use trampolines.
8108
8109 Other changes:
8110
8111 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
8112 (subr2oless): Removed.
8113 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
8114 vector GC protected.
8115
8116 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
8117 scm_out_of_range.
8118
63dd3413
DH
81192002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8120
8121 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
8122
4ba5f279
MD
81232002-11-17 Mikael Djurfeldt <mdj@linnaeus>
8124
8125 * debug.c (scm_make_iloc): Added missing "return".
8126
56ae231f
MV
81272002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
8128
8129 * strports.c (scm_eval_string_in_module): Validate second arg to
8130 be a module. Thanks to Arno Peters!
8131
80b28865
DH
81322002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8133
8134 * .cvsignore: remove goops.c
8135
c88b1456
DH
81362002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8137
8138 * modules.c (scm_env_top_level, scm_lookup_closure_module,
8139 module_variable, scm_module_lookup_closure,
8140 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
8141 scm_system_module_env_p): Don't compare SCM values with C
8142 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
8143 over SCM_NFALSEP.
8144
a8a19efc
DH
81452002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8146
8147 * eval.h (SCM_MAKE_ILOC): New macro.
8148
8149 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
8150 the iloc bitpattern here.
8151
76734914
MD
81522002-11-14 Mikael Djurfeldt <mdj@linnaeus>
8153
8154 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
8155 part of the API, otherwise it's difficult to write Guile
8156 extensions using non-blocking I/O => moved #include
8157 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
8158
8159 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
8160 s_unlock_mutex.
8161
8b5b4a75
MV
81622002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
8163
8164 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
8165 are defined in configure.in.
8166
8167 * threads.c: Removed SCM_API from function definitions. SCM_API
8168 is only for declarations.
8169
e5a83084
MD
81702002-11-07 Mikael Djurfeldt <mdj@linnaeus>
8171
9be8bb45
MD
8172 * coop-pthreads.h: Added support for thread specific data to the
8173 generic C API for the coop-pthreads case.
8174
e5a83084
MD
8175 * threads.c, threads.h (scm_cond_init): Undo unintentional API
8176 change.
6c214b62 8177 (scm_cond_broadcast): Added missing function.
e5a83084 8178
7edf178e
MV
81792002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8180
8181 * coop.c (coop_next_runnable_thread): Removed, wich should have
8182 happened when GUILE_ISELECT was hard-wired.
8183
7f5b1b77
MV
81842002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
8185
7caa1b07
MV
8186 * Makefile.am (libguile_la_SOURCES): Added threads.c
8187 (DOT_DOC_FILES): Added threads.doc.
8188 (DOT_X_FILES): Added threads.x.
8189 (EXTRA_libguile_la_SOURCES): Removed threads.c.
8190 (noinst_HEADERS): Added coop-pthreads.c.
8191 (modinclude_HEADERS): Added coop-pthreads.h.
8192
8193 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
8194 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
8195
bb11cbf4
MV
8196 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
8197 Thanks to Bill Schottstaedt!
8198
1d4cbbed
MV
8199 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
8200
7f5b1b77
MV
8201 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
8202 SCM_COPT_THREADS is defined.
8203 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
8204 is defined.
8205
8206 * coop-pthreads.c: Some harmless renamings of internal stuff.
8207 (create_thread): New, generalized version of
8208 scm_call_with_new_thread.
8209 (scm_call_with_new_thread): Use it.
8210 (scm_spawn_thread): New, use create_thread.
8211
d52f53b1
MV
82122002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
8213
8214 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
8215 start testing it now.
8216
8217 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
8218 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
8219 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
8220 is defined.
8221
30f920c3
MV
82222002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
8223
8224 * scmsigs.c (signal_cell_handlers, install_handler_data,
8225 scm_delq_spine_x, really_install_handler, install_handler): New
8226 scheme for triggering signal handlers, to simplify take_signal.
8227 (take_signal): Simplified, to avoid race conditions.
8228 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
8229 hasn't exited yet.
8230
8231 * async.c (scm_async_click): Reset pending_asyncs, handle
8232 signal_asyncs. Don't set cdr of a non-signal async to #f.
8233 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
8234 always. Set pending_asyncs.
8235 (scm_system_async_mark_for_thread): Check that thread has not
8236 exited.
8237 (scm_unmask_signals, decrease_block): Call scm_async_click after
8238 block_asyncs becomes zero.
8239
8240 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
8241 active_asyncs.
8242
8243 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
8244 fields.
8245 * root.c (root_mark): Mark them.
8246 (make_root): Initialize them.
8247
8248 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
8249 USE_COOP_THREADS.
8250 (scm_internal_select): Define one version for USE_COOP_THREADS and
8251 one for USE_NULL_THREADS.
8252 (scm_init_iselect): Likewise.
8253
8254 * inline.h (scm_cell, scm_double_cell): Also allow
8255 USE_COPT_THREADS to not protect the slot initializers.
8256
8257 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
8258 because threads need to be initialized before the stack, but
8259 gsubrs such as scm_timed_condition_variable_wait can only be
8260 created later.
8261
8262 * threads.h: Include "coop-pthreads.h" when requested.
8263 (scm_threads_make_mutex, scm_threads_lock_mutex,
8264 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
8265 not implemented anyway.
8266 (scm_init_thread_procs, scm_try_mutex,
8267 scm_timed_condition_variable_wait,
8268 scm_broadcast_condition_variable, scm_c_thread_exited_p,
8269 scm_thread_exited_p): New prototypes.
8270 (struct timespec): Define if not already defined.
8271 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8272 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8273 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8274 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
8275 deprecated.
8276
8277 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
8278 requested.
8279 (scm_thread_exited_p): New.
8280 (scm_try_mutex, scm_broadcast_condition_variable): Newly
8281 registered procedures.
8282 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
8283 Use the latter as the procedure for "wait-condition-variable",
8284 thus offering a optional timeout parameter to Scheme.
8285 (scm_wait_condition_variable): Implement in terms of
8286 scm_timed_wait_condition_variable.
8287 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8288 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
8289 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8290 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
8291 scm_make_mutex, etc, and deprecate.
8292 (scm_init_threads): Do not create smobs, leave this to
8293 scm_threads_init. Do not include "threads.x" file.
8294 (scm_init_thread_procs): New, include "threads.x" here.
8295
8296 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
8297 scm_null_mutex_lock, scm_null_mutex_unlock,
8298 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
8299 scm_null_condvar_wait, scm_null_condvar_signal,
8300 scm_null_condvar_destroy): Removed.
8301 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
8302 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
8303 scm_cond_destory): Do not define, they are now deprecated and
8304 handled by threads.{h,c}.
8305
8306 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
8307 (scm_threads_init): Create smobs here, using the appropriate
8308 sizes.
8309 (block): Removed, now unused.
8310 (scm_c_thread_exited_p): New.
8311 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
8312 scm_null_mutex_destroy, scm_null_condvar_init,
8313 scm_null_condvar_wait, scm_null_condvar_signal,
8314 scm_null_condvar_destroy): Removed and updated users to do their
8315 task directly.
8316 (scm_try_mutex, timeval_subtract,
8317 scm_timed_wait_condition_variable,
8318 scm_broadcast_condition_variable): New.
8319 (scm_wait_condition_variable): Removed.
8320
8321 * coop-defs.h (coop_m): Added 'level' field.
8322 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
8323 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
8324 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
8325 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
8326 define.
8327 (coop_condition_variable_broadcast): New.
8328
8329 * coop-threads.c (scm_threads_init): Create smobs here, using the
8330 appropriate sizes.
8331 (scm_c_thread_exited_p, scm_try_mutex,
8332 scm_timed_wait_condition_variable,
8333 scm_broadcast_condition_variable): New.
8334 (scm_wait_condition_variable): Removed.
8335
8336 * coop.c (coop_new_mutex_init): Initialize level.
8337 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
8338 level.
8339 (coop_condition_variable_signal): Renamed to
8340 coop_condition_variable_broadcast and reimplemented in terms of
8341 that. Thus...
8342 (coop_condition_variable_broadcast): New.
8343
8344 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
8345
8346 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
8347
087ed40d
MV
83482002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
8349
65a23095
MV
8350 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
8351 of system headers.
8352
087ed40d
MV
8353 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
8354 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 8355 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 8356
5ec1d2c8
DH
83572002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8358
8359 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
8360 scm_definedp to scm_defined_p and deprecated scm_definedp.
8361
100ae50d
DH
83622002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8363
8364 * async.h, async.c (scm_system_async): Fixed deprecation to work
8365 correctly when deprecated features are excluded.
8366
2794cb50
MV
83672002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8368
8369 * async.c (scm_system_async_mark_for_thread): Validate thread
8370 argument.
8371
8372 * coop-threads.c (scm_i_thread_root): Do not validate argument.
8373
8374 * feature.c (scm_init_feature): Don't add 'threads' for
8375 USE_NULL_THREADS.
8376
8377 * inline.h (scm_cell, scm_double_cell): Also allow
8378 USE_NULL_THREADS to not protect the slot initializers.
8379
8380 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
8381 "USE_THREAD".
8382
8383 * Makefile.am (noinst_HEADERS): Added null-threads.c.
8384 (modinclude_HEADERS): Added null-threads.h.
8385
8386 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
8387 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
8388 (scm_init_threads): Use generic type names scm_t_mutex and
8389 scm_t_cond instead of coop_m and coop_c.
8390
8391 * null-threads.c, null-threads.h: New files.
8392
ff810d7a
MV
83932002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
8394
8395 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
8396 This is to support makes that know about "$<" only in pattern
8397 rules, like Sun's make.
8398
a90bdb73
MV
83992002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
8400
8401 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
8402 substitution. Thanks to David Allouche!
8403
e71a8bf2
DH
84042002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8405
8406 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
8407 !SCM_ENABLE_DEPRECATED.
8408
41f77ff5
MV
84092002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8410
504d99c5 8411 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
8412 scm_i_thread_root when USE_THREADS is defined. Use scm_root
8413 otherwise.
8414
8415 * scmsigs.c (take_signal): Only call scm_i_thread_root when
8416 USE_THREADS is defined. Use scm_root otherwise.
8417 (scm_sigaction_for_thread): Ignore THREAD argument when
8418 USE_THREADS is not defined. Also, move THREAD argument defaulting
8419 out of HAVE_SIGACTION section, which was a bug.
8420
6d16b125
MV
84212002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8422
8423 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
8424 signal_handlers, not the closure that is used as the async.
8425 The closure is stored in signal_handler_cells, as previously.
8426
acfa1f52
MV
84272002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
8428
8429 * root.h (scm_root_state): Added 'block_async' slot.
8430 (scm_active_asyncs): Removed abbrev.
8431 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
8432
8433 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
8434 abbrev.
8435
8436 * async.h (scm_call_with_blocked_asyncs,
8437 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8438 scm_c_call_with_unblocked_asyncs): New prototypes.
8439 (scm_mask_signals, scm_unmask_signals): Deprecated.
8440 (scm_mask_ints): Turned into a macro.
8441 * async.c (scm_mask_ints): Removed.
8442 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
8443 this should not be necessary.
8444 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
8445 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
8446 deprecation warning and check for errornous use. Set block_asyncs
8447 instead of scm_mask_ints.
8448 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
8449 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
8450 scm_c_call_with_unblocked_asyncs): New.
8451
8452 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
8453 Asyncs are enabled by default.
8454
34010f56
NJ
84552002-10-09 Neil Jerram <neil@ossau.uklinux.net>
8456
8457 * vports.c (scm_make_soft_port): Allow vector argument to carry a
8458 6th element: an input waiting thunk.
8459 (sf_input_waiting): New.
8460
9310d6f2
MV
84612002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
8462
8463 * root.c (root_mark): Mark active_asyncs slot.
8464
8465 * async.c (scm_async_click): Set the cdr of a executed handler
8466 cell to SCM_BOOL_F, not SCM_EOL.
8467 (scm_i_queue_async_cell): Queue the cell at the end of the list,
8468 and only if the handler procedure is not already present.
8469 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
8470 with SCM_BOOL_F.
8471 * scmsigs.c (scm_sigaction_for_thread): Likewise.
8472
ac48c719
RB
84732002-10-04 Rob Browning <rlb@defaultvalue.org>
8474
1360a142
RB
8475 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
8476
8477 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
8478 scm_lt_dlopenext, and scm_lt_dlerror.
8479 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
8480 and scm_lt_dlerror.
8481 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
8482 and scm_lt_dlerror.
8483 (sysdep_dynl_init): switch to scm_lt_dlinit();
8484
8485 * Makefile.am (libguile_la_LIBADD): switch to use
8486 libguile-ltdl.la.
8487
504d99c5 8488 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 8489
497092c9
MV
84902002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
8491
8492 * scmsigs.h (scm_sigaction_for_thread): New prototype.
8493 * scmsigs.c (got_signal): Removed.
8494 (signal_handler_cells, signal_handler_threads): New.
8495 (take_signal): Queue the cell of the signal for the specified
8496 thread. Reset the signal handler on systems that don't have
8497 sigaction.
8498 (sys_deliver_signals): Removed.
8499 (close_1): New.
8500 (scm_sigaction_for_thread): Renamed from scm_sigaction and
8501 extended to also set the thread of a signal and allocate a cell
8502 for it. Keep the Scheme name "sigaction". Check that signum is
8503 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
8504 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
8505 (scm_init_scmsigs): Allocate signal_handler_cells and
8506 signal_handler_threads vectors.
8507
8508 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
8509 that system asnycs and user asyncs are separated. Reimplemented
8510 system asyncs to work per-thread.
8511
8512 * gc.c (scm_init_gc): Do not use scm_system_async.
8513
8514 * async.h (scm_asyncs_pending, scm_set_tick_rate,
8515 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
8516 Removed prototypes.
8517 (scm_i_queue_async_cell): New.
8518
8519 * __scm.h (scm_asyncs_pending_p): Removed.
8520 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
8521 scm_asyncs_pending_p.
8522
8523 * async.h (scm_system_async_mark_for_thread): New prototype.
8524
8525 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
8526
8527 * root.h (scm_root_state): Added new "active_asyncs" slot.
8528 * root.c (scm_make_root): Initialize it to SCM_EOL.
8529
8530 * coop-defs.h (coop_t): Added new "handle" slot.
8531 * coop-threads.c (all_threads, scm_current_thread,
8532 scm_all_threads, scm_i_thread_root): New.
8533 (scm_threads_init): Add main thread to all_threads.
8534 (scheme_launch_thread): Remove thread from all_threads when it
8535 terminates.
8536 (scm_call_with_new_thread): Initialize handle slot of coop_t
8537 structure and add new thread to all_threads.
8538 (scm_spawn_thread): Likewise.
8539
8540 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
8541 * threads.c (scm_current_thread, scm_all_threads): Register as
8542 primitives.
8543
8544 * dynl.c: Use scm_lt_ prefix for libltdl functions.
8545
480fa28d
NJ
85462002-09-29 Neil Jerram <neil@ossau.uklinux.net>
8547
8548 * script.c (scm_compile_shell_switches): Fix bad spelling of
8549 `explicitly' in comment.
8550
85512002-09-28 Neil Jerram <neil@ossau.uklinux.net>
8552
8553 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
8554 Refer to provided? in doc string rather than deprecated feature?.
8555
3553e1d1
GH
85562002-09-24 Gary Houston <ghouston@arglist.com>
8557
8558 * inline.h (scm_double_cell): prevent reordering of statements
8559 with any following code (for GCC 3 strict-aliasing).
8560 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
8561 the earlier version of the reordering prevention.
8562
4ad0814a
HWN
85632002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8564
8565 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
8566
e88e4f2e
HWN
85672002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8568
8569 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
8570 protection.
8571
1e71eafb
HWN
85722002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8573
8574 * inline.h: include stdio.h
8575
8576 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
8577
61ef9c1f
HWN
85782002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8579
dac04e9f
HWN
8580 * gc-segment.c (scm_i_make_initial_segment): check user settings
8581 for sanity.
8582
8583 * gc-malloc.c (scm_gc_init_malloc): check user settings for
8584 sanity.
dac04e9f
HWN
8585
8586 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
8587
ffd72400
HWN
8588 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
8589
8590 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
8591 these won't ever wrap around with high memory usage. Thanks to
8592 Sven Hartrumpf for finding this.
ffd72400 8593
5bd4a949
HWN
8594 * gc-freelist.c: include <stdio.h>
8595
61ef9c1f
HWN
8596 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
8597
ffd0ef3b
MV
85982002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
8599
a27e3d14
MV
8600 * vectors.h (SCM_VECTOR_REF): New.
8601
ffd0ef3b
MV
8602 * snarf.h (SCM_DEFINE_PUBLIC): New.
8603
f8a1712b
MV
86042002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
8605
8606 * socket.c (scm_addr_vector): Added size of address to arguments.
8607 Use it to avoid accessing a non-existent path in a sockaddr_un.
8608 Changed all callers.
8609
7200a36b
HWN
86102002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8611
1383773b
HWN
8612 * gc.h: remove DOUBLECELL card flags.
8613
8614 * gc-malloc.c (scm_calloc): try to use calloc() before calling
8615 scm_realloc().
8616
8617 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
8618 init loop; handle this from scm_init_card_freelist()
8619
8620 * gc-card.c (scm_init_card_freelist): init bit vector here.
8621
7200a36b 8622 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 8623 num2float.i.c (FLOAT2NUM): idem
7200a36b 8624
9981de3a
HWN
86252002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8626
8627 * eval.h: prepend libguile/ to include path
8628
19647556
MV
86292002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
8630
8631 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
9a5fa6e9 8632 years. Thanks to Martin Grabmüller!
19647556 8633
38d1262a
HWN
86342002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8635
8636 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
8637 unsigned numbers for computing minimum heap increment. This
8638 prevents weird results when a a negative minimum increment is
8639 computed.
8640
f800ebfb
MV
86412002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
8642
8643 * gc_os_dep.c: When we have __libc_stack_end, use that directly
19647556 8644 instead of the old tricks.
f800ebfb
MV
8645
8646 * guile-snarf.in: Do not expect the input file to be the first
8647 argument after the optional "-o" option, just pass everything to
8648 the pre-processor without extracting the input file name.
8649
4a5309c9
HWN
86502002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8651
8652 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
8653 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
8654
f2893a25
HWN
86552002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8656
8657 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
8658 Bill Schottstaedt for the bug report
8659
483f518b
MV
86602002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
8661
8662 * print.c (scm_iprin1): Print primitives generics always as
8663 "primitive-generic" even when they have no primitive methods yet.
8664
917adc55
GH
86652002-08-17 Gary Houston <ghouston@arglist.com>
8666
8667 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
8668 call.
8669
67329a9e
HWN
86702002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8671
85835e59 8672 * ports.c (scm_add_to_port_table): small bugfix.
67329a9e
HWN
8673
8674 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
8675 malloc.
8676
8677 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
8678 only use SCM_MIN_HEAP_SEG_SIZE.
8679
8680 * ports.c (scm_add_to_port_table): add backwards compatibility
8681 function
8682
8683 * ports.h: use scm_i_ prefix for port table and port table size.
8684
f07c886a
MD
86852002-08-15 Mikael Djurfeldt <mdj@linnaeus>
8686
8687 * vports.c (scm_make_soft_port): Initialize pt variable.
8688
dc61cbc6
MV
86892002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
8690
8691 * strports.h (scm_c_eval_string_in_module,
8692 scm_eval_string_in_module): New prototypes.
8693 * strports.c (scm_eval_string_in_module): New, but use
8694 "eval-string" as the Scheme name and make second parameter
8695 optional.
8696 (scm_eval_string): Implement using scm_eval_string_in_module.
8697 (scm_c_eval_string_in_module): New.
8698 Thanks to Ralf Mattes for the suggestion!
8699
da220f27
HWN
87002002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8701
be3ff021
HWN
8702 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
8703 message and abort.
8704
8705 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
8706
da220f27
HWN
8707 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
8708 stead of scm_t_port*. The function now takes a tag argument.
8709
eab1b259
HWN
87102002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8711
8712 * gc.h: add scm_debug_cells_gc_interval to public interface
8713
8714 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
8715
8716 * gc.c (scm_i_expensive_validation_check): separate expensive
8717 validation checks from cheap ones.
8718
ba1b2226
HWN
87192002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8720
8721 * read.c (scm_input_error): new function: give meaningful error
8722 messages, and throw read-error
8723
8724 * gc-malloc.c (scm_calloc): add scm_calloc.
8725
39e8f371
HWN
87262002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8727
33138b05
HWN
8728 * tags.h: remove GC bits documentation from the tags table.
8729
39e8f371
HWN
8730 * read.c (INPUT_ERROR): Prepare for file:line:column error
8731 messages for errors in scm_lreadr() and friends.
8732
87332002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8734
8735 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
8736 implementation).
8737 (scm_gc_calloc): new function
8738
26e68795 87392002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
402788a9 8740
5f16b897
HWN
8741 * ports.c (scm_new_port_table_entry): init port entry to 0
8742 completely.
402788a9
HWN
8743
8744 * ports.c (scm_new_port_table_entry): change function from
8745 scm_add_to_port_table. This prevents cells with null-pointers from
8746 being exposed to GC.
8747
504d99c5 8748 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
402788a9 8749 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
c8a1bdc4 8750
504d99c5 8751 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
c2cbcc57
HWN
8752 to gc-stats.
8753
c8a1bdc4
HWN
8754 * numbers.c (big2str): return "0" for 0 iso. ""
8755
c2cbcc57
HWN
8756 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
8757 private-gc.h: new file
c8a1bdc4
HWN
8758
8759 * gc.c: completely revised and cleaned up the GC. It now uses lazy
8760 sweeping. More documentation in workbook/newgc.text
8761
aea06b34
MV
87622002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8763
8764 * random.c (rstate_free): Return zero.
8765
35060ae9
DH
87662002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8767
8768 * environments.c (remove_key_from_alist): Removed.
8769
8770 (obarray_remove): Simplified.
8771
6a535440
SJ
87722002-07-24 Stefan Jahn <stefan@lkcc.org>
8773
8774 * continuations.h: ia64: Include <signal.h> before
8775 <sys/ucontext.h>.
8776
bcbd25b7
DH
87772002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
8778
8779 * modules.c (scm_sym2var): Don't compare SCM values with ==.
8780
26e68795 87812002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1d1559ce
HWN
8782
8783 * goops.c (scm_compute_applicable_methods): use
8784 scm_remember_upto_here_1 iso scm_remember_upto_here
8785
8786 * macros.c: include deprecation.h
8787
504d99c5 8788 * vectors.c (scm_vector_move_right_x): remove side effect in
1d1559ce 8789 macro arg.
504d99c5 8790 (scm_vector_move_left_x): idem.
1d1559ce
HWN
8791
8792 * net_db.c, posix.c, socket.c: variable naming: change ans to
8793 result.
8794
8795 * sort.c (scm_merge_vector_x): accept vector as argument
8796 iso. SCM*. This is needed for full GC correctness.
8797
8798 * gc.h: undo previous undocumented changes related to #ifdef
8799 GENGC.
8800
26e68795 88012002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
34d19ef6
HWN
8802
8803 * *.c: add space after commas everywhere.
8804
8805 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
8806 Document cases where SCM_WRITABLE_VELTS() is used.
8807
8808 * vectors.h (SCM_VELTS): prepare for write barrier, and let
8809 SCM_VELTS() return a const pointer
8810 (SCM_VECTOR_SET): add macro.
8811
3063e30a
DH
88122002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8813
8814 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
8815 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
8816 Deprecated the special kind of built-in dynamic syntax transformer
8817 that was inaccurately named "macro". Note: The built-in syntax
8818 transformers that are named "mmacro" or "memoizing-macro" still
8819 exist, and it is these which come much closer to what one would
8820 call a macro.
8821
4c5f8e8f
NJ
88222002-07-13 Neil Jerram <neil@ossau.uklinux.net>
8823
8824 * eval.c (unmemocopy): Fix for
8825 1001-local-eval-error-backtrace-segfaults (unmemoization crash
8826 with internal definitions and local-eval).
8827
4f6f9ae3
GH
88282002-07-12 Gary Houston <ghouston@arglist.com>
8829
8830 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
8831 defined. They don't do anything useful, especially since the
8832 only case where DYNAMIC_LINKING is undefined seems to be
8833 when --with-modules=no is given to configure, which is basically
8834 requesting that the "dynamic linking module" be omitted.
8835
8836 * Makefile.am (libguile_la_SOURCES): move dynl.c from
8837 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
8838
8839 * extensions.c (load_extension): check DYNAMIC_LINKING for
8840 scm_dynamic_call.
8841 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
8842 scm_init_dynamic_linking.
8843
c21935e6
MV
88442002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
8845
8846 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
8847 check for Cygwin when including <winsock2.h>, this is already
8848 check for by configure. Thus, revert change from 2002-07-07.
8849
ee95d597
GH
88502002-07-10 Gary Houston <ghouston@arglist.com>
8851
9540b68f 8852 * eq.c: include <string.h>
ee95d597
GH
8853 * dynl.c: docstring editing.
8854
46732b54
GH
88552002-07-09 Gary Houston <ghouston@arglist.com>
8856
8857 * dynl.c (scm_dynamic_call): docstring editing.
8858
c09d12e0
RB
88592002-07-08 Rob Browning <rlb@defaultvalue.org>
8860
8861 * gc_os_dep.c: HURD fixes.
8862
3f6571eb
MV
88632002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
8864
8865 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
8866
8867 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
8868 this should be compiled for BUILD host.
8869 Override default rule for
8870 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
8871 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
8872 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
8873
8874 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
8875 <winsock2.h> on Cygwin even when we have it.
8876
bd987b8e
DH
88772002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8878
8879 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
8880 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
8881 the code. Full number of arguments checking of closures is
8882 mandatory now. However, the option to disable the checking has
8883 most probably not been used anyway.
8884
8505e285
DH
88852002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
8886
bd987b8e
DH
8887 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
8888 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
8889 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
8890 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
8891 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
8892 (scm_source_properties, scm_set_source_properties_x,
8893 scm_source_property): Removed compile time option SCM_RECKLESS to
8894 clean up the code. Full number of arguments checking of closures
8895 is mandatory now. However, the option to disable the checking has
8896 most probably not been used anyway.
8505e285
DH
8897
8898 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
8899 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
8900
2ee08a28
GH
89012002-06-30 Gary Houston <ghouston@arglist.com>
8902
732b9327
GH
8903 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
8904 do anything useful. Added a comment about need for a mutex if
8905 pre-emptive threading is supported.
8906
2ee08a28
GH
8907 * posix.c (scm_convert_exec_args), dynl.c
8908 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
8909 allocate_string_pointers. 2) simplified: don't reallocate the
8910 strings, just make an array of pointers 3) avoid memory leaks on
8911 error 4) let the procedure report errors in its own name.
8912 Consequences: 1) the procedures now assume that SCM strings are
8913 nul-terminated, which should always be the case. 2) Since strings
8914 are not reallocated, it's now possible for strings passed to
8915 dynamic-args-call to be mutated.
8916
c136c920
DH
89172002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8918
8919 * __scm.h, eval.c, eval.h: Removed compile time option
8920 MEMOIZE_LOCALS to clean up the code. Now, caching of local
8921 variable positions during memoization is mandatory. However, the
8922 option to disable the caching has most probably not been used
8923 anyway.
8924
e540802f
MV
89252002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
8926
8927 * print.c (scm_simple_format): Print missing part of format before
8928 ~% control. Thanks to Daniel Skarda!
8929
4c1ffcdd
MV
89302002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
8931
8932 * mkstemp.c: Added exception notice to license statement.
8933
ba1b077b
MV
89342002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
8935
8dc434c7
MV
8936 * numbers.c (mem2ureal): When returning an inexact zero, make sure
8937 it is represented as a floating point value so that we can change
8938 its sign.
8939
ba1b077b
MV
8940 From John W. Eaton <jwe@bevo.che.wisc.edu>
8941
8942 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
8943
74c58131
TTN
89442002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
8945
8946 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
0926d46e 8947 in addition to `i386'. Thanks to Dale P. Smith.
74c58131 8948
8766d4b5
MV
89492002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
8950
8951 * eq.c (real_eqv): New.
8952 (scm_eqv_p): Use it when comparing reals and complexes.
8953
8954 * numbers.c: Include <string.h>, for strncmp.
8955 (mem2complex): Do not create negative NaNs.
8956 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
8957 NaN.
8958 (scm_inexact_to_exact): Signal error when converting a NaN.
74c58131 8959
1d8c3cad
MV
89602002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
8961
8962 * posix.c (scm_putenv): Handle removing variables explicitely by
8963 calling unsetenv.
8964
8965 From John W. Eaton.
74c58131 8966
1d8c3cad
MV
8967 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
8968 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
8969 and scm_nan.
8970 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
8971 [SCO && ! HAVE_ISINF] (isinf): New function.
8972 (xisinf, xisnan): New functions.
8973 (IS_INF): Delete.
8974 (isfinite): Define in terms of xisinf.
8975 (scm_inf_p, scm_nan_p): New functions.
8976 (guile_Inf, guile_NaN): New file-scope vars.
8977 (guile_ieee_init): New function.
8978 (scm_inf, scm_nan): New functions.
8979 (idbl2str): Handle Inf and NaN. Remove funny label and
8980 corresponding gotos.
8981 (ALLOW_DIVIDE_BY_ZERO): New macro.
8982 (scm_divide): Allow division by zero to occur if
8983 ALLOW_DIVIDE_BY_ZERO is defined.
8984 Handle bignums and ints as special cases.
8985
8986 Additional stuff by me:
8987
8988 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
8989 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
8990 (iflo2str): Don't output a '+' for negative numbers or for Inf and
8991 NaN. They will provide their own sign.
8992 (scm_divide): Only allow divides by inexact zeros. Dividing by
8993 exact zeros still signals an errors.
74c58131 8994
7a0c65eb
TTN
89952002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
8996
87b72063 8997 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb 8998 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
504d99c5 8999 (scm_slot_exists_p): Rename from scm_slots_exists_p.
7a0c65eb
TTN
9000 Thanks to Andreas Rottmann.
9001
5e423a39
GH
90022002-04-20 Gary Houston <ghouston@arglist.com>
9003
9004 * removal of unused fields in root state (thanks to Christopher
9005 Cramer for pointing out the disuse.)
9006 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
1841c44a 9007 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
b6287a25 9008
5e423a39
GH
9009 * root.c (root_mark): don't mark them.
9010 (scm_make_root): don't set them to #f.
9011 * init.c (scm_init_standard_ports): don't initialise with the
9012 default ports.
9013
9d2cce76
MV
90142002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
9015
9016 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
9017 cpp_sig_symbols.c.
9018
90192002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
9020
9021 * guile-snarf.in: Do not clean input file. This would write to
9022 the $(srcdir) during a VPATH build, which is not allowed. It also
9023 isn't needed since it only works when an output filename has been
9024 specified and in that case we don't need to clean the input file
9025 because the output file will already exist.
9026
6f79b6cc
MV
90272002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
9028
9029 * guile-snarf: Install the trap for removing $cleanfile only when
9030 the value of $cleanfile is actually known.
9031
21550b10
RB
90322002-04-10 Rob Browning <rlb@defaultvalue.org>
9033
9034 * .cvsignore: add versiondat.h and *.c.clean.c.
9035
bc76d628
DH
90362002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
9037
9038 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
9039 function, replaces macro SRCBRKP.
9040
9041 (SRCBRKP): Deprecated.
9042
9043 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
9044 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
9045 temporary variable.
9046
5132eef0
DH
90472002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
9048
9049 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
9050 CHECK_EXIT and removed all references to them.
9051
680516ba
DH
90522002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
9053
9054 * debug.h (scm_ready_p, debug_print): Removed declarations.
9055
9056 * eval.c (EVALCELLCAR): Removed.
9057
9058 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
9059 operation from condition.
9060
e2bd68e0
MV
90612002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
9062
9063 * guile-snarf.in: When the output filename is "-", write to
9064 stdout. When no "-o" option is given, use "-" as the output
9065 filename (i.e., stdout). Only 'clean' the inputfile or remove the
9066 output file on error when the output file name is not "-". Define
9067 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
9068
9069 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
9070
ab1f1094
DH
90712002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
9072
9073 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
9074 and the corresponding goto statements. Removed redundant code.
9075
42030fb2
DH
90762002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
9077
9078 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
9079 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
9080 Re-enabled handing of rpsubrs and asubrs.
9081
e050d4f8
DH
90822002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
9083
9084 * eval.c (SIDEVAL): Removed.
9085
9086 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
9087 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
9088 argument checking order for set! to locals, variables and symbols.
9089 Improvements to control structure. Removed some uses of arg1 and
9090 arg2 as temporary variables.
9091
a6d344d3
TTN
90922002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
9093
9094 * guile-snarf.in: Remove "--compat=1.4" support.
9095 Add "-d" and "-D" support.
9096
9097 (deprecated_list): New var.
9098 (compat_mode_clean_xxx): Delete.
9099 (grep_deprecated): New func.
9100 ("main"): If "-d" or "-D", call `grep_deprecated'.
9101
3939e9df
NJ
91022002-03-15 Neil Jerram <neil@ossau.uklinux.net>
9103
387d418c
NJ
9104 * hooks.h: Change scm_t_c_hookype_t everywhere to
9105 scm_t_c_hook_type.
9106
bb2c02f2 9107 Docstring fixes:
a6d344d3 9108
bb2c02f2
NJ
9109 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
9110
9111 * ports.c (scm_sys_make_void_port): Use `@file'.
9112
9113 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
9114 than `else'.
9115
9116 * macros.c (scm_makmacro): Don't say that the form replaces its
9117 source, because it doesn't.
9118 (scm_makmmacro): Clarify difference between this and scm_makmacro.
9119
9120 * backtrace.c (scm_display_error), filesys.c (scm_umask,
9121 scm_select, scm_basename), goops.c (scm_method_generic_function),
9122 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
9123 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
9124 spelling mistakes.
9125
3939e9df
NJ
9126 * debug.c (scm_debug_options), eval.c
9127 (scm_eval_options_interface), read.c (scm_read_options): Change
9128 incorrect @var in docstring to @code.
9129
3b3cc781
MV
91302002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
9131
500b0d5b
MV
9132 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
9133
3b3cc781
MV
9134 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
9135 guile-snarf can remove trailing non-init code.
9136
9137 * guile-snarf.in (modern_snarf): Remove everything following and
9138 including "^:^" from the output.
9139
dff98306
DH
91402002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
9141
9142 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
9143
9144 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
9145
2287fb53
TTN
91462002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
9147
9148 * guile-snarf.in: Update copyright.
9149 Rewrite to internalize error handling.
9150 Add "--compat=1.4" handling.
9151 Add commentary.
9152
9153 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
9154 (snarfcppopts): New var.
9155 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
9156 (.c.doc): Use $(snarfcppopts).
9157
822250a4
TTN
9158 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
9159 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
9160 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
9161 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
9162 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
9163 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
9164 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
9165 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
9166 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
9167 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
9168 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
9169 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
9170 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
9171 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
9172
b7798e10
DH
91732002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9174
9175 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
9176 The next step will be to remove the union 't' and simplify the
9177 code of SCM_CEVAL that way.
9178
04a98cff
NJ
91792002-03-12 Neil Jerram <neil@ossau.uklinux.net>
9180
9181 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
9182 rreadfds, rwritefds, rexceptfds): Made static.
9183
9184 * gc.c (terminating), fports.c (terminating): Renamed
9185 scm_i_terminating.
9186
16d98032
MV
91872002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
9188
5046250e
MV
9189 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
9190 potential overflow problems. Thanks to John W Eaton!
9191
8794207d
MV
9192 * strop.c (string_capitalize_x): Treat characters as unsigned so
9193 that 8-bit chars work. Thanks to David Pirotte!
16d98032 9194
1d15ecd3
DH
91952002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9196
9197 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
9198 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
9199 proc as temporary variables. Introduced temporary variables with
9200 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9201 by a more explicit predicate in some places.
9202
92032002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
f12745b6
DH
9204
9205 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
9206 Added lots of comments regarding the implementation of #@dispatch.
9207 Changed intra-procedure communication to use t.arg1 instead of
9208 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
9209 variables. Introduced temporary variables with hopefully
9210 descriptive names for clarification. Replaced SCM_N?IMP by a more
9211 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
9212 of computing the expression explicitly. Eliminate now unused
9213 label nontoplevel_cdrxbegin.
9214
9215 * goops.h (SCM_INSTANCE_HASH): New macro.
9216
9217 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
9218
1ebf1566
TTN
92192002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9220
9221 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
9222 "guile-snarf" moved back from `noinst_SCRIPTS'.
9223
020c890c
NJ
92242002-03-08 Neil Jerram <neil@ossau.uklinux.net>
9225
58d233cc
NJ
9226 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
9227 exists when adding a source property other than those that are
9228 handled explicitly, add the new property to the SRCPROPS obj's
9229 plist.
9230
020c890c
NJ
9231 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
9232 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
9233
9234 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
9235 debug.status. It isn't needed, and it can overflow the bits
9236 reserved for it (which may lead to a segv or a GC abort).
9237
3f04400d
DH
92382002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9239
9240 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
9241 side-effecting operations from conditions and macro calls.
9242 Replaced SCM_N?IMP by a more explicit predicate in some places.
9243 Minimized the scope of some variables.
9244
97820583
SJ
92452002-03-02 Stefan Jahn <stefan@lkcc.org>
9246
9247 * convert.i.c: Fixed int <-> long conversions which would have
9248 failed if their sizes were different.
9249
38ace99e
DH
92502002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9251
9252 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
9253 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
9254 as temporary variables. Removed side-effecting operations from
9255 conditions and macro calls. Introduced temporary variables with
9256 hopefully descriptive names for clarification. Replaced SCM_N?IMP
9257 by a more explicit predicate in some places. Removed code that
9258 was conditionally compiled if SICP was defined - which it never
9259 is.
9260
e5cb71a0
DH
92612002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9262
9263 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
9264 Removed some uses of t.arg1 and proc as temporary variables.
9265 Removed side-effecting operations from conditions and macro calls.
9266 Introduced temporary variables with hopefully descriptive names
9267 for clarification. Replaced SCM_N?IMP by a more explicit
9268 predicate in some places.
9269
6a0f6ff3
DH
92702002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
9271
9272 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
9273 explicit predicate in some places.
9274
9275 (CHECK_EQVISH): Removed.
9276
9277 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
9278 variables. Removed side-effecting operations from conditions and
9279 macro calls. Introduced temporary variables for clarification.
9280 Sorted if-else-if check for the type of the last form in a list by
9281 frequency. Avoided some unnecessary tail-recursion calls.
9282
228a24ef
DH
92832002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9284
9285 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
9286 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
9287 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
9288 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
9289 scm_cell and all its uses to scm_t_cell in accordance to Guile's
9290 naming scheme for types.
9291
9292 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
9293 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
9294 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
9295 (scm_make_environment), eval.c (scm_closure), fports.c
9296 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
9297 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
9298 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
9299 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
9300 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
9301 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
9302 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
9303 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
9304 scm_alloc_cell to scm_cell.
9305
9306 * environments.c (core_environments_observe), gc.c
9307 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
9308 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
9309 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
9310 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
9311 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
9312 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
9313 (allocate_weak_vector): Renamed scm_alloc_double_cell to
9314 scm_double_cell.
9315
edb810bb
SJ
93162002-02-27 Stefan Jahn <stefan@lkcc.org>
9317
9318 * convert.i.c, convert.c: Better range checking.
9319
9320 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
9321
1ebf1566 9322 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
edb810bb
SJ
9323 Windows (MinGW).
9324
327d4dd3
TTN
93252002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
9326
9327 * Makefile.am: Update path to pre-inst-guile automake frag.
9328
89d7a92c 93292002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
646052c0
DH
9330
9331 * gc.c (scm_gc_sweep): Make it compile even when deprecated
9332 features are excluded.
9333
89d7a92c 93342002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
bac0e232
DH
9335
9336 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
9337
4f2716b6
GH
93382002-02-25 Gary Houston <ghouston@arglist.com>
9339
9340 * convert.c: include <string.h> for convert_i.c.
9341
46151112
RB
93422002-02-24 Rob Browning <rlb@defaultvalue.org>
9343
9344 * .cvsignore: add stamp-h1.
9345
cd328b4f
NJ
93462002-02-21 Neil Jerram <neil@ossau.uklinux.net>
9347
9348 * unif.c (scm_array_to_list): Correct name, which had been
9349 accidentally changed to scm_t_arrayo_list!
9350
c709de7f
MD
93512002-02-20 Mikael Djurfeldt <mdj@linnaeus>
9352
9353 * gc.c (scm_gc_sweep): Print an error message when aborting due to
9354 underflowing scm_mallocated.
9355
c1965d31
MV
93562002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9357
9358 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
9359 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
9360 Reimplemented using the new scm_gc_malloc, etc., functions and
9361 deprecated.
9362
b606945b
TTN
93632002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
9364
9365 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
9366 to `noinst_PROGRAMS'.
9367 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
9368 (noinst_PROGRAMS, noinst_SCRIPTS): New.
9369
7c686ba8
MV
93702002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9371
9372 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
9373 non-zero is returned from a port or smob free function.
9374 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
9375 scm_gc_register_collectable_memory,
9376 scm_gc_unregister_collectable_memory, scm_gc_malloc,
9377 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
9378
9379 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
9380 debug-malloc.c, dynl.c, environments.c, environments.h,
9381 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
9382 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
9383 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
9384 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
9385 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
9386 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
9387 appropriate. Return zero from smob and port free functions.
9388
9389 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
9390
9391 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
9392 messages while the GC is running.
9393 (scm_c_issue_deprecation_warning_fmt): New.
9394
9395 * fports.c (scm_setvbuf): Reset read buffer to saved values when
9396 it is pointing to the putback buffer.
9397
66adc0a6
TTN
93982002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
9399
9400 * gsubr.c (create_gsubr): On "too many args" error,
9401 also display arg count and name. Thanks to Bill Schottstaedt.
9402
0187b4f4
TTN
94032002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
9404
9405 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
9406
9407 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
9408 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
9409 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
9410
9411 * guile-snarf-docs-texi.in: Bye bye.
9412
402e687c
MV
94132002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9414
9415 * symbols.c (scm_make_symbol): Fix typo in docstring.
9416
9417 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9418 scm_make_symbol): New prototypes.
9419
319b98ed
MV
94202002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
9421
9422 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
9423 (SCM_SYMBOL_INTERNED_P): New.
9424 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
9425 SCM_MAKINUM since hash values can well be bignums.
9426 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
9427 This signals a interned symbol.
9428 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
9429 scm_make_symbol): New.
0187b4f4 9430
319b98ed
MV
9431 * print.c (scm_iprin1): Print uninterned symbols unreadably.
9432
34472dfe
TTN
94332002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
9434
9435 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
9436 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
0187b4f4 9437 Thanks to Dave Love.
34472dfe 9438
1b39c2e3
MV
94392002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
9440
9441 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
319b98ed 9442 This might help to make unintended clashes less likely.
1b39c2e3
MV
9443 (scm_string_to_symbol): Protect the string until the symbols is
9444 created.
9445
1fa86ca5
SJ
94462002-01-31 Stefan Jahn <stefan@lkcc.org>
9447
9448 * convert.c, convert.h, convert.i.c: New files containing C
34472dfe 9449 array to Scheme conversion helpers meant to be replacement
1fa86ca5
SJ
9450 functions for the deprecated gh interface.
9451
9452 * Makefile.am: Setup rules for new `convert.*' files.
9453
af68e5e5
SJ
94542002-01-28 Stefan Jahn <stefan@lkcc.org>
9455
9456 * symbols.c (scm_c_symbol2str): New function, replacement for
9457 `gh_scm2newsymbol()'.
9458
34472dfe 9459 * strings.c (scm_c_substring2str): New function. Proper
af68e5e5
SJ
9460 replacement for `gh_get_substr()'.
9461
9462 * socket.c: Include `stdint.h' if available for the `uint32_t'
9463 declaration.
9464
504d99c5 9465 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
af68e5e5
SJ
9466 compiler warning).
9467
9468 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
9469
c96d76b8 94702002-01-22 Neil Jerram <neil@ossau.uklinux.net>
34472dfe 9471
c96d76b8 9472 Other changes unrelated to Elisp...
34472dfe 9473
c96d76b8
NJ
9474 * eval.c (scm_m_if): Use s_if rather than repeating string literal
9475 "if".
9476 (comments): Fix a few typos.
9477 (scm_for_each): Add parentheses around oddly unparenthesized
9478 if/while conditions.
9479
9480 * read.c (scm_read_opts): Add full stop at end of doc for
9481 `keywords' option.
9482
9483 * script.c (scm_compile_shell_switches): Use scm_str2symbol
9484 instead of gh_symbol2scm.
9485
9486 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
9487 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
9488
9489 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
9490 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
9491
9492 First batch of changes for Elisp support...
9493
9494 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
9495 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
9496 throw.c, vectors.c, weaks.c: Add #include for lang.h.
9497
9498 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
9499 conditionalize compilation and initialization of Elisp support
9500 function.
34472dfe 9501
c96d76b8
NJ
9502 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
9503 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
9504 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
9505 filesys.c (fill_select_type, retrieve_select_type), fluids.c
9506 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
9507 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
9508 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
bbd26b5a
NJ
9509 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
9510 options.c (change_option_setting, scm_options), posix.c
9511 (environ_list_to_c), print.c (scm_iprlist), throw.c
9512 (scm_exit_status), vectors.c (scm_vector), weaks.c
9513 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
c96d76b8
NJ
9514
9515 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
9516 just SCM_FALSEP.
34472dfe 9517
c96d76b8
NJ
9518 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
9519 of just SCM_BOOLP.
9520
9521 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
9522 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
9523 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
9524 (scm_m_atfop): Support function aliasing. Support both function
9525 args, which need transformation, and macro args, which do not.
9526 Add explanatory comments.
9527 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
9528 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
9529 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
9530 SCM_NULLP || SCM_NILP instead of checks against (removed)
9531 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
9532 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
9533
9534 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
9535 scm_m_while, scm_nil_eq): Commented out; I don't think we need
9536 these, but I don't want to remove them yet, just in case.
9537 (scm_init_lang): Define `%nil' variable on Scheme level to hold
9538 Elisp nil value.
9539
9540 * lang.h (SCM_NILP): Test against Elisp nil value instead of
9541 against (removed) scm_lisp_nil.
9542 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
9543 (SCM_NULL_OR_NIL_P): New.
9544
9545 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
9546 SCM_VALIDATE_NULL.
9547
9548 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
9549 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
9550 value).
9551
9552 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
9553 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
9554 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
9555 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
9556
9557 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
9558 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
9559 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
9560 Numbering shifted down accordingly.
9561 (SCM_ELISP_NIL): New IFLAG.
9562
9563 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
34472dfe 9564
a392ee15
DH
95652002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9566
9567 * eval.c: Removed outdated references to "everr". Improved some
9568 comments.
9569
9570 (scm_deval_args, deval_args): Renamed scm_deval_args to
9571 deval_args, since it is not part of the interface.
9572
9573 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
9574 use references to debug.vect[0] before it exists. Add parentheses
9575 to switch statement.
9576
9577 * goops.h: Added local emacs variables.
9578
24933780
DH
95792002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9580
9581 * eval.[ch] (scm_deval_args): Made static.
9582
9583 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
9584 test.
9585
9586 * strings.c (scm_c_string2str): Clarified comment. Replaced
9587 THINKME by FIXME for uniformness. Removed question about whether
9588 arguments need to be protected from garbage collection: Arguments
9589 must be protected as any other variable.
9590
f9450cdb
DH
95912002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
9592
9593 * procs.h (SCM_CLOSURE_BODY): New Macro.
9594
9595 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
9596 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
9597 get_slot_value, set_slot_value), procs.c
9598 (scm_procedure_documentation), sort.c (closureless), stacks.c
9599 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
9600 SCM_CLOSURE_BODY.
9601
9602 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
9603
5dc64f64
MV
96042001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
9605
9606 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
9607 use "cp" instead.
9608
197ee3d3
MV
96092001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
9610
9611 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
9612 everywhere.
9613
9614 * continuations.c (scm_make_continuation): Do not retain the
9615 throw_value when the continuation is invoked.
9616
4d4528e7
SJ
96172001-12-08 Stefan Jahn <stefan@lkcc.org>
9618
9619 * strings.c (scm_c_string2str): New function. Converts a
34472dfe 9620 given Scheme string into a C string. Also put in two
4d4528e7
SJ
9621 THINKME's regarding the malloc policy for the missing converter
9622 routines.
9623
98347362
NJ
96242001-12-01 Neil Jerram <neil@ossau.uklinux.net>
9625
9626 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
9627 gh_symbol2scm.
9628
1fc8902f
DH
96292001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
9630
9631 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
9632 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
9633
9634 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
9635 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
9636 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
9637 macros.
9638
9639 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
9640
9641 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
9642 SCM_GC_CELL_* macros when accessing free cells.
9643
4878beec
MV
96442001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
9645
9646 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
34472dfe 9647 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
4878beec
MV
9648 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
9649 * strings.h (SCM_MAKE_STRING_TAG): New.
9650 * procs.h (SCM_MAKE_CCLO_TAG): New.
9651 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
9652
9653 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
9654 !SCM_ENABLE_DEPRECATED.
9655
9656 * async.c, async.h (scm_system_async_mark_from_signal_handler):
9657 New.
9658
9659 * scmsigs.c (scm_take_signal): Removed all code that assumes that
9660 signal handlers are allowed to divert the flow of control. Call
9661 scm_system_async_mark_from_signal_handler instead of
9662 scm_system_async_mark.
9663
9664
9665 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
9666 scm_alloc_double_cell in their place.
34472dfe 9667
4878beec
MV
9668 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
9669 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
9670 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
9671 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
9672 scm_deprecated_newcell and scm_deprecated_newcell2.
9673
9674 gc.c (scm_tc16_allocated): Only define when including deprecated
9675 features.
9676 (scm_debug_newcell, scm_debug_newcell2): Removed.
9677 (scm_init_storage): Do not initialize scm_tc16_allocated.
9678 (scm_init_gc): Do it here.
9679 (allocated_mark): New, from old code.
9680 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
34472dfe 9681
4878beec 9682 * inline.c, inline.h: New files.
34472dfe 9683 * Makefile.am: Added them in all the right places.
4878beec 9684
34472dfe 9685 * _scm.h: Include "libguile/inline.h".
4878beec
MV
9686
9687 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
9688 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
9689 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
9690 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
9691 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
9692 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
9693 scm_alloc_double_cell, respectively.
9694
d2bc7fae
MV
96952001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
9696
9697 * modules.c (scm_c_use_module): Adapt to changes to
9698 `process-use-modules'.
9699
5eec27e9
DH
97002001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9701
9702 * numbers.c (scm_divide): Fix more division by zero errors.
9703
8978878f
GH
97042001-11-21 Gary Houston <ghouston@arglist.com>
9705
9706 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
9707 obsolete. autogen.sh says:
9708 invalid unused variable name: `OMIT_DEPENDENCIES'
9709
164826d3
DH
97102001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
9711
9712 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
9713 reporting the bug.
9714
84aff7a7
MV
97152001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
9716
9717 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
9718 Thanks to Eric Gillespie, Jr!
34472dfe 9719
6063dc1d
SJ
97202001-11-21 Stefan Jahn <stefan@lkcc.org>
9721
34472dfe
TTN
9722 * win32-socket.c (getservent, setservent, endservent,
9723 getprotoent, setprotoent, endprotoent): New functions.
6063dc1d
SJ
9724 Appropriate replacements for M$-Windows.
9725
9726 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
9727 these definitions for GUILE_DEBUG.
9728
9729 * net_db.c: Include "win32-socket.h" if compiling with a native
34472dfe
TTN
9730 M$-Windows compiler. Include some pieces of code (protoent and
9731 servent interface) protected by HAVE_* macros when using a
6063dc1d
SJ
9732 native M$-Windows compiler.
9733
351982f6
MV
97342001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
9735
9736 * modules.c (scm_c_export): Do nothing when the first argument is
9737 already the terminating NULL. Thanks to Han-Wen Nienhuys!
9738
849038b5
TTN
97392001-11-20 Thien-Thi Nguyen <ttn@glug.org>
9740
9741 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
9742 also include `buildstamp'.
9743
5c790b44
RB
97442001-11-18 Rob Browning <rlb@defaultvalue.org>
9745
9746 * version.c
9747 (s_scm_major_version): use SCM_MAJOR_VERSION.
9748 (s_scm_minor_version): use SCM_MINOR_VERSION.
9749 (s_scm_micro_version): use SCM_MICRO_VERSION.
9750 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
9751 SCM_MICRO_VERSION.
9752
9753 * version.h.in
9754 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
9755 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
9756 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
9757
694a9bb3
NJ
97582001-11-18 Neil Jerram <neil@ossau.uklinux.net>
9759
9760 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
9761 Rewrite docstrings without reference to substring-move-left/right,
9762 since the latter no longer exist.
9763
302c12b4
DH
97642001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9765
9766 * eval.c: Removed bogus comment about acros.
9767
9768 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
9769 Minimize scope of local variable. Eliminate dependency on
9770 macro DEBUG_EXTENSIONS.
9771
9772 (s_splicing): New error message string.
9773
9774 (scm_m_body): Issue 'bad body' message rather than 'missing
9775 expression' message.
9776
9777 (scm_m_quote): Eliminate unnecessary copying.
9778
9779 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
9780 checking of the body to scm_m_body.
9781
9782 (scm_m_do): Move comment to function header. Rename arg1 to
9783 binding. Made the code a bit easier to read.
9784
9785 (evalcar): Removed.
9786
9787 (iqq): Added a comment. Changed the depth parameter to
9788 unsigned. Use size_t for vector lengths. Make sure vector object
9789 is gc protected as long as its contents are read. Add some syntax
9790 checks. Get rid of unnecessary SCM_IMP test. Clean up the
9791 control structure a bit.
9792
9793 (scm_m_delay): Added comment about the implementation of
9794 scm_m_delay.
9795
9796 (scm_m_define): Add comment about guile's currying define
9797 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
9798 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
9799
9800 (scm_m_letrec1): Removed. Part of the functionality is taken
9801 over by the new function 'transform_bindings'.
9802
9803 (transform_bindings): New function. Takes over some of the
9804 functionality of removed function 'scm_m_letrec1', namely to split
9805 a list of bindings into a reversed list of variables and a list of
9806 initializers.
9807
9808 (scm_m_letrec): Call 'transform_bindings'.
9809
9810 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
9811 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
9812 test. Use 'transform_bindings'. Fixed scoping error with named
9813 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
9814 Jerram for suggesting the fix). Cleaned up the control structure
9815 a bit.
9816
9817 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
9818 unnecessary consing. Eliminated unnecessary
9819 SCM_DEFER/ALLOW_INTS.
9820
9821 (SCM_CEVAL): Un-obfuscated some loops.
9822
cecb4a5e
NJ
98232001-11-16 Neil Jerram <neil@ossau.uklinux.net>
9824
8f85c0c6
NJ
9825 * gc.h (scm_unhash_name): Old declaration removed.
9826
9827 * eval.c (s_scm_eval): Change @var{primitive-eval} to
9828 @code{primitive-eval}.
9829
9830 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
9831 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
9832 Change @deffnx lines in docstrings to say {Scheme Procedure}
9833 rather than primitive or procedure.
9834
9835 * posix.c (scm_execl), filesys.c (scm_close), unif.c
9836 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
9837 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
9838 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
9839 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
9840 (scm_string_split, scm_string_ci_to_symbol), strings.c
9841 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
9842 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
9843 Docstring fixes and improvements reflecting edits that have been
9844 made in the reference manual source.
9845
9846 * objprop.c (scm_object_properties, scm_set_object_properties_x,
9847 scm_object_property, scm_set_object_property_x): Remove invalid
9848 @deffnx lines for corresponding procedure property primitives.
9849
cecb4a5e
NJ
9850 These changes add a @deffnx C function declaration and function
9851 index entries for each Guile primitive to the copy of the doc
9852 snarf output that is used for reference manual synchronization.
9853 Online help is unchanged.
849038b5 9854
cecb4a5e
NJ
9855 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
9856 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
9857 name to SCM_SNARF_DOCS.
849038b5 9858
cecb4a5e
NJ
9859 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
9860 snarf-check-and-output-texi.
9861
9862 * Makefile.am (guile-procedures.texi): New rule.
9863 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
9864 Changed so that the last stage of doc snarfing is now performed
9865 twice, once to produce guile-procedures.txt for online help, and
9866 once to produce guile.texi for reference manual synchronization.
9867
ddea3325
DH
98682001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
9869
9870 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
9871 safely usable as a single statement followed by a ';', for example
9872 in an if statement.
9873
9874 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
9875
72dd0a03
NJ
98762001-11-13 Neil Jerram <neil@ossau.uklinux.net>
9877
9878 * random.c (scm_random_solid_sphere_x,
9879 scm_random_hollow_sphere_x): Correct "shere" typos.
9880
9881 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
9882
9883 * version.c (scm_version): Update docstring to include
9884 `micro-version'.
9885
6558eda6
MV
98862001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
9887
409b8588
MV
9888 * modules.c (scm_c_export): Call va_end after collecting the
9889 symbols.
9890
adb8c0f2
MV
9891 * strop.h, strop.c (scm_substring_move_left_x,
9892 scm_substring_move_right_x): Removed.
9893
6558eda6
MV
9894 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
9895 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
9896 configure does.
9897
5d8fc640
MV
98982001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
9899
9900 * numbers.c: Document macros to define when including
9901 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
9902 now rely on SIZEOF_ macros that have been figured out at
9903 configure time.
9904
9905 * num2integral.i.c: Adapt to new interface.
9906 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
9907 target type by casting it and checking whether it is still the
9908 same. Do not try to handle bignums for integral types that are
9909 smaller than fixnums. When handling bignums, collect the
9910 magnituse first into a unsigned type, and correctly check for
9911 overflow.
9912 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
9913 only -MIN_VALUE can still be negative of all negative numbers (in
9914 twos-complement).
9915
849038b5 9916 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
5d8fc640
MV
9917
9918 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
9919 HAVE_LONG_LONG depending on whether their size is non-zero.
9920
d6b8cf11
TTN
99212001-11-11 Thien-Thi Nguyen <ttn@glug.org>
9922
9923 * strop.c (scm_string_null_p): Docfix; nfc.
9924 Thanks to Scott Lenser.
9925
9401323e
NJ
99262001-11-07 Neil Jerram <neil@ossau.uklinux.net>
9927
9928 * extensions.c (scm_load_extension): Canonicalize docstring
9929 whitespace.
9930
9931 * unif.c (scm_uniform_array_write), ports.c
9932 (scm_current_output_port, scm_force_output), dynwind.c
9933 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
9934 filesys.c (scm_open, scm_lstat), struct.c
9935 (scm_make_struct_layout), random.c (scm_random,
9936 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
9937 (scm_i_index): Remove superfluous whitespace from end of docstring
9938 lines.
9939
9940 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
9941 strings.c (scm_make_string), variable.c (scm_make_variable,
9942 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
9943 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
9944 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
9945 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
9946 newline at end of docstrings.
9947
9948 * modules.c (scm_set_current_module): Add missing newline to
9949 docstring.
9950
b4e15479
SJ
99512001-11-07 Stefan Jahn <stefan@lkcc.org>
9952
9953 * win32-socket.[ch]: New files. Defines Winsock-API error codes
9954 and makes them available through Guile. That is because the
9955 Winsock-API does not store its errors in `errno' and thus cannot
9956 return error messages via `strerror (errno)'.
9957
9958 * socket.c (scm_init_socket): Initialize `win32-socket' part
9959 here under M$-Windows.
9960
d6b8cf11 9961 * numbers.h: Added missing declaration of
b4e15479
SJ
9962 `scm_sys_check_number_conversions()'.
9963
9964 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
9965 and use in `(strerror)' and `(system-error)'.
9966
d6b8cf11 9967 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
b4e15479
SJ
9968 `win32-socket.[ch]' to extra source and header files.
9969
7ab89df1
MV
99702001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
9971
9972 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
9973 a call to turn-on-debugging when --debug has been given instead of
9974 turning it on directly. Also, handle new `--no-debug' option,
9975 which might suppress the call to turn-on-debugging.
9976
0233bfc1
SJ
99772001-11-05 Stefan Jahn <stefan@lkcc.org>
9978
9979 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
9980
8f99e3f3
SJ
99812001-11-04 Stefan Jahn <stefan@lkcc.org>
9982
9983 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
d6b8cf11 9984 here (was at guile_LDADD) which describes the dependency
8f99e3f3
SJ
9985 correctly and allows a clean build on Win32.
9986
d6b8cf11 9987 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8f99e3f3
SJ
9988 into FOO.
9989
9990 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
9991 import macros for external libraries (libcrypt, libqthreads,
9992 libreadline and libregex).
9993
9994 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
9995
9996 * posix.c (flock): Added support for flock() in M$-Windows.
9997
9998 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
9999 of __SCM_IMPORT__.
10000
10001 * fports.c (getflags): Differentiate reading and writing pipes
10002 descriptors.
10003
10004 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
10005 M$-Windows.
10006
10007 * coop.c (coop_condition_variable_timed_wait_mutex): Use
10008 conditionalized error code if `ETIMEDOUT' is not available.
10009 (scm_thread_usleep): Remove bogus declaration of `struct timeval
10010 timeout'.
10011
10012 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
10013 belongs. That is because NO_PREPRO_MAGIC gets undefined after
10014 each inclusion of `num2integral.i.c'.
10015 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
10016
4e21fa60
MV
100172001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
10018
10019 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
10020 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
10021
08112c95
MD
100222001-11-02 Mikael Djurfeldt <mdj@linnaeus>
10023
7663c008
MD
10024 * print.c (scm_iprin1): Mark print state as revealed when
10025 dispatching to generic write or display.
10026
08112c95
MD
10027 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
10028
f712d833
MV
100292001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
10030
10031 Support for native Win32. Thanks to Stefan Jahn!
d6b8cf11 10032
f712d833
MV
10033 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
10034 and win32-dirent.h to extra source and header files. These
10035 include the uname() and the POSIX dirent interface implementation
10036 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
10037 linkers which do not allow unresolved symbols inside shared
10038 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
10039 dependency.
10040
d6b8cf11
TTN
10041 * __scm.h: Defined SCM_API. This macro gets prepended to all
10042 function and data definitions which should be exported or imported
f712d833
MV
10043 in the resulting dynamic link library in the Win32 port.
10044
10045 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
d6b8cf11 10046 chars.h, continuations.h, coop-defs.h, coop-threads.h,
f712d833
MV
10047 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
10048 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
10049 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
10050 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
10051 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
d6b8cf11 10052 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
f712d833
MV
10053 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
10054 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
10055 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
10056 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
10057 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
10058 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
10059 vports.h, weaks.h:
10060 Prefixed each each exported symbol with SCM_API.
10061
d6b8cf11 10062 * continuations.c: Added comment about the use of the extern
f712d833
MV
10063 declarations of {get,set}context() functions used in the ia64 port.
10064
10065 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
10066 is meant to be a `unsigned long *'.
10067
10068 * filesys.c: Include `direct.h' if possible. Use local
10069 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
10070 macros for M$-Windows. Implementation of `fstat_Win32()' which is
10071 able to differentiate between sockets and other file descriptors.
10072 Use this function as wrapper in `scm_fstat()'. Fixed typo in
10073 `scm_dirname()'.
10074
10075 * fports.c: Include `io.h' is possible. Put `*fp' into referring
10076 statement block in `scm_fport_buffer_add()'.
10077 Some corrections in `getflags()'.
d6b8cf11 10078
f712d833
MV
10079 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
10080
10081 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
10082 build on Win32. Disable preloaded symbols on Win2 platforms.
10083
10084 * ioext.c, ports.c: Include `io.h' is possible.
10085
10086 * mkstemp.c: Include `process.h' is possible.
10087
10088 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
10089 too.
10090 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
10091
10092 * posix.c: Remove unnecessary dirent includes and defines. Include
10093 local `win32-uname.h' for MinGW. Extern declaration of
10094 `mkstemp()' for systems where it does not exists. Make
10095 `getlogin()' available on M$-Windows.
10096
10097 * scmsigs.c: Made `usleep()' avalable on MinGW.
10098
10099 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
10100
10101 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
10102
10103 * win32-uname.c: Include "win32-uname.h", not "uname.h".
10104
d245ce23
MD
101052001-10-28 Mikael Djurfeldt <mdj@linnaeus>
10106
10107 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
10108 Don't apply scm_uniform_vector_length on arrays.
10109
8ea46249
DH
101102001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
10111
10112 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
10113 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
10114 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
10115 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
10116 scm_list_<n> over scm_cons[2]?.
10117
10118 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
10119 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
10120 SCM_C[AD][AD]R instead of explicit form.
10121
10122 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
10123 comparison parameters.
10124
10125 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
10126 !SCM_NULLP instead of SCM_NIMP.
10127
10128 (scm_m_case): Don't copy the form. Renamed proc to clause and
10129 minimized its scope. Renamed x to clauses. Removed side
10130 effecting operation from macro call.
10131
10132 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
10133 minimized its scope. Renamed x to clauses. Minimized the scope
10134 of variable 'len'. Make sure the else clause is treated specially
10135 even in case of '=>' occurences. Don't change the else to #t in
10136 order to be able to distinguish this case in the evaluator. Leave
10137 type checking of the recipient to the evaluator.
10138
10139 (scm_c_improper_memq): Made the comment somewhat clearer.
10140
10141 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
10142 test for SCM_IM_LET at the place of the formal parameters.
10143 Simplified the formal parameter checking.
10144
10145 (scm_m_letstar): Added Comment. Renamed proc to bindings.
10146 Renamed arg1 to binding and minimized its scope. Eliminated
10147 unnecessary consing.
10148
10149 (scm_m_do): Renamed proc to bindings. Minimized the scope of
10150 variable 'len'.
10151
10152 (build_binding_list): New static function.
10153
10154 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
10155 Further, split up the 'letrec' unmemoizing code to the
10156 corresponding parts for 'do', 'let' and 'letrec', adding comments
10157 to each form. Cleanup the handling of the do form (This removes
10158 some *real* code :-).
10159
10160 (SCM_CEVAL): Removed side effecting operation from macro call.
10161 Handle the 'else clause of the 'cond form specially - the symbol
10162 'else is not replaced with #t any more.
10163
8186c4f5
GH
101642001-10-14 Gary Houston <ghouston@arglist.com>
10165
10166 * version.c (scm_version): use sprintf instead of snprintf,
10167 for portability. thanks to Bill Schottstaedt.
10168
89759084
MD
101692001-10-14 Mikael Djurfeldt <mdj@linnaeus>
10170
10171 * read.c (scm_lreadr): When user-defined hash procedure returns
10172 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
10173 an exception. (This prevents parsing of uniform vectors from
10174 interfering with parsing of numbers.)
10175
9c7ce563
MV
101762001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
10177
10178 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
10179 PTRDIFF_MIN. Thanks to Ken Raeburn.
10180
101812001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
10182
10183 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
10184
10185 * eval.c (scm_m_atbind): First try to find the variable without
10186 defining it locally; when it has not been found, define it
10187 locally.
10188
10189 * modules.c (module_variable): Pass over variables that exist but
10190 are unbound.
10191
101922001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10193
10194 * backtrace.c (display_backtrace_file_and_line): Only use
10195 scm_basename when POSIX support is compiled in. Thanks to Chris
10196 Cramer.
10197
1fe5e088
DH
101982001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10199
10200 * numbers.c (mem2uinteger): Return number read so far when coming
10201 across a hexdigit after having read a # or if not reading a hex
10202 value. This will enable the calling code to correctly handle
10203 forms like 1e2. (The background is, that the exponent markers d,
10204 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
10205 providing this patch.
10206
10207 (mem2complex): Fix erroneous double-negation. Now, numbers like
10208 1-i will be read correctly.
10209
68665a97
MD
102102001-10-12 Mikael Djurfeldt <mdj@linnaeus>
10211
10212 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
10213
10214 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
10215
d5cf5324
DH
102162001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
10217
10218 * print.c (scm_print_state_vtable, print_state_pool):
10219 Initialize. These variables are now registered as gc roots.
10220
10221 (scm_current_pstate): Update documentation.
10222
10223 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
10224 scm_prin1, scm_init_print): print_state_pool is registered as a
10225 gc root and thus does not need to be protected by a surrounding
10226 pair any more.
10227
10228 (make_print_state): The car of print_state_pool no longer holds
10229 the scm_print_state_vtable.
10230
10231 (scm_current_pstate, scm_make_print_state, print_circref,
10232 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
10233 SCM_N<foo>.
10234
10235 (scm_prin1): When building lists, prefer scm_list_<n> over
10236 scm_cons[2]?.
10237
10238 (scm_iprlist): Removed a redundant SCM_IMP test.
10239
10240 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
10241
37c56aec
DH
102422001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10243
10244 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
10245
10246 (scm_memcons, scm_mem_to_proc): When building lists, prefer
10247 scm_list_<n> over scm_cons[2]?.
10248
10249 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
10250
10251 (scm_procedure_name): Use SCM_CADR instead of explicit form.
10252
10253 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
10254 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
10255 for some reason his patch didn't make it into the cvs.
10256
79d34f68
DH
102572001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
10258
10259 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
10260 little bit - should even be somewhat more accurate now.
10261
5e137c65
RB
102622001-10-08 Rob Browning <rlb@defaultvalue.org>
10263
10264 * gc.c: support ia64 register backing store.
10265 (SCM_MARK_BACKING_STORE): new macro.
10266
10267 * continuations.h: support ia64 register backing store.
10268 (struct scm_t_contregs): add ia64 register backing store.
10269
10270 * continuations.c: support ia64 register backing store.
10271 (continuation_mark): mark ia64 register backing store.
10272 (continuation_free): free ia64 register backing store.
10273 (scm_make_continuation): capture ia64 register backing store.
10274 (copy_stack_and_call): copy ia64 register backing store.
10275
ee083ac2
DH
102762001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10277
10278 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
10279 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
10280 instead of SCM_NIMP to test for that case.
10281
10282 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
10283 scm_t_bits instead of long.
10284
71dcdbf9
MV
102852001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
10286
10287 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
10288 SCM_T_SIGNED_BITS_MIN): New.
10289 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
10290 Use them to make these macros computable by the preprocessor.
10291
10292 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
10293 whether the integral type fits in a fixnum, not the compiler.
10294 This removes a spurious compiler warning. Also, honor the
10295 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
10296 needed for `long long's.
10297
10298 * numbers.c: Define NO_PREPRO_MAGOC when including
10299 num2integral.c.i for `long long' and `signed long long'.
10300
152812c0
MD
103012001-10-06 Mikael Djurfeldt <mdj@linnaeus>
10302
10303 These changes fixes a race condition in the Guile coop - pthread
10304 compatibility code.
d6b8cf11 10305
152812c0
MD
10306 * coop.c (mother_awake_p): New variable.
10307 (coop_create): Set mother_awake_p before creating or signalling
10308 mother; wait until mother is going to sleep before returning.
10309 (mother): Reset mother_awake_p before going to sleep.
10310
11d49f54
DH
103112001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10312
10313 * options.c (protected_objects, scm_init_options): The content of
10314 protected_objects is now protected from garbage collection using
10315 scm_gc_register_root instead of scm_permanent_object.
10316
10317 (get_option_setting): New static function that computes an option
10318 setting as it was formerly done in the function scm_options.
10319
10320 (get_documented_option_setting): New static function that
10321 returns option documentation as it was formerly done in the
10322 function scm_options. Note that documentation C strings are no
10323 longer precomputed into SCM objects. Instead, they are converted
10324 into SCM strings every time get_documented_option_setting is
10325 called.
10326
10327 (change_option_setting): New static functions that modifies the
10328 option setting as it was formerly done in the function
10329 scm_options. The function is now exception safe, i. e. won't
10330 cause a memory leak when interrupted. Further, only non-immediate
10331 option values are added to the protection list.
10332
10333 (scm_options): This function now has only the purpose to dispatch
10334 to to get_option_setting, get_documented_option_setting or
10335 change_option_setting, depending on the arguments given to
10336 scm_options.
10337
10338 (scm_init_opts): Don't convert documentation C strings into SCM
10339 strings. Further, don't protect any object values: They _must_
10340 be immediate values, otherwise there is no guarantee that they
10341 have not been collected before anyway.
10342
10343 * options.[ch] (scm_t_option): Made type unsigned, name into a
10344 constant char* and val into a scm_t_bits type.
10345
10346 (scm_options, scm_init_opts): The number of options is guaranteed
10347 to be larger or equal to zero. Thus, the type is changed to
10348 unsigned.
10349
3dbacabc
DH
103502001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10351
10352 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
10353 testing an unsigned value for being >= 0.
10354
14282d0f
DH
103552001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10356
10357 * numbers.h: Removed old comment about using SCM_CAR to access
10358 non-pair cells.
10359
10360 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
10361 the return value is signed. Thanks to Brian Crowder for the bug
10362 report.
10363
10364 (SCM_SRS): Avoid unnecessary casting and don't unpack input
10365 values. With this patch, SCM_SRS can be safely used for other
10366 types than scm_t_signed_bits. However, it should still better be
10367 an internal macro and thus be renamed to SCM_I_SRS.
10368
10369 (SCM_MAKINUM, SCM_INUM): Use proper casting.
10370
2dbec7b5
GH
103712001-10-03 Gary Houston <ghouston@arglist.com>
10372
10373 * continuations.h, unif.h: in the descriptions of the bit patterns
10374 of the heap cells, make bit 0 the least significant.
10375
cf4ee841
TTN
103762001-09-25 Thien-Thi Nguyen <ttn@glug.org>
10377
10378 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
10379 Thanks to Golubev I. N.
10380
4a151b3d
GH
103812001-09-25 Gary Houston <ghouston@arglist.com>
10382
10383 * ports.c (scm_drain_input): extended the docstring. thanks to
10384 Alex Schroeder and Thien-Thi Nguyen.
10385
581ded70
MD
103862001-09-23 Mikael Djurfeldt <mdj@linnaeus>
10387
10388 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
10389 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
10390 macros. (The NUM names might soon change.)
10391
10392 * numbers.h: Added missing declarations.
10393
5437598b
MD
103942001-09-22 Mikael Djurfeldt <mdj@linnaeus>
10395
10396 * Makefile.am: Distribute num2float.i.c.
10397
10398 * num2float.i.c: New file, multiply included by numbers.c, used
10399 to "templatize" the float <-> num conversion routines.
10400
10401 * numbers.c: New functions: scm_num2float, scm_float2num,
10402 scm_num2double, scm_double2num.
10403
0b073f0f
RB
104042001-09-21 Rob Browning <rlb@defaultvalue.org>
10405
10406 * .cvsignore: really add version.h
10407
10408 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
10409 Otherwise it fails on the alpha. However, we might rather choose
10410 this size conditionally.
10411
10412 * numbers.c (scm_gcd): change "k" to a long from an int.
10413 Otherwise it fails on the alpha. However, we might rather choose
10414 this size conditionally.
10415
10416 * error.c (scm_wta): coerce char* to intptr_t before int
10417 assignment.
10418
10419 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
10420 int.
10421
10422 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
10423
2830fd91
MD
104242001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10425
10426 * numbers.c (scm_integer_expt): Accept inexact integer in second
10427 argument. (Thanks to Bill Schottstaedt.)
10428
c13f0a90
RB
104292001-09-20 Rob Browning <rlb@defaultvalue.org>
10430
10431 * .cvsignore: add version.h
10432
10433 * versiondat.h.in: removed (obsolete).
10434
10435 * version.h.in: renamed from version.h.
10436 (SCM_GUILE_MAJOR_VERSION): new public macro.
10437 (SCM_GUILE_MINOR_VERSION): new public macro.
10438 (SCM_GUILE_MICRO_VERSION): new public macro.
10439
10440 * version.h: renamed to version.h.in.
10441
10442 * version.c
10443 (scm_major_version): support integer *_VERSION macros.
10444 (scm_minor_version): support integer *_VERSION macros.
10445 (scm_micro_version): support integer *_VERSION macros.
10446 (scm_version): support integer *_VERSION macros.
10447
147c18a0
MD
104482001-09-20 Mikael Djurfeldt <mdj@linnaeus>
10449
10450 * error.c, error.h: Made error keys globally accessible.
10451 Applications might want to test for these or use them in a direct
10452 call to scm_error.
10453
10454 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
10455 routines are passed an inexact. This change in behavior is
10456 motivated by concordance with R5RS: It is more common that a
10457 primitive doesn't want to accept an inexact for an exact.
10458
662c5539
DH
104592001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
10460
10461 The following patch partially undoes my patch from 2001-06-30,
10462 where I added the function scm_gc_mark_cell_conservatively. The
10463 function is buggy, since it breaks guile during conservative
10464 marking if a pointer on the stack points directly into the list of
10465 free cells on the heap: With conservative cell marking this will
10466 cause the whole free list to be scanned and marked - boom!
10467
10468 * gc.c (allocated_mark, MARK, heap_segment,
10469 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
cf4ee841 10470 (scm_gc_mark_cell_conservatively): Remove function
662c5539
DH
10471 scm_gc_mark_cell_conservatively and update the corresponding
10472 comments and uses accordingly. Thanks to Christopher Cramer for
10473 the patch. (Minor corrections by me.)
10474
6c1b7628
GH
104752001-09-15 Gary Houston <ghouston@arglist.com>
10476
10477 * root.h (scm_root_state): removed the continuation_stack and
10478 continuation_stack_ptr members, which have no apparent purpose.
10479 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
10480 removed.
662c5539 10481
6c1b7628
GH
10482 * root.c (root_mark), init.c (restart_stack, start_stack), gc
10483 (scm_igc): remove all references to contination_stack and
10484 continuation_stack_ptr, avoiding allocation of a vector and
10485 useless processing during gc.
10486
455c0ac8
DH
104872001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10488
10489 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
10490
10491 (TCONC_IN): Make sure that the cell word 0 is initialized last.
10492
10493 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
10494
10495 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
10496
10497 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
10498 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
10499
22ba637b
DH
105002001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10501
10502 * guardians.c (mark_dependencies_in_tconc,
10503 whine_about_self_centered_zombies, scm_init_guardians): Register
10504 the static global variable `self_centered_zombies' via
10505 scm_gc_register_root, to make some cdr-ing unnecessary.
10506
c3c4d801
DH
105072001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
10508
10509 * backtrace.c (display_backtrace_file,
10510 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
10511 values, use SCM_FALSEP when comparing SCM values against #f.
10512 Thanks to Rob Browning for the bug report.
10513
b00418df
DH
105142001-09-12 Martin Baulig <martin@home-of-linux.org>
10515
10516 * strings.[ch] (scm_str2string): New function.
10517
a0d34a0b
MV
105182001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
10519
10520 * gc.c (scm_done_free): Always subtract size from scm_mallocated
10521 when computing nm, even if it's negative.
10522 (scm_must_malloc): Abort on overflow of scm_mtrigger.
10523 (scm_must_realloc): Likewise.
10524
b10586f0
ML
105252001-09-01 Michael Livshin <mlivshin@bigfoot.com>
10526
10527 * numbers.c (scm_sys_check_number_conversions): new function,
10528 defined if Guile is compiled in debugging mode. currently checks
10529 `scm_num2ulong', should check much much more.
10530
10531 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
10532 unsigned, ensure that it's positive. thanks to Martin Baulig!
cf4ee841 10533
8c494e99
DH
105342001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10535
10536 * __scm.h: Added new section about compile time selectable
10537 features.
10538
10539 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
10540 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
10541 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
10542 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
10543 Removed.
10544
10545 * deprecation.c (scm_include_deprecated_features): Simplified.
10546
10547 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9a5fa6e9 10548 `SCM_IMP' instead of `!SCM_CELLP´.
8c494e99
DH
10549
10550 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
10551 Extract side-effecting operations from macros.
10552
10553 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
10554 scm_top_level_lookup_closure_var and scm_system_transformer.
10555
10556 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
10557
10558 (heap_segment): Use CELL_P instead of SCM_CELLP.
10559
10560 * init.c (start_stack): Don't initialize
10561 scm_top_level_lookup_closure_var and scm_system_transformer.
10562
10563 * modules.c (scm_set_current_module): Don't access
10564 scm_top_level_lookup_closure_var and scm_system_transformer.
10565
10566 (scm_sym2var): Don't call scm_variable_set_name_hint.
10567
10568 (scm_post_boot_init_modules): Removed deprecated initializations.
10569
10570 * print.c (scm_ipruk): Don't access cell contents of non cells.
10571
10572 * strings.c (scm_string_set_x): All strings are writable.
10573
10574 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
10575 type. There is only one string type now.
10576
10577 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
10578
10579 * tags.h: Remove comments about two different string types.
10580
10581 (SCM_CELLP, SCM_NCELLP): Deprecated.
10582
10583 * variable.c (make_variable): Remove code variant for vcells.
10584
10585 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
10586 SCM_VARIABLE_LOC): Remove code variant for vcells.
10587
10588 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
10589 SCM_ENABLE_DEPRECATED with the logic reversed.
10590
10591 * dynl.c (moddata, registered_mods), dynl.[ch]
10592 (scm_register_module_xxx, scm_registered_modules,
10593 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
10594 (*top-level-lookup-closure*), eval.[ch]
10595 (scm_top_level_lookup_closure_var, scm_system_transformer,
10596 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
10597 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
10598 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
10599 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
10600 scm_unprotect_object), modules.c (root_module_lookup_closure,
10601 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
10602 beautify_user_module_x_var, try_module_autoload_var,
10603 scm_module_full_name), modules.[ch] (scm_the_root_module,
10604 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
cf4ee841 10605 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
8c494e99
DH
10606 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
10607 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
10608 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
10609 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
10610 scm_make_shared_substring), tags.h (scm_tc7_substring,
10611 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
10612 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
10613 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
10614 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
10615 Removed.
10616
10617 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
10618 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
10619 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
10620 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
10621 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
10622 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10623 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
10624 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
10625 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
10626 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
10627 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
10628 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
10629 (setzone, scm_strftime, scm_strptime), vports.c
10630 (scm_make_soft_port): Remove calls to
10631 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
10632 gone, all strings are 0-terminated anyway.
10633
10634 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
10635 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
10636 double inclusion of the same headers to the SCM_<filename>_H
10637 format.
10638
10639 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
10640 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
10641 print.c (scm_iprin1): The type scm_tc7_substring does not exist
10642 any more.
10643
10644 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
10645 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
10646 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
10647 !SCM_<foo> over SCM_N<foo>.
10648
dee01b01
DH
106492001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10650
10651 * Makefile.am: Remove references to symbols-deprecated.c.
10652
10653 * symbols.c (scm_init_symbols): Don't initialize deprecated
10654 symbol functions.
10655
10656 * symbols-deprecated.c: Removed.
10657
10658 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
10659 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
10660 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
10661 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
10662 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
10663 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
10664 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
10665 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
10666 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
10667 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
10668 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
10669 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
10670 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
10671 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
10672 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
10673 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
10674 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
10675 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
10676 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
10677 scm_intern0, scm_sysintern, scm_sysintern0,
10678 scm_sysintern0_no_module_lookup, scm_symbol_value0,
10679 scm_string_to_obarray_symbol, scm_intern_symbol,
10680 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
10681 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
10682 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
10683 vectors.[ch] (scm_vector_set_length_x): Removed.
10684
10685 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
10686 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
10687 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
10688 Renamed the macros that are defined to inhibit double inclusion of
10689 the same headers to the SCM_<filename>_H format.
10690
10691 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
10692 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
10693 SCM_N<foo>.
10694
b29058ff
DH
106952001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10696
10697 * continuations.h (scm_contregs), debug.h (scm_debug_info,
10698 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
10699 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
10700 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
10701 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
10702 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
10703 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
10704 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
10705 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
10706 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
10707 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
10708 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
10709
10710 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
10711 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
10712 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
10713 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
10714 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
10715 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
10716 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
10717 double inclusion of the same headers to the SCM_<filename>_H
10718 format.
10719
10720 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
10721 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
10722 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
10723 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
10724 !SCM_<foo> over SCM_N<foo>.
10725
0527e687
DH
107262001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
10727
10728 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
10729 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
10730 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
10731 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
10732 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
10733 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
10734 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
10735 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
10736 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
10737 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
10738 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
10739 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
10740 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
10741 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
10742 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
10743 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
10744 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
10745 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
10746 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
10747 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
10748 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
10749 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
10750 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
10751 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
10752 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
10753 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
10754 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
10755 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
10756 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
10757 the macros that are defined to inhibit double inclusion of the
10758 same headers to the SCM_<filename>_H format.
10759
fada26b2
MV
107602001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
10761
10762 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
10763 "scm_t_portable" with "scm_port_table" which was an artifact from
10764 the great "scm_*_t -> scm_t_" renaming.
10765
e4d1c1ea
TTN
107662001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
10767
10768 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
10769 used; nfc. Thanks to Bill Schottstaedt.
10770
10771 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
10772 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
10773 Thanks to Chris Cramer.
10774
b573e744
MV
107752001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
10776
10777 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
10778
10779 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
10780 dynamic scope.
10781 * dynwind.h (scm_swap_bindings): Declare.
10782 * dynwind.c (scm_swap_bindings): Make non-static.
10783
8a3e715b
ML
107842001-08-25 Michael Livshin <mlivshin@bigfoot.com>
10785
10786 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
10787 doing exactly nothing about them). thanks Neil!
10788
cf504ee0
NJ
107892001-08-18 Neil Jerram <neil@ossau.uklinux.net>
10790
10791 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
ec2667f0 10792
43b83b54
TTN
107932001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
10794
10795 * gc.c: Fix omission bug: Add `heap_segment' forward decl
10796 (proto) in the case when either `GUILE_DEBUG' or
10797 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
10798
10799 (map_free_list): Fix typo: Ref `f' correctly.
10800
10801 Thanks to Chris Cramer.
10802
ab4cd34b
RB
108032001-08-15 Rob Browning <rlb@defaultvalue.org>
10804
10805 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
10806 variables.
10807 (libpath.h): change libguileversion to libguileinterface.
10808
b754e3d1
MV
108092001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
10810
10811 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
10812 ChangeLog-2000. Thanks to Daniel Skarda!
10813
8b1d12c7
ML
108142001-08-07 Michael Livshin <mlivshin@bigfoot.com>
10815
10816 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
10817 do it from the Makefile.
10818
10819 * Makefile.am: rearrange the snarfing slightly, so that .doc files
10820 are of a reasonable size.
10821
baffb19f
NJ
108222001-08-02 Neil Jerram <neil@ossau.uklinux.net>
10823
10824 * stacks.c (scm_make_stack): Improve docstring by explaining use
10825 of cutting args.
10826
c1151355
MV
108272001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
10828
10829 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
10830 scm_char_whitespace_p, scm_char_upper_case_p,
10831 scm_char_lower_case_p, scm_char_is_both_p): Do not require
10832 characters to fulfill isascii in addition to the primary
10833 predicate.
10834
3c9a524f
DH
108352001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10836
10837 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
10838 scm_istr2flo, scm_istring2number): Removed.
10839
10840 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
10841 SCM_SLOPPY_<foo>.
10842
10843 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
10844 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
10845 Added.
10846
10847 (scm_string_to_number): Use new number parser.
10848
10849 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
10850 handles complex numbers.
10851
10852 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
10853 SCM_<foo>_H.
10854
10855 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
10856 SCM_N<pred>.
10857
10858 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
10859
10860 (scm_i_mem2number): Added.
10861
10862 (scm_exact_to_inexact): Changed signature.
10863
10864 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
10865 here instead of within scm_i_mem2number. Call scm_i_mem2number
10866 instead of scm_istr2int and scm_istring2number.
10867
01f11e02
DH
108682001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10869
10870 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
10871 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
10872 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
10873 !SCM_<pred> over SCM_N<pred>.
10874
10875 (scm_eval_body): Remove side effecting code from macro call.
10876
10877 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
10878 SCM_NIMP test.
10879
6cf69537
DH
108802001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10881
10882 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
10883
54866b6c
MV
108842001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
10885
10886 Removed vcell slot from structs.
43b83b54 10887
54866b6c
MV
10888 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
10889 subsequent indices.
10890
10891 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
10892 zero. Use scm_vtable_index_layout instead of "0" when accessing
10893 said slot.
10894 (scm_init_struct): Remove vcell slot layout code from
10895 required_vtable_fields.
10896
10897 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
10898
10899 * goops.c (build_class_class_slots): Removed vcell slot
10900 definition.
10901
10902 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
10903 Removed vcell slot layout code.
10904 (scm_si_vcell): Removed.
10905
5b54c4da
MV
109062001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10907
a0f5718e 10908 "Glocs" have been removed.
43b83b54 10909
a0f5718e
MV
10910 * tags.h: Update tag system docs.
10911 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
10912 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
10913 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
10914 or SCM_NCONSP, respectively.
10915
10916 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
10917 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
10918 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
10919
10920 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
10921 tell glocs from structs.
43b83b54 10922
a0f5718e
MV
10923 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
10924
10925 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
10926 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
10927 instead of with glocs.
10928 (EVALCAR): Do not test for glocs.
10929 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
10930 condition.
10931 (scm_unmemocar): Do not handle glocs.
10932 (scm_m_atfop): Memoize as a variable, not as a gloc.
10933 (scm_eval_args, scm_deval_args): Do not handle glocs.
10934 (scm_ceval, scm_deval): Likewise.
43b83b54 10935
a0f5718e
MV
10936 * eval.h (SCM_XEVALCAR): Do not test for glocs.
10937 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
10938 Removed.
10939
10940 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
10941
10942 * dynwind.c (scm_swap_bindings): Likewise.
10943 (scm_dowinds): Updated to recognize lists of variables instead of
10944 lists of glocs.
10945
10946 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
10947
43b83b54 10948
5b54c4da
MV
10949 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
10950 where it is needed.
43b83b54 10951
3c3db128
GH
109522001-07-25 Gary Houston <ghouston@arglist.com>
10953
10954 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
10955 docstrings to reflect the n-ary implementation.
10956
dd29a169
MV
109572001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
10958
10959 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
10960 value of a variable, not the plain "return" statement.
10961
f5fe6c2f
MV
109622001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
10963
10964 * eval.c: Allow variables in memoized code (in addition to glocs).
10965 (scm_lookupcar): Handle variables in lost races. Replace symbol
10966 with variable directly, do not make a gloc.
10967 (scm_unmemocar): Rewrite variables using a reverse lookup, just
10968 like glocs.
10969 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
10970 the main switch.
10971
ee0c7345
MV
109722001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10973
6d9ad98a
MV
10974 * variable.c (scm_i_variable_print): Use "value" instead of
10975 "binding" since a binding is the mapping between symbols and
10976 variables, not between variables and their values.
10977
ee0c7345
MV
10978 * tags.h (scm_tc7_variable): New.
10979 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
10980 * print.c (scm_iprin1): Likewise.
10981
10982 * variable.h (scm_tc16_variable): Removed.
10983 (SCM_VARIABLEP): Test for new tc7 code.
10984 (scm_i_variable_print): New.
10985 * variable.c (scm_tc16_variable): Removed.
10986 (variable_print): Renamed to scm_i_variable_print and made
10987 non-static.
10988 (variable_equal_p): Removed.
10989 (make_variable): Construct a tc7 object instead of a smob.
10990 (scm_init_variable): Do not register smob.
43b83b54 10991
f3805ebb
MV
109922001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
10993
10994 * tags.h: Include inttypes.h when we have it.
10995
109962001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
10997
10998 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
10999 is taken by the new SCM_IM_CALL_WITH_VALUES.
11000 * print.c (scm_isymnames): Update table accordingly.
43b83b54 11001
6a1677a3
GH
110022001-07-22 Gary Houston <ghouston@arglist.com>
11003
11004 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
11005 SCM_MAKINUM to convert regoff_t value to SCM.
11006
1bed8c28
GH
110072001-07-21 Gary Houston <ghouston@arglist.com>
11008
11009 * scmsigs.c: include sys/time.h for itimer stuff.
11010
e658215a
RB
110112001-07-19 Rob Browning <rlb@defaultvalue.org>
11012
11013 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
11014
11015 * c-tokenize.lex: add option %nounput to quiet warning.
11016 Add prototype for yylex to quiet warning.
11017
11018 * scmconfig.h.in: add flags for setitimer and getitimer.
11019
11020 * scmsigs.h (scm_init_scmsigs): new prototype.
11021 (scm_init_scmsigs): new prototype.
11022
11023 * scmsigs.c (s_scm_setitimer): new function.
11024 (s_scm_setitimer): new function.
11025
58ade102
MG
110262001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11027
11028 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
11029 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
11030 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
11031 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
11032 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
11033 guile-func-name-check.in, guile-snarf-docs-texi.in,
11034 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
11035 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
11036 objprop.c, objprop.h, options.c, options.h, random.h,
11037 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
11038 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
11039 version.c, version.h: Updated copyright notice.
11040
6b80d352
DH
110412001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11042
11043 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
11044 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
11045 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
11046 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
11047 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
11048 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
11049 sym_environment, scm_sym_change_class): New static variables to
11050 hold predefined symbols.
11051
11052 (build_class_class_slots): Build the list using scm_list_n
11053 instead of cons. Also, slots are already created as lists, thus
11054 making a call to maplist unnecessary.
11055
11056 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
11057 scm_class_direct_subclasses, scm_class_direct_methods,
11058 scm_class_precedence_list, scm_class_slots, scm_class_environment,
11059 scm_method_procedure, create_standard_classes, purgatory): Use
11060 predefined symbols.
11061
11062 (build_slots_list, compute_getters_n_setters,
11063 scm_sys_initialize_object, scm_sys_inherit_magic_x,
11064 get_slot_value_using_name, set_slot_value_using_name,
11065 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
11066 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
11067 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
11068
11069 (scm_sys_prep_layout_x): Minimize variable scopes.
11070
11071 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
11072 scm_sys_fast_slot_set_x): Fix signedness.
11073
11074 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
11075 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
11076 scm_memoize_method, scm_wrap_object): Use packing and unpacking
11077 when converting to and from SCM values.
11078
11079 (scm_enable_primitive_generic_x): Add rest argument checking.
11080
11081 (map, filter_cpl, maplist, scm_sys_initialize_object,
11082 scm_sys_prep_layout_x, slot_definition_using_name,
11083 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
11084 call_memoize_method, scm_make, scm_make_class): Prefer explicit
11085 predicates over SCM_N?IMP tests.
11086
11087 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
11088 checking.
11089
11090 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
11091 alias.
11092
63bcad19
DH
110932001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11094
11095 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
11096
11097 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
11098
11099 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
11100
11101 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
11102
4d6aae71
ML
111032001-07-12 Michael Livshin <mlivshin@bigfoot.com>
11104
11105 * strings.c (s_scm_string): fix arg position in assert.
11106
4b8ec619
GH
111072001-07-11 Gary Houston <ghouston@arglist.com>
11108
11109 * strports.c (st_write): use memcpy, not strncpy. thanks to
11110 Dale P. Smith.
11111
dbb640bd
TTN
111122001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
11113
11114 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
11115 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
11116 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
11117 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
11118 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
11119 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
11120 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
11121 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
11122 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
11123 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
11124 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
11125 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
11126 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
11127 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
11128 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
11129 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
11130 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
11131 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
11132 weaks.c, weaks.h: Remove "face-lift" comment.
11133
fd6c6321
RB
111342001-07-08 Rob Browning <rlb@defaultvalue.org>
11135
11136 * .cvsignore: add stamp-h.in.
11137
f91e4547
MG
111382001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11139
11140 * hooks.c (scm_make_hook, scm_add_hook_x),
11141 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
11142 value info to the docstrings.
11143
7beabedb
MG
111442001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11145
11146 Some more compatibility patches for Windows.
dbb640bd 11147
7beabedb
MG
11148 * posix.c (getlogin): getlogin() implementation for Windows.
11149
11150 * backtrace.c, ioext.c: Include <stdio.h>.
11151
11152 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
11153 exist.
11154
11155 * cpp_sig_symbols.in: Added SIGBREAK.
11156
0d0560d0
MV
111572001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
11158
11159 * strports.c (scm_read_0str, scm_eval_0str): Call
11160 scm_c_read_string and scm_c_eval_string respectively, not
11161 themselves. Thanks to Dale P. Smith!
11162
9a97e362
DH
111632001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11164
11165 * unif.c (scm_array_set_x): The variable args does not
11166 necessarily have to be a list. Further, got rid of a redundant
11167 SCM_NIMP test.
11168
592996c9
DH
111692001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
11170
11171 * list.c (SCM_I_CONS): Make sure the cell type is initialized
11172 last.
11173
11174 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
f91e4547 11175 init_heap_seg): Fixed signedness.
592996c9
DH
11176
11177 (init_heap_seg): Replaced strange for-loop with a while loop.
11178
11179 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
11180
11181 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
11182
11183 The following patch adds conservative marking for the elements of
11184 free or allocated cells.
11185
11186 * gc.c (allocated_mark, heap_segment): New static functions.
11187
11188 (which_seg): Deleted, since the functionality is now provided by
11189 function heap_segment.
11190
11191 (map_free_list): Use heap_segment instead of which_seg.
11192
11193 (MARK): If cell debugging is disabled, mark free cells
11194 conservatively.
11195
11196 (scm_mark_locations, scm_cellp): Extracted the search for the
11197 heap segment of a SCM value into function heap_segment.
11198
11199 (scm_init_storage): Allocated cells must be marked
11200 conservatively.
11201
11202 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
11203
11204 The following patch changes the representation of weak vectors to
11205 double cells instead of using an extension of the vector's
11206 allocated memory.
11207
11208 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
11209 the result of SCM_WVECT_GC_CHAIN.
11210
11211 (scm_gc_sweep): Weak vectors don't have extra fields any more.
11212
11213 * weaks.c (allocate_weak_vector): New static function. It does
11214 not patch any previously created vector object during the
11215 construction of a weak vector, and thus doesn't need to switch
11216 off interrupts during vector creation.
11217
11218 (scm_make_weak_vector, scm_make_weak_key_hash_table,
11219 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11220 Use allocate_weak_vector to provide the new weak vector object.
11221
11222 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
11223 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
11224 now stored in the double cell.
11225
11226 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
11227 Use SCM_WVECT_TYPE.
11228
11229 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
11230 using an entry of the double cell.
11231
4dadf664
TTN
112322001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
11233
11234 * stamp-h.in: bye bye
11235
02202352
MV
112362001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
11237
11238 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
11239 scm_eval_0str.
11240
11241 * load.c, load.h (scm_c_primitive_load,
11242 scm_c_primitive_load_path): New.
11243
11244 * strports.c, strports.h (scm_c_read_string): Renamed from
11245 scm_read_0str. Also, added "const" qualifier to argument.
11246 (scm_c_eval_string): Renamed from scm_eval_0str.
11247 (scm_read_0str, scm_eval_0str): Deprecated.
11248
df1ad0d1
MG
112492001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11250
11251 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
11252 SCM_LIST1.
11253
1afff620
KN
112542001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
11255
11256 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
11257 scm_list_n): New functions.
11258 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
11259 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
11260 (lots of files): Use the new functions.
4dadf664 11261
1afff620
KN
11262 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
11263
11264 * strings.c: #include "libguile/deprecation.h".
11265
b858464a
MG
112662001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11267
11268 * read.c (scm_lreadr): When reading a hash token, check for a
11269 user-defined hash procedure first, so that overriding the builtin
11270 hash characters is possible (this was needed for implementing
11271 SRFI-4's read synax `f32(...)').
4dadf664 11272
b858464a
MG
11273 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
11274 because the latter is unsigned now and breaks comparisons like
11275 (n < (scm_t_signed_bits)MIN_VALUE).
4dadf664 11276
d95c0b76
NJ
112772001-06-26 Neil Jerram <neil@ossau.uklinux.net>
11278
11279 * eval.h, eval.c (scm_call_4): New function.
11280
11281 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
11282 directly rather than dispatching to them via scm_ithrow and a lazy
11283 catch.
4dadf664 11284
d95c0b76
NJ
11285 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
11286 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
11287 for trap handler procedures.
11288
11289 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
11290 procedures not being #f.
11291
30e3be5a
ML
112922001-06-27 Michael Livshin <mlivshin@bigfoot.com>
11293
11294 * Makefile.am (c-tokenize.c): add rule to generate it.
11295 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
11296
11297 filter-doc-snarfage.c: remove.
11298
82893676
MG
112992001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11300
11301 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
11302
11303 The following set of changes makes compiling Guile under various
11304 Windows compilers easier. Compilation under GNU systems should
11305 not be affected at all.
11306
11307 Thanks to Stefan Jahn for all necessary information, patches and
11308 testing.
4dadf664 11309
82893676
MG
11310 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
11311 getpgrp, ttyname, primitive-fork and some header inclusion for
11312 Windows.
11313
11314 * random.c: Define M_PI, if not predefined and use __int64 for
11315 LONG64 under Windows.
11316
11317 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
11318 Windows and conditionalize some signal names.
11319
4dadf664 11320 * socket.c (scm_getsockopt): Added missing comma.
82893676
MG
11321 Include socket library header under Windows.
11322
11323 * stime.c (CLKTCK): Add cast to int, to make it compile under
11324 Windows.
11325
11326 * ports.c (truncate): New function, compiled only under Windows.
11327
11328 * net_db.c: Do not declare errno under Windows.
11329
11330 * iselect.h, inet_aton.c: Include socket library headers under
11331 Windows.
11332
11333 * guile.c (inner_main): Under Windows, initialize socket library
11334 and initialize gdb_interface data structures.
11335
11336 * gdb_interface.h: Under Windows, gdb_interface cannot be
11337 initialized statically. Initialize at runtime instead.
11338
11339 * fports.c (write_all): ssize_t -> size_t.
11340 (fport_print): Conditionalize call to ttyname().
11341 (getflags): New function, compiled only under Windows.
11342
11343 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
11344 primitives chown, link, fcntl.
11345 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
11346 as path seperator.
11347
11348 * backtrace.c: Include <io.h> under Windows.
11349
11350 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
11351
11352 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
11353 declaration.
11354
fdc28395
KN
113552001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
11356
11357 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11358 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
11359 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
11360 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
11361 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
11362 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
11363 (scm_dynamic_wind, scm_dowinds), environments.c
11364 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
11365 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
11366 goops.c (GETVAR, purgatory, make_class_from_template,
11367 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
11368 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
11369 (scm_primitive_load), modules.c (scm_resolve_module,
11370 scm_c_define_module, scm_c_use_module, scm_c_export,
11371 module_variable, scm_eval_closure_lookup, scm_sym2var,
11372 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
11373 ports.c (scm_port_for_each), print.c (scm_printer_apply),
11374 properties.c (scm_primitive_property_ref), ramap.c (ramap,
11375 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
11376 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
11377 (scm_object_to_string, scm_call_with_output_string,
11378 scm_call_with_input_string), throw.c (scm_body_thunk,
11379 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
11380 scm_make_shared_array), vports.c (sf_flush, sf_write,
11381 sf_fill_input, sf_close): Use one of the above functions.
11382 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
11383
36284627
DH
113842001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11385
11386 * filesys.c (scm_close), ports.c (scm_close_port,
11387 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
11388 instead of SCM_NEGATE_BOOL.
11389
11390 * filesys.c (scm_stat): Clean up type dispatch.
11391
11392 * filesys.c (scm_stat), ports.c (scm_input_port_p,
11393 scm_output_port_p): Get rid of redundant IM type check.
11394
11395 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
11396 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
11397 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
11398 scm_return_entry), numbers.c (scm_number_to_string), objects.c
11399 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
11400 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
11401 scm_addr_vector), stime.c (scm_strftime), strings.c
11402 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
11403 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
11404 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11405 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
11406 instead of scm_makfromstr.
11407
11408 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
11409 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
11410 scm_read_hash_extend), stime.c (scm_strftime), strings.c
11411 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
11412 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
11413 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
11414 !SCM_<pred> over SCM_N<pred>.
11415
11416 * strings.[ch] (scm_makfromstr): Deprecated.
11417
11418 (scm_mem2string): New function, replaces scm_makfromstr.
11419
11420 * strings.c (scm_substring), strop.c (string_copy,
11421 scm_string_split), strports.c (scm_strport_to_string), symbols.c
11422 (scm_symbol_to_string): Fix gc problem.
11423
11424 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
11425 SCM_<foo>_H.
11426
11427 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
11428 warning about comparing signed and unsigned values. This fix is
11429 not optimal, since it won't work reliably if sizeof (c_start) >
11430 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
11431 solution is to define this macro as an inline function, thus
11432 allowing to specifiy the types of c_start and c_end.
11433
13dcb666
DH
114342001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
11435
11436 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
11437 scm_t_debug_frame*.
11438
11439 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
11440 Rename <foo>H to SCM_<foo>_H.
11441
11442 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
11443 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11444
11445 (narrow_stack): Make i unsigned. Don't use side-effecting
11446 operations in conditions.
11447
11448 (narrow_stack, scm_make_stack, scm_stack_id,
11449 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
11450
11451 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
11452 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
11453 more.
11454
11455 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
11456 signedness.
11457
ea2c3968 11458 (scm_last_stack_frame): Remove bogus `;'.
13dcb666
DH
11459
11460 * stacks.h (SCM_FRAMEP): Fix type check.
11461
ac13d9d2
ML
114622001-06-25 Michael Livshin <mlivshin@bigfoot.com>
11463
ee0c0e03
ML
11464 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
11465 c-tokenize.c when doing maintainer-clean.
11466
ac13d9d2
ML
11467 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
11468
11469 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
11470 simplify.
11471
11472 * eval.c: all hash signs are in column 0.
11473
11474 * Makefile.am (guile_filter_doc_snarfage): build using
11475 c-tokenize.c, not filter-doc-snarfage.c.
11476 rearrange snarfing dependencies a bit.
11477
11478 * c-tokenize.lex: new file.
11479
16be44e5
MV
114802001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
11481
11482 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
11483 scm_t_srcpropso_plist. See the big type renaming.
11484 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
11485 Thanks to Seth Alves!
4dadf664 11486
16be44e5
MV
11487 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
11488 they aren't defined already.
11489
5843e5c9
DH
114902001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
11491
11492 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
11493 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
11494 problem.
11495
11496 * backtrace.c (display_expression, scm_set_print_params_x,
11497 display_application, display_frame, scm_backtrace), numbers.c
11498 (scm_istring2number), objects.c (scm_class_of,
11499 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
11500 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
11501
11502 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
11503 always positive.
11504
11505 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
11506 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
11507
11508 * objects.c (scm_class_of): Type fix.
11509
11510 (scm_mcache_lookup_cmethod): Improved comment, simplified,
11511 eliminated goto.
11512
11513 * pairs.h (scm_error_pair_access): The function can return if
11514 called recursively.
11515
6b41a313
MG
115162001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11517
11518 * init.c (scm_init_guile_1): Removed initialization of tag.c.
11519
11520 * gdbint.c, init.c: Removed inclusion of tag.h.
11521
11522 * tag.h, tag.c: Removed files.
11523
11524 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
11525
fbbdb121
GH
115262001-06-20 Gary Houston <ghouston@arglist.com>
11527
11528 * deprecation.c, extensions.c, rw.c: include string.h.
11529
72c17ed0
GH
115302001-06-19 Gary Houston <ghouston@arglist.com>
11531
11532 * filter-doc-snarfage.c (process): added ungetc in
11533 MULTILINE_COOKIE case since otherwise it fails when there's no
11534 space between the '(' and the quote of the following string
11535 (gcc 3.0).
11536
4ff9f825
MV
115372001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11538
4927dd28
MV
11539 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
11540
b629af45
MV
115412001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
11542
11543 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
0f002b27
MV
11544 extension takes place.
11545 * strings.h (SCM_STRING_LENGTH): Likewise.
11546 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
4dadf664 11547
4ff9f825
MV
11548 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
11549 it.
11550
11551 * tags.h: Include <stdint.h> when we have it.
11552 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
11553 available. Else use "unsigned long".
11554 (scm_signed_bits_t): New.
11555
11556 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
11557 (SCM_INUM): Cast result to scm_signed_bits_t.
11558
58bee6a8
TTN
115592001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
11560
11561 * mkstemp.c: Update path to #include file scmconfig.h.
11562 Thanks to Golubev I. N.
11563
00d8d838
DH
115642001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
11565
11566 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
11567
ea2c3968 11568 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
00d8d838
DH
11569 the macro definition.
11570
11571 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
11572 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
11573 instead of SCM_INST_TYPE.
11574
11575 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
11576 the object is a struct before accessing its struct flags.
11577
11578 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
11579
495c67e5
GH
115802001-06-10 Gary Houston <ghouston@arglist.com>
11581
11582 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
11583 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
11584 work reliably anymore. try it from boot-9.scm instead.
11585
6a9003d3
MV
115862001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
11587
11588 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
9a5fa6e9 11589 Thanks to Matthias Köppe!
58bee6a8 11590
47bcd646
ML
115912001-06-08 Michael Livshin <mlivshin@bigfoot.com>
11592
a88ff5b6
ML
11593 * snarf.h, filter-doc-snarfage.c: more changes to cope with
11594 space-happy C preprocessors.
11595
47bcd646 11596 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
9a5fa6e9 11597 inside cookies. thanks to Matthias Köppe!
47bcd646 11598
bab246f3
DH
115992001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11600
11601 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
11602 keywords. Fix gc protection.
11603
11604 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
11605 operations in macro calls.
11606
11607 * pairs.c (scm_error_pair_access): Avoid recursion.
11608
11609 Thanks to Matthias Koeppe for reporting the bugs that correspond
11610 to the following set of patches.
11611
11612 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
11613 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
11614 bitvector base address using SCM_BITVECTOR_BASE.
11615
11616 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
11617 unsigned long*.
11618
dcb410ec
DH
116192001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
11620
11621 * goops.c (SCM_CLASS_REDEF): Removed.
11622
11623 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
11624 SCM_<foo>_H.
11625
11626 Thanks to Matthias Koeppe for reporting the bugs that correspond
11627 to the following set of patches.
11628
11629 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
11630 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
11631 scm_sys_allocate_instance, clear_method_cache,
11632 scm_sys_invalidate_method_cache_x, scm_make,
11633 create_standard_classes, scm_make_port_classes, scm_make_class,
11634 scm_add_slot): Use SCM_SET_SLOT to set slot values.
11635
11636 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
11637
11638 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
11639
11640 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
11641 UNARY_ELTS_CODE): Remove bogus break statement.
11642
11643 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
11644 Don't access bit vectors elements as SCM objects.
11645
11646 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
11647 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
11648 Don't assign to an unpacked value.
11649
e81d98ec
DH
116502001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
11651
11652 * __scm.h (SCM_NORETURN): Moved here from error.h.
11653
11654 (SCM_UNUSED): New macro.
11655
11656 (SCM_DEBUG_PAIR_ACCESSES): New macro.
11657
11658 * backtrace.c (display_error_handler), continuations.c
11659 (continuation_print), debug.c (debugobj_print), dynwind.c
11660 (guards_print), environments.c (observer_print,
11661 core_environments_finalize, leaf_environment_cell,
11662 leaf_environment_print, eval_environment_print,
11663 eval_environment_observer, import_environment_define,
11664 import_environment_undefine, import_environment_print,
11665 import_environment_observer, export_environment_define,
11666 export_environment_undefine, export_environment_print,
11667 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
11668 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
11669 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
11670 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
11671 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
11672 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
11673 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
11674 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
11675 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
11676 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
11677 set_slot_value, test_slot_existence, scm_change_object_class,
11678 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
11679 default_setter), guardians.c (guardian_print, guardian_gc_init,
11680 guardian_zombify, whine_about_self_centered_zombies), guile.c
11681 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
11682 mallocs.c (malloc_print), numbers.c (scm_print_real,
11683 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
11684 end_input_default, scm_port_print, fill_input_void_port,
11685 write_void_port), root.c (root_print), smob.c (scm_mark0,
11686 scm_free0, scm_smob_print, scm_smob_apply_1_error,
11687 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
11688 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
11689 (scm_struct_free_0, scm_struct_free_standard,
11690 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
11691 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
11692 scm_handle_by_throw, scm_ithrow), weaks.c
11693 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
11694 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
11695 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
11696
11697 * error.h (SCM_NORETURN): Moved to __scm.h.
11698
11699 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
11700 Renamed <foo>H to SCM_<foo>_H.
11701
11702 * gc.c (debug_cells_gc_interval): New static variable.
11703
11704 (scm_assert_cell_valid): If selected by the user, perform
11705 additional garbage collections.
11706
11707 (scm_set_debug_cell_accesses_x): Extended to let the user specify
11708 if additional garbage collections are desired.
11709
11710 (mark_gc_async): If additional garbage collections are selected
11711 by the user, don't call the after-gc-hook. Instead require the
11712 user to run the hook manually.
11713
11714 * pairs.c (scm_error_pair_access): New function. Only compiled
11715 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
11716
11717 * pairs.h (SCM_VALIDATE_PAIR): New macro.
11718
11719 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
11720 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
11721 is a real pair object. (Glocs are also accepted, but that may
11722 change.) If not, abort with an error message.
11723
17fa3fcf
DH
117242001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
11725
11726 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
11727
11728 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
11729 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
11730
feeedafb
MV
117312001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
11732
11733 * extensions.c (scm_c_register_extension): Allow NULL as library
11734 name.
11735 (load_extension): Ignore NULL library names when comparing.
58bee6a8 11736
feeedafb
MV
11737 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
11738 non-pointers are being compared. Thanks to Alexander Klimov!
11739
4bcdfe46
GH
117402001-06-04 Gary Houston <ghouston@arglist.com>
11741
11742 * rw.c (scm_write_string_partial): new procedure implementing
11743 write-string/partial in (ice-9 rw).
11744 * rw.h: declare scm_write_string_partial.
58bee6a8 11745
f480396b
MV
117462001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
11747
feeedafb
MV
11748 * keywords.c (keyword_print): Substract 1 from length of symbol
11749 name, accounting for the silly dash.
11750
11751 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
11752 Do not emit deprecation warning.
11753
f480396b
MV
11754 Added exception notice to all files.
11755
11756 * dynl.c: Include "deprecation.h".
11757
c794483c
MV
117582001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
11759
11760 * dynl.c (scm_register_module_xxx, scm_registered_modules,
11761 scm_clear_registered_modules): Deprecated.
11762
9454d8d5
RB
117632001-06-02 Rob Browning <rlb@cs.utexas.edu>
11764
11765 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
11766 guile-snarf-docs-texi.
11767
11768 * fports.c: HAVE_ST_BLKSIZE changed to
11769 HAVE_STRUCT_STAT_ST_BLKSIZE.
11770 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
11771 HAVE_STRUCT_STAT_ST_BLKSIZE.
11772
11773 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
11774 HAVE_STRUCT_STAT_ST_RDEV.
11775 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
11776 HAVE_STRUCT_STAT_ST_BLKSIZE.
11777 (scm_stat2scm): HAVE_ST_BLOCKS changed to
11778 HAVE_STRUCT_STAT_ST_BLOCKS.
11779
114f9bab
MV
117802001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
11781
b0c16cd9
MV
11782 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
11783 of scm_eval_x to allow module changes between the forms in the
11784 string. Set/restore module using scm_c_call_with_current_module.
11785
114f9bab
MV
11786 * mkstemp.c: New file, slightly modified from libiberties
11787 mkstemps.c.
11788
c99f9605
ML
117892001-05-31 Michael Livshin <mlivshin@bigfoot.com>
11790
11791 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
11792 filter-doc-snarfage.c: new files.
11793
11794 * Makefile.am: add stuff to [build,] use and distribute
11795 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
11796
11797 * guile-snarf.in: grok the new snarf output.
11798
11799 * snarf.h: make the output both texttools- and `read'-friendly.
11800
47bcd646
ML
11801 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
11802 guile-snarf-docs. (should also deprecate, I guess. maybe not).
c99f9605 11803
7eb5d7b2
MV
118042001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
11805
11806 * print.c (scm_simple_format): Support "~~" and "~%". Signal
11807 error for unsupported format controls and for superflous
ec2667f0 11808 arguments. Thanks to Daniel Skarda!
7eb5d7b2
MV
11809
11810 * print.h, print.c (scm_print_symbol_name): Factored out of
11811 scm_iprin1.
11812 (scm_iprin1): Call it.
58bee6a8 11813
7eb5d7b2
MV
11814 * keywords.c (keyword_print): Use scm_print_symbol_name so that
11815 weird names are printed correctly.
11816
11817 * print.c (scm_print_symbol_name): Symbols whose name starts with
11818 `#' or `:' or ends with `:' are considered weird.
11819
609c3d30
MG
118202001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11821
11822 * numbers.c (scm_difference, scm_divide): Clarified comments for -
11823 and /.
11824
118252001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11826
11827 * debug.h: Removed prototype for scm_eval_string.
11828
8d09eb04
MG
118292001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11830
11831 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
58bee6a8 11832 (make-string 2000 #\!))' in an older version).
8d09eb04
MG
11833
11834 Change strncpy to memcpy to allow embedded NUL characters in
11835 symbol prefix.
11836
dd85ce47
ML
118372001-05-28 Michael Livshin <mlivshin@bigfoot.com>
11838
fde50407
ML
11839 * hooks.c (scm_create_hook): deprecated.
11840 (make_hook): deleted.
11841 (scm_make_hook): all the hook creation code is now here.
11842
11843 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
11844 a hook, make it permanent, and do a `scm_c_define' on it.
11845
dd85ce47
ML
11846 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
11847
11848 * socket.c (s_scm_inet_pton): fix docstring quoting.
11849 (s_scm_inet_ntop): ditto.
11850
11851 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
11852
11853 * hashtab.c (scm_internal_hash_fold): fix argument position in
11854 SCM_ASSERT.
11855
11856 * environments.c (s_scm_import_environment_set_imports_x): fix
11857 argument position in SCM_ASSERT.
11858
11859 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
11860 (s_scm_make_iloc): ditto.
11861
729dbac3
DH
118622001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
11863
11864 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
11865
11866 * eval.c (promise_print): Read the promise's value as an object.
11867
11868 (SCM_CEVAL): Don't perform side-effecting operations in macro
11869 parameters.
11870
11871 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
11872 conditional expression.
11873
11874 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
11875 initializer.
11876
11877 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
11878 text, removed redundant computation of effective_length and fixed
11879 the overflow check.
11880
11881 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
11882 values.
11883
11884 (wrap_init): Don't use SCM_C[AD]R for non pairs.
11885
11886 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
11887
11888 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
11889 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
11890
11891 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
11892
11893 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
11894 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
11895 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
11896 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
11897
11898 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
11899
11900 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
11901
ea2c3968 11902 * ramap.c (ramap_rp): Removed bogus `;'.
729dbac3
DH
11903
11904 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
11905 problem.
11906
11907 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
11908 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
11909 Read SCM objects rather than scm_bits_t values.
11910
11911 * tags.h (SCM_VOIDP_TEST): Removed.
11912
11913 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
11914 value of 2 now corresponds to the former 1, the current 1
11915 corresponds to the former situation that SCM_VOIDP_TEST was
11916 defined.
11917
58bee6a8
TTN
11918 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
11919 If this appears to be not ANSI compliant, we will change it to
729dbac3
DH
11920 typedef struct scm_unused_struct { } * SCM;
11921 Thanks to Han-Wen Nienhuys for the suggestion.
11922
11923 * unif.c (scm_array_set_x): Fix typing problem, and use
11924 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
11925 dealing with uniform vectors.
11926
6b1b030e
ML
119272001-05-27 Michael Livshin <mlivshin@bigfoot.com>
11928
11929 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
11930 (scm_igc): mark from them, too (precisely, not conservatively!).
11931
11932 * root.h (scm_gc_registered_roots): new object in
11933 scm_sys_protects.
11934
11935 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
11936 `scm_protect_object'. shouldn't call it at all, though, it seems.
11937
11938 * gc.c (scm_[un]protect_object): deprecated.
11939 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
11940 (scm_gc_[un]register_root[s]): new.
11941
11942 * gc.h: add prototypes for scm_gc_[un]protect_object,
11943 scm_gc_[un]register_root[s].
11944
c014a02e
ML
119452001-05-26 Michael Livshin <mlivshin@bigfoot.com>
11946
11947 revert the controversial part of the 2001-05-24 changes.
11948
0120801d
MV
119492001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
11950
f4e0611e
MV
11951 * modules.c (scm_env_module): Exported to Scheme.
11952
0120801d 11953 * eval.c (scm_debug_opts): New option `show-file-name'.
729dbac3 11954
0120801d 11955 * debug.h (SCM_SHOW_FILE_NAME): New.
729dbac3 11956
0120801d
MV
11957 * backtrace.c: Include "libguile/filesys.h".
11958 (sym_base, display_backtrace_get_file_line,
11959 display_backtrace_file, display_backtrace_file_and_line): New.
11960 (display_frame): Call display_backtrace_file_and_line if that is
11961 requested.
11962 (display_backtrace_body): Call scm_display_backtrace_file if
11963 requested.
11964
11965 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
11966 Prototypes removed since there's no definition for these
11967 functions.
11968
880a7d13
MG
119692001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11970
11971 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
11972 Changed use of scm_array->scm_array_t and
11973 scm_array_dim->scm_array_dim_t to enable build with
11974 --disable-deprecated.
11975
1be6b49c
ML
119762001-05-24 Michael Livshin <mlivshin@bigfoot.com>
11977
11978 The purpose of this set of changes is to regularize Guile's usage
11979 of ANSI C integral types, with the following ideas in mind:
11980
d69c867a
ML
11981 - SCM does not nesessarily have to be long.
11982 - long is not nesessarily enough to store pointers.
1be6b49c
ML
11983 - long is not nesessarily the same size as int.
11984
11985 The changes are incomplete and possibly buggy. Please test on
11986 something exotic.
11987
11988 * validate.h
11989 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
11990 new macros.
11991
11992 * unif.h: type renaming:
11993 scm_array -> scm_array_t
11994 scm_array_dim -> scm_array_dim_t
11995 the old names are deprecated, all in-Guile uses changed.
11996
11997 * tags.h (scm_ubits_t): new typedef, representing unsigned
11998 scm_bits_t.
11999
12000 * stacks.h: type renaming:
12001 scm_info_frame -> scm_info_frame_t
12002 scm_stack -> scm_stack_t
12003 the old names are deprecated, all in-Guile uses changed.
12004
12005 * srcprop.h: type renaming:
12006 scm_srcprops -> scm_srcprops_t
12007 scm_srcprops_chunk -> scm_srcprops_chunk_t
12008 the old names are deprecated, all in-Guile uses changed.
12009
12010 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
12011 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
12012 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
12013 vectors.c, vports.c, weaks.c:
12014 various int/size_t -> size_t/scm_bits_t changes.
12015
12016 * random.h: type renaming:
12017 scm_rstate -> scm_rstate_t
12018 scm_rng -> scm_rng_t
12019 scm_i_rstate -> scm_i_rstate_t
12020 the old names are deprecated, all in-Guile uses changed.
12021
12022 * procs.h: type renaming:
12023 scm_subr_entry -> scm_subr_entry_t
12024 the old name is deprecated, all in-Guile uses changed.
12025
12026 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
12027 type renaming:
12028 scm_option -> scm_option_t
12029 the old name is deprecated, all in-Guile uses changed.
12030
12031 * objects.c: various long -> scm_bits_t changes.
12032 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
12033
12034 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
12035 SCM_I_FIXNUM_BIT.
12036
12037 * num2integral.i.c: new file, multiply included by numbers.c, used
12038 to "templatize" the various integral <-> num conversion routines.
12039
12040 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
12041 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
12042 deprecated.
12043 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
12044 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
12045 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
12046 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
12047 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
12048 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
12049 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
12050 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
12051 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
12052 scm_num2size): new functions.
12053
d69c867a 12054 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
1be6b49c
ML
12055
12056 * load.c: change int -> size_t in various places (where the
12057 variable is used to store a string length).
12058 (search-path): call scm_done_free, not scm_done_malloc.
12059
12060 * list.c (scm_ilength): return a scm_bits_t, not long.
12061 some other {int,long} -> scm_bits_t changes.
12062
12063 * hashtab.c: various [u]int -> scm_bits_t changes.
12064 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
12065 (scm_ihashx): n: uint -> scm_bits_t
12066 use scm_bits2num instead of scm_ulong2num.
12067
12068 * gsubr.c: various int -> scm_bits_t changes.
12069
12070 * goops.[hc]: various {int,long} -> scm_bits_t changes.
12071
d69c867a 12072 * gh_data.c (gh_num2int): no loss of precision any more.
1be6b49c
ML
12073
12074 * gh.h (gh_str2scm): len: int -> size_t
12075 (gh_{get,set}_substr): start: int -> scm_bits_t,
12076 len: int -> size_t
12077 (gh_<num>2scm): n: int -> scm_bits_t
12078 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
12079 (gh_length): return scm_bits_t, not unsigned long.
12080
12081 * gc.[hc]: various small changes relating to many things stopping
12082 being long and starting being scm_[u]bits_t instead.
12083 scm_mallocated should no longer wrap around.
12084
12085 * fports.h: type renaming:
12086 scm_fport -> scm_fport_t
12087 the old name is deprecated, all in-Guile uses changed.
12088
12089 * fports.c (fport_fill_input): count: int -> scm_bits_t
12090 (fport_flush): init_size, remaining, count: int -> scm_bits_t
12091
12092 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
12093 those prototypes, as the functions they prototype don't exist.
12094
12095 * fports.c (default_buffer_size): int -> size_t
12096 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
12097 default_size: int -> size_t
12098 (scm_setvbuf): csize: int -> scm_bits_t
12099
12100 * fluids.c (n_fluids): int -> scm_bits_t
12101 (grow_fluids): old_length, i: int -> scm_bits_t
12102 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
12103 scm_bits_t
12104 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
12105
12106 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
12107 the new and shiny SCM_NUM2INT.
12108
12109 * extensions.c: extension -> extension_t (and made a typedef).
12110
12111 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
12112 there are no nasty surprises if/when the various deeply magic tag
12113 bits move somewhere else.
12114
12115 * eval.c: changed the locals used to store results of SCM_IFRAME,
12116 scm_ilength and such to be of type scm_bits_t (and not int/long).
12117 (iqq): depth, edepth: int -> scm_bits_t
12118 (scm_eval_stack): int -> scm_bits_t
12119 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
12120 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
12121 i: int -> scm_bits_t
12122
12123 * environments.c: changed the many calls to scm_ulong2num to
12124 scm_ubits2num.
12125 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
12126
12127 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
12128
12129 * debug.h: type renaming:
12130 scm_debug_info -> scm_debug_info_t
12131 scm_debug_frame -> scm_debug_frame_t
12132 the old names are deprecated, all in-Guile uses changed.
12133 (scm_debug_eframe_size): int -> scm_bits_t
12134
12135 * debug.c (scm_init_debug): use scm_c_define instead of the
12136 deprecated scm_define.
12137
12138 * continuations.h: type renaming:
12139 scm_contregs -> scm_contregs_t
12140 the old name is deprecated, all in-Guile uses changed.
12141 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
12142 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
12143
12144 * continuations.c (scm_make_continuation): change the type of
d69c867a 12145 stack_size from long to scm_bits_t.
1be6b49c
ML
12146
12147 * ports.h: type renaming:
12148 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
12149 scm_port -> scm_port_t
12150 scm_ptob_descriptor -> scm_ptob_descriptor_t
12151 the old names are deprecated, all in-Guile uses changed.
12152 (scm_port_t.entry): int -> scm_bits_t.
12153 (scm_port_t.line_number): int -> long.
12154 (scm_port_t.putback_buf_size): int -> size_t.
12155
12156 * __scm.h (long_long, ulong_long): deprecated (they pollute the
d69c867a 12157 global namespace and have little value beside that).
1be6b49c
ML
12158 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
12159 SCM handle).
12160 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
d69c867a 12161 exist (for size_t & ptrdiff_t).
1be6b49c
ML
12162 (scm_sizet): deprecated.
12163
12164 * Makefile.am (noinst_HEADERS): add num2integral.i.c
12165
a6219f22
MV
121662001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
12167
12168 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
12169 SCM_VARIABLE_INIT since that it what it used to be.
12170
12171 * deprecation.c (scm_include_deprecated_features): Make docstring
9a5fa6e9 12172 ANSIsh. Thanks to Matthias Köppe!
a6219f22 12173
311b6a3c
MV
121742001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
12175
9dfc4faa
MV
12176 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
12177 needed for weak-key hashtables.
12178
12179 * procs.c (scm_make_subr_with_generic): Add missing last argument
12180 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
12181
12182 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
12183 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
311b6a3c
MV
12184
12185 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
12186
2fc933fe
MV
121872001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
12188
57ae112d
MV
12189 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
12190 `duplicate_string'. Do not use an indirect cell, store symbol
12191 directly in collision list of hash table.
12192 (duplicate_string): Removed.
58bee6a8 12193
57ae112d
MV
12194 * init.c (scm_init_guile_1): Call scm_init_extensions.
12195
12196 * Makefile.am: Add "extensions.c" and related files in all the
12197 right places.
12198
12199 * extensions.h, extension.c: New files.
12200
12201 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
12202
2fc933fe
MV
12203 * modules.h (scm_system_module_env_p): Move out of deprecated
12204 section.
12205
12206 * rw.h (scm_init_rw): Added prototype.
12207
12208 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
12209 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
12210 New functions. They replace scm_make_gsubr and
12211 scm_make_gsubr_with_generic. The `make' variants only create the
12212 gsubr object, while the `define' variants also put it into the
12213 current module. Changed all callers.
12214 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
12215
12216 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
12217 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
12218 functions. They replace scm_make_subr, scm_make_subr_opt and
12219 scm_make_subr_with_generic. The `make' variants only create the
12220 subr object, while the `define' variants also put it into the
12221 current module. Changed all callers.
12222 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
12223 Deprecated.
12224
12225 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
12226 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
12227 the comments above.
58bee6a8 12228
18928596
NJ
122292001-05-19 Neil Jerram <neil@ossau.uklinux.net>
12230
12231 * throw.c (scm_lazy_catch): Slight docstring clarification.
12232
21a13beb
MV
122332001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
12234
e2b6ddc6
MV
12235 * throw.c: Lazy-catch handlers are no longer allowed to return.
12236 Fixed comments throughout.
12237 (scm_ithrow): Signal an error when a lazy-catch handler returns.
12238 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
12239 recognized as such.
12240
21a13beb
MV
12241 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
12242 refered to s_scm_minor_version previously.
12243
12244 * modules.h, modules.c: Moved around a lot of code so that
12245 deprecated features appear at the bottom.
12246 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
12247 module_prefix, make_modules_in_var, beautify_user_module_x_var,
12248 scm_the_root_module, scm_make_module, scm_ensure_user_module,
12249 scm_load_scheme_module): Deprecated.
12250 (scm_system_module_env_p): Return SCM_BOOL_T directly for
12251 environments corresponding to the root module.
12252 (convert_module_name, scm_c_resolve_module,
12253 scm_c_call_with_current_module, scm_c_define_module,
12254 scm_c_use_module, scm_c_export): New.
12255 (the_root_module): New static variant of scm_the_root_module. Use
12256 it everywhere instead of scm_the_root_module.
58bee6a8 12257
21a13beb
MV
12258 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
12259 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
12260 (scm_c_with_fluid): New.
12261 (scm_with_fluids): Use scm_c_with_fluids instead of
12262 scm_internal_with_fluids.
58bee6a8 12263
21a13beb
MV
12264 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
12265 `scm_init_goops'. Do not explicitly create/switch modules.
12266 Return SCM_UNSPECIFIED.
12267 (scm_init_goops): Only register `%init-goops-builtins' procedure.
12268 (scm_load_goops): Use scm_c_resolve_module instead of
12269 scm_resolve_module.
58bee6a8 12270
21a13beb
MV
12271 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
12272 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
12273 `scm_init_rw' prior to loading the startup files.
12274
12275 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
12276 scm_init_rdelim. Do not explicitly create/switch modules.
12277 Return SCM_UNSPECIFIED.
12278 (scm_init_rdelim): Only register `%init-rdelim-builtins'
12279 procedure.
58bee6a8 12280
21a13beb
MV
12281 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
12282 explicitly create/switch modules. Return SCM_UNSPECIFIED.
12283 (scm_init_rw): Only register `%init-rw-builtins' procedure.
12284
12285 * script.c (scm_shell): Evaluate the compiled switches in the
12286 current module, not in the root module.
12287
122882001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
12289
12290 * fluids.c (scm_c_with_fluids): Rename from
12291 scm_internal_with_fluids.
12292 (scm_internal_with_fluids): Deprecated.
12293 (scm_c_with_fluid): New.
12294
09cb9e73
DH
122952001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12296
12297 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
12298
12299 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
12300 accessed with SCM_C[AD]R.
12301
12302 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
12303
c81ea65d
RB
123042001-05-16 Rob Browning <rlb@cs.utexas.edu>
12305
12306 * version.c (s_scm_major_version): doc fixes.
12307 (s_scm_minor_version): doc fixes.
12308 (s_scm_minor_version): new function.
12309
12310 * version.h (scm_init_version): new function.
12311
12312 * versiondat.h.in: add GUILE_MICRO_VERSION.
12313
887dfa7d
DH
123142001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
12315
12316 * deprecation.c (scm_init_deprecation): Renamed
12317 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
12318
78930a69
MV
123192001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
12320
12321 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
12322 dependent on cpp_cnvt.awk
12323
39cde5c5
MG
123242001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12325
12326 * script.c (scm_compile_shell_switches): New command line option
12327 `--use-srfi' for loading a list of SRFIs on startup.
12328 (scm_shell_usage): Added `--use-srfi' to help message.
12329
f3f9dcbc
MV
123302001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12331
78930a69 12332 Merged from mvo-vcell-cleanup-1-branch.
887dfa7d 12333
f3f9dcbc
MV
12334 The concept of vcells has been removed from Guile. With it,
12335 explicit obarrays and associated operations are gone. Use
12336 hashtables instead of obarrays.
887dfa7d 12337
f3f9dcbc
MV
12338 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
12339 result as variable instead of vcell. Glocs no longer point to a
12340 vcell but to a variable. Use scm_c_define instead of
12341 scm_sysintern and treat the result as a variable (which it is),
12342 not a vcell.
887dfa7d 12343
f3f9dcbc
MV
12344 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
12345 SCM_DEFVARIABLEP): Deprecated.
12346 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
12347 (variable_print): Do not print name of variable.
12348 (variable_equalp): Compare values, not vcells.
12349 (anonymous_variable_sym): Removed.
12350 (make_vcell_variable): Removed.
12351 (make_variable): New, as replacement.
12352 (scm_make_variable, scm_make_undefined_variable): Do not take name
12353 hint parameter.
12354 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
12355 error in that case.
12356 (scm_builtin_variable): Deprecated.
12357
12358 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
12359 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
12360 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
12361 scm_sysintern, scm_sysintern0, scm_symbol_value0,
12362 scm_string_to_obarray_symbol, scm_intern_symbol,
12363 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
12364 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
12365 Deprecated and moved to "symbols-deprecated.c".
12366 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
12367 (scm_init_symbols): Call scm_init_symbols_deprecated.
12368 * symbols-deprecated.c: New file.
12369 * Makefile.am: Added symbols-deprecated.c and related files in all
12370 the right places.
887dfa7d 12371
f3f9dcbc
MV
12372 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
12373 SCM_GLOBAL_VCELL_INIT): Deprecated.
12374 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
12375 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
887dfa7d 12376
f3f9dcbc
MV
12377 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
12378 SCM_GLOC_SYM.
12379
12380 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
12381 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
12382 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
12383 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
12384 Changed according to the `throughout' comments.
12385
12386 * modules.h, modules.c (scm_module_system_booted_p): Changed type
12387 to `int'.
12388 (scm_module_type): Removed.
12389 (the_root_module): Renamed to the_root_module_var. Now points to
12390 a variable instead of a vcell. Updated all uses.
12391 (scm_the_root_module): Return SCM_BOOL_F when module systems
12392 hasn't been booted yet.
12393 (SCM_VALIDATE_STRUCT_TYPE): Removed.
12394 (scm_post_boot_init_modules): Made static.
12395 (scm_set_current_module): Call scm_post_boot_init_modules on first
12396 call.
12397 (make_modules_in, beautify_user_module_x, resolve_module,
12398 try_module_autoload, module_make_local_var_x): Tacked on "_var"
12399 suffix. Now point to variables instead of vcells. Updated all
12400 uses.
12401 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
12402 and return SCM_BOOL_F in that case.
12403 (scm_module_transformer): Likewise.
12404 (sym_module, scm_lookup_closure_module, scm_env_module): New.
12405 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
12406 (scm_eval_closure_lookup): Do not allow new definitions when
12407 `interface' flag is set.
12408 (scm_standard_interface_eval_closure): New.
12409 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
12410 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
12411 scm_c_lookup, scm_c_module_define, scm_c_define,
12412 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
12413 scm_modules_prehistory): New.
12414 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
12415 instead of scm_intern0.
887dfa7d 12416
f3f9dcbc
MV
12417 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
12418 symbol.
12419
12420 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
12421 hashtable operations to maintain the keywords, not obarray ones.
12422
12423 * init.c (scm_load_startup_files): Do not call
12424 scm_post_boot_init_modules. This is done by
12425 scm_set_current_module now.
12426 (scm_init_guile_1): Call scm_modules_prehistory. Call
12427 scm_init_variable early on.
12428
12429 * goops.c (s_scm_sys_goops_loaded): Get
12430 var_compute_applicable_methods from scm_sym2var, not from a direct
12431 invocation of scm_goops_lookup_closure.
12432
12433 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
12434
12435 * gc.c: Added simple debugging hack to mark phase of GC: When
12436 activated, do not tail-call scm_gc_mark. This gives nice
12437 backtraces.
12438 (scm_unhash_name): Removed.
12439
12440 * feature.c (features): Renamed to features_var. Now points to a
12441 variable instead of a vcell. Updated all uses.
12442
12443 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
12444 `scm_current_module_lookup_closure' which will do the right thing
12445 when the module system hasn't been booted yet.
12446 (SCM_GLOC_SYM): Removed.
12447 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
12448 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
887dfa7d 12449
f3f9dcbc
MV
12450 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
12451 instead of with vcells. Do not overwrite `var' with the result of
12452 the lookup, use the new `real_var' instead. Remove `var2' in
12453 exchange (which was only used with threads).
12454 (sym_three_question_marks): New.
12455 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
12456 `SCM_GLOC_SYM'.
12457 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
12458 (scm_m_atfop): Expect the function definition to be a variable
12459 instead of a vcell.
12460 (scm_macroexp): Do not use `unmemocar', explicitely remember the
12461 symbol instead.
12462 (scm_unmemocopy): Removed thoughts about anti-macro interface.
12463 (scm_eval_args): Use more explicit code in the gloc branch of the
12464 atrocious struct ambiguity test. The optimizer will sort this
12465 out.
12466 (scm_deval_args): Likewise.
12467 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
12468 remember the symbol instead. Added some comments where
12469 scm_tc3_cons_gloc really exclusively refers to structs.
12470 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
12471 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
12472 of scm_sysintern in general.
12473
12474 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
12475 explicit magic.
12476
12477 * debug.c (s_scm_make_gloc): Only allow proper variables, no
12478 pairs. Put the variable directly in the gloc.
12479 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
12480 (scm_init_debug): Use scm_c_define instead scm_sysintern.
12481
12482 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
12483
12484 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
12485 scm_the_last_stack_fluid_var. It now points to a variable instead
12486 of a vcell. Updated all uses.
12487 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
12488 instead of a vcell. Updated all uses.
12489
12490 * _scm.h: Include "variables.h" and "modules.h" since almost
12491 everybody needs them now.
12492
12493 * root.h (scm_symhash, scm_symhash_vars): Removed.
12494 * gc.c (scm_init_storage): Do not initialize them.
887dfa7d 12495
7c33806a
DH
124962001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12497
12498 * eval.c (scm_init_eval): Initialize scm_undefineds and
58bee6a8 12499 scm_listofnull.
7c33806a
DH
12500
12501 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
12502 like the SCM_NEWCELL macro counterparts.
12503
12504 (scm_init_storage, scm_init_gc): Moved initialization of
12505 scm_tc16_allocated from scm_init_gc to scm_init_storage.
12506
12507 (scm_init_storage): Moved initialization of scm_undefineds and
12508 scm_listofnull to eval.c, initializion of scm_nullstr to
12509 strings.c, initializion of scm_nullvect to vectors.c.
12510
12511 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
12512 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
12513
12514 * init.c (scm_init_guile_1): Reordered some initializations and
12515 added dependcy information comments.
12516
12517 * load.c (scm_init_load): Use scm_nullstr.
12518
12519 * strings.c (scm_init_strings): Initialize scm_nullstr.
12520
12521 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
12522
11bbab47
MV
125232001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
12524
12525 * values.c (print_values): Print as a unreadable object, not as
9a5fa6e9 12526 multiple lines. Thanks to Matthias Köppe!
11bbab47 12527
5cd06d5e
DH
125282001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
12529
12530 * deprecation.c: Fixed copyright date.
12531
12532 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
12533 DEPRECATION_H to SCM_DEPRECATION_H.
12534
32bac999
TTN
125352001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
12536
12537 * guile-doc-snarf.in: Update copyright.
12538 Fix relative path bug. Thanks to Sergey Poznyakoff.
12539
c9dcc5ae
MV
125402001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
12541
12542 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
12543 accept open ports. Thanks to Quetzalcoatl Bradley!
12544
7c582ec9
MG
125452001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12546
12547 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
12548 has 779 primitives on startup.
12549
284ab601
MV
125502001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
12551
12552 * eval.c (scm_i_eval): Copy expression before passing it to
12553 SCM_XEVAL. The copy operation was removed unintendedly during my
12554 change on 2001-03-25.
12555
910d1e40
ML
125562001-05-09 Michael Livshin <mlivshin@bigfoot.com>
12557
9a5fa6e9 12558 from Matthias Köppe (thanks!):
910d1e40
ML
12559
12560 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
12561 portable.
12562
12563 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
12564 docstring.
12565
56e55ac7
DH
125662001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12567
12568 * gc.c (scm_init_gc): Added FIXME comment.
12569
12570 * hooks.c: Since hooks don't have a name any more, it is not
12571 necessary to include objprop.h.
12572
12573 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
12574
12575 (symbol_name, scm_make_hook_with_name): Removed.
12576
12577 (scm_create_hook): Don't set the hook's name property.
12578
12579 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
12580
12581 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
12582
12583 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
12584
12585 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
12586 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
12587 FLOBUFLEN and define it unconditionally.
12588
d204b24c
MV
125892001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
12590
438201b4
MV
12591 * gh_data.c (gh_lookup): Call gh_module_lookup with
12592 `scm_current_module ()', not `#f'.
12593 (gh_module_lookup): Expect a module instead of an obarray as first
12594 argument and do lookup in that module.
56e55ac7 12595
d204b24c
MV
12596 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
12597 arrays. The length of array is already determined differently and
12598 scm_uniform_vector_length does not work on arrays.
12599
26c1d549
MV
126002001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
12601
fe7c2f88
MV
12602 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
12603 as well. "SCM (*)(...)" does not work on RedHat 7.1.
12604
26c1d549
MV
12605 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
12606 they are not used. Changed `wrong type' error into `wrong num
12607 args' error. Changed all callers.
56e55ac7 12608
26c1d549
MV
12609 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
12610 arguments are supplied.
12611
1c938eb8
TTN
126122001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
12613
12614 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
12615 describe `regexp/notbol' and `regexp/noteol' execution flags.
12616
3a6379f7
TTN
12617 * strop.c (scm_substring_move_x): Doc fix; nfc.
12618
c10ecc4c
MV
126192001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
12620
12621 * objects.c, objects.h (scm_valid_object_procedure_p): New.
12622 (scm_set_object_procedure_x): Use it to check argument. Fix
12623 docstring.
12624
12625 * evalext.c (scm_definedp): Fix docstring.
12626
a57a0b1e
GH
126272001-05-05 Gary Houston <ghouston@arglist.com>
12628
12629 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
12630 support.
12631
7a095584
NJ
126322001-05-04 Neil Jerram <neil@ossau.uklinux.net>
12633
12634 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
12635 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
12636 Change R4RS references to R5RS.
12637
12638 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
12639 docstring source are correctly reproduced in the output (ii)
12640 we don't anymore get occasional trailing quotes. Also reorganized
12641 and commented the code a little.
12642
12643 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
12644 fixes.
12645
dd2a6f3a
MG
126462001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12647
12648 * strop.c (scm_string_split): New procedure.
12649
12650 * strop.h (scm_string_split): Added prototype.
12651
00120130
GH
126522001-05-04 Gary Houston <ghouston@arglist.com>
12653
12654 * socket.c: define uint32_t if netdb.h doesn't. thanks to
12655 Dale P. Smith.
12656
b65e6bfe
MV
126572001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
12658
12659 * rw.c: Include "modules.h" and "strports.h".
12660
12661 * net_db.h (scm_gethost): Added prototype.
12662
12663 * deprecation.h, deprecation.c: New.
12664 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
12665 (DOT_X_FILES): Added "deprecation.x".
12666 (modinclude_HEADERS): Added "deprecation.h".
12667
12668 * init.c: Include "deprecation.h".
12669 (scm_init_guile_1): Call scm_init_deprecation.
1c938eb8 12670
b65e6bfe
MV
126712001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
12672
12673 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
12674 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
12675 New.
12676
b0e5fd8c
GH
126772001-04-29 Gary Houston <ghouston@arglist.com>
12678
12679 * rw.c: new file, implementing C part of module (ice-9 rw).
12680 (scm_read_string_x_partial): moved from ioext.c
12681 (scm_init_rw): new proc.
12682 * rw.h: new file.
12683 init.c: include rw.h and call scm_init_rw.
12684 Makefile.am: include rw.c and rw.h.
12685
0b2da99c
RB
126862001-04-28 Rob Browning <rlb@cs.utexas.edu>
12687
12688 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
12689 know what's supposed to happen to it.
12690
12691 * list.h (scm_list_star): deprecation expired - removed.
12692
12693 * numbers.h (scm_dblproc): deprecation expired - removed.
12694 (SCM_UNEGFIXABLE): deprecation expired - removed.
12695 (SCM_FLOBUFLEN): deprecation expired - removed.
12696 (SCM_INEXP): deprecation expired - removed.
12697 (SCM_CPLXP): deprecation expired - removed.
12698 (SCM_REAL): deprecation expired - removed.
12699 (SCM_IMAG): deprecation expired - removed.
12700 (SCM_REALPART): deprecation expired - removed.
12701 (scm_makdbl): deprecation expired - removed.
12702 (SCM_SINGP): deprecation expired - removed.
12703 (SCM_NUM2DBL): deprecation expired - removed.
12704 (SCM_NO_BIGDIG): deprecation expired - removed.
12705
12706 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
12707 (scm_tc_dblr): deprecation expired - removed.
12708 (scm_tc_dblc): deprecation expired - removed.
12709 (scm_tc16_flo): deprecation expired - removed.
12710 (scm_tc_flo): deprecation expired - removed.
12711
12712 * tag.h (scm_tag): deprecation expired - removed.
12713
12714 * tag.c: (scm_tag): deprecation expired - removed.
12715
12716 * ioext.c: (scm_fseek): deprecation expired - removed.
12717
12718 * ioext.h (scm_fseek): deprecation expired - removed.
12719
12720 * gh_data.c (gh_int2scmb): deprecation expired - removed.
12721
12722 * gh.h (gh_int2scmb): deprecation expired - removed.
12723
e3334972
NJ
127242001-04-28 Neil Jerram <neil@ossau.uklinux.net>
12725
12726 * stacks.c (scm_make_stack): Fix typo in docstring.
12727
a0f979ac
RB
127282001-04-27 Rob Browning <rlb@cs.utexas.edu>
12729
12730 * error.c (scm_sysmissing): deprecation expired - removed.
12731
12732 * error.h (scm_sysmissing): deprecation expired - removed.
12733
12734 * gc.c
12735 (scm_init_gc): gc-thunk deprecation expired - removed.
12736 (scm_gc_vcell): deprecation expired - removed.
12737 (gc_async_thunk): scm_gc_vcell related code removed.
12738
12739 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
12740
12741 * strings.h
12742 (SCM_NSTRINGP): deprecation expired - removed.
12743 (SCM_NRWSTRINGP): deprecation expired - removed.
12744
12745 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
12746
12747 * chars.h
12748 (SCM_ICHRP): deprecation expired - removed.
12749 (SCM_ICHR): deprecation expired - removed.
12750 (SCM_MAKICHR): deprecation expired - removed.
12751
12752 * ports.h
12753 (SCM_INPORTP): deprecation expired - removed.
12754 (SCM_OUTPORTP): deprecation expired - removed.
12755
253081cf
MV
127562001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
12757
12758 * modules.c (scm_module_type): New.
12759 (scm_post_boot_init_modules): Initialize from Scheme value.
12760 (the_module, scm_current_module, scm_init_modules): the_module is
12761 now a C only fluid.
12762 (scm_current_module): Export to Scheme.
12763 (scm_set_current_module): Do not call out to Scheme, do all the
12764 work in C. Export procedure to Scheme. Only accept modules, `#f'
12765 is no longer valid as the current module. Only set
12766 scm_top_level_lookup_closure_var and scm_system_transformer when
12767 they are not deprecated.
12768 (scm_module_transformer, scm_current_module_transformer): New.
12769
12770 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
12771 scm_current_module_transformer, scm_module_transformer): New.
1c938eb8 12772
253081cf
MV
12773 * gh_data.c: Removed FIXME comment about gh_lookup returning
12774 SCM_UNDEFINED. That's the right thing to do.
12775
12776 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
12777 into the conditionally compiled sections.
12778 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
12779 scm_current_module_transformer instead of scm_system_transformer.
12780 * init.c (start_stack): Move initialization of
12781 scm_system_transformer to the deprecated section.
1c938eb8 12782
1f7f9ed4
NJ
127832001-04-22 Neil Jerram <neil@ossau.uklinux.net>
12784
12785 * throw.c (scm_throw): Correct docstring.
12786
66c73b76
GH
127872001-04-22 Gary Houston <ghouston@arglist.com>
12788
eefae538
GH
12789 * socket.c: attempted to improve the docstrings slightly.
12790
66c73b76
GH
12791 * net_db.c: remove bogus "close" declaration.
12792 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
12793 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
12794 moved to socket.c.
12795 * net_db.h: declarations moved too.
12796
12797 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
12798 long.
12799 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
12800 (VALIDATE_INET6): new macro.
12801 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
12802 inet-pton and inet-ntop.
12803 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
12804 (scm_addr_vector): use ipv6_net_to_num.
1c938eb8 12805
7a7f7c53
DH
128062001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
12807
12808 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
12809 smob number explicitly. Use SCM_TC2SMOBNUM instead.
12810
12811 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
12812 when compiled in debug mode.
12813
12814 (scm_gc_sweep): Only call smob's free function if it is defined.
12815
12816 * print.c (scm_iprin1): No need to check for validity of smob
12817 type or existence of print function.
12818
12819 * smob.[ch] (scm_smobs): Made into a fixed size global array.
12820 Resizing will not work well with preemptive threading.
12821
12822 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
12823
12824 (scm_make_smob_type): Extracted initialization of smob
12825 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
12826 of the critical section.
12827
12828 (scm_smob_prehistory): Initialize all smob descriptors. By
12829 default, don't assign a smob free function: Most smob types don't
12830 need one.
12831
12832 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
12833
e1368a8d
GH
128342001-04-21 Gary Houston <ghouston@arglist.com>
12835
12836 * socket.c (FLIP_NET_HOST_128): new macro.
12837 (scm_fill_sockaddr): use new macro.
12838 (scm_addr_vector): completed IPv6 address support. added const
12839 to the address parameter.
12840
5a525b84
GH
128412001-04-20 Gary Houston <ghouston@arglist.com>
12842
12843 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
12844 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
12845 is defined.
12846 (scm_addr_vector): use a switch instead of multiple if statements.
12847 Add support for IPv6 (incomplete) .
e1368a8d 12848 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
5a525b84 12849
1a551638
DH
128502001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
12851
12852 * struct.c (scm_free_structs): Only pairs may be accessed with
12853 SCM_C[AD]R.
12854
c07b3fef
MD
128552001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12856
a9d861e3
MD
12857 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
12858
c07b3fef
MD
12859 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12860 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
12861 parentheses in order to get the correct associativity.
12862
af7546eb
DH
128632001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12864
12865 * unif.c (scm_array_to_list): Added missing handling of arrays of
12866 bytes. Thanks to Masao Uebayashi for the bug report.
12867
4daecfee
DH
128682001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12869
12870 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
12871 consistently.
12872
726d810a
DH
128732001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12874
12875 * procs.h (SCM_CLOSURE_FORMALS): New macro.
12876
12877 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
12878 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
1c938eb8 12879 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
726d810a
DH
12880 SCM_CLOSURE_FORMALS.
12881
12882 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
12883 (scm_i_procedure_arity): Prefer stronger predicates like
12884 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12885
12886 * macros.c (macro_print): Extracted macro printing code from
12887 print.c and simplified it.
12888
12889 (scm_macro_type): Use SCM_MACRO_TYPE;
12890
12891 (scm_init_macros): Use macro_print for printing macros.
12892
12893 * print.c (scm_print_opts): Improved option documentation.
12894
12895 (scm_iprin1): Extracted printing of macros to macros.c.
12896 Simplified printing of ordinary closures.
12897
12898 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
12899 Martin Grabmueller for the bug report.
12900
e038c042
DH
129012001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
12902
12903 This patch eliminates some further applications of SCM_C[AD]R to
12904 non pair cells.
12905
12906 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
12907 never been applied to real pairs.
12908
12909 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
12910
12911 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
12912
12913 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
12914 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
12915 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
12916
12917 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
12918 Added.
12919
12920 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
12921 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
12922
12923 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
12924 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
12925 SCM_SET{AND,OR}_CAR.
12926
3453619b
GH
129272001-04-17 Gary Houston <ghouston@arglist.com>
12928
12929 * some initial support for IPv6:
1c938eb8 12930
3453619b
GH
12931 * socket.c (scm_fill_sockaddr): improve the argument validation.
12932 don't allocate memory until all args are checked. instead of
12933 unconditional memset of soka, try setting sin_len to 0 if
12934 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
12935 (scm_socket, scm_connect): extend docstrings for IPv6.
12936 (scm_init_socket): intern AF_INET6 and PF_INET6.
12937
216eedfc
DH
129382001-04-17 Niibe Yutaka <gniibe@m17n.org>
12939
12940 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
12941 matches SCM_DEFER_INTS at the beginning of the function.
12942
12943 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
12944
12945 * gc.c (scm_igc): Unconditionally call
12946 SCM_CRITICAL_SECTION_START/END.
12947
12948 * fluids.c (next_fluid_num): Unconditionally call
12949 SCM_CRITICAL_SECTION_START/END.
12950 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
12951
12952 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
12953 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
12954 Removed.
12955
12956 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
12957 Defined as nothing for the case of !defined(USE_THREADS).
12958 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
12959 Removed.
12960 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
12961 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
12962 LINE.
12963 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
12964 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
12965 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
12966 SCM_CRITICAL_SECTION_START/END.
12967 (SCM_REALLOW_INTS: Bug fix. Don't call
12968 SCM_THREAD_SWITCHING_CODE.
12969 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
12970 SCM_THREAD_SWITCHING_CODE directly.
12971 (SCM_ENTER_A_SECTION): Unconditionally use
12972 SCM_CRITICAL_SECTION_START/END. (was:
12973 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
12974
129752001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12976
12977 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
12978 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
12979 allowed to explicitly set this macro via the CFLAGS variable
12980 during make.
12981
12982 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
12983 (SCM_THREAD_CRITICAL_SECTION_START,
12984 SCM_THREAD_CRITICAL_SECTION_END): Renamed
12985 SCM_THREAD_CRITICAL_SECTION_START/END to
12986 SCM_CRITICAL_SECTION_START/END.
12987
f22ed5a0
KN
129882001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
12989
12990 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
12991 instead of bzero.
1c938eb8 12992
f22ed5a0 12993 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
1c938eb8 12994 (MISSING_BZERO_DECL): Remove the declaration.
f22ed5a0
KN
12995
12996 Thanks to NIIBE Yutaka.
12997
508ded1c
MD
129982001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12999
a087ba81
MD
13000 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
13001 goops module should be registered in order to work for an
13002 application which uses libguile statically linked.)
508ded1c 13003
e4b265d8
DH
130042001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
13005
13006 * numbers.[ch] (scm_num2long, scm_num2long_long,
13007 scm_num2ulong_long, scm_num2ulong): Argument position is an
13008 unsigned integer.
13009
13010 * environments.c (eval_environment_folder,
13011 import_environment_folder), gh_data.c (gh_scm2longs,
13012 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
13013 for integers and pointers, respectively.
13014
13015 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
13016 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
13017 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
13018 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
13019
13020 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
13021 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
13022 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
13023 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
13024 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
13025 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
13026
89d04205
NJ
130272001-04-09 Neil Jerram <neil@ossau.uklinux.net>
13028
13029 * strings.c (scm_read_only_string_p): Update docstring to reflect
13030 current (non-)usage of "read only" strings.
40f83c3e
NJ
13031 (scm_make_shared_substring): Clarify docstring by changing
13032 "semantics" to "arguments".
89d04205 13033
4d66be54
MG
130342001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13035
13036 * hooks.c (scm_make_hook, scm_make_hook_with_name),
13037 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
13038 improvements.
13039
1e6808ea
MG
130402001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13041
13042 The following changes make the documentation more consistent.
1c938eb8 13043
1e6808ea
MG
13044 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
13045 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
13046 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
13047 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
13048 ... @end lisp.
13049
13050 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
13051 (scm_array_dimensions, scm_make_shared_array),
13052 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
13053 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
13054 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
13055 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
13056 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
13057 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
13058 macros.c (scm_makmmacro), list.c (scm_append), environments.c
13059 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
13060 @example ... @end example to @lisp ... @end lisp.
13061
13062 * weaks.c (scm_weak_vector): Corrected docstring.
13063
13064 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
13065 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
13066 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
13067 (scm_hashx_set_x, scm_hashx_get_handle),
13068 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
13069 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
13070 vectors.c (scm_vector_fill_x), strings.c
13071 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
13072 objprop.c (scm_set_object_properties_x):
13073 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
13074 strports.c (scm_call_with_input_string), ports.c
13075 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
13076 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
13077 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
13078 (scm_make_weak_vector,scm_weak_vector_p),
13079 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
13080 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
13081 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13082 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
13083 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
13084 Made parameter names match documentation by renaming parameters
13085 and/or fixing docstrings.
1c938eb8 13086
1e6808ea
MG
13087 * numbers.c (scm_ash): Corrected Texinfo markup.
13088
13089 * strop.c (scm_string_index, scm_string_rindex),
13090 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
13091
13092 * vports.c (scm_make_soft_port), unif.c
13093 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
13094 (scm_dimensions_to_uniform_array, scm_transpose_array),
13095 (scm_array_in_bounds_p, scm_uniform_vector_ref),
13096 (scm_bit_count, scm_bit_position, scm_bit_count_star),
13097 (scm_array_to_list, scm_list_to_uniform_array),
13098 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
13099 (scm_open_input_string, scm_open_output_string),
13100 (scm_get_output_string), strop.c (scm_string_copy),
13101 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
13102 (scm_get_internal_real_time, scm_times),
13103 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
13104 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
13105 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
13106 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
13107 simpos.c (scm_system), random.c (scm_random_uniform),
13108 (scm_random_normal, scm_random_exp), ramap.c
13109 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
13110 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
13111 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
13112 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
13113 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
13114 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
13115 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
13116 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
13117 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
13118 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
13119 (scm_logand, scm_logior, scm_logxor, scm_lognot),
13120 (scm_integer_expt, scm_bit_extract, scm_logcount),
13121 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
13122 net_db.c (scm_inet_netof, scm_lnaof), modules.c
13123 (scm_interaction_environment), macros.c (scm_makacro),
13124 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
13125 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
13126 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
13127 (scm_fluid_ref), filesys.c (scm_open_fdes),
13128 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
13129 Docstring correction: `Returns' -> `Return'
13130
1c938eb8
TTN
13131 * gc.c (scm_set_debug_cell_accesses_x):
13132 (s_scm_gc_set_debug_check_freelist_x):
1e6808ea
MG
13133 * fluids.c (scm_fluid_p): Added texinfo markup.
13134
13135 * error.c (scm_strerror): Made docstring more precise.
13136
13137 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
13138 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
13139 (scm_symbol_p, scm_symbol_to_string), strorder.c
13140 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
13141 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
13142 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
13143 (scm_string_ci_geq_p), strop.c (scm_string_copy),
13144 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
13145
9a6976cd
DH
131462001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
13147
13148 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
13149 mode, as suggested by Michael Livshin.
13150
463b2219
ML
131512001-03-31 Michael Livshin <mlivshin@bigfoot.com>
13152
13153 * backtrace.c (display_backtrace_body): since the `print_state'
13154 variable is not used (instead its data field is used directly as
13155 `pstate'), protect it from the hungry compiler optimizations.
13156 thanks to Bill Schottstaedt for the report.
13157
61045190
DH
131582001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13159
13160 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
13161 It is only defined and used if guile is compiled with
13162 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
13163 let cells with a free_cell type tag be visible outside of the
13164 garbage collector when in debug mode.
13165
13166 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
13167
13168 (scm_assert_cell_valid): Use a local static variable to avoid
13169 recursion.
13170
13171 (MARK): Only check for rogue cell pointers in debug mode. Use
13172 scm_cellp for this purpose and place all checks for rogue pointers
13173 into that function. Further, since due to conservative scanning
13174 we may encounter free cells during marking, don't use the standard
13175 cell type accessor macro to determine the cell type.
13176
13177 (scm_cellp): Check if the cell pointer actually points into a
13178 card header.
13179
13180 (scm_init_gc): Initalize scm_tc16_allocated.
13181
13182 * gc.h (GCH): Renamed to SCM_GC_H.
13183
13184 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
13185 might be unnecessary, but I feel better this way :-)
13186
13187 (SCM_GC_CELL_TYPE): New macro.
13188
13189 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
13190 in guile, and it is unlikely that they will be applied to real
13191 pairs anyway.
13192
13193 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
13194
13195 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
13196 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
13197
13198 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
13199 make sure that in debug mode no free cell will ever be visible
13200 outside of the garbage collector.
13201
85d6df6a
DH
132022001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
13203
13204 * async.c (scm_asyncs_pending): Don't use != to compare SCM
13205 values.
13206
13207 * async.c (scm_system_async), variable.c (scm_make_variable,
13208 scm_make_undefined_variable): Use scm_cons to create a pair.
13209
13210 * debug.c (scm_reverse_lookup): Perform proper type checking.
13211 Remove suspicious use of SCM_SLOPPY_CONSP.
13212
13213 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
13214 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
13215 the corresponding optimization.
13216
13217 * eval.c (iqq): Use proper type check.
13218
13219 (scm_m_expand_body): Remove redundant type checks.
13220
13221 (promise_print): Don't access promise cells as pairs.
13222
13223 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
13224 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
13225 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
13226 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
13227 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
13228
13229 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
13230 (scm_iprin1): Use new macro predicate and accessors.
13231
13232 * eval.h (scm_tc16_macro): Removed declaration. It is declared
13233 in macros.h.
13234
13235 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
13236 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
13237 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
13238 SCM_VARIABLE_H. Even the macros that are used to inhibit
13239 including a header file twice should be in the SCM_ namespace.
13240
13241 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
13242 properties.c (scm_primitive_property_ref,
13243 scm_primitive_property_del_x): Prefer stronger predicates like
13244 SCM_NULLP or SCM_FALSEP over SCM_IMP.
13245
13246 * gc.c (MARK): Use proper macros to access procedure-with-setter
13247 cell elements and closure cell elements.
13248
13249 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
13250 access free cells as pairs.
13251
13252 (scm_unprotect_object): scm_hashq_get_handle returns #f if
13253 no hashtab entry is found.
13254
13255 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
13256 SCM_CLR_PORT_OPEN_FLAG.
13257
13258 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
13259 use SCM_SET_C[AD]R for uninitialized cells.
13260
13261 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
13262 If the hashtable has no slots, return #f instead of '(). This
13263 unifies the return value with most assoc-functions.
13264
13265 (scm_hash_fn_ref): Use proper type check.
13266
13267 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
13268 Removed references to non-existing functions from documentation.
13269
13270 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
13271 access keyword cell elements.
13272
13273 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
13274 macros.
13275
13276 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
13277
13278 * print.c (scm_iprlist): Added comment. Improved loop
13279 conditions.
13280
13281 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
13282 pairs.
13283
13284 * smob.c (scm_markcdr): Don't access smob cells as pairs.
13285
13286 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
13287
13288 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
13289 cells as pairs.
13290
13291 * variable.c (variable_print, variable_equalp, scm_variable_ref,
13292 scm_variable_set_x): Use proper macros to access variable cell
13293 elements.
13294
13295 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
13296
13297 * variable.h (SCM_VARVCELL): Don't access variable cells as
13298 pairs.
13299
13300 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
13301 added FIXME comment, removed register specifier.
13302
1b27e91a
KN
133032001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
13304
13305 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
13306 * init.c (scm_init_guile_1): Don't init goopscore module.
13307
16c634ec
MV
133082001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13309
13310 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
13311
91344ceb
MG
133122001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13313
13314 * strop.c (scm_string_to_list): Fixed docstring markup.
13315 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
13316 (scm_string_downcase, scm_string_capitalize_x),
13317 (scm_string_capitalize): Rewrote and corrected docstrings.
13318 (scm_string_ci_to_symbol): Made docstring more explicit.
13319
07576812
MV
133202001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
13321
13322 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
13323 eval.c can use it.
13324 (scm_call_with_values): Removed.
13325 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
13326 so that it can be exported.
13327 (scm_call_with_values): Removed.
1c938eb8 13328
07576812
MV
13329 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
13330 * eval.c: Include "libguile/values.h"
13331 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
13332 New.
13333 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
13334 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
13335 New delcarations to support above change.
13336
13337 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
13338 errors with last change.
1c938eb8 13339
07576812
MV
133402001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
13341
13342 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
13343 scm_i_eval): Moved the application of the system transformer from
13344 scm_i_eval to scm_primitive_eval.
13345
a17bb5fd
NJ
133462001-03-23 Neil Jerram <neil@ossau.uklinux.net>
13347
a6be01a4
NJ
13348 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
13349
a17bb5fd
NJ
13350 * strop.c (scm_string_index): Fix docstring line break
13351 regression.
13352
13353 * list.c (scm_cons_star): Fix docstring typo.
13354
be54b15d
DH
133552001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13356
13357 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
13358 (big2str), ports.c (scm_drain_input), read.c (scm_read,
13359 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
13360 scm_make_string, scm_string_append), strports.c (st_resize_port,
13361 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
13362 scm_makstr with calls to scm_allocate_string.
13363
13364 * strings.[ch] (scm_allocate_string): New function.
13365
13366 * strings.[ch] (scm_makstr): Deprecated.
13367
789ecc05
GH
133682001-03-18 Gary Houston <ghouston@arglist.com>
13369
6d163216
GH
13370 * posix.c (scm_tmpnam): check that return value from tmpnam is not
13371 NULL. rewrote the docstring.
13372 (scm_mkstemp): new procedure implementing "mkstemp!".
13373 * posix.h: declare scm_mkstemp.
13374
789ecc05
GH
13375 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
13376 normally it would be found in netdb.h.
13377
c6c79933
GH
133782001-03-17 Gary Houston <ghouston@arglist.com>
13379
e9e225e5
GH
13380 * sort.c (scm_sort): move sortvec variable to avoid a compiler
13381 warning when HAVE_ARRAYS is not defined. move len too.
13382
13383 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
13384 (EXTRA_DOT_X_FILES): let configure set the value.
13385 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
13386
c6c79933
GH
13387 * gc.c (scm_must_malloc): changed the comment explaining when
13388 scm_must variants of malloc/free etc., should be used, based on
13389 explanation from Dirk Herrmann.
13390 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
13391 string with procedure name. use scm_must_malloc instead of malloc.
13392 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
13393 of malloc/free.
13394 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
13395 scm_ungetc): use scm_must variants of malloc/realloc/free.
13396 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
13397
b3fcac34
DH
133982001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13399
13400 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
13401 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
13402 scm_wrong_type_arg instead.
13403
13404 (SCM_WNA): Deprecated.
13405
13406 * error.[ch] (scm_wta): Deprecated.
13407
13408 * numbers.c (s_i_log): Minor comment fix.
13409
13410 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
13411 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
13412 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
13413 wrong-num-args or misc errors.
13414
13415 * unif.c (scm_make_shared_array, scm_transpose_array,
13416 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
13417 Validate the rest argument (note: this is only done when guile is
13418 built with SCM_DEBUG_REST_ARGUMENT=1)
13419
13420 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
13421 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
13422
13423 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
13424 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
13425
68baa7e7
DH
134262001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13427
13428 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
13429 instead of scm_wrong_num_args.
13430
13431 * coop-threads.c: Don't include libguile/strings.h. (Was only
13432 needed for former implementation of SCM_WRONG_NUM_ARGS.)
13433
13434 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
13435 wrong-num-args errors.
13436
9f40cd87
DH
134372001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13438
13439 * error.[ch] (scm_error_num_args_subr): New function.
13440
5352393c
MG
134412001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13442
13443 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
13444 (scm_length, scm_append, scm_reverse, scm_list_ref),
13445 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
13446 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
13447 (scm_delete1_x), gc.c (scm_map_free_list),
13448 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
13449 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
13450 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
13451 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
13452 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
13453 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
13454 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
13455
13456 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
13457 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13458 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
13459 symbols.c (scm_symbol_interned_p), numbers.c
13460 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
13461 markup.
13462
a9205f07
KN
134632001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
13464
13465 * snarf.h (SCM_CONST_LONG): Deprecated.
13466 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
13467
6d583887
MV
134682001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
13469
13470 * numbers.c (scm_num2ulong): Check that a bignum is positive
13471 before looking at the magnitude. Correctly check for overflow
13472 during conversion.
13473 (scm_num2long_long): Likewise.
13474 (scm_num2ulong_long): New.
13475 (ULONG_LONG_MAX): Define if not already defined.
13476 * numbers.h: (scm_num2ulong_long): New prototype.
1c938eb8 13477
e87a03fc
MG
134782001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13479
13480 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
13481
13482 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
13483 (SCM_OPOUTSTRPORTP): New predicate macros.
13484 (scm_open_input_string, scm_open_output_string),
13485 (scm_get_output_string): New prototypes.
1c938eb8 13486
e87a03fc
MG
13487 * strports.c (scm_open_input_string, scm_open_output_string),
13488 (scm_get_output_string): New procedures (SRFI-6 compliant).
13489 Made scm_tc16_strport non-static.
13490
160bb34a
DH
134912001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13492
13493 * macros.h (SCM_ASSYNT): Removed unused object argument from
13494 signature.
13495
13496 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
13497 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
13498 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
13499 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
13500 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
13501 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
13502 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
13503 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13504 scm_m_atdispatch): Removed unused object argument from call to
13505 SCM_ASSYNT.
13506
80dee77b
DH
135072001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13508
13509 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
13510 const int* to reflect that the input array of integers remains
13511 unchanged. Thanks to Brett Viren for the hint.
13512
d3dd80ab
MG
135132001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13514
13515 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
13516 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
13517 in various places.
13518 (gh_scm2newstr, gh_symbol2newstr): Change call to
13519 scm_must_malloc() to malloc(), because user-free()able memory is
13520 allocated.
13521
13522 * gc.c: Added declaration of `scm_debug_check_freelist'.
13523
26a3038d
MG
135242001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13525
13526 * ports.c (scm_port_mode): Changed `mode' array size to 4.
13527
1f3908c4
KN
135282001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
13529
13530 * strports.c (scm_object_to_string): New procedure.
13531 (scm_strprint_obj): Deprecated.
13532 * strports.h: Reflect the changes.
13533
e11208ca
DH
135342001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
13535
13536 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
13537
13538 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
13539 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
13540 SCM_ASSYNT to check for correct argument types. Either use some
13541 SCM_VALIDATE_* macro or an explicit test.
13542
13543 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
13544 misc-errors.
13545
13546 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
13547 instead of calling scm_wta.
13548
67e8151b
MG
135492001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13550
13551 * load.c (scm_primitive_load, scm_primitive_load_path),
13552 (scm_sys_search_load_path): Corrected docstrings (file ->
13553 filename).
13554
13555 * eval.c (scm_force): Added texinfo markup to docstring.
13556 (scm_promise_p): Renamed parameter to `obj' to match docstring.
13557
13558 * debug-malloc.c: Reinserted #include <stdio.h>.
13559
e0c08f17
KN
135602001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
13561
e39c3de4
KN
13562 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
13563
e0c08f17
KN
13564 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
13565 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
13566 Use SCM_LISTn instead of scm_listify.
13567
e6e2e95a
MD
135682001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13569
13570 * _scm.h: Removed #include <errno.h>.
13571
13572 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
13573 errno variable (can be a macro on some systems, for example when
13574 using linux libc with threads).
13575
13576 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
13577 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
13578 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
13579 #include <errno.h> in these 20 out of 100 files.
1c938eb8 13580
97d0e20b
GH
135812001-03-10 Gary Houston <ghouston@arglist.com>
13582
13583 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
13584 not already defined.
13585
e75341b3
MD
135862001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13587
13588 * coop.c: Inserted #include <stdio.h>.
13589
13590 * iselect.c: Reinserted #include <stdio.h>.
13591
74355186
MV
135922001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
13593
13594 * posix.c: Replaced `#define' of __USE_XOPEN right before
13595 including unistd.h with a define of _GNU_SOURCE at the very top of
13596 the file.
13597
783e7774
KN
135982001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
13599
13600 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
13601 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
13602 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
13603 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
13604 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
13605 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
13606 print.c, procprop.c, procs.c, properties.c, ramap.c,
13607 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
13608 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
13609 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
1c938eb8 13610 Remove #include <stdio.h>
783e7774
KN
13611 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
13612
13613 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
13614
9a677c37
MG
136152001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13616
13617 * posix.c (scm_gethostname): Set initial name length to 256 for
13618 Solaris.
13619
94e6d793
MG
136202001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13621
13622 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13623 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13624 (scm_sethostname, scm_gethostname): New prototypes.
13625
13626 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
13627 <sys/file.h>, if present.
13628 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
13629 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
13630 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
13631 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
13632 (scm_sethostname, scm_gethostname): New procedures.
13633
650a1cf9
NJ
136342001-03-08 Neil Jerram <neil@ossau.uklinux.net>
13635
13636 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
13637 not optional (ii) "recommend" spelling correction.
13638
9636b49c
MD
136392001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13640
5e4a4d09
MD
13641 * ramap.c (racp): Removed optimization which caused array copying
13642 to fail if the two arrays shared storage. Re-inserted the IVDEP
13643 macros removed in the change of 2000-03-09. (Don't really have a
13644 complete grasp of what they are for, but they seem to be necessary
13645 on Crays. This needs testing!) Thanks to Miroslav Silovic.
13646
9636b49c
MD
13647 * hash.c (scm_string_hash): Don't downcase characters.
13648
04a4d666
MD
136492001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13650
9636b49c 13651 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
04a4d666
MD
13652 size from 277 --> 1009.
13653
13654 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
13655 function.
13656
13657 * coop-threads.c: Fixed change of 2001-03-06.
1c938eb8 13658
04a4d666
MD
13659 * validate.h: Code formatting.
13660
66418d34
KN
136612001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
13662
13663 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
13664 (*.doc): Add dependency on guile-snarf.awk.in.
13665
13666 * guile-snarf.awk.in: Neglect spaces at the end of
13667 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
13668 middle of docstrings. (To avoid the problem with gcc-2.96.)
13669
2ade72d7
DH
136702001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
13671
13672 * coop-threads.c (scm_call_with_new_thread), load.c
13673 (scm_primitive_load, scm_sys_search_load_path), random.c
13674 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
13675 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
13676 (potentially) issue a scm-misc-error or wrong-num-args error
13677 message.
13678
13679 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
13680 about the expected type with the wrong-type-arg error message.
13681
13682 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
13683 a C level bug that can't be fixed from scheme anyway.
13684
586d7da2
MD
136852001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13686
13687 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
13688 Duplicate bindings are OK in a let* since a let* is semantically
13689 equivalent to a nested set of let:s.
13690
1dd05fd8
MG
136912001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13692
13693 * print.c (scm_print_options): Fixed texinfo in docstring.
13694
13695 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
13696 the underlying functions getservent, getprotoent or getnetent
13697 return NULL instead of signalling an error.
13698
439006bf
GH
136992001-03-04 Gary Houston <ghouston@arglist.com>
13700
13701 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
13702 taking an unexpectedly large filename for an AF_UNIX socket from
13703 bind/connect/sendto (thanks to Martin Grabmueller).
1c938eb8 13704
439006bf
GH
13705 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
13706 former and adjusted the latter.
13707 (scm_socket, scm_socketpair): cosmetic changes.
13708 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
13709 size_t as socklen_t substitute. don't restrict args/return values
13710 to INUM: allow full range of int or size_t.
13711 (scm_fill_sockaddr): check arguments before allocating memory, to
13712 avoid leakage. use malloc, not scm_must_malloc.
13713 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
13714 substitute. free the sockaddr structure before throwing an error.
13715 (scm_init_add_buffer): procedure removed, together with its static
13716 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
13717 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
13718 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
13719 scm_sendto): use a local buffer instead of scm_addr_buffer.
13720 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
13721 not size_t.
13722 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
13723 call to detect whether recvfrom could be bothered to set the address.
13724 (scm_init_socket): don't call scm_init_addr_buffer.
13725
276dd677
DH
137262001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13727
13728 * debug.c (scm_procedure_source, scm_procedure_environment),
13729 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
13730 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
13731 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
13732 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
13733 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
13734 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
13735 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
13736 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
13737 scm_array_to_list, scm_array_prototype), validate.h
13738 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
13739 scm_misc_error or scm_wrong_type_arg instead.
13740
13741 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
13742
5e03762c
MD
137432001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13744
13745 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
13746 (scm_sys_tag_body): Added.
13747
db4b4ca6
DH
137482001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
13749
13750 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
13751 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
13752 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
13753 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
13754 options.c (scm_options), ports.c (scm_remove_from_port_table),
13755 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
13756 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
13757 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
13758 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
13759 instead.
13760
87e7741d
MD
137612001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13762
13763 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
13764
d19b0aac
MV
137652001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
13766
13767 * eval.c (scm_s_duplicate_bindings): New error message.
13768 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
13769
2fd945df
MV
137702001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
13771
13772 * eval.h (SCM_EVALIM2): New macro. Use it when a
13773 immediate, literal constant should be evaluated.
13774 * eval.c (scm_s_duplicate_formals): New error message string.
13775 (scm_c_improper_memq): New function.
13776 (scm_m_lambda): Check for duplicate arguments.
13777 (scm_ceval, scm_deval): When executing a body: only cons a new
13778 toplevel environment frame when it is different from the
13779 existing one; use EVALCAR instead of SIDEVAL so that we can properly
13780 check for empty combinations; use SCM_EVALIM2 for the same reason
13781 in the non-toplevel loop.
13782 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
13783 New labels with the meaning of their non-"nontoplevel" partners,
13784 but they are used when it is known that the body is not evaluated at
13785 top-level.
13786 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
13787 reporting for empty combinations.
13788
9e6fc585
KN
137892001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
13790
13791 * Remove dump facilities.
13792 * dump.c, dump.h: Removed.
13793 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
13794 * init.c: Remove #include "libguile/dump.h".
13795 (scm_init_guile_1): Remove scm_init_dump.
13796 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
13797 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
13798 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
13799 (scm_set_smob_dump, scm_set_smob_undump): Removed.
13800
13801 * keywords.c: Remove #include "libguile/dump.h".
13802 (keyword_dump, keyword_undump): Removed.
13803 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
13804
eae54bf0
MG
138052001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13806
13807 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
13808 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
13809 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
13810 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
13811 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
13812 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
13813 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
13814 to @code{} as the texinfo manual recommends, converted the
13815 examples to use a @lisp{}-environment.
13816
13817 * strports.c (scm_eval_string): Cleaned up the docstring.
13818
13819 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
13820 markup.
13821
13822 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
13823 (scm_number_to_string, scm_string_to_number, scm_number_p)
13824 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
13825 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
13826 (scm_ash): Added texinfo markup and removed obsolete @refill.
13827 (scm_gr_p): Corrected comment.
13828 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
13829 docstring) comments.
13830 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
13831 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
13832 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
13833 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
13834 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
13835 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
13836 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
13837 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
13838
23deee81
DH
138392001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
13840
13841 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
13842 (Obviously nobody compiles with SCM_RECKLESS defined...)
13843
13844 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
13845
6fe692e9
MD
138462001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13847
13848 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
13849
13850 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
13851
27c37006
NJ
138522001-02-24 Neil Jerram <neil@ossau.uklinux.net>
13853
13854 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
13855 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
13856 since use of `z' suggests that the arguments may be complex.
13857
13858 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
13859 typos.
13860
2069af38
NJ
138612001-02-23 Neil Jerram <neil@ossau.uklinux.net>
13862
13863 * dump.c (scm_binary_write, scm_binary_read), eval.c
13864 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
13865 scm_guardian_greedy_p, scm_make_guardian), fports.c
13866 (scm_file_port_p): Minor docstring fixes.
13867
b42ff180
MV
138682001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
13869
2069af38 13870 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
97ea55f8
MV
13871
13872 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
13873 scm_i_eval.
13874 (make_class_from_template): Do not bother to set the current
13875 module around the call to DEFVAR, scm_eval takes care of that.
13876 (scm_init_goops): Make scm_module_goops and
13877 scm_goops_lookup_closure permanent objects.
1c938eb8 13878
97ea55f8
MV
13879 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
13880 top level, create a fresh top-level environment for each
13881 expression instead of mutating the exisint frame. This is
13882 important when that frame is closed over.
13883
b42ff180
MV
13884 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
13885 SCM_DIGSPERLONG instead of DIGSPERLONG.
13886
09f2ab1e
MV
138872001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
13888
13889 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
13890 before applying arrow procedure in `cond' and before applying
13891 receiver procedure in call-with-current-continuation.
13892 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
13893 macro. The argument is expanded more than one time.
13894
13895 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
13896 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
13897
138982001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
13899
13900 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
13901 notice and license.
13902
7090240c
MG
139032001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13904
13905 * variable.c (scm_make_variable, scm_make_undefined_variable)
13906 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
13907 (scm_variable_bound_p), values.c (scm_values)
13908 (scm_call_with_values), unif.c (scm_bit_count)
13909 (scm_bit_set_star_x), symbols.c (scm_gentemp)
13910 (scm_gensym), strings.c (scm_string_p, scm_make_string)
13911 (scm_read_only_string_p, scm_string_length, scm_string_ref)
13912 (scm_string_set_x, scm_substring, scm_string_append), stime.c
13913 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
13914 (scm_copy_random_state, scm_random), print.c (scm_newline)
13915 (scm_write_char, scm_simple_format), debug-malloc.c
13916 (scm_malloc_stats), environments.c (scm_environment_p)
13917 (scm_environment_bound_p, scm_environment_ref)
13918 (scm_environment_fold, scm_environment_define)
13919 (scm_environment_undefine, scm_environment_set_x)
13920 (scm_environment_cell, scm_environment_observe)
13921 (scm_environment_observe_weak, scm_environment_unobserve)
13922 (scm_make_eval_environment, scm_eval_environment_p)
13923 (scm_eval_environment_set_local_x, scm_eval_environment_local)
13924 (scm_eval_environment_imported)
13925 (scm_eval_environment_set_imported_x, scm_make_import_environment)
13926 (scm_import_environment_p, scm_import_environment_imports)
13927 (scm_import_environment_set_imports_x, scm_make_export_environment)
13928 (scm_export_environment_p, scm_export_environment_private)
13929 (scm_export_environment_set_private_x)
13930 (scm_export_environment_signature)
13931 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
13932 Added texinfo markup.
13933
13934 * ports.c (scm_drain_input): Lowercased argument to @var.
13935 (scm_current_input_port, scm_current_output_port): Filled in
13936 missing explanation.
13937 (scm_current_load_port, scm_set_current_output_port)
13938 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
13939 Added texinfo markup.
13940
13941 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
13942 (scm_release_arbiter): Added texinfo markup to docstrings.
13943 Changed `Returns' to `Return'.
13944 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
13945
25703850
NJ
139462001-02-16 Neil Jerram <neil@ossau.uklinux.net>
13947
13948 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
13949 by doubling them to `@@'.
13950
73c0fdce
MG
139512001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13952
13953 * numbers.c (scm_lognot), random.c (scm_random,
13954 scm_random_normal, scm_random_solid_sphere_x,
13955 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
13956 scm_random_exp), dynwind.c
13957 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
1c938eb8 13958
73c0fdce
MG
13959 * goops.c (scm_sys_initialize_object, scm_instance_p,
13960 scm_class_name, scm_class_precedence_list, scm_class_slots,
13961 scm_class_environment, scm_generic_function_name,
13962 scm_generic_function_methods, scm_method_generic_function,
13963 scm_method_specializers, scm_method_procedure, scm_make_unbound,
13964 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
13965 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
13966 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
13967 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
13968 scm_class_direct_supers, scm_class_direct_slots,
13969 scm_class_direct_subclasses, scm_class_direct_methods,
13970 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
13971 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
13972 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
13973 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
13974 scm_memoized_environment, scm_procedure_name,
13975 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
13976 objects.c
13977 (scm_class_of, scm_entity_p, scm_operator_p,
13978 scm_set_object_procedure_x, scm_object_procedure,
13979 scm_make_class_object), hooks.c (scm_make_hook_with_name,
13980 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
13981 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
13982 scm_hook_to_list), lang.c
13983 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
13984 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
13985 (scm_print_options, scm_port_with_print_state,
13986 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
13987 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
13988 scm_make_procedure_with_setter, scm_procedure), throw.c
13989 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
13990 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
13991 scm_stack_ref, scm_stack_length, scm_frame_p,
13992 scm_last_stack_frame, scm_frame_number, scm_frame_source,
13993 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
13994 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
13995 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
13996 (scm_dirname, scm_basename), dynwind.c
13997 (scm_wind_chain), read.c (scm_read_options, scm_read,
13998 scm_read_hash_extend), gc.c
13999 (scm_unhash_name), eval.c (scm_eval_options_interface,
14000 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
14001 (scm_display_error, scm_set_print_params_x,
14002 scm_display_application, scm_display_backtrace, scm_backtrace),
14003 async.c (scm_async, scm_system_async, scm_async_mark,
14004 scm_system_async_mark, scm_run_asyncs, scm_noop,
14005 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
14006 scm_mask_signals): Added docstrings.
14007
e228a203
KN
140082001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
14009
14010 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
14011 address of car/cdr. (Thanks to Dirk Herrmann)
14012 Use scm_sizet to obtain the length of strings.
14013 (Thanks to Matthias Koeppe)
14014
1552a59d
MV
140152001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
14016
14017 * symbols.c (scm_mem2symbol): Put a empty statement after the
14018 next_symbol label. This is mandated by ANSI, appearantly.
14019
3178f751
MV
140202001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
14021
14022 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
14023 sense to compile for a specific kernel version. Do not include
14024 <asm/signal.h> while defining __KERNEL__. This hack should no
14025 longer be needed and caused problems.
14026
7af4defe
MV
140272001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
14028
14029 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
14030 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
14031 can not deal with immediates.
14032
5d6bb349
KN
140332001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
14034
14035 * list.c (scm_list_copy): Validate the first argument.
14036
ec9709f0
MV
140372001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
14038
14039 Fix evaluator so that top-level expressions are correctly
14040 evaluated with respect to the module system.
1c938eb8 14041
ec9709f0
MV
14042 * modules.h. modules.c (scm_current_module_lookup_closure): New
14043 function.
14044
14045 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
14046 prototypes.
14047 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
14048 names to better reflect their meaning.
14049
14050 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
14051 evaluated at top-level and synronize lookup closure before
14052 executing every subform.
14053 (scm_primitve_eval_x, scm_primitive_eval): New functions.
14054 (scm_eval_x, scm_eval): Reimplement in terms of
14055 scm_primitive_eval_x and scm_primitive_eval, respectively.
1c938eb8 14056
ec9709f0
MV
140572001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
14058
14059 * macros.c (scm_macro_name, scm_macro_transformer): Use
14060 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
14061 Thanks!
14062
42417394
KN
140632001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
14064
14065 * dump.c (scm_store_bytes): Store data size before data.
14066 (scm_restore_bytes): Restore data size. Takes a pointer to size.
14067 * dump.h (scm_restore_bytes): Updated.
14068
bf942687
KN
140692001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
14070
14071 * dump.c: Use double cells for update schedule.
14072
1be4270a
KN
140732001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
14074
14075 * ports.c (scm_unread_char): Take an optional argument.
14076
548728ea
MV
140772001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
14078
14079 * modules.h (scm_selected_module, scm_current_module): Renamed
14080 scm_selected_module to scm_current_module to synchronize Scheme
14081 and C names.
14082 (scm_select_module, scm_set_current_module): Likewise. Changed
14083 all uses.
1c938eb8 14084
548728ea
MV
14085 * ports.c (scm_port_for_each): Make a snapshot of the port table
14086 before iterating over it. The table might change while the user
14087 code is running. With the snapshot, the user can depend on the
c5408bc3 14088 fact that each port that existed at the start of the iteration is
548728ea
MV
14089 encountered exactly once. (ice-9 popen) depends on this.
14090
cb0d8be2
DH
140912001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14092
14093 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
14094
14095 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
14096 range checking for the size parameter. Thanks to Martin
14097 Grabmueller for the hint.
14098
14099 (scm_makstr): Reordered string initialization to make interrupt
14100 deferring unnecessary.
14101
14102 * vectors.c (scm_make_vector): Fixed range checking.
14103
e382fdbe
DH
141042001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
14105
14106 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
14107
14108 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
14109 checking of the size parameter for type correctness and valid
14110 range. Thanks to Rob Browning for reporting the problem. Instead
14111 of deferring interrupts, scm_remember_upto_here_1 is used.
14112
bf8f0922
KN
141132001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14114
14115 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
14116 (scm_dump_cell_update): Removed.
14117 (scm_dump_update): Renamed from scm_dump_object_update.
14118 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
14119 a pointer instead of returning a value.
14120 * keywords.c (keyword_undump): Updated.
14121
914cceec
KN
141222001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
14123
14124 * dump.c, dump.h: Modified a lot.
5f17c66f 14125 (SCM_DUMP_COOKIE): Version 0.1
914cceec
KN
14126 (scm_dump_mark): Removed.
14127 (scm_restore_cell_object, scm_store_cell_object): New functions.
14128
14129 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
14130 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
14131 New slots: dump, undump.
14132 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
14133 Updated.
14134
14135 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
14136 (keyword_undump): Renamed from keyword_alloc.
14137 (scm_init_keywords): Set keyword_dump and keyword_undump.
14138
ecf470a2
ML
141392001-02-03 Michael Livshin <mlivshin@bigfoot.com>
14140
14141 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
14142 the deprecated SCM_DOUBLE_CELLP.
14143
14144 * tags.h (SCM_DOUBLE_CELLP): deprecated.
14145
03416a99
KN
141462001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
14147
14148 * dump.c, dump.h: New files.
14149 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
14150 * init.c: #include "libguile/dump.h".
14151 (scm_init_guile_1): Call scm_init_dump.
14152 * smob.h (scm_smob_descriptor): New slots: dump_mark,
14153 dump_dealloc, dump_store, undump_alloc, undump_restore,
14154 undump_init.
14155 * smob.c (scm_make_smob_type): Init the new slots.
14156 (scm_set_smob_dump, scm_set_smob_undump): New functions.
14157 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
14158
14159 * keywords.c: #include "libguile/dump.h".
14160 (keyword_dealloc, keyword_alloc): New functions.
14161 (scm_init_keywords): Set smob_dump and smob_undump.
14162
00ffa0e7
KN
141632001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
14164
14165 * vectors.c (scm_c_make_vector): New function.
14166 * vectors.h (scm_c_make_vector): Declared.
14167 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
14168 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
14169 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
14170 (scm_make_method_cache, scm_i_vector2list,
14171 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
14172 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
14173 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
14174 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
14175 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
14176 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
14177 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
14178 (scm_vector, scm_make_vector): Use scm_c_make_vector.
14179
14180 * hashtab.c (scm_c_make_hash_table): New function.
14181 * hashtab.h (scm_c_make_hash_table): Declared.
14182 * environments.c (scm_make_leaf_environment,
14183 scm_make_eval_environment), gc.c (scm_init_storage),
14184 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
14185 Use scm_c_make_hash_table.
14186
b8446ce8
MD
141872001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14188
14189 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
14190
e3239868
DH
141912001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
14192
14193 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
14194 end of docstring.
14195
14196 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
14197 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
14198 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
14199 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
14200 srcprop.c (scm_source_properties, scm_set_source_properties_x,
14201 scm_source_property, scm_set_source_property_x), sort.c
14202 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
14203 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
14204 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
14205 docstrings.
14206
41ee56dd
MD
142072001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14208
14209 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
14210 really get that arg.
14211
b6311c08
KN
142122001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
14213
14214 * goops.c (s_scm_get_keyword): Bug fix.
14215
a49af0c0
DH
142162001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14217
14218 The following patch was sent by Martin Grabmueller. It makes sure
14219 that in case of parameter errors the correct function name is
14220 shown, and that parameter types are only checked once.
14221
14222 * strop.c (string_copy, string_upcase_x, string_downcase_x,
14223 string_capitalize_x): New functions. Each one performs the core
14224 functionality of the corresponding scm_* function.
14225
14226 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
14227 scm_string_downcase_x, scm_string_downcase,
14228 scm_string_capitalize_x, scm_string_capitalize): Reduced to
14229 parameter checking wrappers of the above functions.
14230
13070bd3
DH
142312001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
14232
14233 * continuations.c, dynl.c, keywords.c, load.c: Include
14234 strings.h. Thanks to Bill Schottstaedt for the bug report.
14235
2f2b390c
DH
142362001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14237
14238 * backtrace.c (display_header): Make sure that line and column
14239 information is shown independent of whether the port the code was
14240 read from had an associated filename. Thanks to Martin
14241 Grabmueller for providing this patch.
14242
efa40607
DH
142432001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14244
14245 * fports.[ch] (scm_file_port_p): New primitive.
14246
a98bddfd
DH
142472001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14248
14249 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
14250 These are now defined in fports.c, strports.c and vports.c.
14251
14252 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
14253 vports.c (scm_tc16_sfport): Made variables (were macros defined in
14254 tags.h).
14255
14256 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
14257 (scm_make_sfptob): Made static. These return a type code now.
14258
14259 fports.c (scm_init_fports), strports.c (scm_init_strports),
14260 vports.c (scm_init_vports): Create the corresponding port types.
14261
14262 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
14263 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
14264
14265 * init.c (scm_init_guile_1): Make sure strports are initialized
14266 before gdbint.
14267
14268 * ports.[ch] (scm_make_port_type): Changed the return type to
14269 scm_bits_t.
14270
14271 * ports.c (scm_ports_prehistory): Don't create any port types
14272 here.
14273
14274 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
14275 against scm_tc16_fport directly.
14276
0419a528
DH
142772001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
14278
14279 * srcprop.c (scm_set_source_property_x): Fix to handle
14280 (set-source-property! <obj> 'copy <datum>) correctly.
14281
6d36532c
GH
142822001-01-24 Gary Houston <ghouston@arglist.com>
14283
14284 * filesys.c (scm_link): docstring fix.
14285 * fports.h (scm_setfileno): obsolete declaration removed.
14286 * posix.c: bogus popen declaration removed.
14287
14288 * rdelim.c: new file, split from ioext.c.
14289 * rdelim.h: new file, split from ioext.h
14290 * Makefile.am: add rdelim.c and related files.
14291 * init.c: call scm_init_rdelim. include rdelim.h.
14292
3ba5a6c2
DH
142932001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14294
14295 This patch was sent by Martin Grabmueller and makes sure that
14296 parameter errors are reported correctly by the lexicographic
14297 ordering predicates.
14298
14299 * strorder.c (string_less_p, string_ci_less_p): New functions.
14300
14301 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
14302 functionality into string_less_p, string_ci_less_p respectively.
14303 The remaining code is just a wrapper to do the parameter
14304 checking.
14305
14306 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
14307 parameters and call string_less_p instead of scm_string_less_p.
14308
14309 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
14310 Check the parameters and call string_less_ci_p instead of
14311 scm_string_ci_less_p.
14312
e40a4095
DH
143132001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14314
ed6a2db9
DH
14315 This patch modifies scm_display_error to perform parameter
14316 checking. Thanks to Neil Jerram for the bug report.
14317
e40a4095
DH
14318 * backtrace.[ch] (scm_i_display_error): New function.
14319
14320 * backtrace.c (scm_display_error): Added parameter check and
14321 extracted the core functionality into function
14322 scm_i_display_error.
14323
14324 * throw.c (handler_message): Call scm_i_display_error to display
14325 the error message.
14326
f1e06a96
MD
143272001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
14328
14329 * eval.c (SCM_APPLY): Added # args check for application of
14330 procedures with arity 3. (Thanks to Anders Holst.)
14331
30ea841d
DH
143322001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
14333
14334 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
14335
14336 (SCM_OPDIRP): Deprecated.
14337
14338 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
14339 SCM_OPN.
14340
14341 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
14342 Instead, give an explicit error message in case the directory is
14343 closed.
14344
14345 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
14346 instead of SCM_OPENP and SCM_CLOSEDP.
14347
14348 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
14349
312ae976
DH
143502001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
14351
14352 * eval.c (inner_eval, scm_eval): Move all real functionality into
14353 inner_eval. Avoid to copy the expression twice by inlining some
14354 code from scm_i_eval.
14355
4567ed78
DH
143562001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
14357
14358 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
14359 now has to be the last clause, as required by R5RS. Thanks to
14360 Martin Grabmueller for the patch.
14361
10288a09
GH
143622001-01-18 Gary Houston <ghouston@arglist.com>
14363
14364 * ioext.c: further simplify scm_read_string_x_partial by defining
14365 a macro SCM_EBLOCK.
14366
8f379a8f
DH
143672001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14368
14369 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
14370
5c75b29f
DH
143712001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
14372
14373 * __scm.h: Added comment about architecture and compiler
14374 properties that are required by guile.
14375
14376 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14377 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
14378
14379 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
14380
14381 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
14382
14383 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
14384 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
14385
ac0c002c
DH
143862001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
14387
14388 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
14389 to the names in limits.h.
14390
14391 * numbers.c (abs_most_negative_fixnum): Added.
14392
14393 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
14394 fixnum-min) special case.
14395
14396 (scm_big_and): Fix for negative first parameter.
14397
14398 (scm_bit_extract): Fix for fixnum paramters.
14399 Thanks to Rob Browning for the bug report.
14400
14401 (scm_init_numbers): Initialize abs_most_negative_fixnum.
14402
debe0dc2
DH
144032001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
14404
14405 * symbols.c (scm_symbol_bound_p): Fixed comment.
14406 Thanks to Chris Cramer.
14407
8a39e3fc
DH
144082001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
14409
14410 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
14411 Thanks to Bill Schottstaedt.
14412
322ec19d
ML
144132001-01-11 Michael Livshin <mlivshin@bigfoot.com>
14414
9a5fa6e9 14415 from Matthias Köppe:
1c938eb8 14416
322ec19d
ML
14417 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
14418 casts its result, so doesn't yield an lvalue per ANSI C.
14419
14420 * goops.c (s_scm_sys_set_object_setter_x): use
14421 SCM_SET_ENTITY_SETTER.
14422 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
14423
14424 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
14425 its result, so doesn't yield an lvalue per ANSI C.
14426 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
14427 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
14428 SCM_GC_SET_CARD_FLAGS.
14429 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
14430
14431 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
14432
60d02d09
GH
144332001-01-08 Gary Houston <ghouston@arglist.com>
14434
14435 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
14436 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
14437 socket.c (scm_recvfrom): use the new macro, plus minor docstring
14438 changes.
14439 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
14440 for fdes. if current input port is used, check that it's a file
14441 port.
14442
c2da2648
GH
144432001-01-06 Gary Houston <ghouston@arglist.com>
14444
14445 * ioext.c (scm_read_string_x_partial): new procedure, implements
14446 read-string!/partial.
14447 * ports.c (scm_take_from_input_buffers): new procedure used by
14448 scm_read_string_x_partial.
14449 (scm_drain_input): use scm_take_from_input_buffers.
14450
4651d663
MV
144512001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
14452
14453 * validate.h (SCM_VALIDATE_NUMBER): New.
14454
c0a5d888
ML
144552001-01-03 Michael Livshin <mlivshin@bigfoot.com>
14456
14457 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
14458 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
14459 SET_DESTROYED): new defines/macros.
14460 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
14461 (add_to_live_list): takes a `guardian_t *' now, not SCM.
14462 (guardian_print): print more info.
14463 (guardian_apply): check if the guardian is destroyed, and throw an
14464 error if so. take one more optional argument `throw_p'.
14465 (scm_guard): depending on the value of `throw_p', return a boolean
14466 result.
14467 (scm_get_one_zombie): remove redundant property test.
14468 (guardian_t): represent the various (currently 3, I hope nothing
14469 more gets added) boolean fields as bit flags.
14470 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
14471 (scm_destroy_guardian_x): new procedure.
14472
14473 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
14474 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
14475
0c6d2191
GH
144762001-01-01 Gary Houston <ghouston@arglist.com>
14477
14478 * fports.c (fport_write): bugfix: handle short writes for
14479 unbuffered ports too. optimize the buffered case by minimizing
14480 the number of write/flush calls.
14481 (write_all): new helper procedure.
14482
a51fe247 14483The ChangeLog continues in the file: "ChangeLog-2000"
d9f71a07
LC
14484
14485;; Local Variables:
14486;; coding: utf-8
14487;; End: