4036607d9531a218ed1f5c9fccc9e0b833df14b9
[bpt/guile.git] / libguile / ChangeLog
1 2006-08-28 Neil Jerram <neil@ossau.uklinux.net>
2
3 * backtrace.c (scm_display_backtrace_with_highlights): Minor
4 improvements to docstring.
5 (scm_backtrace_with_highlights): Analogous improvements.
6
7 2006-08-11 Neil Jerram <neil@ossau.uklinux.net>
8
9 * stacks.c (scm_last_stack_frame): Correct docstring (returns a
10 frame, not a stack).
11
12 2006-07-18 Rob Browning <rlb@defaultvalue.org>
13
14 * continuations.c: Add __attribute__ ((returns_twice)) to the
15 ia64_getcontext prototype so that gcc will make the right
16 arrangements and avoid an illegal instruction during
17 call-with-current-continuation.
18
19 2006-07-12 Ludovic Courtès <ludovic.courtes@laas.fr>
20
21 * numbers.c (guile_ieee_init): Use regular ANSI C casts rather
22 than C++-style `X_CAST ()'. Patch posted by by Mike Gran.
23
24 2006-06-13 Ludovic Courtès <ludovic.courtes@laas.fr>
25
26 * eq.c: Include "struct.h", "goops.h" and "objects.h".
27 (scm_equal_p): Invoke `scm_i_struct_equalp ()' on structures that
28 are not GOOPS instances.
29 * struct.c: Include "eq.h".
30 (scm_free_structs): Use `SCM_STRUCT_VTABLE_DATA ()' instead of
31 hand-written code.
32 (scm_i_struct_equalp): New.
33 * struct.h (scm_i_struct_equalp): New declaration.
34
35 2006-06-06 Kevin Ryde <user42@zip.com.au>
36
37 * Makefile.am (BUILT_SOURCES): Remove guile.texi, only used by
38 maintainers (with doc/maint/docstring.el). Fixes parallel "make -j2"
39 reported by Mattias Holm.
40
41 2006-06-03 Kevin Ryde <user42@zip.com.au>
42
43 * read.c (s_vector): Conditionalize on SCM_ENABLE_ELISP, to avoid
44 unused variable warning when elisp disabled. Reported by Ryan
45 VanderBijl.
46
47 * throw.c (scm_handle_by_message): Add dummy return value to avoid
48 compiler warning on cygwin. Reported by Ryan VanderBijl.
49
50 * Makefile.am (EXTRA_DOT_X_FILES): Typo in dependency rule, was a
51 duplicate of EXTRA_DOT_DOC_FILES.
52 (DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
53 Add scmconfig.h to dependencies, since these all run cpp. Helps a
54 parallel "make -j2". Reported by Mattias Holm.
55
56 2006-05-30 Kevin Ryde <user42@zip.com.au>
57
58 * ports.c, ports.h (scm_set_port_mark, scm_set_port_free,
59 scm_set_port_print, scm_set_port_equalp, scm_set_port_flush,
60 scm_set_port_end_input, scm_set_port_close, scm_set_port_seek,
61 scm_set_port_truncate, scm_set_port_input_waiting): Use scm_t_bits for
62 port type descriptor, same as scm_make_port_type return value.
63
64 2006-05-30 Marius Vollmer <mvo@zagadka.de>
65
66 * eq.c (scm_equal_p): Use scm_array_equal_p explicitely when one
67 of the arguments is a array. This allows vectors to be equal to
68 one-dimensional arrays.
69
70 2006-05-29 Marius Vollmer <mvo@zagadka.de>
71
72 * throw.c (scm_ithrow): When looking for the jmpbuf, first test
73 that we have a pair before accessing its cdr. Thanks to Bill
74 Schottstaedt!
75
76 2006-05-28 Kevin Ryde <user42@zip.com.au>
77
78 * eval.c, filesys.c: Add malloc.h to get alloca() on mingw. Reported
79 by "The Senator".
80
81 2006-05-27 Marius Vollmer <mvo@zagadka.de>
82
83 * srfi-4.c, strings.c: Replace SCM_C_INLINE with
84 SCM_C_INLINE_KEYWORD. Thanks to Mark Gran!
85
86 2006-05-26 Kevin Ryde <user42@zip.com.au>
87
88 * fports.c (fport_input_waiting): For ioctl, check HAVE_IOCTL as well
89 as defined(FIONREAD), since mingw has FIONREAD but not ioctl().
90 Reported by "The Senator".
91 For select and ioctl, move fdes into those conditionals, to avoid
92 unused variable warning when neither of those used.
93
94 2006-05-23 Kevin Ryde <user42@zip.com.au>
95
96 * fports.c: Remove "fwrite" declaration under "! HAVE_UNISTD_H".
97 It's unused and will be in stdio.h anyway (if it's anywhere).
98
99 2006-05-20 Kevin Ryde <user42@zip.com.au>
100
101 * filesys.c (scm_stat2scm): Test #ifdef S_ISLNK directly, rather than
102 HAVE_S_ISLNK from configure (it was only a #ifdef test anyway).
103
104 * posix.c (scm_mknod): Test #ifdef S_IFLNK before using that (for
105 symlink). Probably can't create symlinks with mknod anyway though.
106
107 * inline.h (scm_is_pair): Add a workaround for i386 gcc 2.95 bad code
108 generation.
109
110 2006-05-15 Kevin Ryde <user42@zip.com.au>
111
112 * simpos.c, simpos.h (scm_primitive__exit): New function.
113 (scm_primitive_exit): Update docstring, no longer the best exit after
114 a fork.
115
116 2006-05-09 Kevin Ryde <user42@zip.com.au>
117
118 * numbers.c (scm_i_divide): For big/big wanting inexact, use mpq_get_d
119 rather than converting to doubles, to avoid inf or nan when the inputs
120 are too big for a double but the quotient does fit. This affects
121 conversions exact->inexact of big fractions.
122
123 * filesys.c (scm_open_fdes): Use open64.
124 (scm_init_filesys): Add O_LARGEFILE.
125
126 * ports.c (scm_seek): Use lseek64.
127 (scm_truncate_file): Use ftruncate64.
128
129 2006-05-08 Marius Vollmer <mvo@zagadka.de>
130
131 * private-gc.h (CELL_P): Also check that the potential pointer is
132 correctly aligned for a cell. Thanks to Miroslav Lichvar!
133
134 2006-04-18 Rob Browning <rlb@defaultvalue.org>
135
136 * _scm.h: Add back error if the size of off_t is unknown. The bug
137 was actually in guile-readline's configuration.
138
139 2006-04-18 Kevin Ryde <user42@zip.com.au>
140
141 * posix.c (scm_mkstemp): Update docstring from the manual, in
142 particular file mode 0600 is not guaranteed.
143
144 2006-04-17 Kevin Ryde <user42@zip.com.au>
145
146 * _scm.h (scm_to_off_t, scm_from_off_t): No error if unknown off_t
147 size, to help the guile-readline build where off_t is unused.
148
149 2006-04-16 Kevin Ryde <user42@zip.com.au>
150
151 * filesys.c (scm_stat2scm, scm_stat, scm_lstat): Use stat or stat64.
152 (scm_readdir): Use readdir64.
153 (scm_copy_file): Use open64 and fstat64, to cope with >2Gb files.
154 * ports.c (scm_truncate_file): Use truncate64. Correction truncate
155 and ftruncate take off_t not size_t.
156 * _scm.h (stat_or_stat64 etc): Macros for selecting LFS64 when
157 available.
158
159 2006-04-06 Kevin Ryde <user42@zip.com.au>
160
161 * fports.c (scm_setvbuf): Fix for not _IOLBF, clear SCM_BUFLINE
162 instead of toggling it. Reported by Ludovic Courtès.
163
164 2006-03-26 Marius Vollmer <mvo@zagadka.de>
165
166 * threads.c (get_thread_stack_base): Use scm_get_stack_base
167 instead of accessing __libc_stack_end directly, and only do this
168 when pthread_attr_getstack is known not to work for the main
169 thread or when not using pthreads at all.
170
171 * gc_os_dep.c (scm_get_stack_base): Abort when the machine type is
172 unknown instead of returning NULL.
173
174 2006-03-21 Ludovic Courtès <ludovic.courtes@laas.fr>
175
176 * numbers.c (scm_i_mem2number): Renamed to
177 scm_c_locale_stringn_to_number.
178 * numbers.c, print.c, read.c: Updated callers.
179 * numbers.h: Update function declaration.
180
181 2006-03-11 Neil Jerram <neil@ossau.uklinux.net>
182
183 * unif.c (string_set): Don't return in a void function. (Reported
184 by Mike Gran.)
185
186 * srfi-4.c (scm_uniform_vector_read_x): Declare base as char*
187 rather than void*, so we can do pointer arithmetic on it.
188 (Reported by Mike Gran.)
189 (s_scm_uniform_vector_write): Ditto.
190
191 2006-03-10 Neil Jerram <neil@ossau.uklinux.net>
192
193 * unif.c (scm_make_shared_array): Don't use SCM_I_ARRAY_BASE when
194 oldra is not an array. (Reported by Steve Juranich.)
195
196 * threads.c (do_unlock): Renamed from "unlock", which is defined
197 in unistd.h on QNX. (Reported by Matt Kraai.)
198
199 2006-03-04 Kevin Ryde <user42@zip.com.au>
200
201 * deprecated.c (scm_i_defer_ints_etc): Show SCM_DEFER_INTS in message,
202 not SCM_CRITICAL_SECTION_START.
203
204 * eval.c, posix.c: Change comments from C++ to C style. Reported by
205 Mike Gran.
206
207 2006-02-28 Kevin Ryde <user42@zip.com.au>
208
209 * unif.c (bitvector_set): Use h->writable_elements not h->elements.
210
211 2006-02-26 Kevin Ryde <user42@zip.com.au>
212
213 * filesys.c (scm_readdir): Use fpathconf for the dirent size when
214 NAME_MAX is not available, which is so on Solaris 10. Report and help
215 by Bill Schottstaedt.
216
217 * srfi-13.c (MY_VALIDATE_SUBSTRING_SPEC_UCOPY): New macro.
218 (scm_string_compare, scm_string_compare_ci, scm_string_lt,
219 scm_string_gt, scm_string_le, scm_string_ge, scm_string_ci_lt,
220 scm_string_ci_gt, scm_string_ci_le, scm_string_ci_ge): In comparisons
221 use "unsigned char", not signed char. This ensures comparisons are
222 the same as `char<?' etc, and is also the same as guile 1.6 did.
223 Reported by Sven Hartrumpf.
224
225 2006-02-19 Mikael Djurfeldt <mdj@neurologic.cc>
226
227 * random.c: Test for SCM_HAVE_T_UINT64 instead of
228 SCM_HAVE_T_INT64.
229 (scm_i_uniform32, scm_i_uniform32, scm_i_init_rstate): Use
230 scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
231 scm_t_int32.
232
233 2006-01-04 Ludovic Court<E8>s <ludovic.courtes@laas.fr>
234
235 * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
236 argument. Don't refer to SCM_GC_CELLS_COLLECTED and
237 SCM_CELLS_ALLOCATED. If SEG->FIRST_TIME, let CELLS_COLLECTED as zero.
238 Take into account SEG->SPAN when computing CELLS_SWEPT.
239 (scm_i_sweep_segment): Take one more argument, similarly.
240 (scm_i_sweep_all_segments): Likewise.
241 (scm_i_sweep_some_segments): Likewise.
242 (scm_i_adjust_min_yield): Change the way MIN_CELLS is computed: do not
243 refer to SCM_GC_CELLS_COLLECTED.
244
245 * gc-freelist.c (scm_i_adjust_min_yield): Take one more
246 argument, an `scm_i_sweep_statistics' object.
247 Change the way DELTA is collected: don't take into account
248 SCM_GC_CELLS_COLLECTED_1, only SWEEP_STATS.COLLECTED.
249
250 * gc-malloc.c (scm_realloc): Pass an extra argument
251 to `scm_i_sweep_all_segments ()'.
252
253 * gc.c (gc_start_stats): Updated accordingly.
254 (gc_end_stats): Take an additional SWEEP_STATS argument.
255 Decrement SCM_CELLS_ALLOCATED after calls to `scm_i_sweep_* ()'.
256 (scm_gc_for_newcell): Updated callers of `scm_i_sweep_*'.
257 Decrement SCM_CELLS_ALLOCATED.
258 (scm_i_gc): Likewise.
259
260 * private-gc.h (scm_i_sweep_*): Updated function
261 prototypes accordingly.
262 (scm_t_sweep_statistics): New type.
263 (scm_i_sweep_statistics_init): New macro.
264 (scm_i_sweep_statistics_sum): New macro
265
266 2006-02-14 Ludovic Courtès <ludovic.courtes@laas.fr>
267
268 * strings.c (scm_i_take_stringbufn): Register LEN+1 bytes instead of
269 LEN. Without this, too much collectable memory gets unregistered,
270 which results in an underflow of SCM_MALLOCATED in
271 `decrease_mtrigger()'.
272
273 * gc-malloc.c (decrease_mtrigger): Make sure SIZE is lower than or
274 equal to SCM_MALLOCATED.
275
276 2006-02-13 Marius Vollmer <mvo@zagadka.de>
277
278 * eval.c (scm_eval_body): Use scm_i_dynwind_pthread_mutex_lock
279 oinstead of scm_dynwind_pthread_mutex_lock so that it works when
280 configured --without-threads.
281 (SCM_APPLY, CEVAL): Likewise. Thanks to Han-Wen Nienhuys!
282
283 2006-02-12 Marius Vollmer <mvo@zagadka.de>
284
285 * unif.c (scm_dimensions_to_uniform_array): Use the prototype for
286 filling when the fill parameter is omitted, as documented, but
287 turn #\nul into 0 since s8 arrays (signified by a #\nul prototype)
288 can not store characters.
289
290 2006-02-09 Neil Jerram <neil@ossau.uklinux.net>
291
292 * socket.c (scm_c_make_socket_address): Pass address_size pointer
293 on to scm_fill_sockaddr call.
294
295 2006-02-04 Neil Jerram <neil@ossau.uklinux.net>
296
297 * throw.h (scm_c_catch, scm_c_with_throw_handler,
298 scm_catch_with_pre_unwind_handler, scm_with_throw_handler): New.
299
300 * throw.c (SCM_JBPREUNWIND, SCM_SETJBPREUNWIND): New.
301 (struct pre_unwind_data): New, replaces struct lazy_catch.
302 (scm_c_catch): New, replaces scm_internal_catch as the primary
303 catch API for C code; adds pre-unwind handler support.
304 (scm_internal_catch): Now just a wrapper for scm_c_catch, for back
305 compatibility.
306 (tc16_pre_unwind_data, pre_unwind_data_print,
307 make_pre_unwind_data, SCM_PRE_UNWIND_DATA_P): Renamed from
308 "lazy_catch" equivalents.
309 (scm_c_with_throw_handler): New, replaces scm_internal_lazy_catch
310 as the primary C API for a "lazy" catch.
311 (scm_internal_lazy_catch): Now just a wrapper for
312 scm_c_with_throw_handler, for back compatibility.
313 (scm_catch_with_pre_unwind_handler): Renamed from scm_catch; adds
314 pre-unwind handler support.
315 (scm_catch): Now just a wrapper for
316 scm_catch_with_pre_unwind_handler, for back compatibility.
317 (scm_with_throw_handler): New.
318 (scm_lazy_catch): Update comment to say that the handler can
319 return, and what happens if it does.
320 (toggle_pre_unwind_running): New.
321 (scm_ithrow): When identifying the throw target, take running
322 flags into account. In general, change naming of things from
323 "lazy_catch" to "pre_unwind". When throwing to a throw handler,
324 don't unwind the dynamic context first. Add dynwind framing to
325 manage the running flag of a throw handler. If a lazy catch or
326 throw handler returns, rethrow the same exception again. Add
327 pre-unwind support to the normal catch case (SCM_JMPBUFP).
328
329 * root.c (scm_internal_cwdr): Add NULL args to
330 scm_i_with_continuation_barrier call.
331
332 * dynwind.c: Change comment mentioning lazy-catch to mention
333 pre-unwind data and throw handler also.
334
335 * continuations.h (scm_i_with_continuation_barrier): Add
336 pre-unwind handler args.
337
338 * continuations.c (scm_i_with_continuation_barrier): Add
339 pre-unwind handler args, and pass on to scm_c_catch (changed from
340 scm_internal_catch).
341 (c_handler): Remove scm_handle_by_message_noexit call.
342 (scm_c_with_continuation_barrier): Call
343 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
344 as the pre-unwind handler.
345 (scm_handler): Remove scm_handle_by_message_noexit call.
346 (s_scm_with_continuation_barrier): Call
347 scm_i_with_continuation_barrier with scm_handle_by_message_noexit
348 as the pre-unwind handler.
349
350 2006-02-04 Kevin Ryde <user42@zip.com.au>
351
352 * gc-mark.c (scm_mark_all): Fix c99-isms "loops" and "again" variables.
353
354 2006-02-03 Kevin Ryde <user42@zip.com.au>
355
356 * list.c, list.h (scm_list): Restore this function for use from C.
357 It's a complete no-op but in theory might used by someone.
358
359 2006-01-30 Marius Vollmer <mvo@zagadka.de>
360
361 * eval.c (scm_eval_body): Lock source_mutex with a dynwind context
362 so that it gets unlocked in all cases.
363 (SCM_APPLY, CEVAL): Likewise.
364
365 2006-01-29 Marius Vollmer <mvo@zagadka.de>
366
367 * ramap.c: (scm_array_map_x): Don't use scm_array_p, use
368 scm_is_typed_array instead.
369
370 Renamed the "frames" that are related to dynamic-wind to "dynamic
371 contexts. Renamed all functions from scm_frame_ to scm_dynwind_.
372 Updated documentation.
373
374 Disabled "futures":
375
376 * futures.h, futures.c: Wrap whole contents in "#if 0"/"#endif".
377 * eval.c, init.c: Comment out all 'future' related things.
378
379 2006-01-28 Marius Vollmer <mvo@zagadka.de>
380
381 * inline.h, pairs.c (scm_is_pair): Moved scm_is_pair from pairs.c
382 to inline.h to make it inline.
383
384 2005-12-19 Ludovic Courtès <ludovic.courtes@laas.fr>
385
386 * strings.c (scm_i_take_stringbufn): New.
387 (scm_i_c_take_symbol): New.
388 (scm_take_locale_stringn): Use `scm_i_take_stringbufn ()'.
389
390 * strings.h (scm_i_c_take_symbol): New.
391 (scm_i_take_stringbufn): New.
392
393 * symbols.c (lookup_interned_symbol): New function.
394 (scm_i_c_mem2symbol): New function.
395 (scm_i_mem2symbol): Use `lookup_symbol ()'.
396 (scm_from_locale_symbol): Use `scm_i_c_mem2symbol ()'. This avoids
397 creating a new Scheme string.
398 (scm_from_locale_symboln): Likewise.
399 (scm_take_locale_symbol): New.
400 (scm_take_locale_symboln): New.
401
402 * symbols.h (scm_take_locale_symbol): New.
403 (scm_take_locale_symboln): New.
404
405 2006-01-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
406
407 * gc-card.c ("sweep_card"): don't count scm_tc_free_cell for
408 free_count.
409
410 2005-11-29 Han-Wen Nienhuys <hanwen@xs4all.nl>
411
412 * regex-posix.c (s_scm_regexp_exec): list the offending pattern
413 upon error
414
415 2005-12-29 Neil Jerram <neil@ossau.uklinux.net>
416
417 * fluids.c (next_fluid_num): [From Ludovic Courtès:] Don't trigger
418 the GC when allocated_fluids_len is zero.
419
420 2005-12-14 Neil Jerram <neil@ossau.uklinux.net>
421
422 * load.c (the_reader, the_reader_fluid_num): New.
423 (scm_primitive_load): Support custom reader.
424 (scm_init_load): Init the_reader and the_reader_fluid_num; export
425 the_reader as `current-reader'.
426
427 * scmsigs.c (do_read_without_guile): Use the "raw_data" passed in
428 (rather than an uninitialized pointer on the stack).
429
430 2005-12-07 Marius Vollmer <mvo@zagadka.de>
431
432 Reported by Bruce Korb:
433
434 * init.c (invoke_main_func): Don't call exit here. Throws that
435 are only caught by scm_with_guile will bypass us and would cause
436 scm_boot_guile to return erroneously.
437 (scm_boot_guile): Expect scm_with_guile to return and call exit
438 here, passing it an appropriate exit code.
439
440 From Andy Wingo:
441
442 * script.c (scm_find_executable): Compile fix -- fgetc returns an
443 unsigned char cast to an int, or -1 for EOS.
444
445 2005-12-06 Marius Vollmer <mvo@zagadka.de>
446
447 * srfi-4.h, srfi-4.c, srfi-4.i.c (take_uvec): Make BASE pointer
448 non-const.
449 (scm_take_u8vector, etc): Likewise. Thanks to Ludovic Courtès!
450
451 * threads.h, threads.c (scm_t_guile_ticket, scm_leave_guile,
452 scm_enter_guile): Removed from public API. See comment at
453 scm_without_guile for the rationale.
454
455 * scmsigs.c (read_without_guile): New.
456 (signal_delivery_thread): Use it instead of
457 scm_leave_guile/read/scm_enter_guile.
458
459 From Stephen Compall:
460
461 * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax.
462 (CEVAL): Evaluate SRFI 61 cond clauses.
463
464 2005-12-06 Ludovic Courtès <ludovic.courtes@laas.fr>
465
466 * gc-card.c (scm_i_card_statistics): Return if BITVEC is NULL.
467 This was typically hit when running `gc-live-object-stats' right
468 after starting Guile.
469
470 2005-11-30 Kevin Ryde <user42@zip.com.au>
471
472 * srfi-13.c (scm_string_append_shared): No copying if just one
473 non-empty string in args.
474
475 2005-11-26 Kevin Ryde <user42@zip.com.au>
476
477 * gc-mark.c (scm_mark_all): Change C++ comment to C comment. Reported
478 by Ludovic Courtès.
479
480 * list.c (list): Should be "primitive" in SCM_SNARF_DOCS, not
481 "register".
482
483 * random.c (scm_i_copy_rstate, scm_c_make_rstate): Don't test for
484 scm_malloc returning NULL, it never does that.
485 * putenv.c (putenv): Likewise.
486
487 * socket.c (scm_fill_sockaddr): Remove SCM_C_INLINE_KEYWORD, this is
488 much too big to want to inline.
489
490 2005-11-17 Ludovic Courtès <ludovic.courtes@laas.fr>
491
492 * print.c (EXIT_NESTED_DATA): Before popping from the stack, reset
493 the value at its top. This fixes a reference leak.
494 (PUSH_REF): Perform `pstate->top++' after calling
495 `PSTATE_STACK_SET ()' in order to avoid undesired potential side
496 effects.
497
498 2005-11-12 Ludovic Courtès <ludovic.courtes@laas.fr>
499
500 * gc.c (scm_weak_vectors): Removed.
501
502 2005-11-12 Kevin Ryde <user42@zip.com.au>
503
504 * socket.c (scm_setsockopt): Missing @defvar in docstring. Reported
505 by Ludovic Courtès.
506
507 2005-11-07 Marius Vollmer <mvo@zagadka.de>
508
509 * stime.c (scm_mktime): Use scm_frame_critical_section instead of
510 SCM_CRITICAL_SECTION_START/END since the code inside the critical
511 section might exit non-locally.
512
513 2005-11-04 Neil Jerram <neil@ossau.uklinux.net>
514
515 * eval.c (sym_instead): New symbol.
516 (ENTER_APPLY): Remove optional use of a continuation when making
517 trap call.
518 (scm_debug_opts): Change doc for 'cheap option to make clear that
519 it is now obsolete.
520 (CEVAL, SCM_APPLY): Remove optional use of a continuation when
521 making trap calls, and implement substitution of eval expressions
522 and return values using the values that the trap call handlers
523 return.
524
525 * debug.h (SCM_CHEAPTRAPS_P): Removed.
526
527 2005-10-27 Ludovic Courtès <ludovic.courtes@laas.fr>
528
529 * socket.c (scm_fill_sockaddr): No need to check NULL from scm_malloc.
530 (scm_connect, scm_bind, scm_sendto): Accept sockaddr object.
531 (scm_addr_vector): Renamed to _scm_from_sockaddr, update usages.
532 (scm_from_sockaddr, scm_to_sockaddr, scm_make_socket_address,
533 scm_c_make_socket_address): New functions.
534 * socket.h: Add prototypes.
535
536 2005-10-24 Kevin Ryde <user42@zip.com.au>
537
538 * socket.c (scm_init_socket): Add IPPROTO_IP, IPPROTO_TCP,
539 IPPROTO_UDP. Remove SOL_IP, SOL_TCP, SOL_UDP. The former are in
540 POSIX spec examples, the latter are not available on for instance
541 NetBSD.
542
543 * socket.c (scm_getsockopt, scm_setsockopt): Update docstrings from
544 posix.texi.
545
546 * stime.c (scm_strftime): Update docstring from posix.texi.
547
548 2005-10-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
549
550 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not portable enough.
551
552 * null-threads.h, pthread-threads.h
553 (SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Removed.
554 (scm_i_pthread_mutexattr_recursive): New.
555
556 * threads.c (scm_i_pthread_mutexattr_recursive): Declare.
557 (scm_i_critical_section_mutex): Do not initialize statically.
558 (scm_threads_prehistory): Initialize
559 scm_i_pthread_mutexattr_recursive and scm_i_critical_section_mutex
560 here.
561
562 * eval.c (source_mutex): Do not initialiaze statically.
563 (scm_init_eval): Do it here, using
564 scm_i_pthread_mutexattr_recursive.
565
566 2005-09-05 Marius Vollmer <mvo@zagadka.de>
567
568 * print.h (SCM_PRINT_KEYWORD_STYLE_I, SCM_PRINT_KEYWORD_STYLE):
569 New.
570 (sym_reader): New.
571 (scm_print_opts): Added "quote-keywordish-symbols" option.
572 (quote_keywordish_symbol): New, for evaluating the option.
573 (scm_print_symbol_name): Use it.
574 (scm_init_print): Initialize new option to sym_reader.
575
576 2005-08-15 Neil Jerram <neil@ossau.uklinux.net>
577
578 * eval.c (eval_letrec_inits): New.
579 (CEVAL): Eval letrec initializer forms using eval_letrec_inits.
580
581 2005-08-12 Marius Vollmer <mvo@zagadka.de>
582
583 * numbers.c: Use scm_from_bool instead of SCM_BOOL. Thanks to
584 Peter Gavin!
585
586 2005-08-12 Kevin Ryde <user42@zip.com.au>
587
588 * srfi-13.c (scm_string_for_each_index): Correction to docstring.
589
590 2005-08-06 Kevin Ryde <user42@zip.com.au>
591
592 * srfi-13.c (scm_string_any, scm_string_every, scm_string_tabulate,
593 scm_string_trim, scm_string_trim_right, scm_string_trim_both,
594 scm_string_index, scm_string_index_right, scm_string_skip,
595 scm_string_skip_right, scm_string_count, scm_string_map,
596 scm_string_map_x, scm_string_for_each, scm_string_for_each_index,
597 scm_string_filter, scm_string_delete): Use scm_t_trampoline_1 for
598 procedures called in loops.
599
600 2005-08-02 Kevin Ryde <user42@zip.com.au>
601
602 * strports.c (st_flush): Increase buffer by 1.5x when growing, to
603 avoid lots of copying where previoulsy growing by only 80 bytes at a
604 time.
605
606 2005-08-01 Marius Vollmer <mvo@zagadka.de>
607
608 * modules.h, modules.c (scm_eval_closure_module): Removed, we
609 already have scm_lookup_closure_module, which does the same thing.
610
611 2005-08-01 Marius Vollmer <mvo@zagadka.de>
612
613 New marking algorithm for weak hashtables that fixes the problem
614 that references from the non-weak value to the associated weak
615 key (for example) would prevent the entry from ever being dropped.
616
617 Guardians have been changed back to their original semantics and
618 are no longer greedy and no longer drop cycles.
619
620 * gc-mark.c (scm_mark_all): Do not rely on hooks to run the weak
621 hashtable and guardian machinery but call the relevant functions
622 directly.
623
624 * guardians.h, guardians.c, deprecated.h,
625 deprecated.c (scm_destroy_guardian_x, scm_guardian_greedy_p,
626 scm_guardian_destroyed_p, scm_guard, scm_get_one_zombie):
627 Deprecated and moved into deprecated.[ch].
628
629 * guardians.h, guardians.c: Mostly rewritten.
630 (scm_i_init_guardians_for_gc,
631 scm_i_identify_inaccessible_guardeds,
632 scm_i_mark_inaccessible_guardeds): New.
633 (scm_make_guardian): Removed greedy_p argument.
634
635 * weaks.h, weaks.c (SCM_I_WVECT_TYPE, SCM_I_SET_WVECT_TYPE): New.
636 (SCM_I_WVECT_N_ITEMS, SCM_I_SET_WVECT_N_ITEMS): New.
637 (SCM_WVECTF_NOSCAN, SCM_WVECT_NOSCAN_P): Removed.
638 (scm_weaks_prehistory): Removed.
639 (scm_i_init_weak_vectors_for_gc, scm_i_mark_weak_vector,
640 scm_i_mark_weak_vectors_non_weaks,
641 scm_i_remove_weaks_from_weak_vectors, scm_i_remove_weaks): New.
642 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
643 scm_scan_weak_vectors): Removed.
644
645 * hashtab.h (scm_i_scan_weak_hashtables): New.
646 * hashtab.c (make_hash_table, scm_i_rehash): Do not use
647 SCM_WVECTF_NOSCAN.
648 (hashtable_print): Use SCM_HASHTABLE_N_ITEMS instead of
649 t->n_items.
650 (scan_weak_hashtables, scm_i_scan_weak_hashtables): Renamed former
651 to latter. Do not scan the alists themselves, this is done by the
652 weak vector code now. Just update the element count.
653
654 * vectors.h (SCM_I_WVECT_TYPE, SCM_I_WVECT_EXTRA): Renamed former
655 to latter. The type is now only part of the cell word.
656 (SCM_I_SET_WVECT_TYPE, SCM_I_SET_WVECT_EXTRA): Likewise.
657
658 * init.c (scm_i_init_guile): Do not call scm_weaks_prehistory.
659
660 2005-07-18 Mikael Djurfeldt <mdj@d14n36.pdc.kth.se>
661
662 Some changes towards making it possible to run Guile on the EM64T
663 platform.
664
665 * gc.c (scm_gc_stats): Bugfix: Measure size of the type we are
666 mallocating for (unsigned long *bounds).
667
668 * hashtab.c (scm_i_rehash): Cast SCM_HASHTABLE_FLAGS (table) to
669 scm_t_bits before storing them in the type word.
670
671 * gc.c (tag_table_to_type_alist): Modified type of c_tag from
672 scm_t_bits to int.
673
674 2005-07-12 Kevin Ryde <user42@zip.com.au>
675
676 * eval.c (scm_dbg_make_iloc): Should be SCM_IFRAMEMAX and
677 SCM_IDISTMAX, and cast uints through scm_t_bits to make gcc happy.
678 * pairs.c (scm_error_pair_access): Use scm_from_locale_string rather
679 than scm_makfrom0str.
680 Reported by Ken Raeburn.
681
682 * gc-card.c (scm_dbg_gc_get_bvec): Change return from long* to
683 scm_t_c_bvec_long*, gcc 4 doesn't like different pointer targets when
684 returning SCM_GC_CARD_BVEC.
685
686 * pairs.c (scm_error_pair_access): Plain ascii ' in error message
687 rather than latin-1 acute accent, the latter may not print on all
688 terminals.
689
690 * srfi-13.c (scm_string_filter, scm_string_delete): Strip leading and
691 trailing deletions, so as to return a substring if those are the only
692 changes.
693
694 2005-07-10 Kevin Ryde <user42@zip.com.au>
695
696 * socket.c (scm_inet_pton, scm_inet_ntop): Pointer cast to scm_t_uint8
697 for scm ipv6 funcs, gcc 4 is picky about char* vs uchar*.
698 (scm_getsockopt, scm_accept, scm_getsockname, scm_getpeername,
699 scm_recvfrom) Use socklen_t, gcc 4 is picky about int* vs socklen_t*.
700
701 2005-07-01 Han-Wen Nienhuys <hanwen@xs4all.nl>
702
703 * gc-card.c (scm_i_card_statistics): init tag.
704
705 * gc.c (tag_table_to_type_alist): check type of tag. Should be integer.
706
707 2005-06-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
708
709 * fports.c (s_scm_open_file): add the b flag for binary to the doc
710 string.
711
712 2005-06-25 Kevin Ryde <user42@zip.com.au>
713
714 * srfi-13.c (scm_string_filter, scm_string_delete): Partial revert
715 last change, use plain copy-on-write substrings, the individual
716 descriptions in the srfi don't mention shared storage (only the
717 introduction does).
718
719 * strings.c (scm_take_locale_stringn): Use realloc to make room for
720 null-terminator, rather than mallocing a whole new block.
721 (scm_take_locale_string): Use scm_take_locale_stringn len==-1.
722
723 2005-06-12 Marius Vollmer <mvo@zagadka.de>
724
725 * ramap.c (scm_array_index_map_x): First test for real arrays,
726 then check for generalized vectors. This ensures that the
727 generalized vector case need only work with zero-origin ranges.
728 (scm_ra_eqp, scm_ra_compare): Use the new array handle functions
729 to access the target array, making these functions work with all
730 kinds of arrays, not just bit arrays.
731
732 * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c,
733 gh_list.c, gh_predicates.c: Deprecated everything.
734
735 * environments.c (environment_default_folder,
736 environment_default_observer): Do not use gh_call3, gh_call1.
737
738 2005-06-10 Han-Wen Nienhuys <hanwen@xs4all.nl>
739
740 * modules.c (s_scm_eval_closure_module): new function. Return the
741 module inside an eval-closure.
742
743 * gc.c (scm_init_storage): make scm_stand_in_procs a weak_key hash
744 table. This means that procedure properties are GC'd if the
745 procedure dies.
746
747 2005-06-11 Kevin Ryde <user42@zip.com.au>
748
749 * srfi-13.c (scm_string_filter, scm_string_delete): For char and
750 charset cases, count chars kept and build a string in a second pass,
751 rather than using a cons cell for every char kept. Use a shared
752 substring when nothing removed (such sharing is allowed by the srfi).
753
754 2005-06-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
755
756 * gc.c (tag_table_to_type_alist): convert tag number to "tag %d"
757 string, so live object stats can be sorted with string<?.
758
759 2005-06-06 Marius Vollmer <mvo@zagadka.de>
760
761 * print.c (iprin1): When writing a string, collect all characters
762 that can be printed directly into one call to scm_lfwrite.
763 Previously, every character was output with its own call to
764 write(2) on unbuffered ports.
765
766 * eval.c (scm_eval_options_interface): Use
767 scm_frame_critical_section instead of SCM_CRITICAL_SECTION_START
768 and SCM_CRITICAL_SECTION_END.
769
770 * unif.c (scm_array_in_bounds_p): First test for real arrays, then
771 check for generalized vectors. This ensures that the generalized
772 vector case need only work with zero-origin ranges.
773
774 2005-06-06 Kevin Ryde <user42@zip.com.au>
775
776 * srfi-13.c (scm_string_split): Compare char/char in scan. Mixing an
777 unsigned int SCM_CHAR and a char string meant an 8-bit char was never
778 matched.
779
780 2005-06-05 Marius Vollmer <mvo@zagadka.de>
781
782 * eval.c: Added comment on how to make case 1.1 of
783 r5rs_pitfall.test succeed.
784
785 From Jan Nieuwenhuizen <janneke@gnu.org>. Thanks!
786
787 * hashtab.h: Bugfix: use SCM_API (WAS: extern).
788
789 * socket.c: Remove obsolete comment about socklen_t.
790 (s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.
791
792 * numbers.h (isnan)[__MINGW32__]: Remove.
793
794 * Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
795 DEFAULT_INCLUDES when cross compiling.
796
797 * threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.
798
799 * stime.c (scm_strftime)[!HAVE_TM_ZONE]: Use
800 SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS. (Changed slightly
801 from Jan's patch.)
802
803 2005-05-22 Marius Vollmer <mvo@zagadka.de>
804
805 * unif.c (scm_make_shared_array): Add old base to new base since
806 scm_array_handle_pos does not include the base.
807 (scm_aind): Likewise.
808
809 * ports.c (scm_putc, scm_puts): Assert that the port argument is a
810 output port.
811
812 2005-05-12 Neil Jerram <neil@ossau.uklinux.net>
813
814 Mac OS X compile warning fixes, reported by Richard Todd.
815
816 * unif.c (scm_i_read_array): Declare rank as ssize_t, to guarantee
817 that it is signed.
818
819 * strports.c (st_resize_port): Add unsigned char cast.
820 (scm_mkstrport): Make read/write_buf cast unsigned.
821
822 * srfi-13.c (string_titlecase_x): Add unsigned char cast.
823
824 * rdelim.c (scm_read_line): Initialize slen.
825
826 * load.c (scm_search_path): Remove weird >=1, and add
827 parentheses to clarify conditions.
828
829 * hash.c (scm_hasher): Add const unsigned char cast.
830
831 * gh_data.c (gh_chars2byvect): Add scm_t_int8 cast.
832
833 2005-05-11 Neil Jerram <neil@ossau.uklinux.net>
834
835 Fix C99isms reported by Ludovic Courtès:
836
837 * threads.c (s_scm_lock_mutex): Don't declare msg in middle of
838 code.
839
840 * gc.c (s_scm_gc_live_object_stats): Don't declare alist in middle
841 of code.
842
843 * gc-card.c (scm_i_card_statistics): Don't declare tag in middle
844 of code.
845 (scm_i_card_statistics): Add block for declarations of tag_as_scm
846 and current.
847
848 2005-05-10 Neil Jerram <neil@ossau.uklinux.net>
849
850 * scmsigs.c (signal_delivery_thread): Return a value, to avoid
851 compile warning reported by Werner Scheinast.
852
853 2005-04-30 Han-Wen Nienhuys <hanwen@xs4all.nl>
854
855 * list.h: remove scm_list()
856
857 * fluids.c (DYNAMIC_STATE_NEXT_LOC): new macro for use with
858 SCM_DEBUG_CELL_ACCESSES
859 (FLUID_NEXT_LOC): idem.
860
861 2005-04-30 Kevin Ryde <user42@zip.com.au>
862
863 * numbers.c (scm_divide): Correction to 1/complex and <any>/complex,
864 need to test abs(re)<abs(im) for choice of cases, otherwise divide by
865 zero when re==0 and im<0. Reported by Jean Crepeau.
866
867 2005-04-25 Kevin Ryde <user42@zip.com.au>
868
869 * ramap.c (scm_array_map_x): Allow no source args, add num args checks
870 to subr_1, subr_2, subr_2o and dsubr cases. No source args only has a
871 few sensible uses (like filling with a random number generator say),
872 but has been allowed in the past and so should be kept.
873
874 2005-04-23 Kevin Ryde <user42@zip.com.au>
875
876 * hashtab.c (scm_hashx_remove_x): Need to pass "closure" to
877 scm_hash_fn_remove_x.
878
879 * list.c (scm_cons_star): Don't modify the rest list, it belongs to
880 the caller when cons* is reached through apply.
881
882 * list.c (list): Use scm_list_copy, so as to produce a fresh list when
883 list is called using apply, under the debugging evaluator.
884 (scm_list): Remove.
885
886 * list.c, list.h (scm_make_list): New code, moving make-list from
887 boot-9.scm.
888
889 2005-04-14 Kevin Ryde <user42@zip.com.au>
890
891 * numbers.c, numbers.h (scm_oneplus, scm_oneminus): New functions,
892 converted from scheme code in boot-9.scm.
893
894 2005-04-11 Kevin Ryde <user42@zip.com.au>
895
896 * srfi-13.c (scm_string_concatenate, scm_string_concatenate_shared):
897 Validate list argument, scm_string_append and scm_string_append_shared
898 don't do that to their rest argument (in a normal build).
899
900 2005-04-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
901
902 * hashtab.h, hashtab.c (scm_t_hashtable): Removed 'closure' field. The
903 closure can not be stored since it is no longer valid at GC time.
904 (make_hash_table): Initialize 'hash_fn' field.
905 (scm_i_rehash): Only store hash_fn in hash table when closre is
906 NULL.
907 (rehash_after_gc): Only call scm_i_rehash when 'hash_fn' is
908 non-NULL. Always use a NULL closure.
909 (scm_hash_fn_create_handle_x): Also rehash when table contains too
910 few entries.
911
912 2005-03-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
913
914 * hashtab.h, hashtab.c (scm_hash_fx_remove_x): Removed delete_fn
915 argument; always use scm_delq_x. The delete_fn function works on
916 the handle, not the key, and it therefore makes no sense to make
917 it configurable. Changed all callers.
918 (scm_hashx_remove_x): Likewise. Also, exported to Scheme.
919 (scm_hash_clear): Accept plain vectors as hashtables.
920 (scm_delx_x): Removed.
921
922 2005-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
923
924 * inline.h (scm_double_cell): use __asm__ iso. asm, to maintain
925 compatibility with gcc -std=c99.
926
927 2005-03-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
928
929 * async.h (scm_mask_ints): Removed left over reference to
930 scm_root.
931
932 * threads.c: Removed fprintf debug statements.
933
934 2005-03-24 Neil Jerram <neil@ossau.uklinux.net>
935
936 * debug.c (scm_make_memoized): Restore use of SCM_UNPACK.
937
938 2005-03-23 Neil Jerram <neil@ossau.uklinux.net>
939
940 * debug.c (scm_make_memoized): Remove unnecessary critical
941 section, and simplify by using SCM_RETURN_NEWSMOB.
942
943 2005-03-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
944
945 * strings.h (SCM_STRING_UCHARS): Added missing argument.
946
947 2005-03-18 Kevin Ryde <user42@zip.com.au>
948
949 * arbiters.c (FETCH_STORE) [generic C]: Should be
950 scm_i_scm_pthread_mutex_lock/unlock now. Reported by Ludovic Courtès.
951
952 2005-03-13 Kevin Ryde <user42@zip.com.au>
953
954 * numbers.c, numbers.h (scm_i_clonebig): Remove static, so can use in
955 srfi-60.
956
957 * numbers.c (scm_logior): Must scm_i_normbig results as per scm_logand,
958 because OR-ing bits into a negative can reduce the value to an inum.
959
960 * numbers.c (scm_num_eq_p): On 64-bit systems, be careful about
961 casting inum to double since that can lose precision.
962
963 2005-03-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
964
965 * threads.h, threads.c (scm_i_thread): Added gc_running_p field.
966 (guilify_self_1): Initialize it.
967
968 * gc.h, gc.c (SCM_FREECELL_P): Removed for good.
969 (scm_block_gc, scm_gc_heap_lock): Removed. Removed all uses.
970 (scm_gc_running_p): Now a macro that refers to the scm_i_thread
971 field.
972 (scm_i_sweep_mutex): Now a non-recursive mutex. GC can not happen
973 recursively.
974 (scm_igc, scm_i_gc): Renamed former to latter. Changed all uses.
975 Do not lock scm_i_sweep_mutex, which is now non-recursive, or set
976 scm_gc_running_p. Do not run the scm_after_gc_c_hook.
977 (scm_gc): Lock scm_i_sweep_mutex, set scm_gc_running_p and run the
978 scm_after_gc_c_hook here.
979 (scm_gc_for_new_cell): Set scm_gc_running_p here and run the
980 scm_after_gc_c_hook when a full GC has in fact been performed.
981 (scm_i_expensive_validation_check): Call scm_gc, not scm_i_gc.
982
983 * gc-segment.c (scm_i_get_new_heap_segment): Do not check
984 scm_gc_heap_lock.
985
986 * gc-malloc.c (scm_realloc, increase_mtrigger): Set
987 scm_gc_running_p while the scm_i_sweep_mutex is locked.
988
989 * inline.h (scm_cell, scm_double_cell): Do not check
990 scm_gc_running_p, allocation during sweeping is OK.
991
992 * gdbint.c (SCM_BEGIN_FOREIGN_BLOCK, SCM_END_FOREIGN_BLOCK): Do
993 not set scm_block_gc.
994
995 * init.c (scm_i_init_guile): Do not set scm_block_gc.
996
997 * deprecation.c (scm_c_issue_deprecation_warning): Use malloc
998 instead of scm_malloc. The latter can not be used during GC.
999
1000 2005-03-09 Marius Vollmer <mvo@zagadka.de>
1001
1002 * script.c (scm_compile_shell_switches): Added 2005 to Copyright
1003 years.
1004
1005 2005-03-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1006
1007 * gc-card.c (scm_i_sweep_card): Do not increase/decrease
1008 scm_gc_running_p. Sweeping can happen in parallel with
1009 allocation.
1010
1011 * inline.h: Updated comments for current threading implementation.
1012
1013 * threads.h, threads.c (scm_i_frame_single_threaded): Removed.
1014 (scm_i_thread): Removed unused signal_asyncs field.
1015 (threads_mark): Do not mark it.
1016 (guilify_self_1): Do not initialize it. Do initialize
1017 continuation_root field.
1018 (do_thread_exit): Do not remove thread from all_threads list.
1019 (on_thread_exit): Do it here, after leaving guile mode.
1020 (sleep_level): Removed.
1021 (scm_i_thread_put_to_sleep): Leave thread_admin_mutex locked when
1022 returning. Do not support recursive sleeps.
1023 (scm_i_thread_wake_up): Expect thread_admin_mutex to be locked on
1024 entry. Do not support recursive sleeps.
1025
1026 * fluids.c (ensure_state_size, ensure_all_state_sizes,
1027 resize_all_states): Collapsed ensure_state_size and
1028 ensure_all_state_sizes into one function named resize_all_states.
1029 Allocate new vectors outside of single threaded region. Do only
1030 simple things inside that region.
1031 (scm_make_fluid, scm_make_dynamic_state): Lock fluid_admin_mutex
1032 while adding to the global lists.
1033
1034
1035 2005-03-08 Marius Vollmer <mvo@zagadka.de>
1036
1037 libltdl is no longer distributed. We expect it to be installed
1038 already.
1039
1040 * Makefile.am (INCLUDES): Removed @LTDLINCL@.
1041 (libguile_la_LIBADD): Removed @LIBLTDL@.
1042
1043 2005-03-07 Marius Vollmer <mvo@zagadka.de>
1044
1045 * threads.h, async.h, threads.c (SCM_CRITICAL_SECTION_START,
1046 SCM_CRITICAL_SECTION_END): Moved here from threads.h since now
1047 they also block/unblock execution of asyncs and call
1048 scm_async_click which is declared in async.h but threads.h can not
1049 include async.h since async.h already includes threads.h.
1050 (scm_i_critical_section_level): New, for checking mistakes in the
1051 use of the SCM_CRITICAL_SECTION_* macros.
1052 (scm_i_critical_section_mutex): Make it a recursive mutex so that
1053 critical sections can be nested.
1054
1055 * throw.c (scm_ithrow): Abort when scm_i_critical_section_level is
1056 not zero.
1057
1058 * threads.h, threads.c (scm_frame_lock_mutex): New.
1059 (scm_frame_critical_section): Take mutex as argument.
1060 (framed_critical_section_mutex): New, used as default for above.
1061 (scm_init_threads): Initialize it.
1062 (scm_threads_prehistory): Do not initialize thread_admin_mutex and
1063 scm_i_critical_section_mutex; both are initialized statically.
1064
1065 * continuation.c, deprecated.c, goops.c, guardians.c keywords.c,
1066 libguile_la-arrays.loT, objprop.c, ports.c, smob.c, sort.s,
1067 srcprop.c, stime.c, struct.c, throw.c, regex-posix.c: Include
1068 "libguile/async.h" for SCM_CRITICAL_SECTION_START/END.
1069
1070 * debug.c (scm_debug_options): Replace
1071 SCM_CRITICAL_SECTION_START/END with a frame and
1072 scm_frame_critical_section.
1073
1074 * continuations.c (scm_make_continuation): No longer a critical
1075 section.
1076 (scm_dynthrow): Abort when scm_i_critical_section_level is
1077 not zero.
1078
1079 2005-03-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1080
1081 * threads.c (scm_try_mutex): Renamed argument for consistency.
1082
1083 * root.c (scm_call_with_dynamic_root): New docstring.
1084
1085 * eval.c: Define _GNU_SOURCE.
1086
1087 2005-03-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1088
1089 Big merge from the mvo-thread-cleanup branch. The main changes
1090 are:
1091
1092 - The dynamic roots functionality has been split into dynamic
1093 states and continuations barriers. Fluids have been
1094 reimplemented and can now be garbage collected.
1095
1096 - Initialization of Guile now works in a multi-thread friendly
1097 manner. Threads can freely enter and leave guile mode.
1098
1099 - Blocking on mutexes or condition variables or while selecting
1100 can now be reliably interrupted via system asyncs.
1101
1102 - The low-level threading interface has been removed.
1103
1104 - Signals are delivered via a pipe to a dedicated 'signal delivery
1105 thread'.
1106
1107 - SCM_DEFER_INTS, SCM_ALLOW_INTS etc have been deprecated.
1108
1109 * throw.c (scm_handle_by_message): Exit only the current thread,
1110 not the whole process.
1111 (scm_handle_by_message_noexit): Exit when catching 'quit.
1112
1113 * scmsigs.c (take_signal, signal_delivery_thread,
1114 start_signal_delivery_thread, ensure_signal_delivery_thread,
1115 install_handler): Reimplemented signal delivery as explained in
1116 the comments.
1117
1118 * pthreads-threads.h (scm_i_pthread_t, scm_i_pthread_self,
1119 scm_i_pthread_create, scm_i_pthread_detach, scm_i_pthread_exit,
1120 scm_i_sched_yield, scm_i_pthread_sigmask,
1121 SCM_I_PTHREAD_MUTEX_INITIALIZER,
1122 SCM_I_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, scm_i_pthread_mutex_t ,
1123 scm_i_pthread_mutex_init, scm_i_pthread_mutex_destroy,
1124 scm_i_pthread_mutex_trylock, scm_i_pthread_mutex_lock,
1125 scm_i_pthread_mutex_unlock, SCM_I_PTHREAD_COND_INITIALIZER,
1126 scm_i_pthread_cond_t, scm_i_pthread_cond_init,
1127 scm_i_pthread_cond_destroy, scm_i_pthread_cond_signal,
1128 scm_i_pthread_cond_broadcast, scm_i_pthread_cond_wait,
1129 scm_i_pthread_cond_timedwait, scm_i_pthread_once_t,
1130 SCM_I_PTHREAD_ONCE_INIT, scm_i_pthread_once, scm_i_pthread_key_t ,
1131 scm_i_pthread_key_create, scm_i_pthread_setspecific,
1132 scm_i_pthread_getspecific, scm_i_scm_pthread_mutex_lock,
1133 scm_i_frame_pthread_mutex_lock, scm_i_scm_pthread_cond_wait,
1134 scm_i_scm_pthread_cond_timedwait): Provide the obvious mapping
1135 when using pthreads.
1136 * null-threads.c, null-threads.h: Provide dummy definitions for
1137 the above symbols when not using pthreads.
1138
1139 * modules.h, modules.c (scm_frame_current_module): New.
1140
1141 * load.c (scm_primitive_load): Use scm_i_frame_current_load_port
1142 instead of scm_internal_dynamic_wind.
1143
1144 * init.h, init.c (restart_stack, start_stack): Removed.
1145 (scm_boot_guile, invoke_main_func): Simply use scm_with_guile.
1146 (scm_boot_guile_1): Removed.
1147 (scm_i_init_mutex): New.
1148 (really_cleanup_for_exit, cleanup_for_exit): New.
1149 (scm_init_guile_1, scm_i_init_guile): Renamed former to latter.
1150 Moved around some init funcs. Call
1151 scm_init_threads_default_dynamic_state. Register cleanup_for_exit
1152 with atexit.
1153
1154 * hashtab.c (scm_hash_fn_create_handle_x, scm_hash_fn_remove_x):
1155 Use "!scm_is_eq" instead of "!=".
1156
1157 * ge-scmconfig.c, gen-scmconfig.h.in (SCM_I_GSC_USE_COOP_THREADS,
1158 SCM_USE_COOP_THREADS): Removed.
1159
1160 * gc.c (scm_igc): Take care that scm_gc_running_p is properly
1161 maintained. Unlock scm_i_sweep_mutex before running
1162 scm_after_gc_c_hook.
1163 (scm_permanent_object): Allocate outside of critical section.
1164 (cleanup): Removed.
1165
1166 * fluids.h, fluids.c: Reimplemented completely.
1167 (SCM_FLUID_NUM, SCM_FAST_FLUID_REF,
1168 SCM_FAST_FLUID_SET): Reimplemented as functions.
1169 (scm_is_fluid): New.
1170 (scm_i_make_initial_fluids, scm_i_copy_fluids): Removed.
1171 (scm_make_dynamic_state, scm_dynamic_state_p,
1172 scm_is_dynamic_state, scm_current_dynamic_state,
1173 scm_set_current_dynamic_state, scm_frame_current_dynamic_state,
1174 scm_c_with_dynamic_state, scm_with_dynamic_state,
1175 scm_i_make_initial_dynamic_state, scm_fluids_prehistory): New.
1176
1177 * feature.c (progargs_fluid): New.
1178 (scm_program_arguments, scm_set_program_arguments): Use it instead
1179 of scm_progargs.
1180 (scm_init_feature): Allocate it. Also, only add "threads" feature
1181 when SCM_USE_PTHREAD_THREADS is true.
1182
1183 * eval.c (scm_makprom): Use scm_make_recursive_mutex instead of
1184 scm_make_rec_mutex, with all the consequences.
1185 (scm_eval_x, scm_eval): Use scm_frame_begin etc instead of
1186 scm_internal_dynamic_wind. Handle dynamic states as second
1187 argument.
1188
1189 * threads.h, threads.c (scm_internal_select): Renamed to
1190 scm_std_select and discouraged old name.
1191 (scm_thread_sleep, scm_thread_usleep): Likewise, as scm_std_sleep
1192 and scm_std_usleep.
1193 (scm_tc16_fair_mutex, scm_tc16_fair_condvar, SCM_MUTEXP,
1194 SCM_FAIR_MUTEX_P, SCM_MUTEX_DATA, SCM_CONDVARP,
1195 SCM_FAIR_CONDVAR_P, SCM_CONDVAR_DATA, SCM_THREADP,
1196 SCM_THREAD_DATA): Removed.
1197 (SCM_I_IS_THREAD, SCM_I_THREAD_DATA): New.
1198 (scm_i_thread): New.
1199 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
1200 Use scm_assert_smob_type.
1201 (scm_c_scm2thread, scm_thread_join, scm_thread_detach,
1202 scm_thread_self, scm_thread_yield, scm_mutex_init,
1203 scm_mutex_destroy, scm_mutex_trylock, scm_mutex_unlock,
1204 scm_rec_mutex_init, scm_rec_mutex_destroy, scm_make_rec_mutex,
1205 scm_rec_mutex_free, scm_rec_mutex_lock, scm_rec_mutex_trylock,
1206 scm_cond_init, scm_cond_destroy, scm_cond_wait,
1207 scm_cond_timedwait, scm_cond_signal, scm_cond_broadcast,
1208 scm_key_create, scm_key_delete, scm_setspecific, scm_getspecific,
1209 scm_thread_select): Removed. Replaced with scm_i_pthread
1210 functions as appropriate.
1211 (scm_in_guile, scm_outside_guile): Removed.
1212 (scm_t_guile_ticket, scm_leave_guile, scm_enter_guile): Return and
1213 take a ticket.
1214 (scm_with_guile, scm_without_guile, scm_i_with_guile_and_parent):
1215 New.
1216 (scm_i_frame_single_threaded): New.
1217 (scm_init_threads_default_dynamic_state): New.
1218 (scm_i_create_thread): Removed.
1219 (scm_make_fair_mutex, scm_make_fair_condition_variable): Removed.
1220 (scm_make_recursive_mutex): New.
1221 (scm_frame_critical_section): New.
1222 (SCM_CURRENT_THREAD, SCM_I_CURRENT_THREAD): Renamed former to
1223 latter, changed all uses.
1224 (scm_i_dynwinds, scm_i_setdynwinds, scm_i_last_debug_frame,
1225 scm_i_set_last_debug_frame): New, use them instead of scm_root
1226 stuff.
1227 (SCM_THREAD_LOCAL_DATA, SCM_SET_THREAD_LOCAL_DATA,
1228 scm_i_root_state_key,m scm_i_set_thread_data): Removed.
1229 (scm_pthread_mutex_lock, scm_frame_pthread_mutex_lock,
1230 scm_pthread_cond_wait, scm_pthread_cond_timedwait).
1231 (remqueue): Allow the removal of already removed cells. Indicate
1232 whether a real removal has happened.
1233 (scm_thread): Removed, replaced with scm_i_thread.
1234 (make_thread, init_thread_creatant): Removed.
1235 (cur_thread): Removed.
1236 (block_self, unblock_from_queue): New.
1237 (block, timed_block, unblock): Removed.
1238 (guilify_self_1, guilify_self_2, do_thread_exit,
1239 init_thread_key_once, init_thread_key,
1240 scm_i_init_thread_for_guile, get_thread_stack_base,
1241 scm_init_guile): New initialisation method.
1242 (scm_call_with_new_thread, scm_spawn_thread): Use it to simplify
1243 thread creation.
1244 (fair_mutex, fat_mutex, etc, fair_condvar, fat_condvar): Renamed
1245 "fair" to fat and implemented new semantics, including reliable
1246 interruption.
1247 (all_threads): Now a pointer to a scm_i_thread, not a SCM.
1248 (scm_threads_mark_stacks): Explicitly mark handle.
1249 (scm_std_select): Allow interruption by also selecting on the
1250 sleep_pipe.
1251 (scm_i_thread_put_to_sleep): Handle recursive requests for
1252 single-threadedness.
1253 (scm_threads_prehistory, scm_init_threads): Put current thread
1254 into guile mode via guileify_self_1 and guileify_self_2,
1255 respectively.
1256
1257 * fluid.h (SCM_FLUIDP): Deprecated.
1258
1259 * coop-threads.c: Removed.
1260
1261 * continuations.h, continuations.c (scm_with_continuation_barrier,
1262 scm_c_with_continuation_barrier, scm_i_with_continuation_barrier):
1263 New.
1264
1265 * async.h, async.c (scm_i_setup_sleep, scm_i_reset_sleep): New.
1266 (async_mutex): New.
1267 (scm_async_click): Protected with async_mutex. Do not deal with
1268 signal_asyncs, which are gone. Set cdr of handled async cell to
1269 #f.
1270 (scm_i_queue_async_cell): Protected with async_mutex. Interrupt
1271 current sleep.
1272 (scm_system_async_mark_for_thread): Do not use scm_current_thread
1273 since that might not work during early initialization.
1274
1275 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
1276 SCM_REALLOW_INTS): Deprecated by moving into deprecated.h and
1277 deprecated.c. Replaced all uses with SCM_CRITICAL_SECTION_START
1278 and SCM_CRITICAL_SECTION_END.
1279 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): Removed. Replaced with
1280 SCM_CRITICAL_SECTION_START/END.
1281
1282 * Makefile.am (modinclude_HEADER): Removed threads-plugin.h.
1283 (libguile_la_SOURCES): Added null-threads.c
1284 (EXTRA_libguile_la_SOURCES): Removed pthread-threads.c and
1285 threads-plugin.c.
1286 * pthread-threads.c, threads-plugin.c, threads-plugin.h: Removed.
1287
1288 * root.h, root.c (scm_tc16_root, SCM_ROOTP, SCM_ROOT_STATE,
1289 scm_root_state, scm_stack_base, scm_save_regs_gc_mark,
1290 scm_errjmp_bad, scm_rootcont, scm_dynwinds, scm_progargs,
1291 scm_last_debug_frame, scm_exitval, scm_cur_inp, scm_outp,
1292 scm_cur_err, scm_cur_loadp, scm_root, scm_set_root,
1293 scm_make_root): Removed or deprecated. Replaced with references
1294 to the current thread, dynamic state, continuation barrier, or
1295 some fluid, as appropriate.
1296 (root_mark, root_print): Removed.
1297 (scm_internal_cwdr): Reimplemented guts with
1298 scm_frame_current_dynamic_state and
1299 scm_i_with_continuation_barrier.
1300 (scm_dynamic_root): Return current continuation barrier.
1301
1302
1303 2005-02-28 Marius Vollmer <mvo@zagadka.de>
1304
1305 * socket.c (scm_setsockopt): Handle IP_ADD_MEMBERSHIP and
1306 IP_DROP_MEMBERSHIP options. Also, reorganized the code a bit for
1307 cleanliness.
1308 (scm_init_socket): Define IP_ADD_MEMBERSHIP and
1309 IP_DROP_MEMBERSHIP.
1310 Thanks to Greg Troxel!
1311
1312 2005-02-27 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1313
1314 * gh.h: Bugfix: Include <libguile.h> outside of the extern "C"
1315 block.
1316
1317 2005-02-25 Marius Vollmer <mvo@zagadka.de>
1318
1319 * hashtab.c (scm_i_rehash): Remove elements from old bucket vector
1320 so that no two weak alist vectors share a spine.
1321 (scm_hash_fn_create_handle_x): Deal with a possible rehashing
1322 during GC before inserting the new alist cell.
1323
1324 2005-02-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1325
1326 * hashtab.c (scm_i_rehash): Cope with the case that a GC modifies
1327 the hashtable.
1328 (scm_hash_fn_create_handle_x): Likewise.
1329 * vectors.h (SCM_I_SET_WVECT_TYPE): New, for use in scm_i_rehash.
1330
1331 2005-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1332
1333 * unif.c (prototype_to_type): Bugfix: Don't compare prototype to
1334 the prototypical examples mentioned in the old reference manual.
1335 Instead keep the old semantics of dispatching on type. (Yes, this
1336 is extremely ugly, but the whole point of keeping the deprecated
1337 interface is not to break old code.)
1338
1339 2005-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1340
1341 * deprecated.h (SCM_ARRAY_DIMS): Rename scm_i_attay_dims -->
1342 scm_i_array_dims.
1343
1344 2005-01-28 Kevin Ryde <user42@zip.com.au>
1345
1346 * numbers.c (scm_ash): Rewrite using shifts, much faster than
1347 integer-expt and multiply/divide. Inexacts and fractions no longer
1348 supported (they happened to work before for left shifts, but not
1349 right). Don't really need inexacts and fractions, since ash is
1350 documented as a "bitwise operation", and all the rest of those only
1351 take exact integers.
1352
1353 2005-01-27 Han-Wen Nienhuys <hanwen@xs4all.nl>
1354
1355 * gc-card.c (scm_i_card_statistics): map structs, closures and
1356 subrs to one tag.
1357
1358 * gc.c (s_scm_gc_live_object_stats): return alist, not hashtable.
1359 (tag_table_to_type_alist): ignore unknown types.
1360
1361 * gc-segment.c (scm_i_all_segments_statistics): new function.
1362 (scm_i_heap_segment_statistics): new function
1363
1364 * gc.c (s_scm_gc_live_object_stats): new GUILE callable: return
1365 statistics on the number of live objects of each type.
1366
1367 * gc-card.c (scm_i_tag_name): new function.
1368 (scm_i_card_statistics): new function.
1369
1370 2005-01-24 Kevin Ryde <user42@zip.com.au>
1371
1372 * posix.c (scm_setlocale): Force errno=EINVAL for an error, since
1373 POSIX and C99 don't document errno being set. Reported by Bruno
1374 Haible.
1375 (scm_flock): Update docstring from manual.
1376
1377 * random.c (scm_i_init_rstate): Compare w to -1 not 0xffffffffUL, now
1378 that it's an scm_t_int32. Otherwise gcc 3.4 says it's always false on
1379 a 64-bit system.
1380
1381 * scmsigs.c (scm_sigaction_for_thread): Use scm_to_long for
1382 sa_handler, needs to be a long on 64-bit systems where int is only 32
1383 bits.
1384
1385 2005-01-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1386
1387 * environments.c (obarray_enter, obarray_replace): Call
1388 SCM_HASHTABLE_INCREMENT when adding a new entry.
1389
1390 * objects.c: Include goops.h for the scm_class_of prototype.
1391
1392 * hashtab.c (hashtable_size, HASHTABLE_SIZE_N): Restrict hashtable
1393 sizes to be smaller than the maximum lengths of vectors.
1394
1395 2005-01-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1396
1397 * ports.c, smob.c: Include "libguile/goops.h".
1398
1399 * objects.h, objects.c, goops.c, goops.h (scm_class_boolean,
1400 scm_class_char, scm_class_pair, scm_class_procedure,
1401 scm_class_string, scm_class_symbol,
1402 scm_class_procedure_with_setter, scm_class_primitive_generic,
1403 scm_class_vector, scm_class_null, scm_class_real,
1404 scm_class_complex, scm_class_integer, scm_class_fraction,
1405 scm_class_unknown, scm_port_class, scm_smob_class,
1406 scm_no_applicable_method, scm_class_of): Moved from objects to
1407 goops since they are only useable once goops has been loaded.
1408 (scm_classes_initialized): Removed.
1409 (scm_class_of): Do not check it.
1410 (create_standard_classes): Do not set it.
1411
1412 2005-01-17 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1413
1414 * objects.h, objects.c (scm_classes_initialized): New.
1415 (scm_class_of): Signal error when scm_classes_initialized is zero.
1416 * goops.c (create_standard_classes): Set scm_classes_initialized
1417 to one.
1418
1419 * random.c (scm_random_solid_sphere_x): Use
1420 scm_c_generalized_vector_length instead of
1421 scm_uniform_vector_length.
1422
1423 2005-01-16 Marius Vollmer <mvo@zagadka.de>
1424
1425 * script.c (scm_compile_shell_switches): Removed debugging output.
1426
1427 2005-01-15 Kevin Ryde <user42@zip.com.au>
1428
1429 * numbers.c (scm_logtest, scm_logbit_p, scm_integer_expt): Update
1430 docstrings from manual.
1431 * random.c (scm_random_solid_sphere_x): Update docstring from manual.
1432
1433 2005-01-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1434
1435 * random.c: Don't check for definedness of SCM_HAVE_T_INT64, check
1436 its value.
1437
1438 Implement u64 and s64 uniform numeric vectors with bignums when
1439 scm_t_uint64 and scm_t_int64 are not available.
1440
1441 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_take_u64vector,
1442 scm_array_handle_u64_elements,
1443 scm_array_handle_u64_writable_elements, scm_u64vector_elements,
1444 scm_u64vector_writable_elements): Do not define when scm_t_uint64
1445 is not available.
1446 (scm_take_s64vector, scm_array_handle_s64_elements,
1447 scm_array_handle_s64_writable_elements, scm_s64vector_elements,
1448 scm_s64vector_writable_elements): Likewise for scm_t_int64.
1449 (uvec_sizes, uvec_print, uvec_equalp): Use SCM bignums when
1450 scm_t_int64/scm_t_uint64 are not available.
1451 (uvec_mark): New, to mark the bignums.
1452 (alloc_uvec): Initialize bignums.
1453 (uvec_fast_ref): Return bignums directly.
1454 (scm_uint64_min, scm_uint64_max, scm_int64_min, scm_int64_max,
1455 assert_exact_integer): New.
1456 (uvec_fast_set): Use them to validate the bignums.
1457 (scm_init_srfi_4): Set mark function of smob when needed.
1458 Initialize scm_uint64_min, scm_uint64_max, scm_int64_min,
1459 scm_int64_max.
1460
1461 Recognize 1.4 -e syntax.
1462
1463 * script.c (sym_at, sym_atat, sym_main, all_symbols): New.
1464 (scm_compile_shell_switches): Use them to recognize and convert
1465 1.4 "-e" syntax.
1466
1467 2005-01-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1468
1469 * deprecated.h, deprecated.c, strings.h, strings.c: Turn all
1470 deprecated features that once were macros but are now functions
1471 back into macros.
1472
1473 2005-01-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1474
1475 * eval.c, debug.h (SCM_WARN_DEPRECATED): New debug option.
1476 * deprecation.c (scm_issue_deprecation_warning,
1477 scm_c_issue_deprecation_warning_fmt): Use it.
1478 (mode): Removed.
1479 (print_summary): New.
1480 (scm_init_deprecation): Initialize SCM_WARN_DEPRECATED instead of
1481 mode.
1482
1483 Deprecated SCM_ARRAY* macros.
1484
1485 * unif.h, unif.c, ramap.c, vectors.c, srfi-4.c, srfi-4.i.c
1486 (SCM_ARRAYP, SCM_I_ARRAYP): Renamed former to latter internal
1487 version. Changed all uses.
1488 (scm_tc16_array, scm_i_tc16_array,
1489 scm_tc16_enclosed_array, scm_i_tc16_enclosed_array,
1490 SCM_ARRAY_FLAG_CONTIGUOUS, SCM_I_ARRAY_FLAG_CONTIGUOUS,
1491 SCM_ENCLOSE_ARRAYP, SCM_I_ENCLOSE_ARRAYP,
1492 SCM_ARRAY_NDIM, SCM_I_ARRAY_NDIM,
1493 SCM_ARRAY_CONTP, SCM_I_ARRAY_CONTP,
1494 SCM_ARRAY_MEM, SCM_I_ARRAY_MEM,
1495 SCM_ARRAY_V, SCM_I_ARRAY_V,
1496 SCM_ARRAY_BASE, SCM_I_ARRAY_BASE,
1497 SCM_ARRAY_DIMS, SCM_I_ARRAY_DIMS,
1498 scm_t_array, scm_i_t_array): Likewise.
1499 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
1500 Moved from unif.h to unif.c.
1501 (scm_c_array_rank): New.
1502 (scm_array_rank): Reimplement using it.
1503
1504 * deprecated.h, deprecated.c (SCM_ARRAYP, SCM_ARRAY_NDIM,
1505 SCM_ARRAY_CONTP, SCM_ARRAY_MEM, SCM_ARRAY_V, SCM_ARRAY_BASE,
1506 SCM_ARRAY_DIMS, scm_t_array): New deprecated versions.
1507
1508 2005-01-11 Marius Vollmer <mvo@zagadka.de>
1509
1510 * ramap.c: Replace uses of scm_make_ra with scm_i_make_ra.
1511 (GVREF, GVSET): New abbreviations. Use them everywhere instead of
1512 scm_c_generalized_vector_ref and scm_cvref, and
1513 scm_c_generalized_vector_set_x, respectively.
1514 (RVREF, IVDEP, BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
1515 UNARY_ELTS_CODE, UNARY_PAIR_ELTS_CODE): Removed since unused.
1516
1517 * unif.h, unif.c (indices_to_pos, scm_array_handle_pos): Renamed
1518 former to latter and made public. Changed all uses.
1519 (scm_i_make_ra): Made public, changed tag param to enclosed flag.
1520 (scm_make_ra): Deprecated, changed all uses to scm_i_make_ra.
1521 (scm_i_shap2ra): New internal version of scm_shap2ra.
1522 (scm_shap2ra): Deprecated, changed all uses to scm_i_shap2ra.
1523 (scm_i_ra_set_contp): New internal version of scm_ra_set_contp.
1524 (scm_ra_set_contp): Deprecated, changed all uses to
1525 scm_i_ra_set_contp.
1526 (scm_cvref, scm_aind, scm_raprin1): Deprecated.
1527
1528 2005-01-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1529
1530 * eval.c (scm_eval): Added example to docstring. Thanks to Issac
1531 Trotts!
1532
1533 * unif.c (scm_list_to_typed_array): Allow the specification of the
1534 upper bound as well. This is needed for empty arrays.
1535 (l2ra): Give needed number of elements in error message.
1536 (scm_i_print_array): Print length information for arrays that need
1537 it.
1538 (scm_i_read_array): Parse it.
1539
1540 * deprecated.h, deprecated.c (SCM_CHARS, SCM_UCHARS, SCM_LENGTH,
1541 scm_i_object_chars, scm_i_object_length): Brought back from the
1542 dead.
1543
1544 2005-01-10 Marius Vollmer <mvo@zagadka.de>
1545
1546 * ramap.c: Replaced single-index uses of scm_array_set_x with
1547 scm_c_generalized_vector_set_x.
1548
1549 * unif.c (scm_array_rank, scm_array_dimensions,
1550 scm_shared_array_offset, scm_shared_array_increments,
1551 scm_array_ref, scm_array_set_x): Use scm_t_array_handle operations
1552 to simplify code and make it more general.
1553 (scm_shared_array_root): Work with all kinds of arrays, including
1554 naked vectors.
1555 (indices_to_pos): New.
1556 (scm_make_shared_array): Use it instead of scm_aind; use handle
1557 for oldra.
1558
1559 2005-01-10 Kevin Ryde <user42@zip.com.au>
1560
1561 * posix.c (scm_mkstemp): Update docstring from manual.
1562
1563 * stime.c (scm_mktime): Missing default errno=EINVAL from prev change.
1564
1565 2005-01-09 Marius Vollmer <mvo@zagadka.de>
1566
1567 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_i_uniform_vector_ref_proc,
1568 scm_i_uniform_vector_set_proc): New.
1569 (u8ref, u8set, s8ref, s8set, etc): New.
1570 (uvec_reffers, uvec_setters): New.
1571 (uvec_to_list): Use generic scm_array_handle_ref instead of
1572 uvec_fast_ref since scm_array_handle_ref should be faster now.
1573 (coerce_to_uvec, scm_c_uniform_vector_ref,
1574 scm_c_uniform_vector_set_x): Likewise.
1575
1576 * unif.h, unif.c, inline.h (scm_i_t_array_ref, scm_i_t_array_set):
1577 New.
1578 (scm_t_array_handle): Added ref, set, elements and
1579 writable_elements for fast inline operation of
1580 scm_array_handle_ref and scm_array_handle_set.
1581 (scm_array_handle_ref, scm_array_handle_set): Moved to inline.h
1582 and replaced with inline code that simply calls the ref/set
1583 members of the handle.
1584 (enclosed_ref, vector_ref, string_ref, bitvector_ref, memoize_ref,
1585 enclosed_set, vector_set, string_set, bitvector_set, memoize_set):
1586 New.
1587 (scm_array_handle_get): Initialize ref/set fields to memoize_ref
1588 and memoize_set.
1589 (scm_bitvector_fill_x, scm_bitvector_to_list, scm_bit_count,
1590 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
1591 scm_bit_invert_x): Correctly multiply index with increment in the
1592 general case.
1593
1594 * unif.c (scm_array_handle_set): Correctly execute only one
1595 alternative. D'Oh!
1596 (scm_list_to_typed_array, l2ra): Use scm_t_array_handle to fill
1597 the array; this covers all cases with much simpler code.
1598
1599 * srfi-4.c (scm_uniform_element_size): Deprecated implementation
1600 as well.
1601
1602 2005-01-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1603
1604 * srfi-4.c (uvec_type): New.
1605 (uvec_to_list, uvec_ref, uvec_set_x, scm_c_uniform_vector_ref,
1606 scm_c_uniform_vector_x): Use it to get concrete type.
1607
1608 * unif.h (scm_t_array_dim): Changed type of members to ssize_t, to
1609 fit the docs.
1610
1611 * unif.c (ra2l): Handle zero rank arrays.
1612 (scm_i_print_array): Print zero rank arrays specially.
1613 (tag_to_type): Return #t for an empty tag, not the empty symbol.
1614 (scm_i_read_array): Allow zero rank arrays.
1615
1616 2005-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1617
1618 * hashtab.h, hashtab.c (SCM_HASHTAB_BUCKET_LOC): Removed.
1619 (scan_weak_hashtables): Rewrote its use with SCM_HASHTAB_BUCKET
1620 and SCM_SET_HASHTAB_BUCKET.
1621
1622 * print.h, print.c (scm_print_state, SCM_PRINT_STATE_LAYOUT):
1623 Removed ref_stack field.
1624 (PSTATE_STACK_REF, PSTATE_STACK_SET): New, for accessing the stack
1625 of a print state. Use them everywhere instead of ref_stack.
1626
1627 * srfi-4.h (scm_uniform_element_size): Deprecated for real.
1628
1629 * srfi-4.c: Include deprecation.h.
1630
1631 * vectors.h, vectors.c, unif.h, unif.c, deprecated.h,
1632 deprecated.c, eq.c
1633 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Removed.
1634 (scm_vector_elements, scm_vector_writable_elements,
1635 scm_generalized_vector_get_handle): Moved to vectors.[hc] from
1636 unif.[hc].
1637 (SCM_SIMPLE_VECTOR_LOC): Removed.
1638 (SCM_VECTOR_MAX_LENGTH, SCM_VECTOR_LENGTH, SCM_VELTS,
1639 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET,
1640 scm_vector_equal_p): Moved from vectors.[hc] to deprecated.[hc].
1641 (scm_vector_equal_p, scm_i_vector_equal_p): Renamed former to
1642 latter. Changed use in eq.c.
1643
1644 2005-01-07 Marius Vollmer <mvo@zagadka.de>
1645
1646 Make the uniform vector routines also deal with one dimensional
1647 arrays.
1648
1649 * srfi-4.c (SCM_IS_UVEC): New, use it instead of
1650 SCM_SMOB_PREDICATE in this file.
1651 (is_uvec): Also recognize one-dimensional uniform numeric arrays
1652 of the right type.
1653 (scm_is_uniform_vector): Likewise.
1654 (uvec_fast_ref): Made BASE param const.
1655 (uvec_writable_elements, uvec_elements): New.
1656 (uvec_to_list, uvec_ref, uvec_set_x, uvec_length,
1657 scm_c_uniform_vector_length, scm_c_uniform_vector_ref,
1658 scm_c_uniform_set_x): Use them to also deal with one-dimensional
1659 arrays.
1660 (scm_uniform_vector_ref, scm_uniform_vector_set_x): Deprecate old
1661 argument convention.
1662 (scm_uniform_vector_to_list): Let uvec_to_list do all the
1663 checking.
1664 (scm_uniform_vector_length): Use uvec_length.
1665
1666 2005-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1667
1668 * srfi-4.h, srfi-4.c (scm_c_uniform_vector_element_size,
1669 scm_c_uniform_vector_size): Removed.
1670 (scm_array_handle_uniform_element_size): New.
1671
1672
1673 * unif.h (scm_array_handle_ref, scm_array_handle_set): Changed
1674 type of POS parameter to be signed, positions can be negative.
1675 (scm_array_handle_release): New, changed all uses of
1676 scm_t_array_handle to properly call it.
1677 (scm_vector_get_handle, scm_generalized_vector_get_handle):
1678 Renamed former to latter, changed all uses.
1679
1680 2005-01-05 Marius Vollmer <mvo@zagadka.de>
1681
1682 Updated bitvector routines to also use scm_t_array_handles.
1683
1684 * unif.h (scm_bitvector_elements,
1685 scm_bitvector_writable_elements): Use a scm_t_array_handle and
1686 deliver offset, length and increment to caller. Changed all uses.
1687 (scm_bitvector_release_elements,
1688 scm_frame_bitvector_release_elements,
1689 scm_bitvector_release_writable_elements,
1690 scm_frame_bitvector_release_writable_elements): Removed.
1691 (scm_array_handle_bit_elements,
1692 scm_array_handle_bit_writable_elements,
1693 scm_array_handle_bit_elements_offset): New.
1694 (scm_make_typed_array): The special value for non-initialized
1695 arrays is now SCM_UNSPECIFIED. The old special value SCM_BOOL_F
1696 was a valid value to fill bitvectors with, so it can't really be
1697 specialed out.
1698
1699 2005-01-04 Kevin Ryde <user42@zip.com.au>
1700
1701 * stime.c (scm_strftime): Free t.tm_zone produced by bdtime2c.
1702 Reported by Bill Schottstaedt.
1703
1704 2005-01-02 Marius Vollmer <mvo@zagadka.de>
1705
1706 * sort.c (quicksort): Added INC parameter for non-contigous
1707 vectors.
1708 (quicksort1): New, for contigous vectors. Both functions are
1709 generated from the same code by including "quicksort.i.c".
1710 (scm_restricted_vector_sort_x): Call one of quicksort and
1711 quicksort1, depending on increment of vector.
1712 (scm_sort): Simply call scm_sort_x on a copy of the list or
1713 vector.
1714 (scm_merge_vector_x, scm_merge_vector_step): Changed indices to
1715 size_t, added inc parameter.
1716 (scm_stable_sort_x): Allocate temporary storage as Scheme vector
1717 so that it doesn't leak.
1718 (scm_stable_sort): Simply call scm_stable_sort_x on a copy of the
1719 list or vector.
1720
1721 * ramap.c (scm_array_map_x): Do not try to convert fill value
1722 before filling, any necessary conversion is done while storing.
1723
1724 * gc-card.c (scm_i_sweep_card): Call scm_i_vector_free instead of
1725 doing it inline.
1726
1727 * hashtab.c, hashtab.h (SCM_HASHTABLE_BUCKETS): Removed.
1728 (SCM_HASHTABLE_BUCKET, SCM_HASHTABLE_BUCKET_LOC): New. Replaced
1729 all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
1730
1731 * tags.h, weaks.c, vports.c, hashtab.c, convert.c, sort.c,
1732 convert.c, convert.h, convert.i.c, deprecated.c, environments.c,
1733 eval.c, filesys.c, fluids.c, gc-mark.c, gh.h, gh_data.c, goops.c,
1734 hash.c, init.c, libguile_la-arrays.loT, modules.c, net_db.c,
1735 objects.c, ports.c, posix.c, print.c, random.c, read.c,
1736 regex-posix.c, scmsigs.c, socket.c, stime.c, symbols.c: Use new
1737 vector elements API or simple vector API, as appropriate. Removed
1738 SCM_HAVE_ARRAYS ifdefery. Replaced all uses of
1739 SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
1740
1741 * srfi-4.h, srfi-4.c,
1742 srfi-4.i.c (scm_array_handle_uniform_elements,
1743 scm_array_handle_uniform_writable_elements,
1744 scm_uniform_vector_elements,
1745 scm_uniform_vector_writable_elements):
1746 (scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
1747 scm_t_array_handle, deliver length and increment.
1748 (scm_array_handle_<foo>_elements,
1749 scm_array_handle_<foo>_writable_elements): New.
1750
1751 * gen-scmconfig.h.in (SCM_I_GSC_HAVE_ARRAYS): Removed.
1752 * gen-scmconfig.c: Hard code SCM_HAVE_ARRAYS to "1".
1753
1754 * unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
1755 scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
1756 scm_array_handle_set, scm_array_handle_elements
1757 scm_array_handle_writable_elements, scm_vector_get_handle): New.
1758 (scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
1759 scm_dimensions_to_uniform_array): Deprecated for real.
1760 (scm_array_p, scm_i_array_p): Use latter for SCM_DEFINE since
1761 snarfing wont allow a mismatch between C and Scheme arglists.
1762 (scm_make_shared_array, scm_enclose_array): Correctly use
1763 scm_c_generalized_vector_length instead of
1764 scm_uniform_vector_length.
1765
1766 * validate.h (SCM_VALIDATE_VECTOR,
1767 SCM_VALIDATE_VECTOR_OR_DVECTOR): use scm_is_simple_vector instead
1768 of SCM_VECTORP.
1769
1770 * weaks.h, weaks.c: Use new internal weak vector API from
1771 vectors.h.
1772
1773 * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
1774 EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
1775 'extra' to being regular sources.
1776 (noinst_HEADERS): Added quicksort.i.c.
1777 * quicksort.i.c: New file.
1778
1779 * vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
1780 SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated
1781 and reimplemented. Replaced all uses with scm_vector_elements,
1782 scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as
1783 appropriate.
1784 (scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
1785 SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET,
1786 SCM_SIMPLE_VECTOR_LOC): New.
1787 (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
1788 SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
1789 SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS):
1790 Removed.
1791 (scm_vector_copy): New.
1792 (scm_vector_elements, scm_vector_writable_elements): Use
1793 scm_t_array_handle, deliver length and increment. Moved to
1794 unif.h. Changed all uses.
1795 (scm_vector_release_elements,
1796 scm_vector_release_writable_elements,
1797 (scm_frame_vector_release_elements,
1798 scm_frame_vector_release_writable_elements): Removed.
1799 (SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
1800 SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
1801 (SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
1802 SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
1803 SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for
1804 weak vectors.
1805
1806 2004-12-29 Marius Vollmer <mvo@zagadka.de>
1807
1808 No longer use creators to specify the type of an array. Creators
1809 expose the fact that arrays are wrapped around vectors, but that
1810 might change.
1811
1812 * srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
1813 scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
1814 scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
1815 scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
1816 scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
1817 scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
1818 uvec_proc_vars): Removed.
1819 (scm_i_generalized_vector_creator): Removed.
1820 (scm_i_generalized_vector_type): New.
1821
1822 * unif.h, unif.c (scm_typed_array_p, scm_make_array,
1823 scm_make_typed_array, scm_array_type, scm_list_to_array,
1824 scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
1825 (scm_array_creator): Removed.
1826 (scm_array_p): Deprecated second PROT argument.
1827 (scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
1828 Deprecated, reimplemented in terms of scm_make_typed_array and
1829 scm_list_to_typed_array.
1830 (scm_i_proc_make_vector, scm_i_proc_make_string,
1831 scm_i_proc_make_bitvector): Removed.
1832 (type_creator_table, init_type_creator_table, type_to_creator,
1833 make_typed_vector): New.
1834 (scm_i_convert_old_prototype): Removed.
1835 (prototype_to_type): New.
1836 (scm_make_uve): Deprecated, reimplemented using make_typed_vector.
1837 (scm_array_dimensions): Use scm_list_1 instead of scm_cons for
1838 minor added clarity.
1839 (scm_make_shared_array, scm_ra2contig): Use make_typed_vector
1840 instead of scm_make_uve.
1841 (tag_creator_table, scm_i_tag_to_creator): Removed.
1842 (tag_to_type): New.
1843 (scm_i_read_array): Use scm_list_to_typed_array instead of
1844 scm_list_to_uniform_array.
1845
1846 2004-12-27 Marius Vollmer <mvo@zagadka.de>
1847
1848 * unif.h, unif.c (scm_bitvector_elements): Made return value "const".
1849 (scm_bitvector_writable_elements): New.
1850 (scm_bitvector_release, scm_bitvector_release_elements):
1851 Renamed former to latter. Added explicit call to
1852 scm_remember_upto_here_1.
1853 (scm_frame_bitvector_release,
1854 scm_frame_bitvector_release_elements): Renamed former to latter.
1855 (scm_bitvector_release_writable_elements,
1856 scm_bitvector_release_writable_elements): New.
1857 Changed all uses as required by the changes above.
1858
1859 * srfi-4.h, srfi-4.c, srfi-4.i.c (scm_uniform_vector_elements,
1860 scm_u8vector_elements, etc): Made return value "const".
1861 (scm_uniform_vector_writable_elements,
1862 scm_u8vector_writable_elements, etc): New.
1863 (scm_uniform_vector_release, scm_uniform_vector_release_elements):
1864 Renamed former to latter. Added explicit call to
1865 scm_remember_upto_here_1.
1866 (scm_frame_uniform_vector_release,
1867 scm_frame_uniform_vector_release_elements): Renamed former to latter.
1868 (scm_uniform_vector_release_writable_elements,
1869 scm_frame_uniform_vector_release_writable_elements): New. Takes
1870 crown of longest identifier yet.
1871 Changed all uses as required by the changes above.
1872
1873 * vectors.h, vectors.c (scm_c_vector_set_x): Make return type
1874 void.
1875 (scm_is_vector, scm_vector_p, scm_vector_length,
1876 scm_c_vector_length, scm_vector_ref, scm_c_vector_ref,
1877 scm_vector_set_x, scm_c_vector_set_x, scm_vector_to_list,
1878 scm_vector_move_left_x, scm_vector_move_right_x,
1879 scm_vector_fill_x): handle one-dimensional arrays.
1880 (scm_vector_elements, scm_vector_release_elements,
1881 scm_vector_frame_release_elements, scm_vector_writable_elements,
1882 scm_vector_release_writable_elements,
1883 scm_vector_frame_release_writable_elements): New.
1884 (scm_list_to_vector, scm_vector_to_list, scm_vector_fill,
1885 scm_vector_move_left_x, scm_vector_move_right_x): Use them.
1886
1887 * ramap.c (scm_ramapc, scm_raeql): Use
1888 scm_c_generalized_vector_length instead of
1889 scm_uniform_vector_length.
1890 (scm_ramap, rafe): Use scm_c_vector_ref instead of SCM_VELTS. use
1891 scm_c_generalized_vector_ref instead of scm_uniform_vector_ref.
1892
1893 2004-12-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1894
1895 * continuations.h, continuations.c (scm_t_contregs): New 'offset'
1896 member for relocating debug frames.
1897 (scm_make_continuation): Set it.
1898
1899 * stacks.c (read_frame, read_frames, scm_make_stack,
1900 scm_last_stack_frame, scm_stack_id): Use the new 'offset' member
1901 of continuations instead of calculating the offset ourselves.
1902 Relocate 'vect' member of scm_t_debug_frame.
1903
1904 2004-12-16 Kevin Ryde <user42@zip.com.au>
1905
1906 * ramap.c (scm_array_map_x): Check for at least one source argument.
1907
1908 2004-12-14 Kevin Ryde <user42@zip.com.au>
1909
1910 * srfi-13.c (string-any, string-every): Use a scheme wrapper around
1911 the C code so for the final call to the predicate procedure is a tail
1912 call, per SRFI-13 spec.
1913
1914 2004-12-10 Kevin Ryde <user42@zip.com.au>
1915
1916 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Update docstrings from
1917 recent revision to the reference manual.
1918
1919 * numbers.c (scm_modulo): Amend fixme comment about negative divisor
1920 with "%", C99 says it's well-defined.
1921
1922 * socket.c (scm_from_ipv6): Just use mpz_import. Don't bother trying
1923 to fit scm_from_ulong_long, since that uses mpz_import anyway. Don't
1924 bother trying to fit scm_from_ulong, not really worth the trouble if
1925 addresses are more than 4 bytes usually.
1926
1927 2004-11-30 Kevin Ryde <user42@zip.com.au>
1928
1929 * gc_os_dep.c (NetBSD): Test __m68k__ and __arm__ as well as m68k and
1930 arm32. Reported by Greg Troxel.
1931
1932 2004-11-14 mvo <mvo@zagadka.de>
1933
1934 * unif.c, unif.h (scm_i_cvref): Made non-static for ramap.c.
1935
1936 * Makefile.am (INCLUDES): It is "@LTDLINCL@", not "@LTDLINC@".
1937
1938 2004-11-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1939
1940 Enclosed arrays are now their own smob. This has been done to
1941 make the code more explicit about them and to prepare for the time
1942 when generalized vectors include arbitrary one-dimensional
1943 arrays. (Uptonow, enclosed arrays have been recognized by their
1944 use of an array as their storage 'vector'. When all generalized
1945 vectors are allowed as storage, including one-dimensional arrays,
1946 this will no longer work.)
1947
1948 * unif.h, unif.c: (scm_tc16_enclosed_array, SCM_ENCLOSED_ARRAYP):
1949 New.
1950 (exactly_one_third, singp): Removed.
1951 (scm_array_p, scm_array_dimensions, scm_shared_array_root,
1952 scm_shared_array_offset, scm_shared_array_increments): Handle
1953 enclosed arrays explicitely.
1954 (scm_array_rank): Likewise. Also, do not return zero for
1955 non-arrays, signal an error instead since arrays with rank zero do
1956 exist.
1957 (scm_i_make_ra): New, for specifying the tag of the new array.
1958 (scm_make_enclosed_array): Use it.
1959 (scm_make_ra): Reimplemented in terms of scm_i_make_ra.
1960 (scm_make_shared_array): Use scm_c_generalized_vector_length
1961 instead of scm_uniform_vector_length.
1962 (scm_array_in_bounds_p): Rewritten to be much cleaner.
1963 (scm_i_cvref): New, doing the job of scm_cvref.
1964 (scm_cvref): Use scm_i_cvref.
1965 (scm_array_ref): Do not accept non-arrays when no indices are
1966 given. Use scm_i_cvref to do the actual access.
1967 ("uniform-array-set1"): Do not register.
1968 (scm_array_set_x, scm_uniform_array_read_x,
1969 scm_uniform_array_write): Handle enclosed arrays explicitly.
1970 (ra2l): Use scm_i_cvref instead of scm_uniform_vector_ref to also
1971 handle enclosed arrays.
1972 (scm_array_to_list): Handle enclosed arrays explicitly.
1973 (rapr1): Removed.
1974 (scm_i_print_array_dimension): Use scm_i_cvref to also handle
1975 enclosed arrays.
1976 (scm_i_print_enclosed_array): New.
1977 (tag_proto_table, tag_creator_table): Renamed former to latter.
1978 Added "a" and "b" for strings and bitvectors, resp.
1979 (scm_i_tag_to_prototype, scm_i_tag_to_creator): Renamed former to
1980 latter. Tag "a" is in the table now, no need to handle it as a
1981 legacy tag.
1982 (scm_raprin1): Just call scm_iprin1.
1983 (scm_array_creator, scm_array_prototype): Handle enclosed arrays
1984 explicitly.
1985 (scm_init_unif): Initialize scm_tc16_enclosed_array smob.
1986 Use scm_i_print_array as printer for scm_tc16_array.
1987
1988 2004-11-10 Marius Vollmer <mvo@zagadka.de>
1989
1990 * ramap.c (cind): Changed second arg to be pointer to long instead
1991 of uniform vector.
1992 (scm_ramapc): Allocate index vector with scm_malloc and not as
1993 uniform vector. Wrap it in a frame so that it gets properly freed.
1994 (scm_array_index_map_x): Likewise.
1995
1996 * unif.c: Changed all uses of scm_array_prototype to
1997 scm_array_creator. (scm_i_get_old_prototype): Signal error when no
1998 prototype is known.
1999 (scm_uniform_array_read_x, scm_uniform_array_write): Reimplemented
2000 in terms of scm_uniform_vector_read_x and
2001 scm_uniform_vector_write, respectively. Strings and
2002 bitvector support has been dropped.
2003
2004 * srfi-4.h, srfi-4.c: Do not include <libguile.h>, include the
2005 needed files directly. Include config.h, <unistd.h> and <io.h>
2006 when available.
2007 (scm_uniform_vector_read_x, scm_uniform_vector_write): New.
2008
2009 2004-11-09 Marius Vollmer <mvo@zagadka.de>
2010
2011 * gh_data.c (gh_uniform_vector_length): Properly use
2012 scm_c_uniform_vector_length instead of scm_uniform_vector_length.
2013
2014 2004-11-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2015
2016 * srfi-4.h (scm_c_uniform_vector_ref, scm_c_uniform_vector_set_x):
2017 New.
2018 (scm_i_uniform_vector_creator): Removed.
2019 (scm_i_generalized_vector_creator): New.
2020 (scm_uniform_vector_length, scm_uniform_element_size): Do not
2021 handle generalized vectors, only uniform numeric vectors.
2022 (alloc_uvec): Do length check here...
2023 (make_uvec): ...but not here.
2024 (coerce_to_uvec): Use new generalized vector functions to handle
2025 all kinds of vectors in one go.
2026
2027 * tags.h (scm_tc7_bvect): Renamed to scm_tc7_unused7, renaming the
2028 remaining scm_tc7_unused tags to get a neatly ordered list.
2029
2030 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c: Do no
2031 longer handle scm_tc7_bvect bitvectors.
2032
2033 * ramap.c: Use the new generalized vector functions to handle all
2034 vector like things.
2035
2036 * vectors.h, vectors.c (scm_is_vector, scm_c_vector_length,
2037 scm_c_vector_ref, scm_c_vector_set_x, scm_generalized_vector_p,
2038 scm_generalized_vector_length, scm_generalized_vector_ref,
2039 scm_generalized_vector_set_x, scm_generalized_vector_to_list,
2040 scm_is_generalized_vector, scm_c_generalized_vector_length,
2041 scm_c_generalized_vector_ref, scm_c_generalized_vector_set_x):
2042 New.
2043
2044 * unif.h, unif.c (scm_bitvector_p, scm_bitvector,
2045 scm_make_bitvector, scm_bitvector_length, scm_bitvector_ref,
2046 scm_bitvector_set_x, scm_list_to_bitvector, scm_bitvector_to_list,
2047 scm_bitvector_fill_x, scm_is_bitvector, scm_c_make_bitvector,
2048 scm_c_bitvector_length, scm_c_bitvector_ref,
2049 scm_c_bitvector_set_x, scm_bitvector_elements,
2050 scm_bitvector_release, scm_frame_bitvector_release,
2051 scm_tc16_bitvector, bitvector_free, bitvector_print,
2052 bitvector_equalp, count_ones, find_first_one): New.
2053 (scm_bit_count, scm_bit_position, scm_bit_set_star_x,
2054 scm_bit_count_star, scm_bit_invert_x, scm_istr2bve): Rewritten
2055 using the new C API for bitvectors and maybe count_ones or
2056 find_first_one, as appropriate.
2057 (SCM_I_MAX_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
2058 SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
2059 SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
2060 SCM_SET_BITVECTOR_LENGTH): Removed. Replaced all uses with the
2061 new functions from above.
2062 (scm_i_proc_make_vector, scm_i_proc_make_string,
2063 scm_i_proc_make_bitvector): Made non-static for use in
2064 scm_i_generalized_vector_creator.
2065 (scm_make_u1vector): Removed, replaced by scm_make_bitvector.
2066 (scm_make_uve): Validate that the created object is a generalized
2067 vector.
2068 (scm_i_legacy_tag): Removed.
2069 (scm_i_print_array): Do it here.
2070 (scm_raprin1): Only print enclosed arrays.
2071
2072 * Makefile.am (DOT_DOC_FILES): Added srfi-4.doc.
2073
2074 2004-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2075
2076 * srfi-4.c (make_uvec): Use SCM_I_SIZE_MAX instead of SIZE_MAX for
2077 added portability.
2078
2079 * chars.c (scm_charnames, scm_charnums): Added "sp" as an alias
2080 for "space". Thanks to Bruce Korb!
2081
2082 * rw.c (scm_read_string_x_partial): Bugfix, apply offset to dest
2083 only after dest has been set. Thanks to Hyper Division!
2084
2085 * gh_data.c (gh_uniform_vector_length): Use
2086 scm_uniform_vector_length instead of SCM_UVECTOR_LENGTH.
2087
2088 2004-11-03 Marius Vollmer <mvo@zagadka.de>
2089
2090 * unif.h (SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
2091 SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
2092 SCM_SET_UVECTOR_LENGTH): Removed.
2093
2094 2004-11-02 Marius Vollmer <mvo@zagadka.de>
2095
2096 Mac OS X and OpenBSD compatibility patches from Andreas Vögele.
2097 Thanks!
2098
2099 * backtrace.c (scm_display_backtrace_with_highlights): Join the
2100 first and the second line of the SCM_DEFINE macro call, since old
2101 preprocessors cannot handle definitions that are split into two
2102 lines.
2103
2104 * inline.h (scm_cell, scm_double_cell): Don't use C99 variable
2105 declarations.
2106
2107 * pairs.c (scm_i_chase_pairs): Replace scm_t_bits with
2108 scm_t_uint32 to fix the mismatch between the function declaration
2109 and definition.
2110
2111 * sort.c (quicksort): Don't use C99 variable declarations.
2112
2113 * srfi-4.c (uvec_fast_ref): Avoid a compiler warning by returning
2114 SCM_BOOL_F if no type matches.
2115
2116 * threads.c (thread_print): Cast a pointer to size_t when printing
2117 with scm_uintprint.
2118
2119 * unif.c (scm_i_tag_to_prototype): Make sure that "instead" gets
2120 defined.
2121 (scm_array_prototype): Deprecated.
2122
2123 2004-11-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2124
2125 * srfi-4.h, srfi-4.c (scm_frame_uniform_vector_release): New.
2126 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use it to get
2127 more efficient access to the u32vector.
2128
2129 * tags.h (scm_tc7_llvect, scm_tc7_uvect, scm_tc7_fvect,
2130 scm_tc7_dvect, scm_tc7_cvect, scm_tc7_svect, scm_tc7_byvect,
2131 scm_tc7_ivect): Renamed to scm_tc7_unused_1 to scm_tc7_unused_8.
2132
2133 * validate.h (SCM_VALIDATE_VECTOR_OR_DVECTOR): Accept f64vectors
2134 instead of the old-style dvectors.
2135
2136 * gh_data.c: Use new-style uniform arrays in place of old-style
2137 ones.
2138
2139 * eq.c, evalext.c, gc-card.c, gc-mark.c, objects.c, print.c,
2140 ramap.c, unif.c: Do no longer handle old-style uniform vectors.
2141
2142 * unif.c (scm_bit_set_star_x, scm_bit_count_star_x): Use u32vectors
2143 instead of old-sytle uvectors.
2144
2145 * convert.c, convert.i.c: Rewritten completely, using
2146 scm_any_to_u8vector, etc and other new-style uniform vector
2147 functions.
2148
2149 * random.c (scm_random_solid_sphere_x,
2150 scm_random_hollow_sphere_x): Do not validate vector argument, this
2151 is already done elsewhere.
2152
2153 * srfi-4.h, srfi-4.i.c, srfi-4.c (coerce_to_uvec,
2154 scm_any_to_u8vector, etc): New.
2155 (scm_uniform_element_size, scm_uniform_vector_length): Do no
2156 longer handle old-style uniform vectors.
2157
2158 * read.c (scm_lreadr): Bugfix: include the last bit in the
2159 bit vector.
2160
2161 2004-10-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2162
2163 * unif.h, unif.c (scm_array_creator): New.
2164 (scm_i_get_old_prototype): New.
2165 (scm_array_prototype): use it to return old-style prototype, never
2166 return creators.
2167 (scm_make_uve): Use scm_call_1 instead of scm_call_2 with a second
2168 arg of SCM_UNDEFINED. The latter is wrong.
2169
2170 * unif.h, unif.c (scm_make_u1vector): New, but only temporary.
2171 (make_uve): Removed.
2172 (scm_i_proc_make_vector, scm_i_proc_make_string,
2173 scm_i_proc_make_u1vector): New.
2174 (scm_init_unif): Initialize them.
2175 (scm_i_convert_old_prototype): New.
2176 (scm_make_uve): Use it to get the creator procedure. Removed all
2177 old code that created old-style uniform vectors.
2178 (scm_array_p): Handle generic vectors.
2179 (scm_dimensions_to_uniform_array): Do not fill new array with
2180 prototype when that is a procedure.
2181 (scm_list_to_uniform_array): Also accept a list of lower bounds as
2182 the NDIM argument.
2183 (scm_i_print_array): Print rank for shared or non-zero-origin
2184 vectors.
2185 (tag_proto_table, scm_i_tag_to_prototype, scm_i_read_array): New.
2186 (scm_raprin1): Do not call scm_i_array_print for enclosed arrays,
2187 which I do not understand yet.
2188 (scm_array_prototype): Explicitely handle generic vectors.
2189
2190 * numbers.c, number.h (scm_i_print_complex, icmplx2str): New.
2191 (iflo2str): Use icmplx2str for complex numbers.
2192
2193 * srfi-4.c, srfi-4.h (scm_i_read_homogenous_vector,
2194 scm_i_uniform_vector_prototype): Removed.
2195 (scm_i_uniform_vector_creator): New.
2196 (SCM_UVEC_C32, scm_c32vector, scm_make_c32vector, etc,
2197 SCM_UVEC_C64, scm_c64vector, scm_make_c64vector, etc): New.
2198 Updated all tables and generic functions to support them.
2199 (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector, etc): New.
2200 (scm_init_srfi_4): Initialize them.
2201
2202 * srfi-4.i.c (scm_take_u8vector, etc): use uvec_sizes instead of
2203 sizeof(CTYPE) as explained in the comment.
2204
2205 * read.c (scm_lreadr): Call scm_i_read_array for all characters
2206 following '#' that can start an array. Explicitely disambiguate
2207 'i' and 'e' between introducing numbers and uniform vectors. Do
2208 not call scm_i_read_homogenous_vector, since that is also handled
2209 by scm_i_read_array now.
2210
2211 2004-10-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2212
2213 First cut at integrating uniform vectors from srfi-4 with the rest
2214 of Guile. This change replaces scm_tc7_byvect with a s8 uniform
2215 vector. The plan is to gradually replace one type after the other
2216 until none is left and then to consider general cleanups and
2217 optimizations.
2218
2219 * srfi-4.h, srfi-4.i.c (scm_u8vector_elements, etc): New.
2220
2221 * srfi-4.h, srfi-4.c (scm_uniform_vector_p,
2222 scm_uniform_vector_ref, scm_uniform_vector_set_x,
2223 scm_uniform_vector_to_list, scm_is_uniform_vector,
2224 scm_c_uniform_vector_lengths, scm_c_uniform_vector_size,
2225 scm_uniform_vector_elements, scm_uniform_vector_element_size,
2226 scm_uniform_vector_release): New.
2227 (scm_i_uniform_vector_prototype, scm_i_uniform_vector_tag): New.
2228 (scm_uniform_element_size, scm_uniform_vector_length): Moved here
2229 from unif.h, unif.c and extended to handle both the old and new
2230 uniform vectors.
2231
2232 * tags.h (scm_tc7_byvect): Commented out.
2233
2234 * unif.h, unif.c (scm_uniform_vector_ref, scm_array_ref): Renamed
2235 the former to the latter.
2236 (scm_uniform_vector_length, scm_uniform_element_size): Moved to
2237 srfi-4.h, srfi-4.c.
2238 (scm_make_uve): Call scm_make_s8vector for #\nul prototype.
2239 (scm_array_p, scm_array_rank, scm_array_dimensions,
2240 scm_transpose_array, scm_enclose_array, scm_array_ref, scm_cvref,
2241 scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
2242 scm_array_to_list, scm_array_prototype): Handle srfi-4 uniform
2243 vectors. Removed code for scm_tc7_byvect.
2244 (scm_dimensions_to_uniform_array): Fill array with 0 when
2245 prototype is #\nul.
2246 (scm_i_print_array_dimension, scm_i_legacy_tag,
2247 scm_i_print_array): New.
2248 (scm_raprin1): Call scm_i_print_array for arrays. Removed code
2249 for scm_tc7_byvect.
2250
2251 * ramap.c (scm_ra_matchp, scm_array_fill_int, racp,
2252 scm_array_index_map_x, raeql_1, scm_array_equal_p): Handle srfi-4
2253 uniform vectors. Removed code for scm_tc7_byvect
2254
2255 * print.c (iprin1): Removed code for scm_tc7_byvect.
2256 * objects.c (scm_class_of): Likewise.
2257 * gc-mark.c (scm_gc_mark_dependencies): Likewise.
2258 * gc-card.c (scm_i_sweep_card): Likewise.
2259 * evalext.c (scm_self_evaluating_p): Likewise.
2260 * eq.c (scm_equal_p): Likewise.
2261
2262 * gh_data.c (gh_chars2byvect): Reimplemented with
2263 scm_make_s8vector.
2264 (gh_scm2chars): Handle s8vectors, removed code for scm_tc7_byvect.
2265
2266 * srfi-4.c (take_uvec): New.
2267 (alloc_uvec): Use it.
2268 * srfi-4.h, srfi-4.i.c (scm_take_u8vector, etc): New.
2269
2270 * random.c (vector_scale, vector_scale_x): Renamed former to the
2271 latter, since it modifies its argument.
2272 (vector_scale_x, vector_sum_squares, scm_random_normal_vector_x):
2273 Do not use scm_universal_vector_length for non-uniform vectors.
2274 Use scm_f64vector_elements to access innards of uniform vectors.
2275
2276 * convert.i.c: Convert srfi-4 style uniform vectors when
2277 requested.
2278 * convert.c (scm_c_scm2chars, scm_c_chars2scm,
2279 scm_c_chars2byvect): Use a s8vector instead of a scm_tc7_byvect.
2280
2281 2004-10-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2282
2283 * numbers.h, numbers.c (scm_i_print_double): New.
2284
2285 * srfi-4.c, srfi-4.h, srfi-4.i.c: New files, initially from
2286 ../srfi/ but heavily modified.
2287 * Makefile.am: Add them in all the right places.
2288 * init.c (scm_init_guile_1): Call scm_init_srfi_4.
2289 * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
2290 '#u', and '#s'.
2291
2292 * read.h, read.c (scm_i_input_error): Renamed from scm_input_error
2293 and made non-static. Changed all uses.
2294
2295 2004-10-22 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2296
2297 * variable.c, threads.c, struct.c, stackchk.c, smob.c, root.c,
2298 print.c, ports.c, mallocs.c, hooks.c, hashtab.c, fports.c,
2299 guardians.c, filesys.c, coop-pthreads.c, continuations.c: Use
2300 scm_uintprint to print unsigned integers, raw heap words, and
2301 adresses, using a cast to scm_t_bits to turn pointers into
2302 integers.
2303
2304 * unif.c: Include "libguile/print.h".
2305
2306 * numbers.h, numbers.c (SCM_T_INTBUFLEN): Increased to cover
2307 scm_t_intmax values.
2308 (scm_uint2str): New, for scm_t_uintmax.
2309 (scm_iint2str): Argument type changed to scm_t_intmax,
2310 reimplemented in terms of scm_uint2str.
2311
2312 * print.c, print.h (scm_uintprint): New, for printing
2313 scm_t_uintmax values.
2314 (scm_intprint): Argument type changed to scm_t_intmax.
2315
2316 * sort.c (quicksort, scm_merge, scm_merge_list_x,
2317 scm_merge_list_step, scm_merge_vector_step): Inserted SCM_TICKs at
2318 strategic places so that the loops can be interrupted.
2319
2320 * Makefile.am (INCLUDES): Use @LTDLINC@ instead of
2321 "-I$(top_srcdir)/libguile-ltdl".
2322 (libguile_la_LIBADD): Use @LIBLTDL@ instead of
2323 "../libguile-ltdl/libguile-ltdl.a".
2324
2325 * guile.c, dynl.c: Switched to using libltdl directly. Replaced
2326 all references to scm_lt_* with just lt_*. Include <ltdl.h>
2327 instead of <libguile-ltdl.h>.
2328
2329 2004-10-20 Marius Vollmer <mvo@zagadka.de>
2330
2331 * sort.c (quicksort): Copy pivot out of the array while
2332 constructing the partitions; it could get overwritten otherwise.
2333 Because of the ultimate insertion sort, this bug did not cause
2334 quicksort to fail, it just put all the burdon on the insertion
2335 sort and was thus very slow. Thanks to Rolan Orre for reporting
2336 the slowness!
2337
2338 2004-10-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2339
2340 * numbers.c (scm_i_range_error): New.
2341 * conv-integer.i.c, conv-uinteger.i.c: Use it instead of
2342 scm_out_of_range.
2343
2344 * sort.c (scm_restricted_vector_sort_x): Validate startpos <=
2345 endpos. State inclusiveness/exclusiveness of bounds in docstring.
2346
2347 * unif.c (scm_array_p): When no prototype is given, explicitely
2348 test for allowable types, do not simply return true. Thanks to
2349 Roland Orre for reporting this!
2350
2351 * private-gc.h (SCM_DEFAULT_MAX_SEGMENT_SIZE): Increase to 20 Mib.
2352
2353 * gc-segment.c (scm_i_get_new_heap_segment): Limit size of new
2354 segment to scm_max_segment_size.
2355
2356 2004-10-08 Han-Wen Nienhuys <hanwen@xs4all.nl>
2357
2358 * gc.c (scm_igc): put scm_gc_running-- before running hooks.
2359
2360 * inline.h (scm_double_cell): abort if GC running.
2361 (scm_cell): idem.
2362
2363 2004-10-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2364
2365 * error.c (scm_wrong_type_arg): Do not talk about "argument" for
2366 pos == 0.
2367
2368 Keywords no longer store a 'dash symbol'. Instead, they store a
2369 symbol with their real name.
2370
2371 * keywords.h, keywords.c, deprecated.h, deprecated.c
2372 (SCM_KEYWORDP, SCM_KEYWORDSYM): Deprecated and implemented in
2373 terms of scm_is_keyword and scm_keyword_dash_symbol.
2374
2375 * keywords.h, keywords.c, discouraged.h, discouraged.c
2376 (scm_make_keyword_from_dash_symbol, scm_keyword_dash_symbol,
2377 scm_c_make_keyword): Discouraged.
2378
2379 * keywords.h, keywords.c (scm_symbol_to_keyword,
2380 scm_keyword_to_symbol): Implemented in C.
2381 (scm_is_keyword, scm_from_locale_keyword,
2382 scm_from_locale_keywordn): New.
2383
2384 * goops.c: Replaced SCM_KEYWORDP with scm_is_keyword.
2385
2386 * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): Use
2387 scm_from_locale_keyword instead of scm_c_make_keyword.
2388
2389 * keywords.c (scm_symbol_to_keyword): Use SCM_ASSERT_TYPE for a
2390 better error message.
2391
2392 * deprecated.c: Include discouraged.h and keywords.h.
2393
2394 * read.c (scm_lreadr): Simply do (symbol->keyword (read)) after
2395 reading '#:' or ':'. See NEWS for consequences.
2396
2397 2004-09-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2398
2399 * read.c (scm_lreadr): Revert change from 2004-09-22: string
2400 literals are now read-write again (until SCM_STRING_CHARS is
2401 removed).
2402
2403 * strings.c (SCM_STRING_CHARS): Explicitely reject read-only
2404 strings with an error message that blames SCM_STRING_CHARS.
2405
2406 * options.c (change_option_setting): Use scm_car instead of
2407 explicit type check plus SCM_CAR.
2408
2409 * print.h, print.c (SCM_PRINT_HIGHLIGHT_PREFIX,
2410 SCM_PRINT_HIGHLIGHT_SUFFIX): New printer options.
2411 (scm_iprin1): Use them instead of the previoulsy hardcoded
2412 strings.
2413 (scm_init_print): Initialize them.
2414
2415 * backtrace.c (display_frame_expr): Do not remove control
2416 characters from the final string. Print it directly using
2417 scm_display.
2418
2419 * ramap.c (scm_array_equal_p): Include scm_tc7_svect in switch.
2420 Thanks to Roland Orre!
2421
2422 2004-09-29 Kevin Ryde <user42@zip.com.au>
2423
2424 * regex-posix.c (scm_regexp_exec): Correction to last change, should
2425 be whole original string in match struct, not offsetted substring.
2426
2427 2004-09-24 Han-Wen Nienhuys <hanwen@xs4all.nl>
2428
2429 * gc.c (scm_gc_unprotect_object): abort if called during GC.
2430
2431 2004-09-24 Marius Vollmer <mvo@zagadka.de>
2432
2433 * Makefile.am (EXTRA_DIST): Added gettext.h.
2434
2435 * smob.c, smob.h (scm_assert_smob_type): New.
2436
2437 * Makefile.am (guile_CFLAGS, guile_LDFLAGS, libguile_la_CFLAGS):
2438 Include GUILE_CFLAGS.
2439 (libguile_la_LIBADD): Removed THREAD_LIBS_LOCAL, which is unused
2440 now.
2441 (libpath.h): Put GUILE_CFLAGS in the build-info.
2442
2443 2004-09-23 Marius Vollmer <mvo@zagadka.de>
2444
2445 * print.h (scm_print_state): Added highlight_objects.
2446 * print.c (make_print_state, scm_free_print_state): Initialize it
2447 to SCM_EOL.
2448 (scm_iprin1): Wrap output in '{...}' when object is contained in
2449 highlight_objects.
2450
2451 * backtrace.h, backtrace.c (scm_display_backtrace_with_highlights,
2452 scm_backtrace_with_highlights): New. Set highlight_objects of
2453 printstate.
2454
2455 * error.c (scm_error_scm): Document new meaning of data/rest
2456 argument for out-of-range and wrong-type-arg errors.
2457 (scm_out_of_range, scm_out_of_range_pos, scm_wrong_type_arg,
2458 scm_wrong_type_arg_msg): Pass bad_value in rest argument of
2459 exception so that it gets highlighted in the backtrace.
2460 Don't talk about "argument" when not giving a position.
2461
2462 * throw.c (handler_message): The rest argument is the fourth
2463 argument, not everything after the third. Call
2464 scm_display_backtrace_with_highlights, passing the rest argument
2465 when appropriate.
2466
2467 2004-09-22 Marius Vollmer <mvo@zagadka.de>
2468
2469 From Jan Nieuwenhuizen <janneke@gnu.org> and Bruno Haible
2470 <bruno@clisp.org>:
2471
2472 * i18n.c: Handle --disable-nls (thanks Bruno).
2473
2474 * posix.c (scm_init_posix): Add LC_PAPER, LC_NAME, LC_ADDRESS,
2475 LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION.
2476
2477 * i18n.c (scm_i_to_lc_category): New name and export. Support all
2478 LC categories.
2479 * posix.c (scm_setlocale): Use it.
2480
2481 * i18n.h, i18n.c (scm_textdomain, scm_bindtextdomain,
2482 scm_bind_textdomain_codeset): Make wrappers similar to C function
2483 they wrap.
2484
2485 * i18n.h: New file.
2486 * i18n.c: New file.
2487 * gettext.h: New file, taken from GNU gettext.
2488 * init.c: Include libguile/i18n.h.
2489 (scm_init_guile_1): Add call to scm_init_i18n().
2490 * Makefile.am (libguile_la_SOURCES): Add i18n.c.
2491 (DOT_X_FILES): Add i18n.x.
2492 (DOT_DOC_FILES): Add i18n.doc.
2493 (libguile_la_LDFLAGS): Add @LTLIBINTL@.
2494 (modinclude_HEADERS): Add i18n.h.
2495
2496 2004-09-22 Marius Vollmer <mvo@zagadka.de>
2497
2498 * gh_list.c: Replaced SCM_CAR, etc with scm_car, etc.
2499
2500 * discouraged.h, tags.h (SCM_CONSP, SCM_NCONSP): Moved to
2501 discouraged.h. Replaced all uses with scm_is_pair.
2502 (SCM_I_CONSP): New name for SCM_CONSP.
2503
2504 * pairs.h, pairs.c (scm_is_pair, scm_is_null, scm_car, scm_cdr,
2505 scm_i_chase_pairs, SCM_I_A_PAT, SCM_I_D_PAT, etc, scm_caar,
2506 scm_cadr, etc): New.
2507 (SCM_NULLP, SCM_NNULLP): Moved to discouraged.h. Replaced all
2508 uses with scm_is_null.
2509
2510 * eval.c (scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairs
2511 instead of explicit code.
2512
2513 2004-09-22 Marius Vollmer <mvo@zagadka.de>
2514
2515 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
2516 Reworded logic a bit so that #f is returned immediately when s1 is
2517 too short to contain s2.
2518
2519 * regex-posix.c (scm_regexp_exec): Convert string to
2520 zero-terminated locale string before matching against it.
2521
2522 * strings.h, strings.c (scm_substring_read_only,
2523 scm_c_substring_read_only, scm_i_substring_read_only): New.
2524 (RO_STRING_TAG, IS_RO_STRING): New.
2525 (scm_i_string_writable_chars): Bail on read-only strings.
2526
2527 * read.c (scm_lreadr): use scm_c_substring_read_only for string
2528 literals, thus making them read-only as specified by R5RS.
2529
2530 2004-09-22 Marius Vollmer <mvo@zagadka.de>
2531
2532 * eq.c (scm_equal_p): Allow smobs with different flags to be equal
2533 by testing for smobs before insisting on equal SCM_CELL_TYPES.
2534
2535 2004-09-21 Marius Vollmer <mvo@zagadka.de>
2536
2537 * numbers.h, numbers.c: Include <gmp.h> in numbers.h, not in
2538 numbers.c.
2539 (scm_to_mpz, scm_from_mpz): New.
2540 Thanks to Andreas Vögele!
2541
2542 * read.c (skip_scsh_block_comment): Recognize "!#" everywhere, not
2543 just on a line of its own.
2544
2545 * srfi-13.c (scm_string_any, scm_string_every,
2546 scm_string_tabulate, string_upcase_x, string_down_case_x,
2547 string_titlecase_x, string_reverse_x, scm_string_tokenize): Use
2548 size_t instead of int for indices into strings. Make sure that no
2549 over- or underflow occurs. Thanks to Andreas Vögele!
2550 (scm_xsubstring, scm_string_xcopy_x): Use ints for 'extended'
2551 indices, which can also be negative.
2552
2553 2004-09-20 Marius Vollmer <mvo@zagadka.de>
2554
2555 * gc-mark.c (SCM_MARK_BACKING_STORE): Removed, it was unused.
2556
2557 * threads.c (scm_threads_mark_stacks): Call
2558 SCM_MARK_BACKING_STORE. Also, do not use stack_len local, it was
2559 only used once.
2560
2561 2004-09-13 Jan Nieuwenhuizen <janneke@gnu.org>
2562
2563 * srfi-13.c (scm_string_contains, scm_string_contains_ci):
2564 Bugfix: when subtracting unsigned values, make sure that result
2565 does not wrap.
2566
2567 2004-09-09 Kevin Ryde <user42@zip.com.au>
2568
2569 * filesys.c, stime.c (_POSIX_C_SOURCE): Use this only on hpux, it
2570 causes too many problems elsewhere (glibc, freebsd, mingw). Reported
2571 by Andreas Vögele.
2572
2573 2004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2574
2575 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
2576
2577 * eq.c (real_eqv): Pretend that all NaNs are equal.
2578
2579 * numbers.c (scm_integer_expt): Do not accept inexact integers.
2580
2581 2004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2582
2583 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
2584 use size_t for some locals instead of int.
2585
2586 * read.c (scm_flush_ws): Detect "#!"-style comments here.
2587 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
2588 (skip_scsh_block_comment): Use scm_input_error instead of
2589 scm_misc_error in case of EOF.
2590
2591 2004-09-07 Kevin Ryde <user42@zip.com.au>
2592
2593 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
2594 Bug report by Bill Schottstaedt.
2595
2596 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
2597 column.
2598 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
2599
2600 * posix.c (scm_access): Update docstring per manual.
2601
2602 * posix.c (scm_nice): Correction to error detection. Reported by
2603 Matthias Koeppe.
2604
2605 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
2606 throw error before unlocking mutex with SCM_ALLOW_INTS.
2607
2608 2004-09-06 Kevin Ryde <user42@zip.com.au>
2609
2610 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
2611 available. This also gets around CLK_TCK being absent when
2612 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
2613
2614 2004-09-03 Stefan Jahn <stefan@lkcc.org>
2615
2616 * threads.c (scm_threads_mark_stacks): Fixed local variable
2617 definitions.
2618
2619 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
2620 local variable definitions.
2621
2622 * stime.c (_POSIX_C_SOURCE): Do not define this item on
2623 MinGW32 because it conflicts with its pthread headers.
2624 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
2625 (scm_strftime): Using scm_from_locale_string() instead of
2626 scm_makfrom0str().
2627
2628 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
2629 part.
2630
2631 * numbers.c (scm_init_numbers): Removed check_sanity() call
2632 inside GUILE_DEBUG. The function has been removed somewhen...
2633
2634 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
2635 MinGW32 because it conflicts with its pthread headers.
2636
2637 2004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2638
2639 * strings.c (SCM_STRINGP): Accept all strings.
2640 (SCM_STRING_CHARS): Reject shared substrings here.
2641
2642 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
2643 the Copyright years.
2644
2645 2004-08-27 Kevin Ryde <user42@zip.com.au>
2646
2647 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
2648 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
2649 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
2650
2651 2004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2652
2653 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
2654 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
2655 scm_i_symbol_is_interned, scm_i_mem2symbol,
2656 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
2657
2658 2004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2659
2660 * srfi-13.c: First cut at thread-safeness and proper use of
2661 scm_i_string_chars et al. Copious scm_remember_upto_heres have
2662 been inserted. Made sure that no internal string pointer is used
2663 across a SCM_TICK or a possible GC.
2664
2665 * script.c (scm_compile_shell_switches): Use
2666 scm_from_locale_string instead of scm_makfrom0str.
2667
2668 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
2669 always been.
2670
2671 2004-08-25 Marius Vollmer <mvo@zagadka.de>
2672
2673 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
2674 strop.c.
2675
2676 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
2677 * strop.h, strop.c: Removed, they are now empty.
2678 * Makefile.am: Updated for new and removed files.
2679
2680 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
2681 to scm_string_to_symbol.
2682
2683 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
2684 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
2685 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
2686 charset instead of libc functions.
2687
2688 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
2689 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
2690 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
2691 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
2692 instead of explicit code.
2693
2694 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
2695 "srfi-13.h" instead of "strop.h".
2696
2697 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
2698 scm_init_srfi_14. Do not call scm_init_strop.
2699
2700 2004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2701
2702 * numbers.c (scm_inf_p): Synced docstring back from manual.
2703
2704 2004-08-22 Marius Vollmer <mvo@zagadka.de>
2705
2706 * strings.c (get_str_buf_start): New helper function.
2707 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
2708 scm_i_string_char, scm_i_string_writable_chars): Use it.
2709 (scm_i_substring_copy): Make START argument optional for C
2710 callers, for upcoming SRFI-13 integration.
2711
2712 2004-08-21 Marius Vollmer <mvo@zagadka.de>
2713
2714 From Richard Todd, Thanks!
2715
2716 * script.c (scm_compile_shell_switches): added '-L' switch to add
2717 to the %load-path.
2718
2719 2004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
2720
2721 * eval.c (unmemoize_exprs): When dropping internal body markers
2722 from the output during unmemoization, also drop those that are not
2723 immediately at the beginning of a body.
2724
2725 2004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2726
2727 * eval.c (scm_lookupcar1): Report "Variable used before given a
2728 value" insetad of an "Unbound" one for variables that are found
2729 but still contain SCM_UNDEFINED.
2730
2731 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
2732 expects a null-terminated string in the locale encoding, but
2733 scm_i_string_writable_chars doesn't give that. Fixed by letting
2734 mkstemp modify a locale version of the tmpl argument and copying
2735 the result back into tmpl.
2736
2737 * strop.c (scm_substring_move_x): Store into str2, not str1.
2738
2739 2004-08-20 Kevin Ryde <user42@zip.com.au>
2740
2741 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
2742 to modify the input string.
2743
2744 2004-08-19 Marius Vollmer <mvo@zagadka.de>
2745
2746 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
2747 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
2748 scm_c_symbol_length.
2749
2750 2004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2751
2752 New string implementation, with copy-on-write strings and
2753 mutation-sharing substrings, and a new internal string API.
2754 Symbols can now share memory with strings.
2755
2756 * tags.h (scm_tc7_stringbuf): New tag.
2757
2758 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
2759 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
2760 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
2761 uses.
2762 (scm_i_make_string, scm_c_make_string): New, to replace
2763 scm_allocate_string. Updated all uses.
2764 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
2765 SCM_STRING_LENGTH): Deprecated.
2766 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
2767 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
2768 Discouraged. Replaced all uses with scm_from_locale_string or
2769 similar, as appropriate.
2770 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
2771 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
2772 scm_substring_shared, scm_substring_copy): New.
2773
2774 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
2775 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
2776 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
2777 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
2778 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
2779 Deprecated.
2780 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
2781 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
2782 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
2783 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
2784 Updated all uses.
2785 (scm_gensym): Generate only the number suffix in the buffer, just
2786 string-append the prefix.
2787
2788 * error.c (scm_memory_error): Do not try to throw, just abort.
2789 Throwing will not work anyway.
2790
2791 * gh.h, gh-data.c (gh_set_substr): Made src const.
2792
2793 * ports.c (scm_i_mode_bits_n): New, for counted strings.
2794 (scm_mode_bits): Use it.
2795 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
2796 a vector normally and fill that instead of consing a list with a
2797 blocked GC.
2798
2799 * read.c (scm_i_casei_streq): New, for counted strings.
2800
2801 * threads.c (gc_section_count): Removed, thread-sleeping can not
2802 be nested.
2803 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
2804 admin mutex so that we can be put to sleep by other threads while
2805 blocking on that mutex. Lock all the heap mutex of all threads,
2806 including ourselves.
2807 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
2808 call scm_i_enter_guile.
2809 (scm_thread_mark_stacks): Expect all threads to be suspended.
2810
2811 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
2812 scm_gc_mallocated, for now.
2813 (scm_init_storage): Initialize it.
2814 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
2815
2816 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
2817 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
2818 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
2819 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
2820
2821 * strop.c (scm_string_copy): Use scm_c_substring to get a
2822 copy-on-write string.
2823
2824 2004-08-18 Kevin Ryde <user42@zip.com.au>
2825
2826 * arbiters.c (FETCH_STORE): New macro.
2827 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
2828 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
2829 scm_try_arbiter and scm_release_arbiter.
2830 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
2831 for speed on i386, otherwise using mutex.
2832
2833 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
2834 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
2835 exact and inexact is #f.)
2836
2837 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
2838 to get thread safety of scm_ttyname.
2839
2840 * ports.c (ttyname): Remove prototype, unused.
2841
2842 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
2843 Reported by Michael Tuexen.
2844
2845 2004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2846
2847 * load.c (scm_init_load_path): Do not pass NULL to
2848 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
2849 not set. Thanks to Bill Schottstaedt.
2850
2851 2004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2852
2853 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
2854 locale strings instead of accessing their internals.
2855 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
2856 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
2857 SCM_STRING_CHARS and SCM_STRING_LENGTH.
2858
2859 * simpos.c (scm_system): Convert SCM strings to locale strings
2860 instead of accessing their internals.
2861
2862 * script.c (scm_compile_shell_switches): Convert version to locale
2863 string before printing it.
2864
2865 * rdelim.c (scm_read_delimited_x): Avoid
2866 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
2867 of scm_from_long for the returned number of read characters.
2868
2869 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
2870 scm_i_mode_bits to avoid accessing internals of SCM string from C.
2871
2872 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
2873 Use them instead of SCM_SYSCALL when one or two strings need to be
2874 converted into locale strings.
2875 (my_rename): New, gathers platform dependent code for renaming.
2876 (scm_rename): Use it.
2877 (scm_readlink, scm_copy_file): Convert SCM strings to locale
2878 strings instead of accessing their internals.
2879 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
2880 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
2881 SCM_STRING_LENGTH.
2882
2883 * extensions.c (load_extension): Convert lib and init to locale
2884 strings instead of accessing the internals directly.
2885 (scm_c_load_extension): Use scm_from_locale_string instead of
2886 scm_makfrom0str.
2887
2888 * fports.h, fports.c (scm_i_fdes_to_port): New, like
2889 scm_fdes_to_port, but take mode bits directly instead of as a C
2890 string.
2891 (scm_i_fdes_to_port): Implement using above.
2892 (scm_open_file): Use scm_i_fdes_to_port together with
2893 scm_i_mode_bits to avoid accessing internals of SCM string from C.
2894 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
2895 with scm_i_mode_bits to avoid accessing internals of SCM string
2896 from C.
2897
2898 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
2899 SCM string as argument.
2900
2901 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
2902 bits directly instead of C string.
2903 (scm_void_port): Implement using above.
2904 (scm_sys_make_void_port): Use scm_i_void_port together with
2905 scm_i_mode_bits to avoid accessing internals of SCM string.
2906
2907 * strings.h, strings.c (scm_i_get_substring_spec): New.
2908
2909 * socket.c, rw.c, deprecated.h, validate.h
2910 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
2911 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
2912 scm_to_locale_string, etc.
2913 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
2914 above, plus scm_i_get_substring_spec.
2915
2916 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
2917 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
2918 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
2919 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
2920 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
2921 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
2922 with more explicit scm_remember_upto_here_1, etc, or introduced
2923 them in the first place.
2924
2925 * posix.c (WITH_STRING): New helper macro. Use it where one
2926 locale string is needed for a short piece of code.
2927 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
2928 when one locale string is needed.
2929 (scm_mkstemp): Convert tmpl to a locale string.
2930 (scm_putenv): Rewritten to use only C strings.
2931 (scm_setlocale, scm_crpt): Convert argument strings to locale
2932 strings.
2933
2934 2004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2935
2936 * load.c (scm_primitive_load_path): Do not check for absolute
2937 filenames when scm_sys_search_load_path returns false, which will
2938 return absolute filenames unchanged.
2939
2940 2004-08-11 Marius Vollmer <mvo@zagadka.de>
2941
2942 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
2943 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
2944 of an alist. Thanks to Matthias Koeppe!
2945
2946 2004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2947
2948 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
2949 Moved from string.h to deprecated.h.
2950
2951 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
2952
2953 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
2954 SCM_I_MAKE_STRING_TAG, changed all uses.
2955 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
2956 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
2957 respectively. For a short time, the old names are still there as
2958 aliases. Not all uses have been changed yet, but the ones in
2959 strings.c have.
2960 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
2961 SCM_T_BITS_MAX.
2962 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
2963 scm_take_locale_string, scm_take_locale_stringn,
2964 scm_to_locale_string, scm_to_locale_stringn,
2965 scm_to_locale_stringbuf): New.
2966 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
2967 deprecated.[hc]. Implemented in terms of the new functions above.
2968 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
2969 scm_makfrom0str): Reimplemented in terms of the new functions from
2970 above. They will be discouraged shortly.
2971 (scm_substring): Do not use scm_mem2string.
2972 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
2973 to replace similar code from posix.c, simpos.c, and dynl.c.
2974 (scm_string_append): Use memcpy instead of explicit loop. Do not
2975 use register keyword. Use plain 'char' instead of 'unsigned
2976 char'.
2977
2978 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
2979 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
2980
2981 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
2982 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
2983 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
2984 not as a pointer. Use scm_remember_upto_here_1 to protect it.
2985
2986 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
2987 string. This avoids a conversion round-trip.
2988
2989 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
2990 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
2991 SCM_I_STRING_LENGTH, respectively.
2992 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
2993
2994 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
2995 of a string, call scm_display on the string itself.
2996
2997 * dynwind.c, dynwind.h (scm_frame_free): New.
2998
2999 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
3000 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
3001 Replaced uses of SCM_STRING_CHARS with proper uses of
3002 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
3003 Replaced scm_mem2string with scm_from_locale_string.
3004
3005 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
3006 Removed, replaced all uses with scm_i_allocate_string_pointers.
3007
3008 * load.h, load.c (scm_internal_parse_path): Removed.
3009 (scm_parse_path): Use scm_string_split to do the work.
3010 (scm_init_load_path): Use scm_parse_path instead of
3011 scm_internal_parse_path.
3012 (scm_search_path): Rewritten string handling part of the code in
3013 terms of scm_to_locale_stringbuf and so that it is thread safe.
3014
3015 * error.c (scm_error_scm): Throw directly instead of calling
3016 scm_error, this avoids the back and forth conversion of SUBR and
3017 MESSAGE and also plugs a memory leak.
3018 (scm_error): Call scm_error_scm.
3019
3020 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
3021 (display_header): Print FNAME when it is true, not
3022 merely when it is a string.
3023
3024 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
3025 unceremoniously. They were unused by Guile itself, and external
3026 use should stop immediately.
3027
3028
3029 2004-08-10 Marius Vollmer <mvo@zagadka.de>
3030
3031 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
3032 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
3033 deprecated versions installed in deprecated.h and deprecated.c.
3034 Changed all uses.
3035
3036 2004-08-06 Rob Browning <rlb@defaultvalue.org>
3037
3038 * net_db.c (scm_resolv_error): don't cause an exception while
3039 trying to throw an exception -- call scm_misc_error with correct
3040 arguments. The previous arguments needed a format escape that
3041 wasn't in any of the format strings.
3042
3043 2004-08-06 Kevin Ryde <user42@zip.com.au>
3044
3045 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
3046 so as not to depend on signedness of plain char. For byvect range
3047 check, throw out-of-range rather than wrong-type-arg.
3048
3049 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
3050 signed byte range checks by using scm_to_schar and scm_from_schar,
3051 don't want to depend on signedness of C char.
3052
3053 2004-08-05 Kevin Ryde <user42@zip.com.au>
3054
3055 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
3056 SCM_DEFER_INTS.
3057 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
3058 guaranteed if multiple threads compete to unlock.
3059 Update docstrings per doc/ref/api-scheduling.texi.
3060
3061 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
3062 stat on the filename, to be certain a file rename can't mean we get
3063 info on one filesystem object but open another. This fstat usage is
3064 similar to Emacs copy-file.
3065
3066 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
3067
3068 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
3069 SIGINT and SIGQUIT, since those values are ints.
3070
3071 2004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3072
3073 * num2integral.i.c, num2float.i.c: Removed.
3074 * Makefile.am (noinst_HEADERS): Updated.
3075
3076 * numbers.h. numbers.c (scm_make_ratio): Renamed to
3077 scm_i_make_ratio and made static, replaced uses with scm_divide.
3078 (scm_complex_p): New, export as "complex?" to Scheme.
3079 (scm_number_p): Export as "number?" to Scheme.
3080 (scm_is_complex, scm_is_number): New.
3081 (scm_c_make_rectangular, scm_c_make_polar): New.
3082 (scm_make_rectangular, scm_make_polar): Use above.
3083 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
3084 New.
3085 (scm_make_complex): Discouraged by moving to discouraged.h and
3086 discouraged.c. Replaced all uses with scm_c_make_rectangular.
3087
3088 * discouraged.h, discouraged.c, numbers.c, numbers.h
3089 (scm_is_rational): New.
3090 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
3091 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
3092 Removed prototypes.
3093 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
3094 Discouraged by moving to discouraged.h and discouraged.c.
3095 Replaced all uses with scm_from_double.
3096 (scm_num2float, scm_num2double): Discouraged by moving prototype
3097 to discouraged.h and rewriting in terms of scm_to_double.
3098 Replaced all uses with scm_to_double.
3099 (scm_to_double): Do not implement in terms of scm_num2dbl, use
3100 explicit code.
3101 (scm_from_double): Do not implement in terms of scm_make_real, use
3102 explicit code.
3103
3104 2004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3105
3106 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
3107
3108 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
3109 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
3110
3111 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
3112 Renamed to SCM_I_* in order to avoid collisions with the versions
3113 defined in deprecated.h.
3114
3115 * discouraged.h, discouraged.c: New files.
3116
3117 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
3118 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
3119 deprecated to being discouraged by moving to discouraged.h.
3120
3121 * numbers.h, numbers.c, discouraged.h, discouraged.c
3122 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
3123 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
3124 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
3125 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
3126 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
3127 scm_num2ulong_long): Discouraged by moving to discouraged.h and
3128 discouraged.c and reimplementing in terms of scm_from_* and
3129 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
3130 functions.
3131
3132 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
3133 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
3134 scm_i_size2big, scm_i_ptrdiff2big): Removed.
3135 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
3136 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
3137 explicit code.
3138
3139 2004-08-02 Kevin Ryde <user42@zip.com.au>
3140
3141 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
3142 and current usage and migration.
3143
3144 2004-07-31 Kevin Ryde <user42@zip.com.au>
3145
3146 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
3147 it's not thread safe.
3148 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
3149 advantage of this.
3150 * fports.c (scm_open_file): Use scm_strerror likewise.
3151 * filesys.c (scm_stat, scm_lstat): Ditto.
3152
3153 * filesys.c (scm_copy_file): Avoid fd leak when destination file
3154 cannot be opened.
3155
3156 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
3157 update, for thread safety.
3158 (gensym_counter): Move into scm_gensym which is its only user.
3159 (scm_init_symbols): No need to explicitly initialize gensym_counter.
3160
3161 2004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3162
3163 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
3164 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
3165 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
3166 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
3167 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
3168 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
3169 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
3170 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
3171 defined in terms of scm_to_signed_integer, etc, but in terms of
3172 scm_to_int8, etc.
3173
3174 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
3175
3176 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
3177 no longer used.
3178
3179 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
3180 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
3181
3182 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
3183 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
3184 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
3185 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
3186 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
3187 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
3188 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
3189
3190 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
3191 the functions below.
3192
3193 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
3194 conv-uinteger.i.c.
3195
3196 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
3197 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
3198 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
3199 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
3200 scm_from_uint64): Turned from macros into proper functions.
3201 (scm_to_signed_integer, scm_to_unsigned_integer,
3202 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
3203 conv-integer.i.c and conv-uinteger.i.c, as well.
3204
3205 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
3206 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
3207 the limits. Those are always defined.
3208
3209 2004-07-29 Kevin Ryde <user42@zip.com.au>
3210
3211 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
3212
3213 2004-07-28 Kevin Ryde <user42@zip.com.au>
3214
3215 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
3216 safety.
3217
3218 * unif.c (scm_array_set_x): For svect, use scm_num2short for
3219 consistency with other vector types and to get arg and func name into
3220 error message.
3221
3222 2004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3223
3224 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
3225 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
3226 scm_from_bool, respectively.
3227 (SCM_NINUMP): Added.
3228
3229 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
3230 deprecated.h. Replaced all uses with scm_is_eq.
3231
3232 2004-07-24 Kevin Ryde <user42@zip.com.au>
3233
3234 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
3235 * posix.c (scm_crypt): Use it to protect static data in crypt().
3236
3237 2004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3238
3239 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
3240 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
3241 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
3242 versions to deprecated.h and deprecated.c. Changed all uses to
3243 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
3244 scm_from_*, as appropriate.
3245
3246 * dynwind.c (scm_i_dowinds): Removed unused code that would call
3247 the unexisting scm_cross_dynwind_binding_scope for inums on the
3248 windlist.
3249
3250 2004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3251
3252 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
3253 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
3254 byte-wise address to a SCM integer. Changed all uses.
3255 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
3256 scm_to_ipv6 and added type and range checking, for converting from
3257 an IPv& byte-wise address to a SCM integer. Changed all uses.
3258 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
3259 is now done by scm_to_ipv6.
3260
3261 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
3262 not accept inexact integers.
3263
3264 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
3265 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
3266 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
3267 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
3268 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
3269 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
3270 fixnum/bignum distinction visible. Changed all uses to
3271 scm_to_size_t or similar.
3272
3273 2004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3274
3275 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
3276
3277 2004-07-10 Kevin Ryde <user42@zip.com.au>
3278
3279 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
3280 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
3281 such a size causes divide-by-zeros in scm_hasher.
3282
3283 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
3284 leak.
3285
3286 2004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3287
3288 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
3289 Rewritten using the same logic as scm_to_signed_integer and
3290 scm_to_unsigned_integer, respectively, which is better(tm). Also,
3291 use CHAR_BIT instead of hardcoding 8.
3292 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
3293 SCM_I_LLONG_MIN etc. instead.
3294
3295 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
3296 SCM_I_MAKINUM and changed all uses.
3297 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
3298
3299 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
3300 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
3301 them by assuming twos-complement.
3302
3303 2004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3304
3305 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
3306 configure now produces.
3307 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
3308 definitions, giving the limits of the integer types defined by
3309 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
3310 LLONG_MIN or LONG_LONG_MIN is hard to get at.
3311
3312 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
3313 SHORT_MIN.
3314 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
3315 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
3316 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
3317 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
3318 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
3319 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
3320 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
3321 scm_from_uintmax): New.
3322
3323 2004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3324
3325 * tags.h (scm_is_eq): New.
3326
3327 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
3328 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
3329 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
3330 scm_from_bool, and scm_is_bool, respectively.
3331
3332 * boolean.h (scm_is_bool): Fix bug in prototype.
3333 (scm_from_bool): The argument is "x" not "f", stupid.
3334
3335 * boolean.c (scm_is_bool): Fix typo.
3336
3337 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
3338 scm_is_unsigned_integer, scm_to_signed_integer,
3339 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
3340 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
3341 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
3342 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
3343 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
3344 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
3345 New.
3346
3347 2004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3348
3349 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
3350 scm_to_bool): New.
3351
3352 2004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3353
3354 * backtrace.c (display_expression, display_frame): Call
3355 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
3356 single memoized expression.
3357
3358 * debug.c (memoized_print): Don't try to unmemoize the memoized
3359 object, since we can't know whether it holds a single expression
3360 or a body.
3361
3362 (scm_mem_to_proc): Removed check for lambda expression, since it
3363 was moot anyway. Whoever uses these functions for debugging
3364 purposes should know what they do: Creating invalid memoized code
3365 will cause crashes, independent of whether this check is present
3366 or not.
3367
3368 (scm_proc_to_mem): Take the closure's code as it is and don't
3369 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
3370 memoized code should not be modified.
3371
3372 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
3373 scm_unmemoize from public use, but made scm_i_unmemoize_expr
3374 available as a guile internal function instead. However,
3375 scm_i_unmemoize_expr will only work on memoized objects that hold
3376 a single memoized expression. It won't work with bodies.
3377
3378 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
3379 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
3380 i. e. a list of expressions.
3381
3382 * eval.c (unmemoize_exprs): Drop internal body markers from the
3383 output during unmemoization.
3384
3385 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
3386 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
3387 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
3388 as guile internal functions instead. scm_i_unmemoize_expr will
3389 only work on a single memoized expression, while
3390 scm_i_unmemocopy_body will only work on bodies.
3391
3392 2004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3393
3394 * eval.c (unmemoize_exprs): Handle semi-memoized code.
3395
3396 (scm_cons_source, scm_primitive_eval): Prefer higher level
3397 predicate SCM_FALSEP over SCM_IMP.
3398
3399 2004-06-15 Rob Browning <rlb@defaultvalue.org>
3400
3401 * script.c (scm_shell_usage): minor phrasing change.
3402
3403 * gc_os_dep.c: update ifdefery for macosx.
3404 (scm_get_stack_base): separate result initialization from
3405 declaration to slience warnings with macosx and hp-ux using gcc
3406 3.3. Thanks to Andreas Vögele.
3407
3408 2004-06-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
3409
3410 * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
3411
3412 2004-06-06 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3413
3414 * list.[ch] (scm_i_finite_list_copy): New internal function to
3415 copy lists that are known to be finite (though not necessarily
3416 proper).
3417
3418 * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
3419 a closure's argument list like an expression of a body.
3420
3421 * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
3422 unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
3423 unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
3424 unmemoize_letrec, unmemoize_letstar, unmemoize_or,
3425 unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
3426 unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
3427 unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
3428 unmemoize_builtin_macro): New static functions and symbols.
3429
3430 (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
3431 now has a slightly different meaning: The memoized form that is
3432 receives as its argument is now interpreted as a sequence of
3433 expressions from a body.
3434
3435 (unmemocar, scm_unmemocar): Since the whole functionality of
3436 unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
3437 has its old content back and is deprecated, while unmemocar has
3438 been removed.
3439
3440 (SCM_BIT7): Removed.
3441
3442 (CEVAL): For unmemoizing a single expression, call
3443 unmemoize_expression instead of scm_unmemocopy, which now expects
3444 a sequence of body expressions. Eliminated unnecessary empty
3445 environment frame when executing let* forms. Eliminated
3446 unmemoization step from evaluator.
3447
3448 2004-06-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3449
3450 * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
3451 macroexp and made static. Added new version of scm_macroexp that
3452 emits a deprecation warning and then calls macroexp.
3453 (scm_m_undefine): Issue deprecation warning.
3454
3455 2004-05-30 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3456
3457 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
3458 Modified to make set! work on symbols that represent syntactic
3459 keywords.
3460
3461 2004-05-26 Han-Wen Nienhuys <hanwen@xs4all.nl>
3462
3463 * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
3464 compound expression as lvalue errors.
3465
3466 2004-05-24 Marius Vollmer <mvo@zagadka.de>
3467
3468 * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
3469 WINDER_DATA to a SCM.
3470
3471 2004-05-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3472
3473 * goops.c (compute_getters_n_setters, create_standard_classes,
3474 scm_add_slot): Compute closures by calling scm_i_eval_x on a
3475 lambda expression rather than creating them with scm_closure.
3476
3477 2004-05-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3478
3479 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
3480 misplaced syntactic keywords. This will not work unless guile's
3481 defmacro feature is deprecated.
3482
3483 (scm_m_case): Fixed a bug that caused the list of labels to grow
3484 with every case form.
3485
3486 2004-05-19 Kevin Ryde <user42@zip.com.au>
3487
3488 * numbers.c (scm_round_number): For inum and big, just return x. For
3489 real, use scm_round for 2^54-1 etc problems covered there.
3490
3491 * numbers.c (trunc): Remove #define to scm_truncate when the C library
3492 doesn't provide trunc. This was for when `truncate' was done as a
3493 scm_tc7_dsubr, no longer required.
3494
3495 * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
3496 to stack marking call, two parameters and no cast on t->base.
3497
3498 2004-05-18 Marius Vollmer <mvo@zagadka.de>
3499
3500 * hashtab.c (rehash_after_gc): Bug fix: properly link the
3501 processed hashtables back into the weak_hashtables list. Thanks
3502 to Bill Schottstaedt!
3503
3504 2004-05-16 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3505
3506 * eval.c (unmemoize_quote): New static function.
3507
3508 (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
3509 representation of 'quote' and '@slot-ref' to an improper list.
3510 This reduces execution time, the number of cells used to hold the
3511 memoized code, and thus also reduces garbage collection time.
3512
3513 (scm_unmemocopy): Use unmemoize_quote for quote expressions.
3514
3515 (SCM_CEVAL): Changed macro handling to also work with macros that
3516 return improper lists. Added an assertion, that the code returned
3517 by a macro transformer will not lead to cycles in the memoized
3518 code.
3519
3520 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3521
3522 No functional change, just rearrangements of functions within the
3523 file.
3524
3525 * eval.c (scm_ilookup, scm_unbound_variable_key,
3526 error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
3527 the definitions used for execution, since that's where they will
3528 belong to later.
3529
3530 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3531
3532 * numbers.h (SCM_SLOPPY_FRACTIONP): Removed. It was not used
3533 throughout guile, has not been part of an official release yet,
3534 and the concept of sloppy predicates has never been a good idea.
3535
3536 (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
3537 SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
3538 Simplified.
3539
3540 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3541
3542 * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
3543 to make explicit what happens.
3544
3545 2004-05-15 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3546
3547 * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
3548 explicit what happens.
3549
3550 * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
3551 SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
3552
3553 2004-05-11 Marius Vollmer <mvo@zagadka.de>
3554
3555 * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
3556 is indeed a procedure when it isn't a number.
3557
3558 2004-05-10 Marius Vollmer <mvo@zagadka.de>
3559
3560 Convert floating point numbers into strings with an arbitrary
3561 radix. Thanks to Richard Todd!
3562
3563 * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
3564 fit.
3565 (fx): Removed.
3566 (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
3567 number_chars): New, to support variable radices.
3568 (idbl2str): Use above instead of the old base-10 only tables.
3569 (iflo2str): Pass on new RADIX argument to idbl2str.
3570 (scm_number_to_string): Pass radix to iflo2str.
3571 (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
3572 iflo2str.
3573 (scm_init_numbers): Call init_dblprec and init_fx_radix for all
3574 possible radices.
3575
3576 2004-05-10 Kevin Ryde <user42@zip.com.au>
3577
3578 * numbers.c (scm_logbit_p): Correction to test above the end of an
3579 inum. Reported by Jan Konecny.
3580
3581 2004-05-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3582
3583 * gc.h (scm_t_cell): Fields are now of type SCM instead of
3584 scm_t_bits. Updated all users.
3585 (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
3586 duplicating the code.
3587 (SCM_CELL_OBJECT_LOC): New.
3588 (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
3589 (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
3590
3591 * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
3592 SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
3593 SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
3594 SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
3595 SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
3596 SCM_SMOB_OBJECT_3_LOC): New.
3597 * smob.c (scm_i_set_smob_flags): New function.
3598
3599 * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
3600 hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
3601 random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
3602 Use SCM_SMOB_* instead of SCM_CELL_* as appropriate. Use
3603 SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
3604 zeroth word directly. Use SCM_SMOB_PREDICATE as appropriate.
3605
3606 * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
3607 taking the address of SCM_CELL_WORD_1, the latter being no longer
3608 an lvalue.
3609
3610 * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
3611 of casting SCM_CELL_WORD_LOC.
3612
3613 2004-05-02 Kevin Ryde <user42@zip.com.au>
3614
3615 * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
3616 --disable-deprecated. Reported by Andreas Vögele.
3617
3618 * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
3619 particular on HP-UX). Reported by Andreas Vögele.
3620
3621 * list.c (varargs.h): Remove, leave just stdarg.h which is all the
3622 code has support for. Fixes building with AIX cc, which is ansi but
3623 doesn't define __STDC__. Reported by Keith Crane.
3624 (var_start): Remove macro, this variation no longer required.
3625 (scm_list_n): Use va_start directly.
3626
3627 2004-05-01 Kevin Ryde <user42@zip.com.au>
3628
3629 * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
3630 is now gone. Reported by Andreas Vögele.
3631
3632 2004-04-28 Kevin Ryde <user42@zip.com.au>
3633
3634 * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
3635 mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
3636 ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
3637 subscript. Reported by Andreas Vögele.
3638 Also cast through unsigned char to avoid passing negatives to those
3639 macros if input contains 8-bit values.
3640
3641 * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
3642 corrections to range check for signed numbers. Remove
3643 scm_remember_upto_here_1(num) from these checks, since num is used
3644 subsequently anyway.
3645
3646 * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
3647 avoid warning from gcc 3.4. Reported by Hyperdivision.
3648
3649 * numbers.c (scm_bit_extract): Use min instead of MIN.
3650 (MIN): Remove, this conflicts with similar macro defined by limits.h
3651 on HP-UX. Reported by Andreas Vögele.
3652
3653 * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
3654 particular on HP-UX). Reported by Andreas Vögele.
3655
3656 * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
3657 Reported by Andreas Vögele.
3658
3659 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
3660 for the benefit of hpux11 where pthread_mutex_t is 88 bytes. Reported
3661 by Andreas Vögele.
3662
3663 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3664
3665 * eval.c (s_macro_keyword): New static identifier.
3666
3667 (scm_m_define): Change order to first create binding and
3668 evaluating the expression afterwards.
3669
3670 (scm_m_set_x): Memoize complete set! expression. Only leave
3671 symbols if no binding exists at memoization time. Throw error if
3672 assigning to a syntactic keyword.
3673
3674 (lazy_memoize_variable): New function.
3675
3676 (CEVAL): When execution set!, perform lazy memoization if
3677 unmemoized symbol is detected.
3678
3679 * modules.c (module_variable): Return variables with unbound
3680 value.
3681
3682 * tags.h: Fix comment.
3683
3684 2004-04-25 Kevin Ryde <user42@zip.com.au>
3685
3686 * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
3687 scm_c_downcase): Use ctype.h toupper and tolower. This will be useful
3688 in 8-bit locales, and ensures consistency with char-upper-case? and
3689 char-lower-case? which already use ctype.h.
3690 (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
3691 Remove.
3692 * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
3693
3694 * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
3695 call. Reported by Hyperdivision.
3696
3697 * threads.c (scm_yield): Correction, actually call scm_thread_yield.
3698 Reported by Hyperdivision.
3699
3700 * unif.c (s_scm_make_uve): Remove unused local variable. Reported by
3701 Hyperdivision.
3702
3703 2004-04-22 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3704
3705 Hide the implementation of ilocs and isyms in eval.c.
3706
3707 * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
3708 SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
3709 SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
3710 SCM_ICDRP): Deprecated and added to deprecated.h. Moved from
3711 eval.h to eval.c.
3712
3713 * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
3714 SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
3715 scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
3716 (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
3717 scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
3718 deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and
3719 renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and
3720 renamed to ISYMNUM.
3721
3722 * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
3723 (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
3724 Extracted printing of ilocs and isyms to guile internal functions
3725 scm_i_print_iloc, scm_i_print_isym of eval.c.
3726
3727 2004-04-22 Kevin Ryde <user42@zip.com.au>
3728
3729 * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
3730
3731 * numbers.c (scm_round): Test for x already an integer, to avoid bad
3732 rounding in x+0.5 when x is a big value already an integer. In
3733 certain hardware rounding cases x+0.5 can give an adjacent integer,
3734 leading to that as the result, when we really just wanted x itself.
3735
3736 2004-04-19 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3737
3738 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
3739
3740 (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
3741 added const qualifiers, cast intentionally unused expressions to
3742 void for emphasis, improved comment.
3743
3744 2004-04-18 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3745
3746 * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
3747 scm_tc8_isym): Renamed scm_tags to scm_tc8_tags. Renamed
3748 scm_tc9_flag to scm_tc8_flag. Introduced new identifier
3749 scm_tc8_isym. Defined tc8-tags relative to scm_tc3_imm24.
3750 Defined the tc8-tag for flags to be 0x04, which will mean that
3751 SCM_BOOL_F will also have the value 0x04 instead of 0x013c. Due
3752 to the reduced number of bits and the simpler bit pattern for
3753 SCM_BOOL_F, certain machines may be able to use more efficient
3754 processor instructions to deal with SCM_BOOL_F.
3755
3756 (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed. These have
3757 never been defined in a released version, thus no need to
3758 deprecate them.
3759
3760 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
3761 instead of tc9 tags.
3762
3763 (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
3764 of tc9 tags.
3765
3766 (SCM_MAKSPCSYM): Removed. It is almost impossible that user code
3767 could have used this definition.
3768
3769 (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
3770 SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
3771 SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
3772 as isyms, as special isyms don't exist any more.
3773
3774 2004-04-18 Kevin Ryde <user42@zip.com.au>
3775
3776 * filesys.c (scm_readdir): Use readdir_r when available, for thread
3777 safety.
3778
3779 * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
3780 explicit swapping code.
3781
3782 2004-04-15 Kevin Ryde <user42@zip.com.au>
3783
3784 * cpp_sig_symbols.in: Add SIGSYS.
3785
3786 * list.c (scm_append_x): Use iterative style, to avoid non-tail
3787 recursion.
3788
3789 * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
3790 frac/big and frac/frac, use scm_less_p for exact comparison.
3791
3792 * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
3793 with big/inum.
3794
3795 * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
3796
3797 2004-04-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
3798
3799 * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
3800
3801 * chars.h (scm_init_chars): change scm_{upcase,downcase} to
3802 scm_c_{up,down}case.
3803 (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
3804 when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
3805
3806 2004-04-06 Kevin Ryde <user42@zip.com.au>
3807
3808 * numbers.c (scm_ash): Remove stray "}" in docstring.
3809
3810 * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
3811 x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
3812 calling mpz_cmp_ui in most cases.
3813
3814 * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
3815 for big == abs(most-negative-fixnum) special case.
3816 (abs_most_negative_fixnum): Remove, no longer used.
3817
3818 * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
3819 test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
3820 calling (sigaction NSIG).
3821
3822 * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
3823 and fork error cases to do this.
3824
3825 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3826
3827 * eval.c (CEVAL): Don't distinguish between short and long
3828 instructions when dispatching - just always dispatch on the
3829 instruction code, which is common for short and long instructions.
3830 Further, removed unnecessary goto statements and added comment.
3831
3832 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3833
3834 * eval.c (scm_unmemocopy): Don't distinguish between short and
3835 long instructions when dispatching - just always dispatch on the
3836 instruction code, which is common for short and long instructions.
3837 Further, removed unnecessary goto statements, fixed indentation
3838 and replaced SCM_IMP predicates by SCM_NULLP.
3839
3840 2004-04-03 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3841
3842 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
3843 comparison with SCM_ILOC00. In CEVAL, eliminate goto-label
3844 'checkmacro'.
3845
3846 2004-03-31 Kevin Ryde <user42@zip.com.au>
3847
3848 * simpos.c: Include <signal.h> for SIG_IGN and friends.
3849
3850 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3851
3852 Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
3853 SCM_DEBUGGINGP:
3854
3855 * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
3856 eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
3857 SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one
3858 single interface that also matches the naming conventions.
3859 Probably scm_debug_mode_p should be part of the private interface
3860 anyway.
3861
3862 * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
3863 eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
3864 scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
3865 to scm_debug_mode_p.
3866
3867
3868 Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
3869
3870 * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
3871 (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr
3872 from debug.h to eval.h.
3873
3874 * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
3875 more, just leave it with setting scm_debug_mode_p, which is
3876 equivalent for practical purposes.
3877
3878 * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
3879 instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x.
3880
3881 * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
3882
3883 * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
3884 static and renamed it to ceval throughout. Provide a new exported
3885 but deprecated function scm_ceval as a wrapper for backwards
3886 compatibility. The same is done for the deval/scm_deval pair of
3887 functions.
3888
3889 * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
3890 throughout. Defined CEVAL to ceval or deval, based on compilation
3891 phase.
3892
3893 * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
3894 to ceval and deval instead of calling *scm_ceval_ptr.
3895
3896 * eval.c (dispatching_eval): New deprecated static function.
3897
3898 * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
3899 to emulate its old behaviour as closely as possible.
3900
3901
3902 Change the evaluator such that only expressions for which pair? is
3903 true are passed to CEVAL, and such that all other expressions are
3904 evaluated outside of CEVAL:
3905
3906 * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an
3907 expression that is assumed to be memoized already. All but
3908 expressions of the form '(<form> <form> ...)' are evaluated inline
3909 without calling an evaluator.
3910
3911 * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
3912 expressions of the form '(<form> <form> ...)' inline without
3913 calling an evaluator.
3914
3915 * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
3916 the special case of unmemoized symbols passed on the top level.
3917
3918 * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
3919 is known that the expression passed to CEVAL is of the form
3920 '(<form> <form> ...)'. Remove handling of the tc7-objects, since
3921 now it is known that the input expression of CEVAL is a pair.
3922
3923 2004-03-29 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3924
3925 * eval.c (is_self_quoting_p): New static function.
3926
3927 (scm_m_quote): Use is_self_quoting_p.
3928
3929 (copy_tree): Corrected typo in comment.
3930
3931 2004-03-28 Han-Wen Nienhuys <hanwen@xs4all.nl>
3932
3933 * eval.c (s_scm_copy_tree): idem.
3934
3935 * list.c (s_scm_filter): remove "pointer" from doc string.
3936
3937 * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
3938
3939 * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
3940
3941 * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
3942 (display_frame): idem.
3943 (display_backtrace_file_and_line): idem.
3944
3945 * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
3946 arguments.
3947
3948 2004-03-26 Kevin Ryde <user42@zip.com.au>
3949
3950 * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
3951
3952 * numbers.c (scm_modulo): For inum/big and big/big, remove test of
3953 big==0 since that never occurs.
3954
3955 * numbers.c, numbers.h (scm_modulo_expt): Renamed from
3956 scm_modular_expt, matching scheme level name `modulo-expt'.
3957
3958 * numbers.c (scm_modular_expt): Return a negative remainder for a
3959 negative divisor, the same as `modulo' does.
3960
3961 2004-03-26 Eric Hanchrow <offby1@blarg.net>
3962
3963 * numbers.c, numbers.h (scm_modular_expt): New function.
3964
3965 2004-03-25 Kevin Ryde <user42@zip.com.au>
3966
3967 * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
3968 return inexact as required by r5rs.
3969
3970 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3971
3972 * eval.c: Separated some definitions relevant for execution from
3973 the memoization part of the file.
3974
3975 (copy_tree): New static function
3976
3977 (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
3978 structures are detected now and will lead to an exception instead
3979 of forcing guile to run in an endless loop, using up all the
3980 system's memory. Second, arrays in the cdr of an improper list
3981 are now copied. See the new test cases in eval.test.
3982
3983 2004-03-24 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
3984
3985 * posix.c (scm_gethostname): Make sure len is initialised before
3986 it is used. Restructured to (hopefully) represent possible
3987 configurations more clearly in the code. Added unwind handler.
3988
3989 2004-03-23 Kevin Ryde <user42@zip.com.au>
3990
3991 * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
3992 MAXHOSTNAMELEN when available.
3993
3994 2004-03-21 Marius Vollmer <mvo@zagadka.de>
3995
3996 * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
3997 terminator. Rewritten the logic as a state machine, I must have
3998 been doing too much VHDL lately...
3999
4000 * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
4001 themselves. Thanks to Han-Wen Nienhuys!
4002
4003 * list.c: Changed docstrings so that they no longer talk about
4004 returning 'pointers' to something.
4005
4006 2004-03-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4007
4008 * gc.c: remove set_debug_cell_accesses! when
4009 SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
4010 use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
4011 debugging conditionally.
4012
4013 2004-03-21 Kevin Ryde <user42@zip.com.au>
4014
4015 * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
4016
4017 2004-03-20 Kevin Ryde <user42@zip.com.au>
4018
4019 * posix.c (scm_gethostname): Preserve errno across free() call.
4020
4021 2004-03-18 Han-Wen Nienhuys <hanwen@xs4all.nl>
4022
4023 * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
4024 free cells.
4025
4026 2004-03-14 Kevin Ryde <user42@zip.com.au>
4027
4028 * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
4029 (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
4030
4031 2004-03-07 Kevin Ryde <user42@zip.com.au>
4032
4033 * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
4034 than "GMT" always.
4035 (filltime): Make zname parameter "const".
4036
4037 2004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
4038
4039 * threads.c, threads.h (scm_c_scm2thread): New function.
4040
4041 2004-02-29 Kevin Ryde <user42@zip.com.au>
4042
4043 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
4044 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
4045 particular don't assume "defined (__alpha__) && ! defined (linux)"
4046 means OSF. Remove "SCO" code, which was not really SCO specific and
4047 which John W. Eaton advises should be long past being needed.
4048
4049 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
4050 error throw.
4051
4052 2004-02-24 Kevin Ryde <user42@zip.com.au>
4053
4054 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
4055
4056 2004-02-22 Kevin Ryde <user42@zip.com.au>
4057
4058 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
4059 complex, same as for two args. (Handle only inum, big, real, frac).
4060
4061 2004-02-21 Kevin Ryde <user42@zip.com.au>
4062
4063 * posix.c (scm_crypt): Use new HAVE_CRYPT.
4064 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
4065 Reported by Andreas Voegele.
4066
4067 2004-02-20 Neil Jerram <neil@ossau.uklinux.net>
4068
4069 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
4070 validation.
4071
4072 * read.c (scm_lreadparen): Removed.
4073 (scm_lreadparen1): Renamed scm_i_lreadparen.
4074
4075 2004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
4076
4077 * list.c (scm_list_n): validate non-immediate arguments;
4078 this will catch forgotten a SCM_UNDEFINED.
4079
4080 2004-02-18 Marius Vollmer <mvo@zagadka.de>
4081
4082 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
4083 Thanks to Bill Schottstaedt!
4084
4085 * socket.h (scm_gethost): Removed prototype it is already in
4086 "net_db.h". Thanks to Bill Schottstaedt!
4087
4088 2004-02-18 Kevin Ryde <user42@zip.com.au>
4089
4090 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
4091 order parameter to mpz_import, in fact with just one word there's no
4092 order to worry about at all.
4093
4094 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
4095 and frac==complex, make an exact comparison rather than converting
4096 with fraction2double.
4097
4098 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
4099 shared library, since environ is not directly available there.
4100
4101 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
4102 standard.
4103
4104 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
4105 errno EINVAL in case localtime and gmtime don't set it.
4106 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
4107 SCM_SYSERROR, since mktime and strptime generally don't set errno.
4108
4109 2004-02-16 Kevin Ryde <kevin@swox.se>
4110
4111 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
4112 which were permitted in the past for these.
4113
4114 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
4115 previous change to numbers.c.
4116
4117 * script.c (scm_shell_usage): Print bug-guile email address, as per
4118 GNU standard. Reported by Han-Wen Nienhuys.
4119
4120 2004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
4121
4122 * unif.c (scm_make_uve): Removed local variable and simplified
4123 code in order to avoid compiler used uninitialized warnings.
4124
4125 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
4126 scm_hash_map.
4127 (scm_hash_fold): Use scm_call_3 directly in the call to
4128 scm_internal_hash_fold instead of going via fold_proc (which is
4129 now removed).
4130 (scm_hash_for_each): Use a trampoline +
4131 scm_internal_hash_for_each_handle.
4132 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
4133 functions.
4134
4135 2004-02-12 Kevin Ryde <user42@zip.com.au>
4136
4137 * ports.c (scm_port_line): In docstring, note first line is 0.
4138 (scm_set_port_line_x): In docstring, note first line is 0.
4139 (scm_port_column): In docstring, there's no default to current input
4140 port, and remove shared port-line @defun.
4141 (scm_set_port_column_x): In docstring, there's no default to current
4142 input port, note first column is 0, remove shared set-port-line!
4143 @defun.
4144
4145 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
4146 convert args the same way that array-set! does.
4147
4148 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
4149 for dvect.
4150 (scm_array_p): Add missing "break"s in switch, fix llvect test look
4151 for "l" not "s", fix dvect to be false for singp(prot) since such a
4152 value is for fvect.
4153 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
4154 (exactly_one_third): New variable.
4155 (scm_init_unif): Initialize it.
4156
4157 2004-02-10 Neil Jerram <neil@ossau.uklinux.net>
4158
4159 * read.c (scm_read_opts): Change `escaped-parens' to
4160 `elisp-strings'.
4161
4162 2004-02-08 Neil Jerram <neil@ossau.uklinux.net>
4163
4164 * read.c (scm_read_opts): New opts `elisp-vectors' and
4165 `escaped-parens'.
4166 (s_vector): New.
4167 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
4168 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
4169 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
4170 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
4171 `escaped-parens' option set.
4172 (scm_read_token): If elisp vector syntax active, disallow [ and ]
4173 in tokens.
4174 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
4175 (scm_lreadparen1): New.
4176
4177 * read.h: Remove conditionally compiled last arg to
4178 scm_lreadparen.
4179 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
4180
4181 2004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
4182
4183 * eval.c (m_expand_body): remove stray variable new_body.
4184
4185 2004-01-22 Marius Vollmer <mvo@zagadka.de>
4186
4187 * eval.c (m_expand_body): Rewrite the expression in place (by
4188 overwriting FORMS) also when a letrec is constructed, not only
4189 when no definitions are found. Do not return rewritten expression
4190 to emphasize the in-place rewriting. Changed all users.
4191
4192 2004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
4193
4194 * gc.c: add protected_object_count, a number that is dumped from
4195 gc_stats()
4196
4197 2004-01-11 Marius Vollmer <mvo@zagadka.de>
4198
4199 * dynwind.h, dynwind.c (scm_frame_unwind,
4200 scm_frame_unwind_handler): Renamed and changed all uses.
4201 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
4202
4203 2004-01-11 Kevin Ryde <user42@zip.com.au>
4204
4205 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
4206 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
4207 changes made to scheme-compound.texi.
4208
4209 2004-01-10 Marius Vollmer <mvo@zagadka.de>
4210
4211 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
4212 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
4213
4214 * guile-snarf.in: Use mkdir to create a unique temporary directory
4215 that we can safely use. Thanks to Stefan Nordhausen!
4216
4217 2004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4218
4219 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
4220 argument since it is always zero now. Changed all callers.
4221 Removed code for handling fluids.
4222
4223 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
4224 the wind chain explicitely. Use scm_c_with_fluid for the common
4225 case of only one fluid.
4226 (scm_with_fluid): New.
4227 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
4228
4229 * fluids.h, fluids.c (scm_frame_fluid): New.
4230 (scm_with_fluid): New.
4231 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
4232
4233 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
4234 do the unwinding directly. It is simple enough.
4235
4236 * dynwind.h, dynwind.c: Did the following renamings:
4237 scm_begin_frame -> scm_frame_begin,
4238 scm_end_frame -> scm_frame_end,
4239 scm_on_unwind -> scm_frame_unwind,
4240 scm_on_rewind -> scm_frame_rewind,
4241 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
4242 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
4243 Changed all uses.
4244
4245 * aync.h, async.c: Did the follwing renamings:
4246 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
4247 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
4248 Changed all uses.
4249
4250 * ports.h, ports.c: Did the follwing renamings:
4251 scm_with_current_input_port -> scm_frame_current_input_port,
4252 scm_with_current_output_port -> scm_frame_current_output_port,
4253 scm_with_current_error_port -> scm_frame_current_error_port.
4254 Changed all uses.
4255
4256 2004-01-07 Kevin Ryde <user42@zip.com.au>
4257
4258 * numbers.c (s_bignum): Remove, not used since gmp bignums.
4259 Reported by Richard Todd.
4260
4261 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
4262 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
4263
4264 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
4265 traversing the args list, fixes segv if an improper list is given.
4266 Reported by Rouben Rostamian.
4267
4268 2004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4269
4270 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
4271 swap_data on stack, use a 'malloc obj'.
4272
4273 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
4274 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
4275 scm_i_... since they are internal. Changed all uses.
4276
4277 * dynwind.c (frame_print): Removed, use the default printer.
4278 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
4279 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
4280 to protect SCM values.
4281
4282 * dynwind.h (SCM_F_WIND_EXPLICITELY,
4283 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
4284 Changed all uses.
4285 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
4286
4287 2004-01-05 Marius Vollmer <mvo@zagadka.de>
4288
4289 * ports.h, ports.c (scm_with_current_input_port,
4290 scm_with_current_output_port, scm_with_current_error_port): New.
4291
4292 * async.h, async.c (scm_with_blocked_asyncs,
4293 scm_with_unblocked_asyncs): New.
4294
4295 2004-01-03 Marius Vollmer <mvo@zagadka.de>
4296
4297 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
4298 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
4299 New.
4300 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
4301 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
4302 function when the outermost wind point has been reached. The
4303 latter is used to copy a continuation stack at the right time.
4304 scm_dowinds remains available.
4305 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
4306 tc16_guard, guards_print): Removed.
4307 (scm_internal_dynamic_wind): Reimplemented using frames.
4308
4309 * continuations.c (copy_stack): New, do only the stack copying
4310 part of copy_stack_and_call.
4311 (copy_stack_and_call): Copy the stack after unwinding and before
4312 rewinding.
4313 (scm_dynthrow): Do not call scm_dowinds, this is now done by
4314 copy_stack_and_call.
4315
4316 2004-01-04 Kevin Ryde <user42@zip.com.au>
4317
4318 * numbers.c (scm_less_p): Don't convert frac to float for compares,
4319 can give bad results due to rounding.
4320
4321 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
4322 setzone/restorezone protection for DOS.
4323
4324 2003-12-26 Marius Vollmer <mvo@zagadka.de>
4325
4326 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
4327 and scm_t_uintmax to be defined in scmconfig.h
4328
4329 2003-12-03 Kevin Ryde <user42@zip.com.au>
4330
4331 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
4332
4333 * numbers.c (scm_make_ratio): Check for numerator equal to
4334 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
4335 giving integer -1.
4336
4337 * numbers.c (scm_real_part): Return fraction unchanged rather than
4338 converting to flonum.
4339
4340 2003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4341
4342 * modules.c (module_variable): Fixed (and thus simplified) the
4343 definition of SCM_BOUND_THING_P to reflect the fact that since
4344 after the 1.4 series of guile, obarrays only hold variable
4345 objects.
4346
4347 2003-11-30 Marius Vollmer <mvo@zagadka.de>
4348
4349 * numbers.c (scm_logand): It's "#b...", not "#\b...".
4350
4351 From Paul Jarc:
4352
4353 * read.c (scm_lreadr): Signal an error for invalid escape
4354 sequences in strings. Code cleanups too.
4355
4356 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
4357 writing control characters in strings.
4358
4359 2003-11-21 Marius Vollmer <mvo@zagadka.de>
4360
4361 * ports.c (scm_drain_input): Bug fix: only access the port after
4362 checking that it indeed is one.
4363
4364 2003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
4365
4366 * eval.c (s_bad_define): New static identifier.
4367
4368 (m_body): Fixed comment.
4369
4370 (scm_m_define): Don't generate memoized code for definitions that
4371 are not on the top level. As a consequence, no memoized code at
4372 all is generated for definitions any more: Top level definitions
4373 are executed immediately during memoization and internal
4374 definitions are handled separately in m_expand_body.
4375
4376 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
4377 definitions. Consequently, there is no unmemoizing code any more
4378 that might modify the environment. Thus, the old scm_unmemocopy
4379 is removed and the old unmemocopy is renamed to scm_unmemocopy.
4380
4381 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
4382 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
4383 over SCM_NIMP in places, where the argument is known to be part of
4384 a proper list.
4385
4386 2003-11-21 Kevin Ryde <user42@zip.com.au>
4387
4388 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
4389 for bignums.
4390
4391 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
4392 to share some shifting.
4393
4394 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
4395 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
4396 since gc does this.
4397
4398 2003-11-19 Marius Vollmer <mvo@zagadka.de>
4399
4400 * numbers.c (scm_make_ratio): Rewritten to have a simpler
4401 structure. Previously, not all cases with a negative denominator
4402 were covered.
4403
4404 * numbers.c (mem2decimal_from_point): use scm_divide instead of
4405 scm_divide2real when forming the fractional part. This allows
4406 "#e1.2" to yield 6/5.
4407
4408 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
4409 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
4410 fractions were equal to each other regardless of value. Ooops.
4411
4412 * numbers.c (scm_rationalize): Return an inexact result when given
4413 inexact arguments.
4414
4415 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
4416 non-numbers.
4417
4418 2003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4419
4420 Support for exact fractions from Bill Schottstaedt! Thanks!
4421
4422 * print.c (scm_iprin1): Handle fractions.
4423
4424 * objects.h (scm_class_fraction): New.
4425 * objects.c (scm_class_fraction): New.
4426 (scm_class_of): Handle fractions.
4427
4428 * hash.c (scm_hasher): Handle fractions.
4429
4430 * numbers.c: New code for handling fraction all over the place.
4431 (scm_odd_p, scm_even_p): Handle inexact integers.
4432 (scm_rational_p): New function, same as scm_real_p.
4433 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
4434 New exact functions that replace the inexact 'dsubr'
4435 implementations.
4436 (scm_numerator, scm_denominator): New.
4437
4438 * numbers.h (SCM_NUMP): Recognize fractions.
4439 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
4440 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
4441 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
4442 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
4443 SCM_FRACTION_REDUCED): New.
4444 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
4445 New prototypes.
4446 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
4447 scm_rational_p): New prototypes.
4448 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
4449 scm_i_print_fraction): New prototypes.
4450
4451 * goops.c (create_standard_classes): Create "<fraction>" class.
4452
4453 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
4454
4455 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
4456 case in the switch, but do nothing for now.
4457
4458 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
4459 to doubles when calling 'dsubr' functions.
4460
4461 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
4462
4463 2003-11-18 Rob Browning <rlb@defaultvalue.org>
4464
4465 * gen-scmconfig.c (main): remove public definition of
4466 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
4467 direct typedef of long_long and ulong_long inside deprecated block
4468 when appropriate.
4469
4470 * deprecated.h: move long_long and ulong_long definitions to
4471 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
4472 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
4473
4474 2003-11-17 Marius Vollmer <mvo@zagadka.de>
4475
4476 * hash.c (scm_string_hash): New hashing algorithm that takes the
4477 complete string into account.
4478
4479 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
4480 is a list. This allows (@ ...) to work with set!.
4481 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
4482 SCM_ASSYNT.
4483
4484 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
4485 the "-e" option instead of scm_str2symbol. This allows things
4486 like (@ ...) to be specified for the entry point.
4487
4488 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4489
4490 * eval.c (scm_m_letstar): Create memoized code in place to
4491 minimize consing.
4492
4493 2003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4494
4495 * eval.c (s_splicing): Commented and reformulated.
4496
4497 (lookup_global_symbol, lookup_symbol): New static functions.
4498
4499 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
4500
4501 (try_macro_lookup, literal_p): Use lookup_symbol instead of
4502 creating a temporary pair for scm_lookupcar.
4503
4504 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
4505 created deprecated wrapper function scm_unmemocar.
4506
4507 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
4508 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
4509 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
4510 undefineds, sym_three_question_marks): Moved around without
4511 modifications.
4512
4513 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
4514
4515 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4516
4517 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
4518 m_expand_body, scm_m_expand_body): Grouped together with m_body.
4519 No further modifications.
4520
4521 2003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4522
4523 * eval.c (s_mixed_body_forms): New static identifier.
4524
4525 (canonicalize_define, scm_m_define): The check for a bad
4526 expression is performed in canonicalize_define now.
4527
4528 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
4529 static helper functions for m_expand_body.
4530
4531 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
4532 expand user defined macros. Fixed handling of the definition/
4533 expression boundary. Fixed handling of definitions grouped with
4534 'begin. Use canonicalize_define to expand definitions.
4535
4536 2003-11-13 Marius Vollmer <mvo@zagadka.de>
4537
4538 * read.c (scm_lreadr): detect EOF after backslash, and interpret
4539 \xNN hexadecimal sequences. From Paul Jarc, thanks!
4540
4541 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
4542 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
4543 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
4544 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
4545 New macros from Paul Jarc. Thanks!
4546
4547 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
4548 return NULL when the machine type is unknown. Previously,
4549 gc_os_dep.c would refuse to compile.
4550
4551 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
4552
4553 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
4554 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
4555 scm_m_body to m_body.
4556
4557 2003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
4558
4559 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
4560 public use of scm_m_expand_body in eval.h. In eval.c, renamed
4561 scm_m_expand_body to m_expand_body and made it static. Added
4562 deprecated wrapper scm_m_expand_body.
4563
4564 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
4565 of scm_m_expand_body.
4566
4567 2003-11-09 Kevin Ryde <user42@zip.com.au>
4568
4569 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
4570 argument. Reported by Mike Gran.
4571
4572 2003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
4573
4574 * eval.c (s_missing_body_expression): New static identifier.
4575
4576 (s_body): Removed.
4577
4578 (scm_m_expand_body): Fixed core dump when passing a body with
4579 defines, but without expressions (see additions to syntax.test).
4580 Use ASSERT_SYNTAX to signal syntax errors.
4581
4582 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
4583
4584 * eval.c (canonicalize_define): New static helper function.
4585
4586 (memoize_define, canonicalize_define): Extract handling of
4587 function currying to canonicalize_define.
4588
4589 2003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
4590
4591 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
4592 Make sure that error checking in debug mode is not worse than in
4593 standard mode.
4594
4595 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
4596
4597 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
4598 handled in scm_m_body any more, but rather in scm_m_lambda.
4599
4600 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
4601 scm_m_letrec, scm_m_expand_body): Check for validity is done by
4602 calling functions of scm_m_body.
4603
4604 (scm_m_lambda): Avoid unnecessary consing when creating the
4605 memoized code.
4606
4607 2003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
4608
4609 * eval.c (s_expression): Added comment.
4610
4611 (s_empty_combination, error_unbound_variable): New static
4612 identifiers.
4613
4614 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
4615 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
4616 signal syntax errors.
4617
4618 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
4619 scheme objects.
4620
4621 2003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
4622
4623 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
4624 Grouped together with unmemocopy, without modifications.
4625
4626 (build_binding_list, unmemocopy): Renamed names of list arguments
4627 and variables to reflect the actual order of the list elements.
4628
4629 2003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
4630
4631 * eval.c (s_defun): New static identifier.
4632
4633 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
4634 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
4635 when creating the memoized code.
4636
4637 2003-10-19 Kevin Ryde <user42@zip.com.au>
4638
4639 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
4640
4641 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
4642 in accordance with R5RS, which just mpz_get_d doesn't really give.
4643
4644 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4645
4646 * eval.c (s_bad_slot_number): New static identifier.
4647
4648 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
4649 signal syntax errors. Avoid unnecessary consing when creating the
4650 memoized code.
4651
4652 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4653
4654 * eval.c (scm_m_cont, scm_m_at_call_with_values,
4655 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
4656 errors. Avoid unnecessary consing when creating the memoized
4657 code.
4658
4659 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
4660 standard case. Make sure line and file information are copied to
4661 every created expression.
4662
4663 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4664
4665 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
4666 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
4667 when creating the memoized code.
4668
4669 (scm_m_atbind): Reversed the order, in which the init expressions
4670 are stored and executed. The order of execution is now equal to
4671 the order in which the initializers of the let-forms are executed.
4672 Use check_bindings and transform_bindings.
4673
4674 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
4675 !SCM_NULLP. Added some comments.
4676
4677 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4678
4679 * eval.c: Sorted include files alphabetically.
4680
4681 (scm_m_begin): Added comment.
4682
4683 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
4684 unnecessary consing when creating the memoized code.
4685
4686 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
4687 syntax errors. Be more specific about the kind of error that was
4688 detected.
4689
4690 (scm_m_quote, unmemocopy): As an optimization, vector constants
4691 are now inserted unquoted into the memoized code. During
4692 unmemoization the quotes are added again to provide syntactically
4693 correct code.
4694
4695 2003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4696
4697 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
4698 scm_m_expand_body, check_bindings): Extracted syntax checking of
4699 bindings to new static function check_bindings.
4700
4701 (scm_m_let, memoize_named_let): Extracted handling of named let to
4702 new static function memoize_named_let.
4703
4704 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
4705 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
4706 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
4707 unnecessary consing when creating the memoized code.
4708
4709 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4710
4711 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
4712 static identifiers.
4713
4714 (s_clauses, s_formals, s_duplicate_formals): Removed.
4715
4716 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
4717 specific about the kind of error that was detected. Prepare for
4718 easier integration of changes for separated memoization.
4719
4720 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4721
4722 * eval.c (s_duplicate_binding): New static identifier.
4723
4724 (scm_m_case): Call scm_c_memq instead of implementing it inline.
4725
4726 (scm_m_define): Added comment about how we check for duplicate
4727 formals.
4728
4729 (scm_m_do): Added check for duplicate bindings.
4730
4731 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
4732 unnecessary consing when creating the memoized code.
4733
4734 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
4735 scm_c_improper_memq to c_improper_memq, since it is not exported.
4736
4737 (transform_bindings): Call scm_c_memq rather than
4738 scm_c_improper_memq.
4739
4740 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
4741
4742 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4743
4744 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
4745 static identifiers.
4746
4747 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
4748 specific about the kind of error that was detected. Avoid use of
4749 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
4750 code, this way also making sure that file name, line number
4751 information etc. remain available.
4752
4753 2003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4754
4755 * eval.c (memoize_as_thunk_prototype): New static function.
4756
4757 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
4758 Avoid unnecessary consing when creating the memoized code.
4759
4760 2003-10-12 Kevin Ryde <user42@zip.com.au>
4761
4762 * list.c (scm_append): Track argument number and use in error.
4763
4764 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
4765
4766 * eval.c (s_missing_expression, s_bad_variable): New static
4767 identifiers.
4768
4769 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
4770 R5RS terminology for the naming of variables. Be more specific
4771 about the kind of error that was detected. Make sure file name,
4772 line number etc. are added to all freshly created expressions.
4773 Avoid unnecessary consing when creating the memoized code.
4774
4775 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
4776
4777 * eval.c (s_extra_expression, s_misplaced_else_clause,
4778 s_bad_cond_clause, s_missing_recipient): New static identifiers.
4779
4780 (s_extra_case_clause): Removed.
4781
4782 (scm_m_case, scm_m_cond): If a clause appears after an else
4783 clause, report a misplaced else clause.
4784
4785 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
4786 specific about the kind of error that was detected. Handle bound
4787 'else and '=>. Avoid unnecessary consing when creating the
4788 memoized code.
4789
4790 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
4791 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
4792 syntactic keyword '=>.
4793
4794 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
4795
4796 * eval.c (scm_m_case): Allow empty lists of case labels.
4797
4798 2003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
4799
4800 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
4801
4802 * print.c (scm_isymnames): Add names for the new memoizer codes.
4803
4804 * eval.c (s_missing_clauses, s_bad_case_clause,
4805 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
4806 literal_p): New static identifiers.
4807
4808 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
4809 specific about the kind of error that was detected. Check for
4810 duplicate case labels. Handle bound 'else. Avoid unnecessary
4811 consing when creating the memoized code.
4812
4813 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
4814 the syntactic keyword 'else.
4815
4816 2003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
4817
4818 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
4819 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
4820
4821 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
4822 unnecessary consing when creating the memoized code.
4823
4824 2003-10-09 Kevin Ryde <user42@zip.com.au>
4825
4826 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
4827 cast gives for values bigger than a long, or for nan or inf.
4828
4829 2003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
4830
4831 * smob.h (scm_make_smob_type): Made the declaration match the
4832 definition.
4833
4834 2003-10-07 Marius Vollmer <mvo@zagadka.de>
4835
4836 * goops.c, objects.h, smob.c, smob.h: Make type names char
4837 const * instead of char *. Thanks to Paul Jarc!
4838
4839 2003-10-02 Kevin Ryde <user42@zip.com.au>
4840
4841 * strports.c (scm_call_with_output_string): scm_get_output_string
4842 rather than scm_strport_to_string, so as to guard against the port
4843 having been closed by the called procedure. Reported by Nic Ferrier.
4844
4845 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4846
4847 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
4848
4849 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
4850 tags.h to deprecated.h.
4851
4852 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4853
4854 This set of patches introduces a new tc7 code scm_tc7_number for
4855 numbers. Bignums, reals and complex numbers are turned from smobs
4856 into subtypes of scm_tc7_number.
4857
4858 * tags.h (scm_tc7_number): New.
4859
4860 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
4861 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
4862 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
4863 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
4864 (scm_class_of), print.c (scm_iprin1), smob.c
4865 (scm_smob_prehistory): Don't handle bignums, reals and complex
4866 numbers as subtypes of scm_tc7_smob any more.
4867
4868 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
4869 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
4870
4871 2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4872
4873 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
4874 sizeof (scm_t_complex) to determine the memory size of the
4875 malloc'd area for complex numbers.
4876
4877 2003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
4878
4879 * numbers.c (scm_bigequal): Fixed.
4880
4881 2003-09-16 Marius Vollmer <mvo@zagadka.de>
4882
4883 * stime.c (scm_current_time): 'time' does not set errno so don't
4884 use SCM_SYSERROR for reporting errors.
4885
4886 2003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4887
4888 This set of patches eliminates the dependency between the
4889 implementation of evaluator specific memoization codes and special
4890 constants like #f, '() etc. ('flags'), which are not evaluator
4891 specific. The goal is to remove definitions of evaluator
4892 memoization codes completely from the public interface. This will
4893 make it possible to experiment more freely with optimizations of
4894 guile's internal representation of memoized code.
4895
4896 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
4897
4898 * print.c (iflagnames): New array, holding the printed names of
4899 guile's special constants ('flags').
4900
4901 (scm_isymnames): Now holds only the printed names of the
4902 memoization codes.
4903
4904 (scm_iprin1): Separate the handling of memoization codes and
4905 guile's special constants.
4906
4907 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
4908 SCM_IFLAGNUM): new
4909
4910 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
4911 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
4912 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
4913 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
4914 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
4915 values.
4916
4917 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
4918
4919 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
4920 tc9 macros and scm_tc9_flag.
4921
4922 2003-09-15 Marius Vollmer <mvo@zagadka.de>
4923
4924 * posix.c (scm_setgroups): Check that the gid list is not too
4925 long. Thanks to Paul Jarc!
4926
4927 2003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
4928
4929 * tags.h: Reduced the number of short instructions from 14 to 13.
4930 The typecode of the former 14th short instruction is now used to
4931 represent long instructions. Changed some comments to reflect
4932 this fact.
4933
4934 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
4935 previously used by SCM_IM_DEFINE.
4936
4937 (SCM_IM_DEFINE): Turned into a long instruction.
4938
4939 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
4940 instruction.
4941
4942 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
4943 code that is separate from all instructions, one level of dispatch
4944 for long instructions can be eliminated.
4945
4946 * print.c (scm_isymnames): Removed some commented code.
4947
4948 2003-09-12 Marius Vollmer <mvo@zagadka.de>
4949
4950 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
4951 compiler on IA64.
4952
4953 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
4954
4955 * modules.c (scm_module_reverse_lookup): Check that the obarray
4956 really is a hashtable and do nothing if not.
4957
4958 * inline.h: Use "extern inline" only with GCC. Use "static
4959 inline" else.
4960
4961 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
4962
4963 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
4964 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
4965
4966 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
4967 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
4968 deprecated.h.
4969
4970 2003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
4971
4972 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
4973 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
4974
4975 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
4976 0.0==some_expression to some_expression==0.0. The latter is
4977 better readable. The former is preferred by some people, since it
4978 leads to a compiler error when confusing == with =. However, when
4979 using gcc, a warning will be issued if in an if-statement an
4980 assigment appears. Since many Guile developers are using gcc,
4981 such errors will not remain unnoticed anyway. We can therefore
4982 focus on better readability.
4983
4984 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
4985
4986 * tags.h: Added description of Guile's type system. Removed some
4987 old and misleading comments.
4988
4989 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
4990
4991 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
4992 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
4993
4994 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
4995
4996 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
4997
4998 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
4999 respective SLOPPY macro.
5000
5001 2003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5002
5003 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
5004 type string, not SCM_TYP7S.
5005
5006 2003-09-03 Kevin Ryde <user42@zip.com.au>
5007
5008 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
5009 2s-complement.
5010
5011 * stime.c (scm_strptime): Add comment about glibc strptime %s and
5012 current timezone requiring SCM_DEFER_INTS.
5013
5014 2003-08-30 Neil Jerram <neil@ossau.uklinux.net>
5015
5016 * script.c (scm_compile_shell_switches): Make -s switch optional
5017 if file to be loaded does not begin with a `-'. (Thanks to Aaron
5018 VanDevender for the patch!)
5019
5020 2003-08-30 Kevin Ryde <user42@zip.com.au>
5021
5022 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
5023 and to have non-integer types rejected as per other logical funcs.
5024
5025 2003-08-28 Kevin Ryde <user42@zip.com.au>
5026
5027 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
5028
5029 2003-08-23 Kevin Ryde <user42@zip.com.au>
5030
5031 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
5032 thread safe, and could take a long time too.
5033
5034 2003-08-22 Kevin Ryde <user42@zip.com.au>
5035
5036 * numbers.c (scm_difference): Correction to bignum - negative inum.
5037
5038 2003-08-14 Kevin Ryde <user42@zip.com.au>
5039
5040 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
5041 [__GNUC__]: Use volatile asm macros rather than a function call.
5042 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
5043 macros while defining functions.
5044
5045 * simpos.c (getenv): Use <stdlib.h> for prototype.
5046 (scm_system): In docstring, refer to status:exit-val rather than
5047 "functions above".
5048
5049 2003-08-09 Kevin Ryde <user42@zip.com.au>
5050
5051 * srcprop.c (scm_source_properties): Return plist from hash if it's a
5052 list set by source-properties! rather than an SRCPROPS object,
5053
5054 2003-07-29 Kevin Ryde <user42@zip.com.au>
5055
5056 * properties.c (scm_primitive_property_ref): In docstring, note
5057 parameters to not-found-proc, use hyphens rather than underscores for
5058 that parameter name.
5059 (scm_primitive_property_set_x): In docstring, VAL is the value
5060 parameter not CODE.
5061
5062 2003-07-27 Marius Vollmer <mvo@zagadka.de>
5063
5064 * print.c (scm_print_symbol_name): handle more weird characters by
5065 escaping the symbol name properly. Thanks to Paul Jarc!
5066
5067 * posix.h (scm_setgroups): New prototype.
5068 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
5069 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
5070 Don't use SCM_WRITABLE_VELTS.
5071
5072 * gc.h (SCM_GC_SET_CELL_BVEC): New.
5073 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
5074 Matthias Koeppe!
5075
5076 * __scm.h (SCM_C_INLINE_KEYWORD): New.
5077 * numbers.c: Use it in place of SCM_C_INLINE so that the code
5078 compiles when SCM_C_INLINE is undefined.
5079
5080 2003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
5081
5082 * __scm.h: Reformulated the architecture and compiler properties
5083 in terms of properties of scm_t_bits and SCM variables rather than
5084 in terms of c standard types. This is since it is not known which
5085 of the standard types scm_t_bits and SCM variables will be defined
5086 to.
5087
5088 2003-07-24 Kevin Ryde <user42@zip.com.au>
5089
5090 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
5091 and real.
5092
5093 2003-07-18 Kevin Ryde <user42@zip.com.au>
5094
5095 * numbers.c (scm_product): In complex * bignum, correction to
5096 REAL/IMAG fetch, x is the complex, not y.
5097
5098 2003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5099
5100 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
5101 scm_inf_p test as Scheme values.
5102 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
5103 and a positive inum.
5104 Use GNU indentation style.
5105
5106 2003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5107
5108 * values.c (scm_values): Build lists of length 1 by using
5109 scm_list_1 instead of using scm_cons.
5110
5111 2003-07-10 Kevin Ryde <user42@zip.com.au>
5112
5113 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
5114 * list.c (scm_list_n): Ditto.
5115
5116 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
5117
5118 2003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
5119
5120 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
5121 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
5122 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
5123 the other using intptr_t.
5124
5125 2003-07-08 Kevin Ryde <user42@zip.com.au>
5126
5127 * numbers.c (scm_make_polar): Use sincos, when available.
5128 (scm_magnitude): Use hypot.
5129
5130 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
5131 @footnote since it doesn't go through to guile-procedures.txt.
5132
5133 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
5134 outside @var to quieten makeinfo, and use @code.
5135
5136 2003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5137
5138 * gc-malloc.c (decrease_mtrigger): new function
5139 (increase_mtrigger): new function, separate debug registering and
5140 mtrigger administration.
5141 (scm_gc_realloc): bugfix: do mtrigger administration before the
5142 actual realloc, for the realloc might invalidate a GC-d segment of
5143 memory. Thanks to Sam Hocevar for pointing this out.
5144 (scm_gc_realloc): use scm_malloc_reregister instead of
5145 unregistering and registering in sequence.
5146
5147 2003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5148
5149 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
5150
5151 2003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5152
5153 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
5154 clauses.
5155
5156 2003-06-29 Marius Vollmer <mvo@zagadka.de>
5157
5158 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
5159 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
5160 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
5161 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
5162 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
5163 the release_1_6 branch.
5164
5165 2003-06-25 Stefan Jahn <stefan@lkcc.org>
5166
5167 * continuations.c: Redeclaration of getcontext() via the
5168 __asm__ ("getcontext") directive.
5169
5170 * continuations.h: Include <ucontext.h> instead of
5171 <sys/ucontext.h>.
5172
5173 2003-06-21 Kevin Ryde <user42@zip.com.au>
5174
5175 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
5176 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
5177 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
5178 available.
5179 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
5180 (isfinite): Remove, conflicts with C99 isfinite().
5181
5182 2003-06-19 Marius Vollmer <mvo@zagadka.de>
5183
5184 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
5185 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
5186 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
5187 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
5188 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
5189 the release_1_6 branch.
5190
5191 2003-06-14 Stefan Jahn <stefan@lkcc.org>
5192
5193 * threads.h: Redefined scm_getspecific() and scm_setspecific()
5194 to be functions instead of macros.
5195
5196 * threads.c: Conditionalized inclusion of <sys/time.h> and
5197 <unistd.h>.
5198 (scm_getspecific, scm_setspecific): Made these two function
5199 real part of the API.
5200
5201 * posix.c (s_scm_putenv): Added some code to make a
5202 (putenv "FOO="), i.e. setting an empty string, work also on
5203 Win32 systems. Thanks to Kevin Ryde for the proposal.
5204
5205 2003-06-12 Kevin Ryde <user42@zip.com.au>
5206
5207 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
5208 freebsd to comment about need to use unsetenv.
5209
5210 2003-06-02 Marius Vollmer <mvo@zagadka.de>
5211
5212 * ports.c (scm_peek_char): Safe the column of the port around the
5213 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
5214
5215 2003-06-07 Kevin Ryde <user42@zip.com.au>
5216
5217 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
5218 and friends required by scm_t_bits setups.
5219
5220 2003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5221
5222 * tags.h (scm_tc2_int): Added.
5223
5224 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
5225 scm_tc2_int.
5226
5227 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
5228 scm_tcs_closures): Hard coded values replaced by symbolic ones.
5229
5230 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5231
5232 * eval.c: Partially undid my patch from 2003-05-31. This patch
5233 caused the segfault referenced in the previous changelog entry.
5234
5235 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5236
5237 * tags.h: Fixed comment about the immediate type code layout.
5238
5239 * eval.c: Fixed handling of non-special instructions. Without
5240 this patch, guile will segfault on (#\0) and similar instructions.
5241
5242 2003-06-05 Kevin Ryde <user42@zip.com.au>
5243
5244 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
5245 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
5246
5247 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
5248 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
5249
5250 2003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5251
5252 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
5253 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
5254 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
5255 generalized it to apply not only to C level functions but also to
5256 scheme level functions.
5257
5258 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
5259 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
5260 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
5261 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
5262 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
5263 respectively.
5264
5265 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
5266 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
5267 eval.h into eval.c and a copy is placed into deprecated.h.
5268
5269 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
5270 into eval.c. This definition was not part of the API in any
5271 officially released version of guile and thus does not need to go
5272 through a phase of deprecation.
5273
5274 2003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
5275
5276 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
5277 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
5278 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
5279 definitions are make static and renamed from scm_s_xxx to s_xxx.
5280 In deprecated.c the original definitions are copied.
5281
5282 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
5283 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
5284 eval.h into eval.c and a copy (slightly modified to work in user
5285 code) is placed into deprecated.h.
5286
5287 * eval.c: Use the local static s_xxx definitions instead of the
5288 scm_s_xxx definitions throughout.
5289
5290 2003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5291
5292 This set of patches separates the representation of the cxr family
5293 of functions (car, cdr etc.) from the dsubr family of functions
5294 (i. e. functions that take a double precision floating point
5295 argument). Further, the algorithm for handling the cxr function
5296 is improved.
5297
5298 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
5299 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
5300 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
5301 cosh, tanh), objects.c (scm_class_of), procprop.c
5302 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
5303 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
5304 typecode for the dsubr family of functions.
5305
5306 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
5307 ramap_dsubr.
5308
5309 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
5310 (scm_init_pairs): Make use of the (now usable) second cell element
5311 of a scm_tc7_cxr function to implement the cxr family of functions
5312 more efficiently.
5313
5314 2003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
5315
5316 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
5317 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
5318 end of an if-else-if-sequence of checks.
5319
5320 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5321
5322 * eval.c (SCM_CEVAL): Improved readability of call-with-values
5323 execution. Generalize apply_closure to apply_proc and use that
5324 for call-with-values.
5325
5326 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5327
5328 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
5329 a non closure.
5330
5331 2003-05-30 Stefan Jahn <stefan@lkcc.org>
5332
5333 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
5334 appropriately for mingw32 hosts.
5335
5336 * numbers.h: Defining copysign(), isnan() and finite() to
5337 be prefixed by a single '_' for mingw32 hosts.
5338
5339 2003-05-30 Kevin Ryde <user42@zip.com.au>
5340
5341 * numbers.c (z_negative_one): New variable.
5342 (scm_init_numbers): Initialize it.
5343 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
5344
5345 2003-05-29 Stefan Jahn <stefan@lkcc.org>
5346
5347 * win32-dirent.c: Use malloc() instead of scm_malloc().
5348
5349 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
5350 warning.
5351
5352 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
5353 mingw32 build.
5354
5355 * modules.c (s_scm_module_import_interface): Renamed local
5356 variable interface to _interface. Seems like 'interface'
5357 is a special compiler directive for the mingw32 compiler.
5358
5359 * mkstemp.c: Provide prototype to avoid compiler warning.
5360
5361 * load.c (s_scm_search_path): Fixed absolute and relative
5362 path detections for native Windows platforms.
5363
5364 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
5365 to build on mingw32).
5366
5367 * gc-freelist.c ("s_scm_map_free_list",
5368 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
5369
5370 * fports.c (fport_fill_input): Disable use of
5371 fport_wait_for_input() on Win32 platforms.
5372
5373 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
5374
5375 * Makefile.am: Modified some rules for cross compiling.
5376
5377 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5378
5379 * eval.c (SCM_CEVAL): In case of an application, all checks for a
5380 proper function object and the correct number of arguments are now
5381 performed in the application part of SCM_CEVAL.
5382
5383 (scm_badformalsp): Removed.
5384
5385 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5386
5387 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
5388
5389 2003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5390
5391 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
5392 always being false by inserting preprocessor conditional. (Thanks
5393 to Bruce Korb.)
5394
5395 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
5396 (void *) in order to avoid an aliasing warning; thanks to Bruce
5397 Korb.)
5398
5399 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
5400
5401 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
5402 SCM_STACK_PTR.
5403
5404 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
5405 thread->base --> t->base.
5406
5407 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
5408
5409 2003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5410
5411 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
5412 scm_variable_set_name_hint, scm_builtin_variable,
5413 scm_internal_with_fluids, scm_make_gsubr,
5414 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
5415 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
5416 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
5417 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
5418 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
5419 scm_make_subr_with_generic, scm_make_subr_opt,
5420 scm_call_catching_errors, scm_make_smob_type_mfpe,
5421 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
5422 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
5423 branch. Some have been slightly rewritten.
5424 (scm_i_object_chars, scm_i_object_length): New, to support
5425 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
5426
5427 2003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5428
5429 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
5430 names and inits in the memoized code of do.
5431
5432 2003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5433
5434 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
5435 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
5436 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
5437 a compilation error if error-on-warning is enabled).
5438
5439 2003-05-17 Marius Vollmer <mvo@zagadka.de>
5440
5441 * c-tokenize.lex: Gobble up complete lines after a '#'. This
5442 removes preprocessor directives from the snarfage that might
5443 otherwise confuse us. These directives appear when compiling with
5444 "-g3", for example.
5445
5446 2003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5447
5448 * ChangeLog: add my surname
5449
5450 * srcprop.c (scm_finish_srcprop): use
5451 scm_gc_register_collectable_memory()
5452 (scm_make_srcprops): idem.
5453
5454 2003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5455
5456 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
5457 wrap-around for scm_mtrigger
5458 (scm_gc_register_collectable_memory): abort on overflowing
5459 scm_mallocated().
5460
5461 2003-05-13 Kevin Ryde <user42@zip.com.au>
5462
5463 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
5464 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
5465
5466 2003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5467
5468 * backtrace.c (scm_display_error_message): Introduced fancy
5469 printing with max level 7 and length 10. (Purpose: avoid printing
5470 gigantic objects in error messages.)
5471
5472 * print.c, print.h (scm_i_port_with_print_state): New function.
5473
5474 * print.c (scm_iprin1, scm_printer_apply,
5475 scm_port_with_print_state): Use scm_i_port_with_print_state.
5476 (scm_simple_format): Modified not to destroy print states.
5477 (print_state_mutex): New mutex.
5478 (scm_make_print_state, scm_free_print_state, scm_prin1):
5479 Lock/unlock print_state_mutex.
5480
5481 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
5482 Use current names in definitions.
5483
5484 2003-05-10 Kevin Ryde <user42@zip.com.au>
5485
5486 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
5487
5488 * numbers.c (scm_integer_length): On negative bignums, adjust
5489 mpz_sizeinbase to account for it looking at absolute value where we
5490 want ones-complement.
5491
5492 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
5493 since we're only using the ulong return value, and x might not fit.
5494
5495 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5496
5497 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
5498 read. This will allow to make the definition in read.c static.
5499
5500 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
5501
5502 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
5503 from evalext to eval. This will allow to make some of the
5504 definitions in eval.c static.
5505
5506 2003-05-06 Kevin Ryde <user42@zip.com.au>
5507
5508 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
5509 (scm_logcount): Use mpz_com, not mpz_neg.
5510
5511 2003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
5512
5513 The purpose of this patch is to make guile's internal memoizers
5514 distinguishable from memoizing macros created on the scheme level
5515 or from user provided primitive memoizing macros. The reason is,
5516 that the internal memoizers are the only ones that are allowed to
5517 transform their scheme input into memoizer byte code, while all
5518 other memoizing macros may only transform scheme code into new
5519 scheme code.
5520
5521 To achieve this, a new macro type 'builtin-macro!' is introduced.
5522 Currently, 'builtin-macro!'s are handled as memoizing macros, but
5523 this will change when the memoizer and executor are separated.
5524
5525 * macros.[ch] (scm_i_makbimacro): New.
5526
5527 * macros.h (SCM_BUILTIN_MACRO_P): New.
5528
5529 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
5530
5531 * eval.c, goops.c: All of guile's primitive memoizing macros are
5532 primitive builtin-macros now.
5533
5534 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
5535 builtin-macros are handled equally to memoizing macros.
5536
5537 2003-05-04 Marius Vollmer <mvo@zagadka.de>
5538
5539 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
5540 work around a bug in GCC 2.95.2 but is now a bug in itself.
5541
5542 2003-05-02 Marius Vollmer <mvo@zagadka.de>
5543
5544 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
5545 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
5546 scm_tcs_symbols): New.
5547
5548 2003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5549
5550 * deprecated.h, deprecated.c (scm_protect_object,
5551 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
5552 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
5553 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
5554 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
5555 scm_ensure_user_module, scm_load_scheme_module, scm_port,
5556 scm_ptob_descriptor, scm_port_rw_active,
5557 scm_close_all_ports_except): New.
5558
5559 * ports.c (scm_c_port_for_each): New function, mostly copied from
5560 scm_port_for_each.
5561 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
5562 * ports.h (scm_c_port_for_each): New prototype.
5563
5564 2003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5565
5566 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
5567 macro was introduced in anticipation of GOOPS method compilation
5568 code.)
5569
5570 * goops.c: Removed binding of @dispatch.
5571
5572 2003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
5573
5574 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
5575 instructions that bind the macros on the scheme level back to
5576 goops.c in order to make sure again that the bindings go into the
5577 (oop goops) module and are not visible from the outside.
5578
5579 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
5580
5581 * eval.c: Non functional change: Separated R5RS and non-R5RS
5582 macros into different sections of the file and ordered the
5583 memoizers alphabetically.
5584
5585 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
5586
5587 * eval.c (scm_ilookup): Rewritten to improve readability.
5588
5589 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
5590
5591 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
5592 Partially reverted patch from 2003-04-23 in oder to find a better
5593 compromise between readability and debuggability.
5594
5595 2003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5596
5597 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
5598 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
5599 definitions of the special goops memoizers from goops.[ch] to
5600 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
5601 throughout guile.
5602
5603 2003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
5604
5605 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
5606
5607 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
5608
5609 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
5610
5611 * ioext.c (scm_fdes_to_ports): Ditto.
5612
5613 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
5614 lock/unlock scm_i_port_table_mutex.
5615
5616 * strports.c (scm_mkstrport): Ditto.
5617
5618 * ports.c (scm_void_port, scm_port_for_each): Ditto.
5619
5620 * fports.c (scm_fdes_to_port): Ditto.
5621
5622 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5623
5624 This set of patches contains no functional changes, only debatable
5625 minor stylistic ones. Still, in order to prepare a patch between
5626 my local copy and the CVS version, I decided to submit the changes
5627 below. Then, the patch will hopefully only contain relevant
5628 modifications :-)
5629
5630 * eval.c (iqq): Added const specifier.
5631
5632 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
5633 Use NULL instead of 0 to indicate that a pointer is returned.
5634 Removed some misleading 'fall through' comments.
5635
5636 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
5637 Split up long expressions into smaller ones to be more debugging
5638 friendly.
5639
5640 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5641
5642 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
5643 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
5644 rather than casting to SCM.
5645
5646 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5647
5648 * sort.c, pairs.h: Removed unnecessary includes.
5649
5650 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5651
5652 * sort.c: Replaced hand-made trampline code by the new official
5653 mechanism from eval.c. This fixes a segfault in the new test file
5654 sort.test.
5655
5656 (quicksort, compare_function, scm_restricted_vector_sort_x,
5657 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
5658 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
5659 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
5660 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
5661 eval.c.
5662
5663 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
5664 cmp_fun_t): Removed.
5665
5666 (compare_function): Added.
5667
5668 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
5669 arithmetics with index arithmetics. Changed quicksort to work on
5670 an array of SCM values instead of an array of characters. Avoid
5671 bytewise copying of SCM elements. Avoid allocating memory on the
5672 stack with alloca. Fixed some comments.
5673
5674 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5675
5676 * eval.c (EXTEND_ENV): Eliminated.
5677
5678 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
5679 EXTEND_ENV.
5680
5681 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5682
5683 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
5684
5685 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
5686 compiling with SCM_DEBUG==1 by moving definition behind prototype.
5687
5688 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
5689 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
5690 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
5691 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
5692 functions such that they check if the object is a non-immediate.
5693 Further, renamed identifiers to use the scm_dbg_ prefix and made
5694 their inclusion into the lib dependent of the
5695 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
5696
5697 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5698
5699 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
5700 debug option.
5701
5702 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5703
5704 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
5705 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
5706 any calls to SCM_NCONSP any more.
5707
5708 * unif.c (l2ra): Eliminate redundant check.
5709
5710 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5711
5712 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
5713 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
5714 SCM_NNULLP. Now, guile itself does not include any calls to
5715 SCM_NNULLP any more.
5716
5717 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5718
5719 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
5720 scm_copy_tree): Place assignment expressions which are part of
5721 other expressions into an expression of their own.
5722
5723 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5724
5725 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
5726 compare SCM values with !=.
5727
5728 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5729
5730 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
5731 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
5732 and definition of the memoizer for the generalized set! macro from
5733 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
5734 define the macro object.
5735
5736 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
5737 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
5738 eval.c, it is made static and renamed to s_set_x.
5739
5740 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
5741 over SCM_N<foo>.
5742
5743 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5744
5745 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
5746 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
5747 to undefineds and registered the object as a permanent object.
5748
5749 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
5750 static in eval.c, renamed it to f_apply and registered the object
5751 as a permanent object.
5752
5753 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5754
5755 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
5756 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
5757
5758 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5759
5760 * numbers.c (scm_logtest): Fixed argument bug in the call to
5761 mpz_and, which showed up when compiling with SCM_DEBUG defined.
5762
5763 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5764
5765 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
5766 type errors that showed up when compiling with SCM_DEBUG defined.
5767
5768 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5769
5770 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
5771 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
5772 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
5773 fix compile errors with --disable-deprecated.
5774
5775 2003-04-17 Rob Browning <rlb@defaultvalue.org>
5776
5777 * numbers.c (scm_integer_expt): fix case where we were declaring
5778 vars in the middle of a statement block. Thanks to Thamer
5779 Al-Harbash.
5780
5781 2003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5782
5783 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
5784 change.
5785
5786 * eq.c (scm_eqv_p): Turned into a primitive generic.
5787
5788 2003-04-16 Rob Browning <rlb@defaultvalue.org>
5789
5790 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
5791 Thanks to Boyd Gerber.
5792 Added check for __arm__ in addition to arm for LINUX and copied
5793 __s390__ defines from upstream libgc. Thanks to James Treacy for
5794 reporting the problems.
5795
5796 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
5797
5798 * socket.c: use SCM_CHAR_BIT.
5799
5800 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
5801
5802 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
5803
5804 2003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
5805
5806 * feature.c (scm_init_feature): Always add threads feature.
5807
5808 2003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5809
5810 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
5811 scm_at_assert_bound_ref. (We don't want the unbound check. See
5812 oop/goops/active-slot.scm.)
5813
5814 2003-04-14 Rob Browning <rlb@defaultvalue.org>
5815
5816 * tags.h: scm_t_intptr should have been intptr_t.
5817
5818 2003-04-13 Rob Browning <rlb@defaultvalue.org>
5819
5820 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
5821 test. Instead use
5822 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
5823 as gc_os_dep.c suggests is appropriate.
5824
5825 * goops.c (prep_hashsets): make static to match prototype.
5826 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
5827 Chin.
5828
5829 * c-tokenize.lex: remove trailing comma from enum. Thanks to
5830 Albert Chin.
5831
5832 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
5833 Klausner.
5834
5835 2003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5836
5837 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
5838 indicated through extra fields in getters-n-setters.
5839 (scm_add_slot): Adapted to new format of getters_n_setters slot.
5840 (Thanks to Andy Wingo.)
5841
5842 2003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
5843
5844 * gc-segment.c: add comment
5845
5846 2003-04-07 Rob Browning <rlb@defaultvalue.org>
5847
5848 * debug.h: change "id" arg name to "info_id" to avoid objective-c
5849 clash.
5850
5851 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
5852 and add regression test to standalone/.
5853
5854 2003-04-06 Rob Browning <rlb@defaultvalue.org>
5855
5856 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
5857 Thanks to Dale P. Smith.
5858
5859 * random.c: #include gmp.h.
5860 (scm_c_random_bignum): normalize result on return.
5861
5862 * init.c: #include gmp.h.
5863
5864 * numbers.h: remove the gmp.h #include (not needed now).
5865
5866 * posix.h: change occurences of "id" to something else so we don't
5867 cause trouble when included via objective-c (can't hurt, might
5868 help). Still have usage in debug.h, though.
5869
5870 2003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5871
5872 * random.c (scm_c_random_bignum): Don't generate a random number
5873 equal to m (the second argument of scm_c_random_bignum); only
5874 generate numbers in the range 0 <= r < m.
5875 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
5876 scm_var_random_state.
5877
5878 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
5879 clause.
5880
5881 2003-04-05 Rob Browning <rlb@defaultvalue.org>
5882
5883 * modules.c (scm_module_import_interface): move declaration of
5884 uses before any code.
5885
5886 2003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
5887
5888 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
5889 not top_srcdir.
5890
5891 * hashtab.c (rehash_after_gc): Clear to_rehash list before
5892 processing it in order to avoid an infinite loop.
5893
5894 * print.c (scm_prin1): Remember old state of pstate->writingp.
5895
5896 2003-04-05 Marius Vollmer <mvo@zagadka.de>
5897
5898 * Changed license terms to the plain LGPL thru-out.
5899
5900 2003-04-04 Rob Browning <rlb@defaultvalue.org>
5901
5902 * socket.c (FLIPCPY_NET_HOST_128): new macro.
5903 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
5904 rewrite to handle GMP bignums.
5905
5906
5907 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
5908
5909 * ports.c (scm_getc): minor tweak.
5910
5911 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
5912 rewrite to handle GMP bignums.
5913
5914 * numbers.c: rewrite *many* functions to handle GMP bignums.
5915
5916 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
5917 handle GMP bignums.
5918
5919 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
5920
5921 * init.c (check_config): remove SCM_BIGDIG conditionals.
5922 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
5923
5924 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
5925
5926 * eval.c: remove SCM_BIGDIG conditionals.
5927
5928 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
5929
5930 2003-03-31 Rob Browning <rlb@defaultvalue.org>
5931
5932 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
5933 to Kevin Ryde.)
5934
5935 2003-03-27 Rob Browning <rlb@defaultvalue.org>
5936
5937 * threads.h: fix various preprocessor usages of new public
5938 symbols to expect 0 or 1 values rather than 1 or undefined.
5939 i.e. change #ifdef to #if, etc.
5940
5941 * threads.c: fix various preprocessor usages of new public
5942 symbols to expect 0 or 1 values rather than 1 or undefined.
5943 i.e. change #ifdef to #if, etc.
5944
5945 * tags.h: fix various preprocessor usages of new public
5946 symbols to expect 0 or 1 values rather than 1 or undefined.
5947 i.e. change #ifdef to #if, etc.
5948
5949 * stacks.c: fix various preprocessor usages of new public
5950 symbols to expect 0 or 1 values rather than 1 or undefined.
5951 i.e. change #ifdef to #if, etc.
5952
5953 * stackchk.h: fix various preprocessor usages of new public
5954 symbols to expect 0 or 1 values rather than 1 or undefined.
5955 i.e. change #ifdef to #if, etc.
5956
5957 * stackchk.c: fix various preprocessor usages of new public
5958 symbols to expect 0 or 1 values rather than 1 or undefined.
5959 i.e. change #ifdef to #if, etc.
5960
5961 * sort.c: fix various preprocessor usages of new public
5962 symbols to expect 0 or 1 values rather than 1 or undefined.
5963 i.e. change #ifdef to #if, etc.
5964
5965 * read.c: fix various preprocessor usages of new public
5966 symbols to expect 0 or 1 values rather than 1 or undefined.
5967 i.e. change #ifdef to #if, etc.
5968
5969 * random.c: fix various preprocessor usages of new public
5970 symbols to expect 0 or 1 values rather than 1 or undefined.
5971 i.e. change #ifdef to #if, etc.
5972
5973 * print.c: fix various preprocessor usages of new public
5974 symbols to expect 0 or 1 values rather than 1 or undefined.
5975 i.e. change #ifdef to #if, etc.
5976
5977 * objects.c: fix various preprocessor usages of new public
5978 symbols to expect 0 or 1 values rather than 1 or undefined.
5979 i.e. change #ifdef to #if, etc.
5980
5981 * numbers.h: fix various preprocessor usages of new public
5982 symbols to expect 0 or 1 values rather than 1 or undefined.
5983 i.e. change #ifdef to #if, etc.
5984
5985 * null-threads.c: fix various preprocessor usages of new public
5986 symbols to expect 0 or 1 values rather than 1 or undefined.
5987 i.e. change #ifdef to #if, etc.
5988
5989 * lang.c: fix various preprocessor usages of new public
5990 symbols to expect 0 or 1 values rather than 1 or undefined.
5991 i.e. change #ifdef to #if, etc.
5992
5993 * lang.h: fix various preprocessor usages of new public
5994 symbols to expect 0 or 1 values rather than 1 or undefined.
5995 i.e. change #ifdef to #if, etc.
5996
5997 * iselect.h: fix various preprocessor usages of new public
5998 symbols to expect 0 or 1 values rather than 1 or undefined.
5999 i.e. change #ifdef to #if, etc.
6000
6001 * init.c: fix various preprocessor usages of new public
6002 symbols to expect 0 or 1 values rather than 1 or undefined.
6003 i.e. change #ifdef to #if, etc.
6004
6005 * gh_data.c: fix various preprocessor usages of new public
6006 symbols to expect 0 or 1 values rather than 1 or undefined.
6007 i.e. change #ifdef to #if, etc.
6008
6009 * gh.h: fix various preprocessor usages of new public
6010 symbols to expect 0 or 1 values rather than 1 or undefined.
6011 i.e. change #ifdef to #if, etc.
6012
6013 * gen-scmconfig.c: change most new public symbols to be defined to
6014 0 or 1 rather than being either 1 or undefined.
6015
6016 * gc_os_dep.c: fix various preprocessor usages of new public
6017 symbols to expect 0 or 1 values rather than 1 or undefined.
6018 i.e. change #ifdef to #if, etc.
6019 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
6020
6021 * gc.h: fix various preprocessor usages of new public
6022 symbols to expect 0 or 1 values rather than 1 or undefined.
6023 i.e. change #ifdef to #if, etc.
6024
6025 * gc-card.c: fix various preprocessor usages of new public
6026 symbols to expect 0 or 1 values rather than 1 or undefined.
6027 i.e. change #ifdef to #if, etc.
6028
6029 * gc-mark.c: fix various preprocessor usages of new public
6030 symbols to expect 0 or 1 values rather than 1 or undefined.
6031 i.e. change #ifdef to #if, etc.
6032
6033 * feature.c: fix various preprocessor usages of new public
6034 symbols to expect 0 or 1 values rather than 1 or undefined.
6035 i.e. change #ifdef to #if, etc.
6036
6037 * evalext.c: fix various preprocessor usages of new public
6038 symbols to expect 0 or 1 values rather than 1 or undefined.
6039 i.e. change #ifdef to #if, etc.
6040
6041 * eval.h: fix various preprocessor usages of new public
6042 symbols to expect 0 or 1 values rather than 1 or undefined.
6043 i.e. change #ifdef to #if, etc.
6044
6045 * eval.c: fix various preprocessor usages of new public
6046 symbols to expect 0 or 1 values rather than 1 or undefined.
6047 i.e. change #ifdef to #if, etc.
6048
6049 * eq.c: fix various preprocessor usages of new public
6050 symbols to expect 0 or 1 values rather than 1 or undefined.
6051 i.e. change #ifdef to #if, etc.
6052
6053 * coop.c: fix various preprocessor usages of new public
6054 symbols to expect 0 or 1 values rather than 1 or undefined.
6055 i.e. change #ifdef to #if, etc.
6056
6057 * coop-threads.c: fix various preprocessor usages of new public
6058 symbols to expect 0 or 1 values rather than 1 or undefined.
6059 i.e. change #ifdef to #if, etc.
6060
6061 * coop-pthreads.c: fix various preprocessor usages of new public
6062 symbols to expect 0 or 1 values rather than 1 or undefined.
6063 i.e. change #ifdef to #if, etc.
6064
6065 * coop-defs.h: fix various preprocessor usages of new public
6066 symbols to expect 0 or 1 values rather than 1 or undefined.
6067 i.e. change #ifdef to #if, etc.
6068
6069 * convert.i.c: fix various preprocessor usages of new public
6070 symbols to expect 0 or 1 values rather than 1 or undefined.
6071 i.e. change #ifdef to #if, etc.
6072
6073 * continuations.c: fix various preprocessor usages of new public
6074 symbols to expect 0 or 1 values rather than 1 or undefined.
6075 i.e. change #ifdef to #if, etc.
6076
6077 * _scm.h: fix various preprocessor usages of new public symbols to
6078 expect 0 or 1 values rather than 1 or undefined. i.e. change
6079 #ifdef to #if, etc.
6080
6081 2003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6082
6083 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
6084
6085 * deprecated.c, deprecated.h: New files, to collect deprecated
6086 things in one place.
6087 * Makefile.am: Added them in all the right places.
6088
6089 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
6090 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
6091 builds work.
6092 (DOT_X_FILES): Removed "iselect.x".
6093 (DOT_DOC_FILES): Removed "iselect.doc".
6094
6095 2003-03-25 Rob Browning <rlb@defaultvalue.org>
6096
6097 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
6098 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
6099
6100 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
6101
6102 * vports.c: #include <config.h> if HAVE_CONFIG_H.
6103
6104 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
6105 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6106
6107 * threads.h: replace usage of struct timespect with
6108 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
6109 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
6110 favor of scm_t_timespec from scmconfig.h.
6111
6112 * threads.c: move libguile/_scm.h include to the top so we pick up
6113 any critical defines like _GNU_SOURCE early. Replace usage of
6114 struct timespect with scm_t_timespec. Replace usage of
6115 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
6116 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
6117
6118 * threads-plugin.h: replace usage of struct timespect with
6119 scm_t_timespec.
6120
6121 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
6122 usage of struct timespect with scm_t_timespec.
6123
6124 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
6125 HAVE_INTTYPES_H handling to scmconfig.h. #include
6126 "libguile/__scm.h". Rework handling for scm_t_bits,
6127 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
6128 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
6129 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
6130 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
6131 SCM_HAVE_ARRAYS.
6132
6133 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
6134
6135 * struct.c: #include <config.h> if HAVE_CONFIG_H.
6136
6137 * strports.c: #include <config.h> if HAVE_CONFIG_H.
6138
6139 * strop.c: #include <config.h> if HAVE_CONFIG_H.
6140
6141 * stime.h: move handling of time related headers to scmconfig.h.
6142
6143 * stime.c: #include <config.h> if HAVE_CONFIG_H.
6144
6145 * stacks.c: replace usage of STACK_GROWS_UP with
6146 SCM_STACK_GROWS_UP.
6147
6148 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6149 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6150
6151 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6152 of uint32 and HAVE_UINT_32 with scm_t_int32.
6153
6154 * smob.c: #include <config.h> if HAVE_CONFIG_H.
6155
6156 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
6157
6158 * script.c: #include <config.h> if HAVE_CONFIG_H.
6159
6160 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
6161
6162 * scmconfig.h.top: new file -- preamble for scmconfig.h.
6163
6164 * rw.c: #include <config.h> if HAVE_CONFIG_H.
6165
6166 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
6167
6168 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6169
6170 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
6171
6172 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6173 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
6174 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
6175 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6176
6177 * ramap.c: replace usage of HAVE_LONG_LONGS with
6178 "SCM_SIZEOF_LONG_LONG != 0".
6179
6180 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
6181 "libguile/scmconfig.h".
6182
6183 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
6184
6185 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6186 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6187
6188 * posix.c: #include <config.h> if HAVE_CONFIG_H.
6189
6190 * ports.c: #include <config.h> if HAVE_CONFIG_H.
6191
6192 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6193
6194 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
6195 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
6196 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
6197 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
6198 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
6199 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
6200 "SCM_SIZEOF_LONG_LONG != 0".
6201
6202 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
6203 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
6204 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
6205 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
6206
6207 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
6208
6209 * null-threads.h: replace usage of struct timespect with
6210 scm_t_timespec.
6211
6212 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
6213
6214 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
6215 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
6216 scm_t_uint64 and rename usages.
6217
6218 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
6219
6220 * load.c: #include <config.h> if HAVE_CONFIG_H.
6221
6222 * iselect.h: move handling of time related headers to scmconfig.h.
6223 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
6224 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
6225 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
6226
6227 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6228 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6229 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6230
6231 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
6232
6233 * inline.h: #include "libguile/__scm.h" at the top. Change code
6234 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
6235 what to do instead of creating a new public #define. Rename usage
6236 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
6237 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
6238 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
6239
6240 * inline.c: rearrange handling -- now we just #define
6241 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
6242 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
6243 appropriate, and we use that in inline.h along with the above
6244 define to determine how to respond.
6245
6246 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6247 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6248
6249 * guile.c: #include <config.h> if HAVE_CONFIG_H.
6250
6251 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6252 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6253
6254 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6255
6256 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
6257
6258 * gen-scmconfig.c: new file -- see comments in file for details.
6259
6260 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
6261
6262 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
6263 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6264
6265 * gc.h: replace usage of SIZEOF_LONG with
6266 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
6267 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
6268 since we handle that in scmconfig.h now.
6269
6270 * gc.c: #include <config.h> if HAVE_CONFIG_H.
6271
6272 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6273 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
6274 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6275
6276 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
6277
6278 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6279 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6280
6281 * fports.c: #include <config.h> if HAVE_CONFIG_H.
6282
6283 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
6284
6285 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6286 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
6287
6288 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
6289
6290 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6291 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
6292
6293 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
6294 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
6295 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6296 with "SCM_SIZEOF_LONG_LONG != 0".
6297
6298 * error.c: #include <config.h> if HAVE_CONFIG_H.
6299
6300 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
6301 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
6302 with "SCM_SIZEOF_LONG_LONG != 0".
6303
6304 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
6305
6306 * coop.c: replace usage of struct timespect with scm_t_timespec.
6307 #include <config.h> if HAVE_CONFIG_H.
6308
6309 * coop-threads.c: #include "libguile/_scm.h" early. Replace
6310 usage of struct timespect with scm_t_timespec. Replace usage of
6311 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6312
6313 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
6314 usage of struct timespect with scm_t_timespec. Replace usage of
6315 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
6316
6317 * coop-defs.h: move handling of time related headers to
6318 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
6319 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
6320 timespect with scm_t_timespec.
6321
6322 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6323
6324 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6325
6326 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
6327 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
6328
6329 * continuations.c: move libguile/_scm.h include to the top so we
6330 pick up any critical defines like _GNU_SOURCE early.
6331
6332 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
6333
6334 * async.c: #include <config.h> if HAVE_CONFIG_H.
6335
6336 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
6337
6338 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
6339 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
6340
6341 * __scm.h: move libguile/scmconfig.h include up to the top, so
6342 we're sure to pick up any critical defines like _GNU_SOURCE early.
6343 #include <limits.h> removed in favor of scmconfig.h inclusion when
6344 appropriate. STDC_HEADERS based inclusion of stdlib.h,
6345 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
6346 scmconfig.h inclusion when appropriate. Various Win32 related
6347 definitions removed in favor of scmconfig.h inclusion when
6348 appropriate.
6349 (HAVE_UINTPTR_T): definition removed (see NEWS).
6350 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
6351 (HAVE_LONG_LONGS): definition removed (see NEWS).
6352 (HAVE_LONG_LONG): definition removed (see NEWS).
6353 (HAVE_PTRDIFF_T): definition removed (see NEWS).
6354
6355 * Makefile.am: scmconfig.h is now generated by building and
6356 running gen-scmconfig.h and capturing its output. gen-scmconfig
6357 uses config.h and the configure.in generated gen-scmconfig.h to
6358 decide what to output. See gen-scmconfig.c for details.
6359 (noinst_PROGRAMS): add gen-scmconfig.
6360 (gen_scmconfig_SOURCES): new variable.
6361 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
6362 cross-compiling right.
6363 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
6364 (BUILT_SOURCES): add scmconfig.h.
6365
6366 2003-03-19 Marius Vollmer <mvo@zagadka.de>
6367
6368 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
6369 Adrian Bunk. Thanks!
6370
6371 2003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6372
6373 * goops.c (make_class_from_template): New fourth arg:
6374 applicablep.
6375 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
6376 cpls.
6377
6378 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
6379
6380 * goops.c, objects.c, objects.h (scm_make_extended_class): New
6381 second arg: applicablep.
6382 (scm_i_inherit_applicable): New function.
6383
6384 * goops.c, goops.h (scm_class_applicable,
6385 scm_class_extended_accessor): New classes.
6386
6387 2003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6388
6389 * procs.c (scm_procedure_documentation): Removed redundant
6390 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
6391 predicates.
6392
6393 2003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6394
6395 * list.c, list.h (scm_filter, scm_filter_x): New functions.
6396
6397 * modules.c (scm_module_import_interface): New function.
6398
6399 * goops.c, goops.h (scm_class_accessor_method): Renamed from
6400 scm_class_accessor.
6401 (scm_class_accessor): New class.
6402
6403 2003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6404
6405 * goops.c (scm_primitive_generic_generic): Enable primitive
6406 generic if not enabled.
6407 (scm_sys_goops_loaded): Setup unextended primitive generics.
6408
6409 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
6410
6411 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
6412 snarf macros.
6413
6414 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
6415 testing example. All uses of SCM_GPROC should be converted.)
6416
6417 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
6418 scm_assoc.
6419
6420 * eq.c (scm_equal_p): Turned into a primitive generic.
6421
6422 2003-02-27 Rob Browning <rlb@defaultvalue.org>
6423
6424 * Makefile.am (scmconfig.h): new target -- generate file from
6425 ../config.h.
6426 (modinclude_HEADERS): remove version.h.
6427 (nodist_modinclude_HEADERS): add version.h.
6428
6429 2003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6430
6431 This fixes a serious GC bug, introduced during the latest
6432 reorganization of the GC, which disabled freeing of structs and
6433 GOOPS objects:
6434
6435 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
6436 SCM_EOL.
6437 (scm_struct_prehistory): Move scm_free_structs to
6438 scm_before_mark_c_hook.
6439
6440 * gc-card.c (sweep_card): Check that we haven't swept structs on
6441 this card before. That can happen if scm_i_sweep_all_segments has
6442 been called from some other place than scm_igc.
6443
6444 2003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6445
6446 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
6447 (since hash tables now adapt their size).
6448
6449 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
6450 (current number of prehistory bindings; hashtable code will select
6451 a prime which is greater than this value).
6452
6453 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
6454 (current number of initial symbols).
6455
6456 * properties.c (scm_init_properties): Don't specify size of
6457 scm_properties_whash.
6458
6459 * objprop.c (scm_init_objprop): Don't specify size of
6460 scm_object_whash.
6461
6462 * keywords.c (scm_init_keywords): Don't specify a hash table size.
6463
6464 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
6465
6466 The following changes introduce the use of resizable hash tables
6467 throughout Guile. It also renames the old *-hash-table* functions
6468 to *-alist-vector* and places them, together with the rest of the
6469 weak vector support, in the module (ice-9 weak-vector). We should
6470 probably introduce a new, better, API for weak references, for
6471 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
6472 look like and are used like ordinary pairs.)
6473
6474 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
6475 leaf_environment_fold, obarray_remove_all): Use hashtable
6476 accessors.
6477
6478 * gc.c (scm_init_storage): Moved hook initialization to
6479 scm_storage_prehistory.
6480 (scm_storage_prehistory): New function.
6481 (scm_igc): Added commentary about placement of
6482 scm_after_sweep_c_hook.
6483
6484 * gc-mark.c (scm_mark_all): Use hashtable accessors.
6485 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
6486 SCM_WVECT_WEAK_VALUE_P.
6487
6488 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
6489 functions.
6490 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
6491 Removed.
6492 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
6493 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
6494
6495 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
6496 calls to scm_storage_prehistory and scm_hashtab_prehistory.
6497
6498 * modules.c (module-reverse-lookup): Use hashtable accessors.
6499
6500 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
6501
6502 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
6503 scm_make_weak_value_alist_vector,
6504 scm_make_doubly_weak_alist_vector): New functions.
6505
6506 * weaks.c (scm_init_weaks_builtins): New function.
6507
6508 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
6509 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
6510 SCM_WVECT_NOSCAN_P): New macros.
6511
6512 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
6513 and SCM_WVECT_WEAK_VALUE_P.
6514
6515 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
6516 allocate_weak_vector and exported.
6517
6518 2003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6519
6520 * hashtab.c: Undid thread safety. (We decided that it's better to
6521 let the user explicitly protect the tables (or not) according what
6522 is suitable for the application.)
6523
6524 2003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6525
6526 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
6527 thread safe and handle resizing tables.
6528 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
6529 SCM_DEFER/ALLOW_INTS.
6530
6531 2003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6532
6533 * hashtab.c (scm_vector_to_hash_table,
6534 scm_c_make_resizing_hash_table, scm_make_hash_table): New
6535 functions.
6536 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
6537 safe and handle resizing tables.
6538
6539 * weaks.c (scm_make_weak_key_hash_table,
6540 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
6541 Size argument made optional. Return resizable table if not
6542 specified.
6543
6544 2003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6545
6546 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
6547 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
6548
6549 2003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6550
6551 * debug.c (scm_procedure_source): Handle all objects for which
6552 procedure? is #t. (Thanks to Bill Schottstaedt.)
6553
6554 2003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6555
6556 * futures.c (mark_futures): Don't need to mark data of recycled
6557 futures.
6558 (scan_futures, cleanup_undead): Be smarter about marking
6559 futures---avoid unnecessary passes through future lists.
6560
6561 * futures.h, futures.c: New files; Introduced recycling of
6562 futures. For fine-grained threading this lifts performance to
6563 another level. We can now use parallelization in inner loops of
6564 Guile programs without impossible overhead.
6565
6566 * threads.h, threads.c: Moved futures to their own file.
6567
6568 * Makefile.am (libguile_la_SOURCES): Added futures.c.
6569 (DOT_X_FILES): Added futures.x.
6570 (DOT_DOC_FILES): Added futures.doc.
6571 (modinclude_HEADERS): Added futures.h.
6572
6573 * threads.c, threads.h (scm_i_create_thread): Renamed from
6574 create_thread and made global.
6575
6576 * futures.c (scm_make_future): New procedure.
6577
6578 * eval.c: #include "libguile/futures.h".
6579
6580 * init.c: #include "futures.h"
6581 (scm_init_guile_1): Call scm_init_futures.
6582
6583 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
6584
6585 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
6586
6587 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
6588 functions.
6589
6590 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
6591
6592 2003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6593
6594 * threads.c (create_thread): Don't unwind dynwind chain of parent
6595 thread before creation. Just start the new thread with an empty
6596 dynwind chain.
6597
6598 2003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6599
6600 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
6601
6602 2003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6603
6604 * threads.c (scm_timed_wait_condition_variable): Support timed
6605 waiting also for simple condition variables.
6606
6607 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
6608 of calling the procedure change-object-class.
6609
6610 2003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6611
6612 * ramap.c (scm_ramapc): Typo in error message.
6613
6614 2003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6615
6616 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
6617 slots with instance allocation.
6618
6619 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
6620 class.
6621 (scm_compute_applicable_methods): Use scm_generic_function_methods.
6622
6623 * goops.c (scm_generic_function_methods): Support extended
6624 generic functions.
6625
6626 2002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6627
6628 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
6629 Thanks to Neil for pointing this out!
6630
6631 2002-12-29 Neil Jerram <neil@ossau.uklinux.net>
6632
6633 * lang.h: Remove declarations matching definitions removed from
6634 lang.c (just below).
6635
6636 2002-12-28 Neil Jerram <neil@ossau.uklinux.net>
6637
6638 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
6639 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
6640 and already commented out.
6641
6642 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
6643 scm_lreadparen): Support reading vectors with Elisp syntax if
6644 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
6645 is not currently defined, and there isn't even a configure switch
6646 to enable it yet.)
6647
6648 2002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
6649
6650 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
6651 builds work.
6652 (EXTRA_DIST): Added version.h.in.
6653
6654 2002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6655
6656 This change makes it possible for one thread to do lazy sweeping
6657 while other threads are running. Now only the mark phase need to
6658 have all threads asleep. We should look further into this issue.
6659 Presently, I've put the locking of scm_i_sweep_mutex at
6660 "conservative" places due to my current lack of knowledge about
6661 the garbage collector. Please feel free to restrict these regions
6662 further to allow for maximal parallelism!
6663
6664 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
6665
6666 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
6667 scm_gc_register_collectable_memory): Substitute locking of
6668 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
6669 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
6670 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
6671 the single-thread section (which now only contains the mark
6672 phase).
6673 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
6674 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
6675
6676 * threads.c (gc_section_mutex): Removed.
6677
6678 2002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6679
6680 * threads.c (create_thread): Clear parent field in root state in
6681 order not to unnecessarily remember dead threads.
6682
6683 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
6684 (scm_trampoline_1, scm_trampoline_2): Use them.
6685
6686 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6687
6688 Partial introduction of real plugin interface.
6689
6690 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
6691 (EXTRA_DIST): Added threads-plugin.c.
6692
6693 * threads-plugin.h, threads-plugin.c: New files.
6694
6695 * threads.h: #include "libguile/threads-plugin.h".
6696
6697 * threads.c: #include "libguile/threads-plugin.c".
6698
6699 * pthread-threads.c: Temporarily remove debugging functions.
6700
6701 * threads.c, threads.h (scm_yield): Added back.
6702
6703 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6704
6705 * threads.c (really_launch): Detach before unlocking
6706 thread_admin_mutex in order not to risk being joined.
6707 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
6708 thread_admin_mutex locked during GC.
6709
6710 * pthread-threads.c, pthread-threads.h: Improvements to debugging
6711 functions.
6712
6713 2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6714
6715 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
6716 support for debugging mutex operations.
6717
6718 * threads.c (scm_thread): Removed filed joining_threads.
6719 (thread_print): Print thread number as well as address of thread
6720 structure.
6721 (scm_join_thread): Bugfix.
6722 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
6723 scm_timed_wait_condition_variable, scm_signal_condition_variable,
6724 scm_broadcast_condition_variable): Use the low-level API.
6725 (scm_all_threads): Return copy of thread list (to prevent
6726 unintended destruction).
6727 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
6728
6729 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
6730 pthread "native" recursive mutex support.
6731
6732 2002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6733
6734 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
6735 Simply lock a thread C API recursive mutex.
6736 (SCM_NONREC_CRITICAL_SECTION_START,
6737 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
6738 SCM_REC_CRITICAL_SECTION_END): Removed.
6739
6740 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
6741 direct calls to scm_rec_mutex_lock / unlock around the three calls
6742 to scm_m_expand_body.
6743
6744 * eval.c, eval.h (promise_free): New function.
6745 (scm_force): Rewritten; Now thread-safe; Removed
6746 SCM_DEFER/ALLOW_INTS.
6747
6748 * pthread-threads.h: Added partially implemented plugin interface
6749 for recursive mutexes. These are, for now, only intended to be
6750 used internally within the Guile implementation.
6751
6752 * pthread-threads.c: New file.
6753
6754 * threads.c: Conditionally #include "pthread-threads.c".
6755
6756 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
6757 thread-safe;
6758
6759 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
6760 SCM_GLOBAL_REC_MUTEX): New macros.
6761
6762 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
6763 macros---use mutexes instead.
6764
6765 * tags.h (SCM_IM_FUTURE): New tag.
6766
6767 * eval.c (scm_m_future): New primitive macro.
6768 (SCM_CEVAL): Support futures.
6769 (unmemocopy): Support unmemoization of futures.
6770
6771 * print.c (scm_isymnames): Name of future isym.
6772
6773 * version.c: Unmade some changes to my private copy that got
6774 committed by mistake.
6775
6776 2002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6777
6778 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
6779 2002-12-10.
6780
6781 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
6782
6783 * gc.c (scm_gc_sweep): Call it here instead, which is a more
6784 logical place.
6785
6786 * threads.c (create_thread): Remember root object until the handle
6787 of the new thread is on all_threads list.
6788
6789 * root.c (scm_make_root): Moved copying of fluids until after
6790 creation of root handle so that the fluids are GC protected. Also
6791 removed the critical section.
6792
6793 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6794
6795 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
6796
6797 * gc-malloc.c (malloc_mutex): New mutex.
6798 (scm_gc_malloc_prehistory): Initialize it.
6799 (scm_realloc): Serialize call to realloc
6800 (scm_calloc): Same for calloc.
6801 Thanks to Wolfgang Jaehrling!
6802 (Now we have to make sure all calls to malloc/realloc are made
6803 through scm_malloc.)
6804
6805 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
6806
6807 * threads.c (really_launch): Release heap (to prevent deadlock).
6808 (create_thread): Release heap before locking thread admin mutex.
6809
6810 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6811
6812 * threads.c (scm_i_thread_invalidate_freelists): New
6813 function.
6814
6815 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
6816
6817 * modules.c (scm_export): Inserted a return statement.
6818
6819 2002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6820
6821 * modules.c (scm_export): new function
6822
6823 * gc-card.c: add a note about malloc()/free() overhead.
6824
6825 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
6826
6827 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
6828 in srcdir.
6829
6830 2002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6831
6832 These changes remove scm_ints_disabled (which hasn't has any
6833 effect in Guile for quite some time).
6834
6835 * async.c, error.h (scm_ints_disabled): Removed.
6836
6837 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
6838 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
6839 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
6840 (old_ints): Removed.
6841
6842 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
6843 critical section.
6844 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
6845 SCM_ALLOW_INTS.
6846
6847 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6848
6849 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
6850 Removed accidental #if 0 around these functions.
6851
6852 These changes are the start of support for preemptive
6853 multithreading. Marius and I have agreed that I commit this code
6854 into the repository although it isn't thoroughly tested and surely
6855 introduces many bugs. The bugs should only be exposed when using
6856 threads, though. Signalling and error handling for threads is
6857 very likely broken. Work on making the implementation cleaner and
6858 more efficient is needed.
6859
6860 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
6861 (SCM_NONREC_CRITICAL_SECTION_START,
6862 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
6863 SCM_REC_CRITICAL_SECTION_END): New macros.
6864 (SCM_CRITICAL_SECTION_START/END): Defined here.
6865
6866 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
6867 the three calls to scm_m_expand_body.
6868
6869 * gc.h: #include "libguile/pthread-threads.h";
6870 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
6871
6872 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
6873 scm_t_key;
6874
6875 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
6876 access.
6877
6878 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
6879
6880 * gc-freelist.c, threads.c (really_launch): Use
6881 SCM_FREELIST_CREATE.
6882
6883 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
6884
6885 * gc.c (scm_i_expensive_validation_check, scm_gc,
6886 scm_gc_for_newcell): Put threads to sleep before doing GC-related
6887 heap administration so that those pieces of code are executed
6888 single-threaded. We might consider rewriting these code sections
6889 in terms of a "call_gc_code_singly_threaded" construct instead of
6890 calling the pair of scm_i_thread_put_to_sleep () and
6891 scm_i_thread_wake_up (). Also, we would want to have as many of
6892 these sections eleminated.
6893
6894 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
6895
6896 * inline.h: #include "libguile/threads.h"
6897
6898 * pthread-threads.h: Macros now conform more closely to the
6899 pthreads interface. Some of them now take a second argument.
6900
6901 * threads.c, threads.h: Many changes.
6902
6903 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
6904
6905 * Makefile.am (version.h): Changed $^ --> $< in rule for
6906 version.h.
6907
6908 2002-12-08 Rob Browning <rlb@defaultvalue.org>
6909
6910 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
6911 (SCM_MINOR_VERSION): use @--@ substitution now.
6912 (SCM_MICRO_VERSION): use @--@ substitution now.
6913 (scm_effective_version): new function prototype.
6914
6915 * version.c (scm_effective_version): new function, also add
6916 effective-version.
6917
6918 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
6919 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
6920 SCM_LIBRARY_DIR.
6921 (version.h): generate this here rather than configure.in. This
6922 approach tracks source edits better (i.e. more immediately).
6923 Might be worth considering for other .in files too.
6924
6925 2002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
6926
6927 Reorganized thread package selection. A thread package now only
6928 implements a small set of pthread like functions and Guile
6929 implements the rest on top of that. Guile's implementation is
6930 what the "coop-pthreads" package has been previously. Support for
6931 "coop" threads has been removed until I get time to add it again.
6932
6933 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
6934 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
6935 null-threads.c, coop-pthreads.c.
6936 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
6937 pthread-threads.h.
6938
6939 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
6940
6941 * threads.h: Do not include "libguile/coop-defs.h". Include
6942 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
6943 (previously deprecated) C level thread API prototypes. They are
6944 now in the thread package specific headers, "null-threads.h" and
6945 "pthread-threads.h".
6946 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
6947 New.
6948 (scm_threads_init): Removed.
6949 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
6950 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
6951 SCM_I_THREAD_SWITCH_COUNT): Define here.
6952 (scm_single_thread_p): Removed.
6953 (scm_call_with_new_thread): Take two args directly instead of list
6954 of two args.
6955 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
6956 SCM_SET_THREAD_LOCAL_DATA): Define here.
6957
6958 * threads.c: Merged with "coop-pthreads.c".
6959
6960 * null-threads.h: Implement pthread-like API as a set of macros.
6961
6962 * pthread-threads.h: New, implement pthread-like API by deferring
6963 to pthread itself.
6964
6965 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
6966 has been lost in the reorganization.
6967
6968 2002-12-01 Mikael Djurfeldt <mdj@linnaeus>
6969
6970 The following change makes it possible to move procedure
6971 application dispatch outside inner loops. The motivation was
6972 clean implementation of efficient replacements of R5RS primitives
6973 in SRFI-1.
6974
6975 The semantics is clear: scm_trampoline_N returns an optimized
6976 version of scm_call_N (or NULL if the procedure isn't applicable
6977 on N args).
6978
6979 Applying the optimization to map and for-each increases efficiency
6980 noticeably. For example, (map abs ls) is 8 times faster than
6981 before.
6982
6983 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
6984
6985 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
6986
6987 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
6988 (map, for-each): Handle also application on two args as a special
6989 case; Use trampolines.
6990
6991 Other changes:
6992
6993 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
6994 (subr2oless): Removed.
6995 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
6996 vector GC protected.
6997
6998 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
6999 scm_out_of_range.
7000
7001 2002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7002
7003 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
7004
7005 2002-11-17 Mikael Djurfeldt <mdj@linnaeus>
7006
7007 * debug.c (scm_make_iloc): Added missing "return".
7008
7009 2002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
7010
7011 * strports.c (scm_eval_string_in_module): Validate second arg to
7012 be a module. Thanks to Arno Peters!
7013
7014 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7015
7016 * .cvsignore: remove goops.c
7017
7018 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7019
7020 * modules.c (scm_env_top_level, scm_lookup_closure_module,
7021 module_variable, scm_module_lookup_closure,
7022 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
7023 scm_system_module_env_p): Don't compare SCM values with C
7024 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
7025 over SCM_NFALSEP.
7026
7027 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7028
7029 * eval.h (SCM_MAKE_ILOC): New macro.
7030
7031 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
7032 the iloc bitpattern here.
7033
7034 2002-11-14 Mikael Djurfeldt <mdj@linnaeus>
7035
7036 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
7037 part of the API, otherwise it's difficult to write Guile
7038 extensions using non-blocking I/O => moved #include
7039 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
7040
7041 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
7042 s_unlock_mutex.
7043
7044 2002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
7045
7046 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
7047 are defined in configure.in.
7048
7049 * threads.c: Removed SCM_API from function definitions. SCM_API
7050 is only for declarations.
7051
7052 2002-11-07 Mikael Djurfeldt <mdj@linnaeus>
7053
7054 * coop-pthreads.h: Added support for thread specific data to the
7055 generic C API for the coop-pthreads case.
7056
7057 * threads.c, threads.h (scm_cond_init): Undo unintentional API
7058 change.
7059 (scm_cond_broadcast): Added missing function.
7060
7061 2002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7062
7063 * coop.c (coop_next_runnable_thread): Removed, wich should have
7064 happened when GUILE_ISELECT was hard-wired.
7065
7066 2002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
7067
7068 * Makefile.am (libguile_la_SOURCES): Added threads.c
7069 (DOT_DOC_FILES): Added threads.doc.
7070 (DOT_X_FILES): Added threads.x.
7071 (EXTRA_libguile_la_SOURCES): Removed threads.c.
7072 (noinst_HEADERS): Added coop-pthreads.c.
7073 (modinclude_HEADERS): Added coop-pthreads.h.
7074
7075 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
7076 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
7077
7078 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
7079 Thanks to Bill Schottstaedt!
7080
7081 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
7082
7083 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
7084 SCM_COPT_THREADS is defined.
7085 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
7086 is defined.
7087
7088 * coop-pthreads.c: Some harmless renamings of internal stuff.
7089 (create_thread): New, generalized version of
7090 scm_call_with_new_thread.
7091 (scm_call_with_new_thread): Use it.
7092 (scm_spawn_thread): New, use create_thread.
7093
7094 2002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
7095
7096 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
7097 start testing it now.
7098
7099 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
7100 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
7101 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
7102 is defined.
7103
7104 2002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
7105
7106 * scmsigs.c (signal_cell_handlers, install_handler_data,
7107 scm_delq_spine_x, really_install_handler, install_handler): New
7108 scheme for triggering signal handlers, to simplify take_signal.
7109 (take_signal): Simplified, to avoid race conditions.
7110 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
7111 hasn't exited yet.
7112
7113 * async.c (scm_async_click): Reset pending_asyncs, handle
7114 signal_asyncs. Don't set cdr of a non-signal async to #f.
7115 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
7116 always. Set pending_asyncs.
7117 (scm_system_async_mark_for_thread): Check that thread has not
7118 exited.
7119 (scm_unmask_signals, decrease_block): Call scm_async_click after
7120 block_asyncs becomes zero.
7121
7122 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
7123 active_asyncs.
7124
7125 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
7126 fields.
7127 * root.c (root_mark): Mark them.
7128 (make_root): Initialize them.
7129
7130 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
7131 USE_COOP_THREADS.
7132 (scm_internal_select): Define one version for USE_COOP_THREADS and
7133 one for USE_NULL_THREADS.
7134 (scm_init_iselect): Likewise.
7135
7136 * inline.h (scm_cell, scm_double_cell): Also allow
7137 USE_COPT_THREADS to not protect the slot initializers.
7138
7139 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
7140 because threads need to be initialized before the stack, but
7141 gsubrs such as scm_timed_condition_variable_wait can only be
7142 created later.
7143
7144 * threads.h: Include "coop-pthreads.h" when requested.
7145 (scm_threads_make_mutex, scm_threads_lock_mutex,
7146 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
7147 not implemented anyway.
7148 (scm_init_thread_procs, scm_try_mutex,
7149 scm_timed_condition_variable_wait,
7150 scm_broadcast_condition_variable, scm_c_thread_exited_p,
7151 scm_thread_exited_p): New prototypes.
7152 (struct timespec): Define if not already defined.
7153 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7154 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7155 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7156 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
7157 deprecated.
7158
7159 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
7160 requested.
7161 (scm_thread_exited_p): New.
7162 (scm_try_mutex, scm_broadcast_condition_variable): Newly
7163 registered procedures.
7164 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
7165 Use the latter as the procedure for "wait-condition-variable",
7166 thus offering a optional timeout parameter to Scheme.
7167 (scm_wait_condition_variable): Implement in terms of
7168 scm_timed_wait_condition_variable.
7169 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7170 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
7171 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7172 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
7173 scm_make_mutex, etc, and deprecate.
7174 (scm_init_threads): Do not create smobs, leave this to
7175 scm_threads_init. Do not include "threads.x" file.
7176 (scm_init_thread_procs): New, include "threads.x" here.
7177
7178 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
7179 scm_null_mutex_lock, scm_null_mutex_unlock,
7180 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
7181 scm_null_condvar_wait, scm_null_condvar_signal,
7182 scm_null_condvar_destroy): Removed.
7183 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
7184 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
7185 scm_cond_destory): Do not define, they are now deprecated and
7186 handled by threads.{h,c}.
7187
7188 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
7189 (scm_threads_init): Create smobs here, using the appropriate
7190 sizes.
7191 (block): Removed, now unused.
7192 (scm_c_thread_exited_p): New.
7193 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
7194 scm_null_mutex_destroy, scm_null_condvar_init,
7195 scm_null_condvar_wait, scm_null_condvar_signal,
7196 scm_null_condvar_destroy): Removed and updated users to do their
7197 task directly.
7198 (scm_try_mutex, timeval_subtract,
7199 scm_timed_wait_condition_variable,
7200 scm_broadcast_condition_variable): New.
7201 (scm_wait_condition_variable): Removed.
7202
7203 * coop-defs.h (coop_m): Added 'level' field.
7204 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
7205 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
7206 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
7207 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
7208 define.
7209 (coop_condition_variable_broadcast): New.
7210
7211 * coop-threads.c (scm_threads_init): Create smobs here, using the
7212 appropriate sizes.
7213 (scm_c_thread_exited_p, scm_try_mutex,
7214 scm_timed_wait_condition_variable,
7215 scm_broadcast_condition_variable): New.
7216 (scm_wait_condition_variable): Removed.
7217
7218 * coop.c (coop_new_mutex_init): Initialize level.
7219 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
7220 level.
7221 (coop_condition_variable_signal): Renamed to
7222 coop_condition_variable_broadcast and reimplemented in terms of
7223 that. Thus...
7224 (coop_condition_variable_broadcast): New.
7225
7226 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
7227
7228 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
7229
7230 2002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
7231
7232 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
7233 of system headers.
7234
7235 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
7236 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
7237 give better error messages. Thanks to Bill Schottstaedt!
7238
7239 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7240
7241 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
7242 scm_definedp to scm_defined_p and deprecated scm_definedp.
7243
7244 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7245
7246 * async.h, async.c (scm_system_async): Fixed deprecation to work
7247 correctly when deprecated features are excluded.
7248
7249 2002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7250
7251 * async.c (scm_system_async_mark_for_thread): Validate thread
7252 argument.
7253
7254 * coop-threads.c (scm_i_thread_root): Do not validate argument.
7255
7256 * feature.c (scm_init_feature): Don't add 'threads' for
7257 USE_NULL_THREADS.
7258
7259 * inline.h (scm_cell, scm_double_cell): Also allow
7260 USE_NULL_THREADS to not protect the slot initializers.
7261
7262 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
7263 "USE_THREAD".
7264
7265 * Makefile.am (noinst_HEADERS): Added null-threads.c.
7266 (modinclude_HEADERS): Added null-threads.h.
7267
7268 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
7269 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
7270 (scm_init_threads): Use generic type names scm_t_mutex and
7271 scm_t_cond instead of coop_m and coop_c.
7272
7273 * null-threads.c, null-threads.h: New files.
7274
7275 2002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
7276
7277 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
7278 This is to support makes that know about "$<" only in pattern
7279 rules, like Sun's make.
7280
7281 2002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
7282
7283 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
7284 substitution. Thanks to David Allouche!
7285
7286 2002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
7287
7288 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
7289 !SCM_ENABLE_DEPRECATED.
7290
7291 2002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7292
7293 * async.c (scm_system_async_mark_for_thread): Only call
7294 scm_i_thread_root when USE_THREADS is defined. Use scm_root
7295 otherwise.
7296
7297 * scmsigs.c (take_signal): Only call scm_i_thread_root when
7298 USE_THREADS is defined. Use scm_root otherwise.
7299 (scm_sigaction_for_thread): Ignore THREAD argument when
7300 USE_THREADS is not defined. Also, move THREAD argument defaulting
7301 out of HAVE_SIGACTION section, which was a bug.
7302
7303 2002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7304
7305 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
7306 signal_handlers, not the closure that is used as the async.
7307 The closure is stored in signal_handler_cells, as previously.
7308
7309 2002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
7310
7311 * root.h (scm_root_state): Added 'block_async' slot.
7312 (scm_active_asyncs): Removed abbrev.
7313 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
7314
7315 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
7316 abbrev.
7317
7318 * async.h (scm_call_with_blocked_asyncs,
7319 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7320 scm_c_call_with_unblocked_asyncs): New prototypes.
7321 (scm_mask_signals, scm_unmask_signals): Deprecated.
7322 (scm_mask_ints): Turned into a macro.
7323 * async.c (scm_mask_ints): Removed.
7324 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
7325 this should not be necessary.
7326 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
7327 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
7328 deprecation warning and check for errornous use. Set block_asyncs
7329 instead of scm_mask_ints.
7330 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
7331 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
7332 scm_c_call_with_unblocked_asyncs): New.
7333
7334 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
7335 Asyncs are enabled by default.
7336
7337 2002-10-09 Neil Jerram <neil@ossau.uklinux.net>
7338
7339 * vports.c (scm_make_soft_port): Allow vector argument to carry a
7340 6th element: an input waiting thunk.
7341 (sf_input_waiting): New.
7342
7343 2002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
7344
7345 * root.c (root_mark): Mark active_asyncs slot.
7346
7347 * async.c (scm_async_click): Set the cdr of a executed handler
7348 cell to SCM_BOOL_F, not SCM_EOL.
7349 (scm_i_queue_async_cell): Queue the cell at the end of the list,
7350 and only if the handler procedure is not already present.
7351 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
7352 with SCM_BOOL_F.
7353 * scmsigs.c (scm_sigaction_for_thread): Likewise.
7354
7355 2002-10-04 Rob Browning <rlb@defaultvalue.org>
7356
7357 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
7358
7359 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
7360 scm_lt_dlopenext, and scm_lt_dlerror.
7361 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
7362 and scm_lt_dlerror.
7363 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
7364 and scm_lt_dlerror.
7365 (sysdep_dynl_init): switch to scm_lt_dlinit();
7366
7367 * Makefile.am (libguile_la_LIBADD): switch to use
7368 libguile-ltdl.la.
7369
7370 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
7371
7372 2002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
7373
7374 * scmsigs.h (scm_sigaction_for_thread): New prototype.
7375 * scmsigs.c (got_signal): Removed.
7376 (signal_handler_cells, signal_handler_threads): New.
7377 (take_signal): Queue the cell of the signal for the specified
7378 thread. Reset the signal handler on systems that don't have
7379 sigaction.
7380 (sys_deliver_signals): Removed.
7381 (close_1): New.
7382 (scm_sigaction_for_thread): Renamed from scm_sigaction and
7383 extended to also set the thread of a signal and allocate a cell
7384 for it. Keep the Scheme name "sigaction". Check that signum is
7385 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
7386 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
7387 (scm_init_scmsigs): Allocate signal_handler_cells and
7388 signal_handler_threads vectors.
7389
7390 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
7391 that system asnycs and user asyncs are separated. Reimplemented
7392 system asyncs to work per-thread.
7393
7394 * gc.c (scm_init_gc): Do not use scm_system_async.
7395
7396 * async.h (scm_asyncs_pending, scm_set_tick_rate,
7397 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
7398 Removed prototypes.
7399 (scm_i_queue_async_cell): New.
7400
7401 * __scm.h (scm_asyncs_pending_p): Removed.
7402 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
7403 scm_asyncs_pending_p.
7404
7405 * async.h (scm_system_async_mark_for_thread): New prototype.
7406
7407 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
7408
7409 * root.h (scm_root_state): Added new "active_asyncs" slot.
7410 * root.c (scm_make_root): Initialize it to SCM_EOL.
7411
7412 * coop-defs.h (coop_t): Added new "handle" slot.
7413 * coop-threads.c (all_threads, scm_current_thread,
7414 scm_all_threads, scm_i_thread_root): New.
7415 (scm_threads_init): Add main thread to all_threads.
7416 (scheme_launch_thread): Remove thread from all_threads when it
7417 terminates.
7418 (scm_call_with_new_thread): Initialize handle slot of coop_t
7419 structure and add new thread to all_threads.
7420 (scm_spawn_thread): Likewise.
7421
7422 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
7423 * threads.c (scm_current_thread, scm_all_threads): Register as
7424 primitives.
7425
7426 * dynl.c: Use scm_lt_ prefix for libltdl functions.
7427
7428 2002-09-29 Neil Jerram <neil@ossau.uklinux.net>
7429
7430 * script.c (scm_compile_shell_switches): Fix bad spelling of
7431 `explicitly' in comment.
7432
7433 2002-09-28 Neil Jerram <neil@ossau.uklinux.net>
7434
7435 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
7436 Refer to provided? in doc string rather than deprecated feature?.
7437
7438 2002-09-24 Gary Houston <ghouston@arglist.com>
7439
7440 * inline.h (scm_double_cell): prevent reordering of statements
7441 with any following code (for GCC 3 strict-aliasing).
7442 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
7443 the earlier version of the reordering prevention.
7444
7445 2002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7446
7447 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
7448
7449 2002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7450
7451 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
7452 protection.
7453
7454 2002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7455
7456 * inline.h: include stdio.h
7457
7458 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
7459
7460 2002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7461
7462 * gc-segment.c (scm_i_make_initial_segment): check user settings
7463 for sanity.
7464
7465 * gc-malloc.c (scm_gc_init_malloc): check user settings for
7466 sanity.
7467
7468 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
7469
7470 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
7471
7472 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
7473 these won't ever wrap around with high memory usage. Thanks to
7474 Sven Hartrumpf for finding this.
7475
7476 * gc-freelist.c: include <stdio.h>
7477
7478 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
7479
7480 2002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
7481
7482 * vectors.h (SCM_VECTOR_REF): New.
7483
7484 * snarf.h (SCM_DEFINE_PUBLIC): New.
7485
7486 2002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
7487
7488 * socket.c (scm_addr_vector): Added size of address to arguments.
7489 Use it to avoid accessing a non-existent path in a sockaddr_un.
7490 Changed all callers.
7491
7492 2002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7493
7494 * gc.h: remove DOUBLECELL card flags.
7495
7496 * gc-malloc.c (scm_calloc): try to use calloc() before calling
7497 scm_realloc().
7498
7499 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
7500 init loop; handle this from scm_init_card_freelist()
7501
7502 * gc-card.c (scm_init_card_freelist): init bit vector here.
7503
7504 * numbers.c (scm_make_real): prevent reordering of statements
7505 num2float.i.c (FLOAT2NUM): idem
7506
7507 2002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7508
7509 * eval.h: prepend libguile/ to include path
7510
7511 2002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
7512
7513 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
7514 years. Thanks to Martin Grabmüller!
7515
7516 2002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7517
7518 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
7519 unsigned numbers for computing minimum heap increment. This
7520 prevents weird results when a a negative minimum increment is
7521 computed.
7522
7523 2002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
7524
7525 * gc_os_dep.c: When we have __libc_stack_end, use that directly
7526 instead of the old tricks.
7527
7528 * guile-snarf.in: Do not expect the input file to be the first
7529 argument after the optional "-o" option, just pass everything to
7530 the pre-processor without extracting the input file name.
7531
7532 2002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7533
7534 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
7535 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
7536
7537 2002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7538
7539 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
7540 Bill Schottstaedt for the bug report
7541
7542 2002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
7543
7544 * print.c (scm_iprin1): Print primitives generics always as
7545 "primitive-generic" even when they have no primitive methods yet.
7546
7547 2002-08-17 Gary Houston <ghouston@arglist.com>
7548
7549 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
7550 call.
7551
7552 2002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7553
7554 * ports.c (scm_add_to_port_table): small bugfix.
7555
7556 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
7557 malloc.
7558
7559 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
7560 only use SCM_MIN_HEAP_SEG_SIZE.
7561
7562 * ports.c (scm_add_to_port_table): add backwards compatibility
7563 function
7564
7565 * ports.h: use scm_i_ prefix for port table and port table size.
7566
7567 2002-08-15 Mikael Djurfeldt <mdj@linnaeus>
7568
7569 * vports.c (scm_make_soft_port): Initialize pt variable.
7570
7571 2002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
7572
7573 * strports.h (scm_c_eval_string_in_module,
7574 scm_eval_string_in_module): New prototypes.
7575 * strports.c (scm_eval_string_in_module): New, but use
7576 "eval-string" as the Scheme name and make second parameter
7577 optional.
7578 (scm_eval_string): Implement using scm_eval_string_in_module.
7579 (scm_c_eval_string_in_module): New.
7580 Thanks to Ralf Mattes for the suggestion!
7581
7582 2002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7583
7584 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
7585 message and abort.
7586
7587 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
7588
7589 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
7590 stead of scm_t_port*. The function now takes a tag argument.
7591
7592 2002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7593
7594 * gc.h: add scm_debug_cells_gc_interval to public interface
7595
7596 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
7597
7598 * gc.c (scm_i_expensive_validation_check): separate expensive
7599 validation checks from cheap ones.
7600
7601 2002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7602
7603 * read.c (scm_input_error): new function: give meaningful error
7604 messages, and throw read-error
7605
7606 * gc-malloc.c (scm_calloc): add scm_calloc.
7607
7608 2002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7609
7610 * tags.h: remove GC bits documentation from the tags table.
7611
7612 * read.c (INPUT_ERROR): Prepare for file:line:column error
7613 messages for errors in scm_lreadr() and friends.
7614
7615 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7616
7617 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
7618 implementation).
7619 (scm_gc_calloc): new function
7620
7621 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7622
7623 * ports.c (scm_new_port_table_entry): init port entry to 0
7624 completely.
7625
7626 * ports.c (scm_new_port_table_entry): change function from
7627 scm_add_to_port_table. This prevents cells with null-pointers from
7628 being exposed to GC.
7629
7630 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
7631 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
7632
7633 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
7634 to gc-stats.
7635
7636 * numbers.c (big2str): return "0" for 0 iso. ""
7637
7638 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
7639 private-gc.h: new file
7640
7641 * gc.c: completely revised and cleaned up the GC. It now uses lazy
7642 sweeping. More documentation in workbook/newgc.text
7643
7644 2002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7645
7646 * random.c (rstate_free): Return zero.
7647
7648 2002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7649
7650 * environments.c (remove_key_from_alist): Removed.
7651
7652 (obarray_remove): Simplified.
7653
7654 2002-07-24 Stefan Jahn <stefan@lkcc.org>
7655
7656 * continuations.h: ia64: Include <signal.h> before
7657 <sys/ucontext.h>.
7658
7659 2002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
7660
7661 * modules.c (scm_sym2var): Don't compare SCM values with ==.
7662
7663 2002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7664
7665 * goops.c (scm_compute_applicable_methods): use
7666 scm_remember_upto_here_1 iso scm_remember_upto_here
7667
7668 * macros.c: include deprecation.h
7669
7670 * vectors.c (scm_vector_move_right_x): remove side effect in
7671 macro arg.
7672 (scm_vector_move_left_x): idem.
7673
7674 * net_db.c, posix.c, socket.c: variable naming: change ans to
7675 result.
7676
7677 * sort.c (scm_merge_vector_x): accept vector as argument
7678 iso. SCM*. This is needed for full GC correctness.
7679
7680 * gc.h: undo previous undocumented changes related to #ifdef
7681 GENGC.
7682
7683 2002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7684
7685 * *.c: add space after commas everywhere.
7686
7687 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
7688 Document cases where SCM_WRITABLE_VELTS() is used.
7689
7690 * vectors.h (SCM_VELTS): prepare for write barrier, and let
7691 SCM_VELTS() return a const pointer
7692 (SCM_VECTOR_SET): add macro.
7693
7694 2002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
7695
7696 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
7697 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
7698 Deprecated the special kind of built-in dynamic syntax transformer
7699 that was inaccurately named "macro". Note: The built-in syntax
7700 transformers that are named "mmacro" or "memoizing-macro" still
7701 exist, and it is these which come much closer to what one would
7702 call a macro.
7703
7704 2002-07-13 Neil Jerram <neil@ossau.uklinux.net>
7705
7706 * eval.c (unmemocopy): Fix for
7707 1001-local-eval-error-backtrace-segfaults (unmemoization crash
7708 with internal definitions and local-eval).
7709
7710 2002-07-12 Gary Houston <ghouston@arglist.com>
7711
7712 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
7713 defined. They don't do anything useful, especially since the
7714 only case where DYNAMIC_LINKING is undefined seems to be
7715 when --with-modules=no is given to configure, which is basically
7716 requesting that the "dynamic linking module" be omitted.
7717
7718 * Makefile.am (libguile_la_SOURCES): move dynl.c from
7719 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
7720
7721 * extensions.c (load_extension): check DYNAMIC_LINKING for
7722 scm_dynamic_call.
7723 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
7724 scm_init_dynamic_linking.
7725
7726 2002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
7727
7728 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
7729 check for Cygwin when including <winsock2.h>, this is already
7730 check for by configure. Thus, revert change from 2002-07-07.
7731
7732 2002-07-10 Gary Houston <ghouston@arglist.com>
7733
7734 * eq.c: include <string.h>
7735 * dynl.c: docstring editing.
7736
7737 2002-07-09 Gary Houston <ghouston@arglist.com>
7738
7739 * dynl.c (scm_dynamic_call): docstring editing.
7740
7741 2002-07-08 Rob Browning <rlb@defaultvalue.org>
7742
7743 * gc_os_dep.c: HURD fixes.
7744
7745 2002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
7746
7747 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
7748
7749 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
7750 this should be compiled for BUILD host.
7751 Override default rule for
7752 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
7753 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
7754 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
7755
7756 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
7757 <winsock2.h> on Cygwin even when we have it.
7758
7759 2002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
7760
7761 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
7762 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
7763 the code. Full number of arguments checking of closures is
7764 mandatory now. However, the option to disable the checking has
7765 most probably not been used anyway.
7766
7767 2002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
7768
7769 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
7770 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
7771 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
7772 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
7773 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
7774 (scm_source_properties, scm_set_source_properties_x,
7775 scm_source_property): Removed compile time option SCM_RECKLESS to
7776 clean up the code. Full number of arguments checking of closures
7777 is mandatory now. However, the option to disable the checking has
7778 most probably not been used anyway.
7779
7780 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
7781 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
7782
7783 2002-06-30 Gary Houston <ghouston@arglist.com>
7784
7785 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
7786 do anything useful. Added a comment about need for a mutex if
7787 pre-emptive threading is supported.
7788
7789 * posix.c (scm_convert_exec_args), dynl.c
7790 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
7791 allocate_string_pointers. 2) simplified: don't reallocate the
7792 strings, just make an array of pointers 3) avoid memory leaks on
7793 error 4) let the procedure report errors in its own name.
7794 Consequences: 1) the procedures now assume that SCM strings are
7795 nul-terminated, which should always be the case. 2) Since strings
7796 are not reallocated, it's now possible for strings passed to
7797 dynamic-args-call to be mutated.
7798
7799 2002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
7800
7801 * __scm.h, eval.c, eval.h: Removed compile time option
7802 MEMOIZE_LOCALS to clean up the code. Now, caching of local
7803 variable positions during memoization is mandatory. However, the
7804 option to disable the caching has most probably not been used
7805 anyway.
7806
7807 2002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
7808
7809 * print.c (scm_simple_format): Print missing part of format before
7810 ~% control. Thanks to Daniel Skarda!
7811
7812 2002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
7813
7814 * mkstemp.c: Added exception notice to license statement.
7815
7816 2002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
7817
7818 * numbers.c (mem2ureal): When returning an inexact zero, make sure
7819 it is represented as a floating point value so that we can change
7820 its sign.
7821
7822 From John W. Eaton <jwe@bevo.che.wisc.edu>
7823
7824 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
7825
7826 2002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
7827
7828 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
7829 in addition to `i386'. Thanks to Dale P. Smith.
7830
7831 2002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
7832
7833 * eq.c (real_eqv): New.
7834 (scm_eqv_p): Use it when comparing reals and complexes.
7835
7836 * numbers.c: Include <string.h>, for strncmp.
7837 (mem2complex): Do not create negative NaNs.
7838 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
7839 NaN.
7840 (scm_inexact_to_exact): Signal error when converting a NaN.
7841
7842 2002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
7843
7844 * posix.c (scm_putenv): Handle removing variables explicitely by
7845 calling unsetenv.
7846
7847 From John W. Eaton.
7848
7849 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
7850 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
7851 and scm_nan.
7852 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
7853 [SCO && ! HAVE_ISINF] (isinf): New function.
7854 (xisinf, xisnan): New functions.
7855 (IS_INF): Delete.
7856 (isfinite): Define in terms of xisinf.
7857 (scm_inf_p, scm_nan_p): New functions.
7858 (guile_Inf, guile_NaN): New file-scope vars.
7859 (guile_ieee_init): New function.
7860 (scm_inf, scm_nan): New functions.
7861 (idbl2str): Handle Inf and NaN. Remove funny label and
7862 corresponding gotos.
7863 (ALLOW_DIVIDE_BY_ZERO): New macro.
7864 (scm_divide): Allow division by zero to occur if
7865 ALLOW_DIVIDE_BY_ZERO is defined.
7866 Handle bignums and ints as special cases.
7867
7868 Additional stuff by me:
7869
7870 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
7871 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
7872 (iflo2str): Don't output a '+' for negative numbers or for Inf and
7873 NaN. They will provide their own sign.
7874 (scm_divide): Only allow divides by inexact zeros. Dividing by
7875 exact zeros still signals an errors.
7876
7877 2002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
7878
7879 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
7880 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
7881 (scm_slot_exists_p): Rename from scm_slots_exists_p.
7882 Thanks to Andreas Rottmann.
7883
7884 2002-04-20 Gary Houston <ghouston@arglist.com>
7885
7886 * removal of unused fields in root state (thanks to Christopher
7887 Cramer for pointing out the disuse.)
7888 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
7889 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
7890
7891 * root.c (root_mark): don't mark them.
7892 (scm_make_root): don't set them to #f.
7893 * init.c (scm_init_standard_ports): don't initialise with the
7894 default ports.
7895
7896 2002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
7897
7898 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
7899 cpp_sig_symbols.c.
7900
7901 2002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
7902
7903 * guile-snarf.in: Do not clean input file. This would write to
7904 the $(srcdir) during a VPATH build, which is not allowed. It also
7905 isn't needed since it only works when an output filename has been
7906 specified and in that case we don't need to clean the input file
7907 because the output file will already exist.
7908
7909 2002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
7910
7911 * guile-snarf: Install the trap for removing $cleanfile only when
7912 the value of $cleanfile is actually known.
7913
7914 2002-04-10 Rob Browning <rlb@defaultvalue.org>
7915
7916 * .cvsignore: add versiondat.h and *.c.clean.c.
7917
7918 2002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
7919
7920 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
7921 function, replaces macro SRCBRKP.
7922
7923 (SRCBRKP): Deprecated.
7924
7925 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
7926 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
7927 temporary variable.
7928
7929 2002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
7930
7931 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
7932 CHECK_EXIT and removed all references to them.
7933
7934 2002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7935
7936 * debug.h (scm_ready_p, debug_print): Removed declarations.
7937
7938 * eval.c (EVALCELLCAR): Removed.
7939
7940 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
7941 operation from condition.
7942
7943 2002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
7944
7945 * guile-snarf.in: When the output filename is "-", write to
7946 stdout. When no "-o" option is given, use "-" as the output
7947 filename (i.e., stdout). Only 'clean' the inputfile or remove the
7948 output file on error when the output file name is not "-". Define
7949 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
7950
7951 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
7952
7953 2002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
7954
7955 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
7956 and the corresponding goto statements. Removed redundant code.
7957
7958 2002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
7959
7960 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
7961 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
7962 Re-enabled handing of rpsubrs and asubrs.
7963
7964 2002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
7965
7966 * eval.c (SIDEVAL): Removed.
7967
7968 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
7969 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
7970 argument checking order for set! to locals, variables and symbols.
7971 Improvements to control structure. Removed some uses of arg1 and
7972 arg2 as temporary variables.
7973
7974 2002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
7975
7976 * guile-snarf.in: Remove "--compat=1.4" support.
7977 Add "-d" and "-D" support.
7978
7979 (deprecated_list): New var.
7980 (compat_mode_clean_xxx): Delete.
7981 (grep_deprecated): New func.
7982 ("main"): If "-d" or "-D", call `grep_deprecated'.
7983
7984 2002-03-15 Neil Jerram <neil@ossau.uklinux.net>
7985
7986 * hooks.h: Change scm_t_c_hookype_t everywhere to
7987 scm_t_c_hook_type.
7988
7989 Docstring fixes:
7990
7991 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
7992
7993 * ports.c (scm_sys_make_void_port): Use `@file'.
7994
7995 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
7996 than `else'.
7997
7998 * macros.c (scm_makmacro): Don't say that the form replaces its
7999 source, because it doesn't.
8000 (scm_makmmacro): Clarify difference between this and scm_makmacro.
8001
8002 * backtrace.c (scm_display_error), filesys.c (scm_umask,
8003 scm_select, scm_basename), goops.c (scm_method_generic_function),
8004 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
8005 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
8006 spelling mistakes.
8007
8008 * debug.c (scm_debug_options), eval.c
8009 (scm_eval_options_interface), read.c (scm_read_options): Change
8010 incorrect @var in docstring to @code.
8011
8012 2002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
8013
8014 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
8015
8016 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
8017 guile-snarf can remove trailing non-init code.
8018
8019 * guile-snarf.in (modern_snarf): Remove everything following and
8020 including "^:^" from the output.
8021
8022 2002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
8023
8024 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
8025
8026 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
8027
8028 2002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
8029
8030 * guile-snarf.in: Update copyright.
8031 Rewrite to internalize error handling.
8032 Add "--compat=1.4" handling.
8033 Add commentary.
8034
8035 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
8036 (snarfcppopts): New var.
8037 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
8038 (.c.doc): Use $(snarfcppopts).
8039
8040 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
8041 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
8042 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
8043 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
8044 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
8045 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
8046 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
8047 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
8048 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
8049 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
8050 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
8051 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
8052 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
8053 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
8054
8055 2002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
8056
8057 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
8058 The next step will be to remove the union 't' and simplify the
8059 code of SCM_CEVAL that way.
8060
8061 2002-03-12 Neil Jerram <neil@ossau.uklinux.net>
8062
8063 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
8064 rreadfds, rwritefds, rexceptfds): Made static.
8065
8066 * gc.c (terminating), fports.c (terminating): Renamed
8067 scm_i_terminating.
8068
8069 2002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
8070
8071 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
8072 potential overflow problems. Thanks to John W Eaton!
8073
8074 * strop.c (string_capitalize_x): Treat characters as unsigned so
8075 that 8-bit chars work. Thanks to David Pirotte!
8076
8077 2002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8078
8079 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
8080 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
8081 proc as temporary variables. Introduced temporary variables with
8082 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8083 by a more explicit predicate in some places.
8084
8085 2002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
8086
8087 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
8088 Added lots of comments regarding the implementation of #@dispatch.
8089 Changed intra-procedure communication to use t.arg1 instead of
8090 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
8091 variables. Introduced temporary variables with hopefully
8092 descriptive names for clarification. Replaced SCM_N?IMP by a more
8093 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
8094 of computing the expression explicitly. Eliminate now unused
8095 label nontoplevel_cdrxbegin.
8096
8097 * goops.h (SCM_INSTANCE_HASH): New macro.
8098
8099 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
8100
8101 2002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8102
8103 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
8104 "guile-snarf" moved back from `noinst_SCRIPTS'.
8105
8106 2002-03-08 Neil Jerram <neil@ossau.uklinux.net>
8107
8108 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
8109 exists when adding a source property other than those that are
8110 handled explicitly, add the new property to the SRCPROPS obj's
8111 plist.
8112
8113 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
8114 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
8115
8116 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
8117 debug.status. It isn't needed, and it can overflow the bits
8118 reserved for it (which may lead to a segv or a GC abort).
8119
8120 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8121
8122 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
8123 side-effecting operations from conditions and macro calls.
8124 Replaced SCM_N?IMP by a more explicit predicate in some places.
8125 Minimized the scope of some variables.
8126
8127 2002-03-02 Stefan Jahn <stefan@lkcc.org>
8128
8129 * convert.i.c: Fixed int <-> long conversions which would have
8130 failed if their sizes were different.
8131
8132 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8133
8134 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
8135 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
8136 as temporary variables. Removed side-effecting operations from
8137 conditions and macro calls. Introduced temporary variables with
8138 hopefully descriptive names for clarification. Replaced SCM_N?IMP
8139 by a more explicit predicate in some places. Removed code that
8140 was conditionally compiled if SICP was defined - which it never
8141 is.
8142
8143 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8144
8145 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
8146 Removed some uses of t.arg1 and proc as temporary variables.
8147 Removed side-effecting operations from conditions and macro calls.
8148 Introduced temporary variables with hopefully descriptive names
8149 for clarification. Replaced SCM_N?IMP by a more explicit
8150 predicate in some places.
8151
8152 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
8153
8154 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
8155 explicit predicate in some places.
8156
8157 (CHECK_EQVISH): Removed.
8158
8159 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
8160 variables. Removed side-effecting operations from conditions and
8161 macro calls. Introduced temporary variables for clarification.
8162 Sorted if-else-if check for the type of the last form in a list by
8163 frequency. Avoided some unnecessary tail-recursion calls.
8164
8165 2002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
8166
8167 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
8168 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
8169 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
8170 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
8171 scm_cell and all its uses to scm_t_cell in accordance to Guile's
8172 naming scheme for types.
8173
8174 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
8175 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
8176 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
8177 (scm_make_environment), eval.c (scm_closure), fports.c
8178 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
8179 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
8180 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
8181 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
8182 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
8183 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
8184 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
8185 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
8186 scm_alloc_cell to scm_cell.
8187
8188 * environments.c (core_environments_observe), gc.c
8189 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
8190 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
8191 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
8192 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
8193 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
8194 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
8195 (allocate_weak_vector): Renamed scm_alloc_double_cell to
8196 scm_double_cell.
8197
8198 2002-02-27 Stefan Jahn <stefan@lkcc.org>
8199
8200 * convert.i.c, convert.c: Better range checking.
8201
8202 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
8203
8204 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
8205 Windows (MinGW).
8206
8207 2002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
8208
8209 * Makefile.am: Update path to pre-inst-guile automake frag.
8210
8211 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8212
8213 * gc.c (scm_gc_sweep): Make it compile even when deprecated
8214 features are excluded.
8215
8216 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8217
8218 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
8219
8220 2002-02-25 Gary Houston <ghouston@arglist.com>
8221
8222 * convert.c: include <string.h> for convert_i.c.
8223
8224 2002-02-24 Rob Browning <rlb@defaultvalue.org>
8225
8226 * .cvsignore: add stamp-h1.
8227
8228 2002-02-21 Neil Jerram <neil@ossau.uklinux.net>
8229
8230 * unif.c (scm_array_to_list): Correct name, which had been
8231 accidentally changed to scm_t_arrayo_list!
8232
8233 2002-02-20 Mikael Djurfeldt <mdj@linnaeus>
8234
8235 * gc.c (scm_gc_sweep): Print an error message when aborting due to
8236 underflowing scm_mallocated.
8237
8238 2002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8239
8240 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
8241 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
8242 Reimplemented using the new scm_gc_malloc, etc., functions and
8243 deprecated.
8244
8245 2002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
8246
8247 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
8248 to `noinst_PROGRAMS'.
8249 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
8250 (noinst_PROGRAMS, noinst_SCRIPTS): New.
8251
8252 2002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8253
8254 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
8255 non-zero is returned from a port or smob free function.
8256 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
8257 scm_gc_register_collectable_memory,
8258 scm_gc_unregister_collectable_memory, scm_gc_malloc,
8259 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
8260
8261 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
8262 debug-malloc.c, dynl.c, environments.c, environments.h,
8263 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
8264 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
8265 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
8266 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
8267 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
8268 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
8269 appropriate. Return zero from smob and port free functions.
8270
8271 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
8272
8273 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
8274 messages while the GC is running.
8275 (scm_c_issue_deprecation_warning_fmt): New.
8276
8277 * fports.c (scm_setvbuf): Reset read buffer to saved values when
8278 it is pointing to the putback buffer.
8279
8280 2002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
8281
8282 * gsubr.c (create_gsubr): On "too many args" error,
8283 also display arg count and name. Thanks to Bill Schottstaedt.
8284
8285 2002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
8286
8287 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
8288
8289 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
8290 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
8291 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
8292
8293 * guile-snarf-docs-texi.in: Bye bye.
8294
8295 2002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
8296
8297 * symbols.c (scm_make_symbol): Fix typo in docstring.
8298
8299 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8300 scm_make_symbol): New prototypes.
8301
8302 2002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
8303
8304 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
8305 (SCM_SYMBOL_INTERNED_P): New.
8306 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
8307 SCM_MAKINUM since hash values can well be bignums.
8308 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
8309 This signals a interned symbol.
8310 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
8311 scm_make_symbol): New.
8312
8313 * print.c (scm_iprin1): Print uninterned symbols unreadably.
8314
8315 2002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
8316
8317 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
8318 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
8319 Thanks to Dave Love.
8320
8321 2002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
8322
8323 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
8324 This might help to make unintended clashes less likely.
8325 (scm_string_to_symbol): Protect the string until the symbols is
8326 created.
8327
8328 2002-01-31 Stefan Jahn <stefan@lkcc.org>
8329
8330 * convert.c, convert.h, convert.i.c: New files containing C
8331 array to Scheme conversion helpers meant to be replacement
8332 functions for the deprecated gh interface.
8333
8334 * Makefile.am: Setup rules for new `convert.*' files.
8335
8336 2002-01-28 Stefan Jahn <stefan@lkcc.org>
8337
8338 * symbols.c (scm_c_symbol2str): New function, replacement for
8339 `gh_scm2newsymbol()'.
8340
8341 * strings.c (scm_c_substring2str): New function. Proper
8342 replacement for `gh_get_substr()'.
8343
8344 * socket.c: Include `stdint.h' if available for the `uint32_t'
8345 declaration.
8346
8347 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
8348 compiler warning).
8349
8350 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
8351
8352 2002-01-22 Neil Jerram <neil@ossau.uklinux.net>
8353
8354 Other changes unrelated to Elisp...
8355
8356 * eval.c (scm_m_if): Use s_if rather than repeating string literal
8357 "if".
8358 (comments): Fix a few typos.
8359 (scm_for_each): Add parentheses around oddly unparenthesized
8360 if/while conditions.
8361
8362 * read.c (scm_read_opts): Add full stop at end of doc for
8363 `keywords' option.
8364
8365 * script.c (scm_compile_shell_switches): Use scm_str2symbol
8366 instead of gh_symbol2scm.
8367
8368 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
8369 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
8370
8371 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
8372 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
8373
8374 First batch of changes for Elisp support...
8375
8376 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
8377 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
8378 throw.c, vectors.c, weaks.c: Add #include for lang.h.
8379
8380 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
8381 conditionalize compilation and initialization of Elisp support
8382 function.
8383
8384 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
8385 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
8386 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
8387 filesys.c (fill_select_type, retrieve_select_type), fluids.c
8388 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
8389 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
8390 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
8391 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
8392 options.c (change_option_setting, scm_options), posix.c
8393 (environ_list_to_c), print.c (scm_iprlist), throw.c
8394 (scm_exit_status), vectors.c (scm_vector), weaks.c
8395 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
8396
8397 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
8398 just SCM_FALSEP.
8399
8400 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
8401 of just SCM_BOOLP.
8402
8403 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
8404 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
8405 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
8406 (scm_m_atfop): Support function aliasing. Support both function
8407 args, which need transformation, and macro args, which do not.
8408 Add explanatory comments.
8409 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
8410 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
8411 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
8412 SCM_NULLP || SCM_NILP instead of checks against (removed)
8413 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
8414 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
8415
8416 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
8417 scm_m_while, scm_nil_eq): Commented out; I don't think we need
8418 these, but I don't want to remove them yet, just in case.
8419 (scm_init_lang): Define `%nil' variable on Scheme level to hold
8420 Elisp nil value.
8421
8422 * lang.h (SCM_NILP): Test against Elisp nil value instead of
8423 against (removed) scm_lisp_nil.
8424 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
8425 (SCM_NULL_OR_NIL_P): New.
8426
8427 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
8428 SCM_VALIDATE_NULL.
8429
8430 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
8431 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
8432 value).
8433
8434 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
8435 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
8436 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
8437 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
8438
8439 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
8440 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
8441 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
8442 Numbering shifted down accordingly.
8443 (SCM_ELISP_NIL): New IFLAG.
8444
8445 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
8446
8447 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8448
8449 * eval.c: Removed outdated references to "everr". Improved some
8450 comments.
8451
8452 (scm_deval_args, deval_args): Renamed scm_deval_args to
8453 deval_args, since it is not part of the interface.
8454
8455 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
8456 use references to debug.vect[0] before it exists. Add parentheses
8457 to switch statement.
8458
8459 * goops.h: Added local emacs variables.
8460
8461 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8462
8463 * eval.[ch] (scm_deval_args): Made static.
8464
8465 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
8466 test.
8467
8468 * strings.c (scm_c_string2str): Clarified comment. Replaced
8469 THINKME by FIXME for uniformness. Removed question about whether
8470 arguments need to be protected from garbage collection: Arguments
8471 must be protected as any other variable.
8472
8473 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
8474
8475 * procs.h (SCM_CLOSURE_BODY): New Macro.
8476
8477 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
8478 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
8479 get_slot_value, set_slot_value), procs.c
8480 (scm_procedure_documentation), sort.c (closureless), stacks.c
8481 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
8482 SCM_CLOSURE_BODY.
8483
8484 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
8485
8486 2001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
8487
8488 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
8489 use "cp" instead.
8490
8491 2001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
8492
8493 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
8494 everywhere.
8495
8496 * continuations.c (scm_make_continuation): Do not retain the
8497 throw_value when the continuation is invoked.
8498
8499 2001-12-08 Stefan Jahn <stefan@lkcc.org>
8500
8501 * strings.c (scm_c_string2str): New function. Converts a
8502 given Scheme string into a C string. Also put in two
8503 THINKME's regarding the malloc policy for the missing converter
8504 routines.
8505
8506 2001-12-01 Neil Jerram <neil@ossau.uklinux.net>
8507
8508 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
8509 gh_symbol2scm.
8510
8511 2001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
8512
8513 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
8514 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
8515
8516 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
8517 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
8518 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
8519 macros.
8520
8521 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
8522
8523 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
8524 SCM_GC_CELL_* macros when accessing free cells.
8525
8526 2001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
8527
8528 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
8529 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
8530 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
8531 * strings.h (SCM_MAKE_STRING_TAG): New.
8532 * procs.h (SCM_MAKE_CCLO_TAG): New.
8533 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
8534
8535 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
8536 !SCM_ENABLE_DEPRECATED.
8537
8538 * async.c, async.h (scm_system_async_mark_from_signal_handler):
8539 New.
8540
8541 * scmsigs.c (scm_take_signal): Removed all code that assumes that
8542 signal handlers are allowed to divert the flow of control. Call
8543 scm_system_async_mark_from_signal_handler instead of
8544 scm_system_async_mark.
8545
8546
8547 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
8548 scm_alloc_double_cell in their place.
8549
8550 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
8551 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
8552 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
8553 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
8554 scm_deprecated_newcell and scm_deprecated_newcell2.
8555
8556 gc.c (scm_tc16_allocated): Only define when including deprecated
8557 features.
8558 (scm_debug_newcell, scm_debug_newcell2): Removed.
8559 (scm_init_storage): Do not initialize scm_tc16_allocated.
8560 (scm_init_gc): Do it here.
8561 (allocated_mark): New, from old code.
8562 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
8563
8564 * inline.c, inline.h: New files.
8565 * Makefile.am: Added them in all the right places.
8566
8567 * _scm.h: Include "libguile/inline.h".
8568
8569 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
8570 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
8571 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
8572 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
8573 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
8574 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
8575 scm_alloc_double_cell, respectively.
8576
8577 2001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
8578
8579 * modules.c (scm_c_use_module): Adapt to changes to
8580 `process-use-modules'.
8581
8582 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
8583
8584 * numbers.c (scm_divide): Fix more division by zero errors.
8585
8586 2001-11-21 Gary Houston <ghouston@arglist.com>
8587
8588 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
8589 obsolete. autogen.sh says:
8590 invalid unused variable name: `OMIT_DEPENDENCIES'
8591
8592 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
8593
8594 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
8595 reporting the bug.
8596
8597 2001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
8598
8599 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
8600 Thanks to Eric Gillespie, Jr!
8601
8602 2001-11-21 Stefan Jahn <stefan@lkcc.org>
8603
8604 * win32-socket.c (getservent, setservent, endservent,
8605 getprotoent, setprotoent, endprotoent): New functions.
8606 Appropriate replacements for M$-Windows.
8607
8608 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
8609 these definitions for GUILE_DEBUG.
8610
8611 * net_db.c: Include "win32-socket.h" if compiling with a native
8612 M$-Windows compiler. Include some pieces of code (protoent and
8613 servent interface) protected by HAVE_* macros when using a
8614 native M$-Windows compiler.
8615
8616 2001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
8617
8618 * modules.c (scm_c_export): Do nothing when the first argument is
8619 already the terminating NULL. Thanks to Han-Wen Nienhuys!
8620
8621 2001-11-20 Thien-Thi Nguyen <ttn@glug.org>
8622
8623 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
8624 also include `buildstamp'.
8625
8626 2001-11-18 Rob Browning <rlb@defaultvalue.org>
8627
8628 * version.c
8629 (s_scm_major_version): use SCM_MAJOR_VERSION.
8630 (s_scm_minor_version): use SCM_MINOR_VERSION.
8631 (s_scm_micro_version): use SCM_MICRO_VERSION.
8632 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
8633 SCM_MICRO_VERSION.
8634
8635 * version.h.in
8636 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
8637 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
8638 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
8639
8640 2001-11-18 Neil Jerram <neil@ossau.uklinux.net>
8641
8642 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
8643 Rewrite docstrings without reference to substring-move-left/right,
8644 since the latter no longer exist.
8645
8646 2001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
8647
8648 * eval.c: Removed bogus comment about acros.
8649
8650 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
8651 Minimize scope of local variable. Eliminate dependency on
8652 macro DEBUG_EXTENSIONS.
8653
8654 (s_splicing): New error message string.
8655
8656 (scm_m_body): Issue 'bad body' message rather than 'missing
8657 expression' message.
8658
8659 (scm_m_quote): Eliminate unnecessary copying.
8660
8661 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
8662 checking of the body to scm_m_body.
8663
8664 (scm_m_do): Move comment to function header. Rename arg1 to
8665 binding. Made the code a bit easier to read.
8666
8667 (evalcar): Removed.
8668
8669 (iqq): Added a comment. Changed the depth parameter to
8670 unsigned. Use size_t for vector lengths. Make sure vector object
8671 is gc protected as long as its contents are read. Add some syntax
8672 checks. Get rid of unnecessary SCM_IMP test. Clean up the
8673 control structure a bit.
8674
8675 (scm_m_delay): Added comment about the implementation of
8676 scm_m_delay.
8677
8678 (scm_m_define): Add comment about guile's currying define
8679 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
8680 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
8681
8682 (scm_m_letrec1): Removed. Part of the functionality is taken
8683 over by the new function 'transform_bindings'.
8684
8685 (transform_bindings): New function. Takes over some of the
8686 functionality of removed function 'scm_m_letrec1', namely to split
8687 a list of bindings into a reversed list of variables and a list of
8688 initializers.
8689
8690 (scm_m_letrec): Call 'transform_bindings'.
8691
8692 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
8693 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
8694 test. Use 'transform_bindings'. Fixed scoping error with named
8695 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
8696 Jerram for suggesting the fix). Cleaned up the control structure
8697 a bit.
8698
8699 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
8700 unnecessary consing. Eliminated unnecessary
8701 SCM_DEFER/ALLOW_INTS.
8702
8703 (SCM_CEVAL): Un-obfuscated some loops.
8704
8705 2001-11-16 Neil Jerram <neil@ossau.uklinux.net>
8706
8707 * gc.h (scm_unhash_name): Old declaration removed.
8708
8709 * eval.c (s_scm_eval): Change @var{primitive-eval} to
8710 @code{primitive-eval}.
8711
8712 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
8713 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
8714 Change @deffnx lines in docstrings to say {Scheme Procedure}
8715 rather than primitive or procedure.
8716
8717 * posix.c (scm_execl), filesys.c (scm_close), unif.c
8718 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
8719 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
8720 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
8721 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
8722 (scm_string_split, scm_string_ci_to_symbol), strings.c
8723 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
8724 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
8725 Docstring fixes and improvements reflecting edits that have been
8726 made in the reference manual source.
8727
8728 * objprop.c (scm_object_properties, scm_set_object_properties_x,
8729 scm_object_property, scm_set_object_property_x): Remove invalid
8730 @deffnx lines for corresponding procedure property primitives.
8731
8732 These changes add a @deffnx C function declaration and function
8733 index entries for each Guile primitive to the copy of the doc
8734 snarf output that is used for reference manual synchronization.
8735 Online help is unchanged.
8736
8737 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
8738 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
8739 name to SCM_SNARF_DOCS.
8740
8741 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
8742 snarf-check-and-output-texi.
8743
8744 * Makefile.am (guile-procedures.texi): New rule.
8745 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
8746 Changed so that the last stage of doc snarfing is now performed
8747 twice, once to produce guile-procedures.txt for online help, and
8748 once to produce guile.texi for reference manual synchronization.
8749
8750 2001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8751
8752 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
8753 safely usable as a single statement followed by a ';', for example
8754 in an if statement.
8755
8756 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
8757
8758 2001-11-13 Neil Jerram <neil@ossau.uklinux.net>
8759
8760 * random.c (scm_random_solid_sphere_x,
8761 scm_random_hollow_sphere_x): Correct "shere" typos.
8762
8763 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
8764
8765 * version.c (scm_version): Update docstring to include
8766 `micro-version'.
8767
8768 2001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
8769
8770 * modules.c (scm_c_export): Call va_end after collecting the
8771 symbols.
8772
8773 * strop.h, strop.c (scm_substring_move_left_x,
8774 scm_substring_move_right_x): Removed.
8775
8776 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
8777 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
8778 configure does.
8779
8780 2001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
8781
8782 * numbers.c: Document macros to define when including
8783 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
8784 now rely on SIZEOF_ macros that have been figured out at
8785 configure time.
8786
8787 * num2integral.i.c: Adapt to new interface.
8788 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
8789 target type by casting it and checking whether it is still the
8790 same. Do not try to handle bignums for integral types that are
8791 smaller than fixnums. When handling bignums, collect the
8792 magnituse first into a unsigned type, and correctly check for
8793 overflow.
8794 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
8795 only -MIN_VALUE can still be negative of all negative numbers (in
8796 twos-complement).
8797
8798 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
8799
8800 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
8801 HAVE_LONG_LONG depending on whether their size is non-zero.
8802
8803 2001-11-11 Thien-Thi Nguyen <ttn@glug.org>
8804
8805 * strop.c (scm_string_null_p): Docfix; nfc.
8806 Thanks to Scott Lenser.
8807
8808 2001-11-07 Neil Jerram <neil@ossau.uklinux.net>
8809
8810 * extensions.c (scm_load_extension): Canonicalize docstring
8811 whitespace.
8812
8813 * unif.c (scm_uniform_array_write), ports.c
8814 (scm_current_output_port, scm_force_output), dynwind.c
8815 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
8816 filesys.c (scm_open, scm_lstat), struct.c
8817 (scm_make_struct_layout), random.c (scm_random,
8818 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
8819 (scm_i_index): Remove superfluous whitespace from end of docstring
8820 lines.
8821
8822 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
8823 strings.c (scm_make_string), variable.c (scm_make_variable,
8824 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
8825 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
8826 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
8827 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
8828 newline at end of docstrings.
8829
8830 * modules.c (scm_set_current_module): Add missing newline to
8831 docstring.
8832
8833 2001-11-07 Stefan Jahn <stefan@lkcc.org>
8834
8835 * win32-socket.[ch]: New files. Defines Winsock-API error codes
8836 and makes them available through Guile. That is because the
8837 Winsock-API does not store its errors in `errno' and thus cannot
8838 return error messages via `strerror (errno)'.
8839
8840 * socket.c (scm_init_socket): Initialize `win32-socket' part
8841 here under M$-Windows.
8842
8843 * numbers.h: Added missing declaration of
8844 `scm_sys_check_number_conversions()'.
8845
8846 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
8847 and use in `(strerror)' and `(system-error)'.
8848
8849 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
8850 `win32-socket.[ch]' to extra source and header files.
8851
8852 2001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
8853
8854 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
8855 a call to turn-on-debugging when --debug has been given instead of
8856 turning it on directly. Also, handle new `--no-debug' option,
8857 which might suppress the call to turn-on-debugging.
8858
8859 2001-11-05 Stefan Jahn <stefan@lkcc.org>
8860
8861 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
8862
8863 2001-11-04 Stefan Jahn <stefan@lkcc.org>
8864
8865 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
8866 here (was at guile_LDADD) which describes the dependency
8867 correctly and allows a clean build on Win32.
8868
8869 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
8870 into FOO.
8871
8872 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
8873 import macros for external libraries (libcrypt, libqthreads,
8874 libreadline and libregex).
8875
8876 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
8877
8878 * posix.c (flock): Added support for flock() in M$-Windows.
8879
8880 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
8881 of __SCM_IMPORT__.
8882
8883 * fports.c (getflags): Differentiate reading and writing pipes
8884 descriptors.
8885
8886 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
8887 M$-Windows.
8888
8889 * coop.c (coop_condition_variable_timed_wait_mutex): Use
8890 conditionalized error code if `ETIMEDOUT' is not available.
8891 (scm_thread_usleep): Remove bogus declaration of `struct timeval
8892 timeout'.
8893
8894 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
8895 belongs. That is because NO_PREPRO_MAGIC gets undefined after
8896 each inclusion of `num2integral.i.c'.
8897 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
8898
8899 2001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
8900
8901 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
8902 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
8903
8904 2001-11-02 Mikael Djurfeldt <mdj@linnaeus>
8905
8906 * print.c (scm_iprin1): Mark print state as revealed when
8907 dispatching to generic write or display.
8908
8909 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
8910
8911 2001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
8912
8913 Support for native Win32. Thanks to Stefan Jahn!
8914
8915 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
8916 and win32-dirent.h to extra source and header files. These
8917 include the uname() and the POSIX dirent interface implementation
8918 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
8919 linkers which do not allow unresolved symbols inside shared
8920 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
8921 dependency.
8922
8923 * __scm.h: Defined SCM_API. This macro gets prepended to all
8924 function and data definitions which should be exported or imported
8925 in the resulting dynamic link library in the Win32 port.
8926
8927 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
8928 chars.h, continuations.h, coop-defs.h, coop-threads.h,
8929 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
8930 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
8931 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
8932 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
8933 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
8934 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
8935 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
8936 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
8937 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
8938 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
8939 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
8940 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
8941 vports.h, weaks.h:
8942 Prefixed each each exported symbol with SCM_API.
8943
8944 * continuations.c: Added comment about the use of the extern
8945 declarations of {get,set}context() functions used in the ia64 port.
8946
8947 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
8948 is meant to be a `unsigned long *'.
8949
8950 * filesys.c: Include `direct.h' if possible. Use local
8951 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
8952 macros for M$-Windows. Implementation of `fstat_Win32()' which is
8953 able to differentiate between sockets and other file descriptors.
8954 Use this function as wrapper in `scm_fstat()'. Fixed typo in
8955 `scm_dirname()'.
8956
8957 * fports.c: Include `io.h' is possible. Put `*fp' into referring
8958 statement block in `scm_fport_buffer_add()'.
8959 Some corrections in `getflags()'.
8960
8961 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
8962
8963 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
8964 build on Win32. Disable preloaded symbols on Win2 platforms.
8965
8966 * ioext.c, ports.c: Include `io.h' is possible.
8967
8968 * mkstemp.c: Include `process.h' is possible.
8969
8970 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
8971 too.
8972 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
8973
8974 * posix.c: Remove unnecessary dirent includes and defines. Include
8975 local `win32-uname.h' for MinGW. Extern declaration of
8976 `mkstemp()' for systems where it does not exists. Make
8977 `getlogin()' available on M$-Windows.
8978
8979 * scmsigs.c: Made `usleep()' avalable on MinGW.
8980
8981 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
8982
8983 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
8984
8985 * win32-uname.c: Include "win32-uname.h", not "uname.h".
8986
8987 2001-10-28 Mikael Djurfeldt <mdj@linnaeus>
8988
8989 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
8990 Don't apply scm_uniform_vector_length on arrays.
8991
8992 2001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
8993
8994 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
8995 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
8996 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
8997 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
8998 scm_list_<n> over scm_cons[2]?.
8999
9000 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
9001 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
9002 SCM_C[AD][AD]R instead of explicit form.
9003
9004 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
9005 comparison parameters.
9006
9007 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
9008 !SCM_NULLP instead of SCM_NIMP.
9009
9010 (scm_m_case): Don't copy the form. Renamed proc to clause and
9011 minimized its scope. Renamed x to clauses. Removed side
9012 effecting operation from macro call.
9013
9014 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
9015 minimized its scope. Renamed x to clauses. Minimized the scope
9016 of variable 'len'. Make sure the else clause is treated specially
9017 even in case of '=>' occurences. Don't change the else to #t in
9018 order to be able to distinguish this case in the evaluator. Leave
9019 type checking of the recipient to the evaluator.
9020
9021 (scm_c_improper_memq): Made the comment somewhat clearer.
9022
9023 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
9024 test for SCM_IM_LET at the place of the formal parameters.
9025 Simplified the formal parameter checking.
9026
9027 (scm_m_letstar): Added Comment. Renamed proc to bindings.
9028 Renamed arg1 to binding and minimized its scope. Eliminated
9029 unnecessary consing.
9030
9031 (scm_m_do): Renamed proc to bindings. Minimized the scope of
9032 variable 'len'.
9033
9034 (build_binding_list): New static function.
9035
9036 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
9037 Further, split up the 'letrec' unmemoizing code to the
9038 corresponding parts for 'do', 'let' and 'letrec', adding comments
9039 to each form. Cleanup the handling of the do form (This removes
9040 some *real* code :-).
9041
9042 (SCM_CEVAL): Removed side effecting operation from macro call.
9043 Handle the 'else clause of the 'cond form specially - the symbol
9044 'else is not replaced with #t any more.
9045
9046 2001-10-14 Gary Houston <ghouston@arglist.com>
9047
9048 * version.c (scm_version): use sprintf instead of snprintf,
9049 for portability. thanks to Bill Schottstaedt.
9050
9051 2001-10-14 Mikael Djurfeldt <mdj@linnaeus>
9052
9053 * read.c (scm_lreadr): When user-defined hash procedure returns
9054 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
9055 an exception. (This prevents parsing of uniform vectors from
9056 interfering with parsing of numbers.)
9057
9058 2001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
9059
9060 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
9061 PTRDIFF_MIN. Thanks to Ken Raeburn.
9062
9063 2001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
9064
9065 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
9066
9067 * eval.c (scm_m_atbind): First try to find the variable without
9068 defining it locally; when it has not been found, define it
9069 locally.
9070
9071 * modules.c (module_variable): Pass over variables that exist but
9072 are unbound.
9073
9074 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9075
9076 * backtrace.c (display_backtrace_file_and_line): Only use
9077 scm_basename when POSIX support is compiled in. Thanks to Chris
9078 Cramer.
9079
9080 2001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9081
9082 * numbers.c (mem2uinteger): Return number read so far when coming
9083 across a hexdigit after having read a # or if not reading a hex
9084 value. This will enable the calling code to correctly handle
9085 forms like 1e2. (The background is, that the exponent markers d,
9086 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
9087 providing this patch.
9088
9089 (mem2complex): Fix erroneous double-negation. Now, numbers like
9090 1-i will be read correctly.
9091
9092 2001-10-12 Mikael Djurfeldt <mdj@linnaeus>
9093
9094 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
9095
9096 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
9097
9098 2001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
9099
9100 * print.c (scm_print_state_vtable, print_state_pool):
9101 Initialize. These variables are now registered as gc roots.
9102
9103 (scm_current_pstate): Update documentation.
9104
9105 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
9106 scm_prin1, scm_init_print): print_state_pool is registered as a
9107 gc root and thus does not need to be protected by a surrounding
9108 pair any more.
9109
9110 (make_print_state): The car of print_state_pool no longer holds
9111 the scm_print_state_vtable.
9112
9113 (scm_current_pstate, scm_make_print_state, print_circref,
9114 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
9115 SCM_N<foo>.
9116
9117 (scm_prin1): When building lists, prefer scm_list_<n> over
9118 scm_cons[2]?.
9119
9120 (scm_iprlist): Removed a redundant SCM_IMP test.
9121
9122 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
9123
9124 2001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
9125
9126 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
9127
9128 (scm_memcons, scm_mem_to_proc): When building lists, prefer
9129 scm_list_<n> over scm_cons[2]?.
9130
9131 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
9132
9133 (scm_procedure_name): Use SCM_CADR instead of explicit form.
9134
9135 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
9136 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
9137 for some reason his patch didn't make it into the cvs.
9138
9139 2001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
9140
9141 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
9142 little bit - should even be somewhat more accurate now.
9143
9144 2001-10-08 Rob Browning <rlb@defaultvalue.org>
9145
9146 * gc.c: support ia64 register backing store.
9147 (SCM_MARK_BACKING_STORE): new macro.
9148
9149 * continuations.h: support ia64 register backing store.
9150 (struct scm_t_contregs): add ia64 register backing store.
9151
9152 * continuations.c: support ia64 register backing store.
9153 (continuation_mark): mark ia64 register backing store.
9154 (continuation_free): free ia64 register backing store.
9155 (scm_make_continuation): capture ia64 register backing store.
9156 (copy_stack_and_call): copy ia64 register backing store.
9157
9158 2001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
9159
9160 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
9161 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
9162 instead of SCM_NIMP to test for that case.
9163
9164 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
9165 scm_t_bits instead of long.
9166
9167 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
9168
9169 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
9170 SCM_T_SIGNED_BITS_MIN): New.
9171 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
9172 Use them to make these macros computable by the preprocessor.
9173
9174 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
9175 whether the integral type fits in a fixnum, not the compiler.
9176 This removes a spurious compiler warning. Also, honor the
9177 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
9178 needed for `long long's.
9179
9180 * numbers.c: Define NO_PREPRO_MAGOC when including
9181 num2integral.c.i for `long long' and `signed long long'.
9182
9183 2001-10-06 Mikael Djurfeldt <mdj@linnaeus>
9184
9185 These changes fixes a race condition in the Guile coop - pthread
9186 compatibility code.
9187
9188 * coop.c (mother_awake_p): New variable.
9189 (coop_create): Set mother_awake_p before creating or signalling
9190 mother; wait until mother is going to sleep before returning.
9191 (mother): Reset mother_awake_p before going to sleep.
9192
9193 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9194
9195 * options.c (protected_objects, scm_init_options): The content of
9196 protected_objects is now protected from garbage collection using
9197 scm_gc_register_root instead of scm_permanent_object.
9198
9199 (get_option_setting): New static function that computes an option
9200 setting as it was formerly done in the function scm_options.
9201
9202 (get_documented_option_setting): New static function that
9203 returns option documentation as it was formerly done in the
9204 function scm_options. Note that documentation C strings are no
9205 longer precomputed into SCM objects. Instead, they are converted
9206 into SCM strings every time get_documented_option_setting is
9207 called.
9208
9209 (change_option_setting): New static functions that modifies the
9210 option setting as it was formerly done in the function
9211 scm_options. The function is now exception safe, i. e. won't
9212 cause a memory leak when interrupted. Further, only non-immediate
9213 option values are added to the protection list.
9214
9215 (scm_options): This function now has only the purpose to dispatch
9216 to to get_option_setting, get_documented_option_setting or
9217 change_option_setting, depending on the arguments given to
9218 scm_options.
9219
9220 (scm_init_opts): Don't convert documentation C strings into SCM
9221 strings. Further, don't protect any object values: They _must_
9222 be immediate values, otherwise there is no guarantee that they
9223 have not been collected before anyway.
9224
9225 * options.[ch] (scm_t_option): Made type unsigned, name into a
9226 constant char* and val into a scm_t_bits type.
9227
9228 (scm_options, scm_init_opts): The number of options is guaranteed
9229 to be larger or equal to zero. Thus, the type is changed to
9230 unsigned.
9231
9232 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9233
9234 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
9235 testing an unsigned value for being >= 0.
9236
9237 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
9238
9239 * numbers.h: Removed old comment about using SCM_CAR to access
9240 non-pair cells.
9241
9242 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
9243 the return value is signed. Thanks to Brian Crowder for the bug
9244 report.
9245
9246 (SCM_SRS): Avoid unnecessary casting and don't unpack input
9247 values. With this patch, SCM_SRS can be safely used for other
9248 types than scm_t_signed_bits. However, it should still better be
9249 an internal macro and thus be renamed to SCM_I_SRS.
9250
9251 (SCM_MAKINUM, SCM_INUM): Use proper casting.
9252
9253 2001-10-03 Gary Houston <ghouston@arglist.com>
9254
9255 * continuations.h, unif.h: in the descriptions of the bit patterns
9256 of the heap cells, make bit 0 the least significant.
9257
9258 2001-09-25 Thien-Thi Nguyen <ttn@glug.org>
9259
9260 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
9261 Thanks to Golubev I. N.
9262
9263 2001-09-25 Gary Houston <ghouston@arglist.com>
9264
9265 * ports.c (scm_drain_input): extended the docstring. thanks to
9266 Alex Schroeder and Thien-Thi Nguyen.
9267
9268 2001-09-23 Mikael Djurfeldt <mdj@linnaeus>
9269
9270 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
9271 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
9272 macros. (The NUM names might soon change.)
9273
9274 * numbers.h: Added missing declarations.
9275
9276 2001-09-22 Mikael Djurfeldt <mdj@linnaeus>
9277
9278 * Makefile.am: Distribute num2float.i.c.
9279
9280 * num2float.i.c: New file, multiply included by numbers.c, used
9281 to "templatize" the float <-> num conversion routines.
9282
9283 * numbers.c: New functions: scm_num2float, scm_float2num,
9284 scm_num2double, scm_double2num.
9285
9286 2001-09-21 Rob Browning <rlb@defaultvalue.org>
9287
9288 * .cvsignore: really add version.h
9289
9290 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
9291 Otherwise it fails on the alpha. However, we might rather choose
9292 this size conditionally.
9293
9294 * numbers.c (scm_gcd): change "k" to a long from an int.
9295 Otherwise it fails on the alpha. However, we might rather choose
9296 this size conditionally.
9297
9298 * error.c (scm_wta): coerce char* to intptr_t before int
9299 assignment.
9300
9301 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
9302 int.
9303
9304 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
9305
9306 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9307
9308 * numbers.c (scm_integer_expt): Accept inexact integer in second
9309 argument. (Thanks to Bill Schottstaedt.)
9310
9311 2001-09-20 Rob Browning <rlb@defaultvalue.org>
9312
9313 * .cvsignore: add version.h
9314
9315 * versiondat.h.in: removed (obsolete).
9316
9317 * version.h.in: renamed from version.h.
9318 (SCM_GUILE_MAJOR_VERSION): new public macro.
9319 (SCM_GUILE_MINOR_VERSION): new public macro.
9320 (SCM_GUILE_MICRO_VERSION): new public macro.
9321
9322 * version.h: renamed to version.h.in.
9323
9324 * version.c
9325 (scm_major_version): support integer *_VERSION macros.
9326 (scm_minor_version): support integer *_VERSION macros.
9327 (scm_micro_version): support integer *_VERSION macros.
9328 (scm_version): support integer *_VERSION macros.
9329
9330 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
9331
9332 * error.c, error.h: Made error keys globally accessible.
9333 Applications might want to test for these or use them in a direct
9334 call to scm_error.
9335
9336 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
9337 routines are passed an inexact. This change in behavior is
9338 motivated by concordance with R5RS: It is more common that a
9339 primitive doesn't want to accept an inexact for an exact.
9340
9341 2001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9342
9343 The following patch partially undoes my patch from 2001-06-30,
9344 where I added the function scm_gc_mark_cell_conservatively. The
9345 function is buggy, since it breaks guile during conservative
9346 marking if a pointer on the stack points directly into the list of
9347 free cells on the heap: With conservative cell marking this will
9348 cause the whole free list to be scanned and marked - boom!
9349
9350 * gc.c (allocated_mark, MARK, heap_segment,
9351 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
9352 (scm_gc_mark_cell_conservatively): Remove function
9353 scm_gc_mark_cell_conservatively and update the corresponding
9354 comments and uses accordingly. Thanks to Christopher Cramer for
9355 the patch. (Minor corrections by me.)
9356
9357 2001-09-15 Gary Houston <ghouston@arglist.com>
9358
9359 * root.h (scm_root_state): removed the continuation_stack and
9360 continuation_stack_ptr members, which have no apparent purpose.
9361 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
9362 removed.
9363
9364 * root.c (root_mark), init.c (restart_stack, start_stack), gc
9365 (scm_igc): remove all references to contination_stack and
9366 continuation_stack_ptr, avoiding allocation of a vector and
9367 useless processing during gc.
9368
9369 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9370
9371 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
9372
9373 (TCONC_IN): Make sure that the cell word 0 is initialized last.
9374
9375 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
9376
9377 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
9378
9379 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
9380 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
9381
9382 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9383
9384 * guardians.c (mark_dependencies_in_tconc,
9385 whine_about_self_centered_zombies, scm_init_guardians): Register
9386 the static global variable `self_centered_zombies' via
9387 scm_gc_register_root, to make some cdr-ing unnecessary.
9388
9389 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
9390
9391 * backtrace.c (display_backtrace_file,
9392 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
9393 values, use SCM_FALSEP when comparing SCM values against #f.
9394 Thanks to Rob Browning for the bug report.
9395
9396 2001-09-12 Martin Baulig <martin@home-of-linux.org>
9397
9398 * strings.[ch] (scm_str2string): New function.
9399
9400 2001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
9401
9402 * gc.c (scm_done_free): Always subtract size from scm_mallocated
9403 when computing nm, even if it's negative.
9404 (scm_must_malloc): Abort on overflow of scm_mtrigger.
9405 (scm_must_realloc): Likewise.
9406
9407 2001-09-01 Michael Livshin <mlivshin@bigfoot.com>
9408
9409 * numbers.c (scm_sys_check_number_conversions): new function,
9410 defined if Guile is compiled in debugging mode. currently checks
9411 `scm_num2ulong', should check much much more.
9412
9413 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
9414 unsigned, ensure that it's positive. thanks to Martin Baulig!
9415
9416 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9417
9418 * __scm.h: Added new section about compile time selectable
9419 features.
9420
9421 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
9422 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
9423 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
9424 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
9425 Removed.
9426
9427 * deprecation.c (scm_include_deprecated_features): Simplified.
9428
9429 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
9430 `SCM_IMP' instead of `!SCM_CELLP´.
9431
9432 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
9433 Extract side-effecting operations from macros.
9434
9435 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
9436 scm_top_level_lookup_closure_var and scm_system_transformer.
9437
9438 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
9439
9440 (heap_segment): Use CELL_P instead of SCM_CELLP.
9441
9442 * init.c (start_stack): Don't initialize
9443 scm_top_level_lookup_closure_var and scm_system_transformer.
9444
9445 * modules.c (scm_set_current_module): Don't access
9446 scm_top_level_lookup_closure_var and scm_system_transformer.
9447
9448 (scm_sym2var): Don't call scm_variable_set_name_hint.
9449
9450 (scm_post_boot_init_modules): Removed deprecated initializations.
9451
9452 * print.c (scm_ipruk): Don't access cell contents of non cells.
9453
9454 * strings.c (scm_string_set_x): All strings are writable.
9455
9456 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
9457 type. There is only one string type now.
9458
9459 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
9460
9461 * tags.h: Remove comments about two different string types.
9462
9463 (SCM_CELLP, SCM_NCELLP): Deprecated.
9464
9465 * variable.c (make_variable): Remove code variant for vcells.
9466
9467 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
9468 SCM_VARIABLE_LOC): Remove code variant for vcells.
9469
9470 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
9471 SCM_ENABLE_DEPRECATED with the logic reversed.
9472
9473 * dynl.c (moddata, registered_mods), dynl.[ch]
9474 (scm_register_module_xxx, scm_registered_modules,
9475 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
9476 (*top-level-lookup-closure*), eval.[ch]
9477 (scm_top_level_lookup_closure_var, scm_system_transformer,
9478 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
9479 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
9480 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
9481 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
9482 scm_unprotect_object), modules.c (root_module_lookup_closure,
9483 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
9484 beautify_user_module_x_var, try_module_autoload_var,
9485 scm_module_full_name), modules.[ch] (scm_the_root_module,
9486 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
9487 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
9488 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
9489 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
9490 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
9491 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
9492 scm_make_shared_substring), tags.h (scm_tc7_substring,
9493 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
9494 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
9495 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
9496 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
9497 Removed.
9498
9499 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
9500 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
9501 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
9502 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
9503 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
9504 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
9505 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
9506 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
9507 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
9508 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
9509 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
9510 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
9511 (setzone, scm_strftime, scm_strptime), vports.c
9512 (scm_make_soft_port): Remove calls to
9513 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
9514 gone, all strings are 0-terminated anyway.
9515
9516 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
9517 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
9518 double inclusion of the same headers to the SCM_<filename>_H
9519 format.
9520
9521 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
9522 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
9523 print.c (scm_iprin1): The type scm_tc7_substring does not exist
9524 any more.
9525
9526 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
9527 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
9528 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
9529 !SCM_<foo> over SCM_N<foo>.
9530
9531 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9532
9533 * Makefile.am: Remove references to symbols-deprecated.c.
9534
9535 * symbols.c (scm_init_symbols): Don't initialize deprecated
9536 symbol functions.
9537
9538 * symbols-deprecated.c: Removed.
9539
9540 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
9541 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
9542 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
9543 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
9544 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
9545 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
9546 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
9547 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
9548 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
9549 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
9550 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
9551 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
9552 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
9553 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
9554 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
9555 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
9556 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
9557 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
9558 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
9559 scm_intern0, scm_sysintern, scm_sysintern0,
9560 scm_sysintern0_no_module_lookup, scm_symbol_value0,
9561 scm_string_to_obarray_symbol, scm_intern_symbol,
9562 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
9563 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
9564 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
9565 vectors.[ch] (scm_vector_set_length_x): Removed.
9566
9567 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
9568 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
9569 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
9570 Renamed the macros that are defined to inhibit double inclusion of
9571 the same headers to the SCM_<filename>_H format.
9572
9573 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
9574 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
9575 SCM_N<foo>.
9576
9577 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9578
9579 * continuations.h (scm_contregs), debug.h (scm_debug_info,
9580 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
9581 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
9582 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
9583 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
9584 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
9585 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
9586 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
9587 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
9588 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
9589 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
9590 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
9591
9592 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
9593 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
9594 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
9595 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
9596 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
9597 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
9598 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
9599 double inclusion of the same headers to the SCM_<filename>_H
9600 format.
9601
9602 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
9603 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
9604 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
9605 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
9606 !SCM_<foo> over SCM_N<foo>.
9607
9608 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
9609
9610 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
9611 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
9612 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
9613 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
9614 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
9615 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
9616 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
9617 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
9618 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
9619 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
9620 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
9621 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
9622 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
9623 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
9624 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
9625 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
9626 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
9627 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
9628 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
9629 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
9630 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
9631 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
9632 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
9633 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
9634 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
9635 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
9636 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
9637 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
9638 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
9639 the macros that are defined to inhibit double inclusion of the
9640 same headers to the SCM_<filename>_H format.
9641
9642 2001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
9643
9644 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
9645 "scm_t_portable" with "scm_port_table" which was an artifact from
9646 the great "scm_*_t -> scm_t_" renaming.
9647
9648 2001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
9649
9650 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
9651 used; nfc. Thanks to Bill Schottstaedt.
9652
9653 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
9654 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
9655 Thanks to Chris Cramer.
9656
9657 2001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
9658
9659 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
9660
9661 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
9662 dynamic scope.
9663 * dynwind.h (scm_swap_bindings): Declare.
9664 * dynwind.c (scm_swap_bindings): Make non-static.
9665
9666 2001-08-25 Michael Livshin <mlivshin@bigfoot.com>
9667
9668 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
9669 doing exactly nothing about them). thanks Neil!
9670
9671 2001-08-18 Neil Jerram <neil@ossau.uklinux.net>
9672
9673 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
9674
9675 2001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
9676
9677 * gc.c: Fix omission bug: Add `heap_segment' forward decl
9678 (proto) in the case when either `GUILE_DEBUG' or
9679 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
9680
9681 (map_free_list): Fix typo: Ref `f' correctly.
9682
9683 Thanks to Chris Cramer.
9684
9685 2001-08-15 Rob Browning <rlb@defaultvalue.org>
9686
9687 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
9688 variables.
9689 (libpath.h): change libguileversion to libguileinterface.
9690
9691 2001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
9692
9693 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
9694 ChangeLog-2000. Thanks to Daniel Skarda!
9695
9696 2001-08-07 Michael Livshin <mlivshin@bigfoot.com>
9697
9698 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
9699 do it from the Makefile.
9700
9701 * Makefile.am: rearrange the snarfing slightly, so that .doc files
9702 are of a reasonable size.
9703
9704 2001-08-02 Neil Jerram <neil@ossau.uklinux.net>
9705
9706 * stacks.c (scm_make_stack): Improve docstring by explaining use
9707 of cutting args.
9708
9709 2001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
9710
9711 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
9712 scm_char_whitespace_p, scm_char_upper_case_p,
9713 scm_char_lower_case_p, scm_char_is_both_p): Do not require
9714 characters to fulfill isascii in addition to the primary
9715 predicate.
9716
9717 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
9718
9719 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
9720 scm_istr2flo, scm_istring2number): Removed.
9721
9722 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
9723 SCM_SLOPPY_<foo>.
9724
9725 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
9726 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
9727 Added.
9728
9729 (scm_string_to_number): Use new number parser.
9730
9731 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
9732 handles complex numbers.
9733
9734 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
9735 SCM_<foo>_H.
9736
9737 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
9738 SCM_N<pred>.
9739
9740 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
9741
9742 (scm_i_mem2number): Added.
9743
9744 (scm_exact_to_inexact): Changed signature.
9745
9746 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
9747 here instead of within scm_i_mem2number. Call scm_i_mem2number
9748 instead of scm_istr2int and scm_istring2number.
9749
9750 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
9751
9752 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
9753 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
9754 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
9755 !SCM_<pred> over SCM_N<pred>.
9756
9757 (scm_eval_body): Remove side effecting code from macro call.
9758
9759 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
9760 SCM_NIMP test.
9761
9762 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
9763
9764 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
9765
9766 2001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
9767
9768 Removed vcell slot from structs.
9769
9770 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
9771 subsequent indices.
9772
9773 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
9774 zero. Use scm_vtable_index_layout instead of "0" when accessing
9775 said slot.
9776 (scm_init_struct): Remove vcell slot layout code from
9777 required_vtable_fields.
9778
9779 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
9780
9781 * goops.c (build_class_class_slots): Removed vcell slot
9782 definition.
9783
9784 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
9785 Removed vcell slot layout code.
9786 (scm_si_vcell): Removed.
9787
9788 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
9789
9790 "Glocs" have been removed.
9791
9792 * tags.h: Update tag system docs.
9793 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
9794 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
9795 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
9796 or SCM_NCONSP, respectively.
9797
9798 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
9799 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
9800 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
9801
9802 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
9803 tell glocs from structs.
9804
9805 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
9806
9807 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
9808 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
9809 instead of with glocs.
9810 (EVALCAR): Do not test for glocs.
9811 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
9812 condition.
9813 (scm_unmemocar): Do not handle glocs.
9814 (scm_m_atfop): Memoize as a variable, not as a gloc.
9815 (scm_eval_args, scm_deval_args): Do not handle glocs.
9816 (scm_ceval, scm_deval): Likewise.
9817
9818 * eval.h (SCM_XEVALCAR): Do not test for glocs.
9819 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
9820 Removed.
9821
9822 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
9823
9824 * dynwind.c (scm_swap_bindings): Likewise.
9825 (scm_dowinds): Updated to recognize lists of variables instead of
9826 lists of glocs.
9827
9828 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
9829
9830
9831 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
9832 where it is needed.
9833
9834 2001-07-25 Gary Houston <ghouston@arglist.com>
9835
9836 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
9837 docstrings to reflect the n-ary implementation.
9838
9839 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
9840
9841 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
9842 value of a variable, not the plain "return" statement.
9843
9844 2001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
9845
9846 * eval.c: Allow variables in memoized code (in addition to glocs).
9847 (scm_lookupcar): Handle variables in lost races. Replace symbol
9848 with variable directly, do not make a gloc.
9849 (scm_unmemocar): Rewrite variables using a reverse lookup, just
9850 like glocs.
9851 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
9852 the main switch.
9853
9854 2001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
9855
9856 * variable.c (scm_i_variable_print): Use "value" instead of
9857 "binding" since a binding is the mapping between symbols and
9858 variables, not between variables and their values.
9859
9860 * tags.h (scm_tc7_variable): New.
9861 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
9862 * print.c (scm_iprin1): Likewise.
9863
9864 * variable.h (scm_tc16_variable): Removed.
9865 (SCM_VARIABLEP): Test for new tc7 code.
9866 (scm_i_variable_print): New.
9867 * variable.c (scm_tc16_variable): Removed.
9868 (variable_print): Renamed to scm_i_variable_print and made
9869 non-static.
9870 (variable_equal_p): Removed.
9871 (make_variable): Construct a tc7 object instead of a smob.
9872 (scm_init_variable): Do not register smob.
9873
9874 2001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
9875
9876 * tags.h: Include inttypes.h when we have it.
9877
9878 2001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
9879
9880 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
9881 is taken by the new SCM_IM_CALL_WITH_VALUES.
9882 * print.c (scm_isymnames): Update table accordingly.
9883
9884 2001-07-22 Gary Houston <ghouston@arglist.com>
9885
9886 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
9887 SCM_MAKINUM to convert regoff_t value to SCM.
9888
9889 2001-07-21 Gary Houston <ghouston@arglist.com>
9890
9891 * scmsigs.c: include sys/time.h for itimer stuff.
9892
9893 2001-07-19 Rob Browning <rlb@defaultvalue.org>
9894
9895 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
9896
9897 * c-tokenize.lex: add option %nounput to quiet warning.
9898 Add prototype for yylex to quiet warning.
9899
9900 * scmconfig.h.in: add flags for setitimer and getitimer.
9901
9902 * scmsigs.h (scm_init_scmsigs): new prototype.
9903 (scm_init_scmsigs): new prototype.
9904
9905 * scmsigs.c (s_scm_setitimer): new function.
9906 (s_scm_setitimer): new function.
9907
9908 2001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
9909
9910 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
9911 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
9912 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
9913 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
9914 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
9915 guile-func-name-check.in, guile-snarf-docs-texi.in,
9916 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
9917 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
9918 objprop.c, objprop.h, options.c, options.h, random.h,
9919 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
9920 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
9921 version.c, version.h: Updated copyright notice.
9922
9923 2001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
9924
9925 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
9926 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
9927 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
9928 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
9929 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
9930 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
9931 sym_environment, scm_sym_change_class): New static variables to
9932 hold predefined symbols.
9933
9934 (build_class_class_slots): Build the list using scm_list_n
9935 instead of cons. Also, slots are already created as lists, thus
9936 making a call to maplist unnecessary.
9937
9938 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
9939 scm_class_direct_subclasses, scm_class_direct_methods,
9940 scm_class_precedence_list, scm_class_slots, scm_class_environment,
9941 scm_method_procedure, create_standard_classes, purgatory): Use
9942 predefined symbols.
9943
9944 (build_slots_list, compute_getters_n_setters,
9945 scm_sys_initialize_object, scm_sys_inherit_magic_x,
9946 get_slot_value_using_name, set_slot_value_using_name,
9947 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
9948 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
9949 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
9950
9951 (scm_sys_prep_layout_x): Minimize variable scopes.
9952
9953 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
9954 scm_sys_fast_slot_set_x): Fix signedness.
9955
9956 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
9957 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
9958 scm_memoize_method, scm_wrap_object): Use packing and unpacking
9959 when converting to and from SCM values.
9960
9961 (scm_enable_primitive_generic_x): Add rest argument checking.
9962
9963 (map, filter_cpl, maplist, scm_sys_initialize_object,
9964 scm_sys_prep_layout_x, slot_definition_using_name,
9965 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
9966 call_memoize_method, scm_make, scm_make_class): Prefer explicit
9967 predicates over SCM_N?IMP tests.
9968
9969 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
9970 checking.
9971
9972 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
9973 alias.
9974
9975 2001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
9976
9977 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
9978
9979 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
9980
9981 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
9982
9983 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
9984
9985 2001-07-12 Michael Livshin <mlivshin@bigfoot.com>
9986
9987 * strings.c (s_scm_string): fix arg position in assert.
9988
9989 2001-07-11 Gary Houston <ghouston@arglist.com>
9990
9991 * strports.c (st_write): use memcpy, not strncpy. thanks to
9992 Dale P. Smith.
9993
9994 2001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
9995
9996 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
9997 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
9998 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
9999 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
10000 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
10001 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
10002 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
10003 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
10004 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
10005 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
10006 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
10007 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
10008 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
10009 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
10010 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
10011 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
10012 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
10013 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
10014 weaks.c, weaks.h: Remove "face-lift" comment.
10015
10016 2001-07-08 Rob Browning <rlb@defaultvalue.org>
10017
10018 * .cvsignore: add stamp-h.in.
10019
10020 2001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10021
10022 * hooks.c (scm_make_hook, scm_add_hook_x),
10023 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
10024 value info to the docstrings.
10025
10026 2001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10027
10028 Some more compatibility patches for Windows.
10029
10030 * posix.c (getlogin): getlogin() implementation for Windows.
10031
10032 * backtrace.c, ioext.c: Include <stdio.h>.
10033
10034 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
10035 exist.
10036
10037 * cpp_sig_symbols.in: Added SIGBREAK.
10038
10039 2001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
10040
10041 * strports.c (scm_read_0str, scm_eval_0str): Call
10042 scm_c_read_string and scm_c_eval_string respectively, not
10043 themselves. Thanks to Dale P. Smith!
10044
10045 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10046
10047 * unif.c (scm_array_set_x): The variable args does not
10048 necessarily have to be a list. Further, got rid of a redundant
10049 SCM_NIMP test.
10050
10051 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
10052
10053 * list.c (SCM_I_CONS): Make sure the cell type is initialized
10054 last.
10055
10056 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
10057 init_heap_seg): Fixed signedness.
10058
10059 (init_heap_seg): Replaced strange for-loop with a while loop.
10060
10061 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
10062
10063 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
10064
10065 The following patch adds conservative marking for the elements of
10066 free or allocated cells.
10067
10068 * gc.c (allocated_mark, heap_segment): New static functions.
10069
10070 (which_seg): Deleted, since the functionality is now provided by
10071 function heap_segment.
10072
10073 (map_free_list): Use heap_segment instead of which_seg.
10074
10075 (MARK): If cell debugging is disabled, mark free cells
10076 conservatively.
10077
10078 (scm_mark_locations, scm_cellp): Extracted the search for the
10079 heap segment of a SCM value into function heap_segment.
10080
10081 (scm_init_storage): Allocated cells must be marked
10082 conservatively.
10083
10084 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
10085
10086 The following patch changes the representation of weak vectors to
10087 double cells instead of using an extension of the vector's
10088 allocated memory.
10089
10090 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
10091 the result of SCM_WVECT_GC_CHAIN.
10092
10093 (scm_gc_sweep): Weak vectors don't have extra fields any more.
10094
10095 * weaks.c (allocate_weak_vector): New static function. It does
10096 not patch any previously created vector object during the
10097 construction of a weak vector, and thus doesn't need to switch
10098 off interrupts during vector creation.
10099
10100 (scm_make_weak_vector, scm_make_weak_key_hash_table,
10101 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10102 Use allocate_weak_vector to provide the new weak vector object.
10103
10104 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
10105 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
10106 now stored in the double cell.
10107
10108 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
10109 Use SCM_WVECT_TYPE.
10110
10111 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
10112 using an entry of the double cell.
10113
10114 2001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
10115
10116 * stamp-h.in: bye bye
10117
10118 2001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
10119
10120 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
10121 scm_eval_0str.
10122
10123 * load.c, load.h (scm_c_primitive_load,
10124 scm_c_primitive_load_path): New.
10125
10126 * strports.c, strports.h (scm_c_read_string): Renamed from
10127 scm_read_0str. Also, added "const" qualifier to argument.
10128 (scm_c_eval_string): Renamed from scm_eval_0str.
10129 (scm_read_0str, scm_eval_0str): Deprecated.
10130
10131 2001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10132
10133 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
10134 SCM_LIST1.
10135
10136 2001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
10137
10138 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
10139 scm_list_n): New functions.
10140 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
10141 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
10142 (lots of files): Use the new functions.
10143
10144 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
10145
10146 * strings.c: #include "libguile/deprecation.h".
10147
10148 2001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10149
10150 * read.c (scm_lreadr): When reading a hash token, check for a
10151 user-defined hash procedure first, so that overriding the builtin
10152 hash characters is possible (this was needed for implementing
10153 SRFI-4's read synax `f32(...)').
10154
10155 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
10156 because the latter is unsigned now and breaks comparisons like
10157 (n < (scm_t_signed_bits)MIN_VALUE).
10158
10159 2001-06-26 Neil Jerram <neil@ossau.uklinux.net>
10160
10161 * eval.h, eval.c (scm_call_4): New function.
10162
10163 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
10164 directly rather than dispatching to them via scm_ithrow and a lazy
10165 catch.
10166
10167 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
10168 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
10169 for trap handler procedures.
10170
10171 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
10172 procedures not being #f.
10173
10174 2001-06-27 Michael Livshin <mlivshin@bigfoot.com>
10175
10176 * Makefile.am (c-tokenize.c): add rule to generate it.
10177 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
10178
10179 filter-doc-snarfage.c: remove.
10180
10181 2001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10182
10183 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
10184
10185 The following set of changes makes compiling Guile under various
10186 Windows compilers easier. Compilation under GNU systems should
10187 not be affected at all.
10188
10189 Thanks to Stefan Jahn for all necessary information, patches and
10190 testing.
10191
10192 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
10193 getpgrp, ttyname, primitive-fork and some header inclusion for
10194 Windows.
10195
10196 * random.c: Define M_PI, if not predefined and use __int64 for
10197 LONG64 under Windows.
10198
10199 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
10200 Windows and conditionalize some signal names.
10201
10202 * socket.c (scm_getsockopt): Added missing comma.
10203 Include socket library header under Windows.
10204
10205 * stime.c (CLKTCK): Add cast to int, to make it compile under
10206 Windows.
10207
10208 * ports.c (truncate): New function, compiled only under Windows.
10209
10210 * net_db.c: Do not declare errno under Windows.
10211
10212 * iselect.h, inet_aton.c: Include socket library headers under
10213 Windows.
10214
10215 * guile.c (inner_main): Under Windows, initialize socket library
10216 and initialize gdb_interface data structures.
10217
10218 * gdb_interface.h: Under Windows, gdb_interface cannot be
10219 initialized statically. Initialize at runtime instead.
10220
10221 * fports.c (write_all): ssize_t -> size_t.
10222 (fport_print): Conditionalize call to ttyname().
10223 (getflags): New function, compiled only under Windows.
10224
10225 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
10226 primitives chown, link, fcntl.
10227 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
10228 as path seperator.
10229
10230 * backtrace.c: Include <io.h> under Windows.
10231
10232 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
10233
10234 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
10235 declaration.
10236
10237 2001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
10238
10239 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10240 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
10241 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
10242 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
10243 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
10244 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
10245 (scm_dynamic_wind, scm_dowinds), environments.c
10246 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
10247 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
10248 goops.c (GETVAR, purgatory, make_class_from_template,
10249 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
10250 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
10251 (scm_primitive_load), modules.c (scm_resolve_module,
10252 scm_c_define_module, scm_c_use_module, scm_c_export,
10253 module_variable, scm_eval_closure_lookup, scm_sym2var,
10254 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
10255 ports.c (scm_port_for_each), print.c (scm_printer_apply),
10256 properties.c (scm_primitive_property_ref), ramap.c (ramap,
10257 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
10258 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
10259 (scm_object_to_string, scm_call_with_output_string,
10260 scm_call_with_input_string), throw.c (scm_body_thunk,
10261 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
10262 scm_make_shared_array), vports.c (sf_flush, sf_write,
10263 sf_fill_input, sf_close): Use one of the above functions.
10264 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
10265
10266 2001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
10267
10268 * filesys.c (scm_close), ports.c (scm_close_port,
10269 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
10270 instead of SCM_NEGATE_BOOL.
10271
10272 * filesys.c (scm_stat): Clean up type dispatch.
10273
10274 * filesys.c (scm_stat), ports.c (scm_input_port_p,
10275 scm_output_port_p): Get rid of redundant IM type check.
10276
10277 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
10278 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
10279 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
10280 scm_return_entry), numbers.c (scm_number_to_string), objects.c
10281 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
10282 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
10283 scm_addr_vector), stime.c (scm_strftime), strings.c
10284 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
10285 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
10286 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10287 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
10288 instead of scm_makfromstr.
10289
10290 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
10291 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
10292 scm_read_hash_extend), stime.c (scm_strftime), strings.c
10293 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
10294 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
10295 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
10296 !SCM_<pred> over SCM_N<pred>.
10297
10298 * strings.[ch] (scm_makfromstr): Deprecated.
10299
10300 (scm_mem2string): New function, replaces scm_makfromstr.
10301
10302 * strings.c (scm_substring), strop.c (string_copy,
10303 scm_string_split), strports.c (scm_strport_to_string), symbols.c
10304 (scm_symbol_to_string): Fix gc problem.
10305
10306 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
10307 SCM_<foo>_H.
10308
10309 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
10310 warning about comparing signed and unsigned values. This fix is
10311 not optimal, since it won't work reliably if sizeof (c_start) >
10312 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
10313 solution is to define this macro as an inline function, thus
10314 allowing to specifiy the types of c_start and c_end.
10315
10316 2001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
10317
10318 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
10319 scm_t_debug_frame*.
10320
10321 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
10322 Rename <foo>H to SCM_<foo>_H.
10323
10324 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
10325 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
10326
10327 (narrow_stack): Make i unsigned. Don't use side-effecting
10328 operations in conditions.
10329
10330 (narrow_stack, scm_make_stack, scm_stack_id,
10331 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
10332
10333 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
10334 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
10335 more.
10336
10337 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
10338 signedness.
10339
10340 (scm_last_stack_frame): Remove bogus `;'.
10341
10342 * stacks.h (SCM_FRAMEP): Fix type check.
10343
10344 2001-06-25 Michael Livshin <mlivshin@bigfoot.com>
10345
10346 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
10347 c-tokenize.c when doing maintainer-clean.
10348
10349 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
10350
10351 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
10352 simplify.
10353
10354 * eval.c: all hash signs are in column 0.
10355
10356 * Makefile.am (guile_filter_doc_snarfage): build using
10357 c-tokenize.c, not filter-doc-snarfage.c.
10358 rearrange snarfing dependencies a bit.
10359
10360 * c-tokenize.lex: new file.
10361
10362 2001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
10363
10364 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
10365 scm_t_srcpropso_plist. See the big type renaming.
10366 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
10367 Thanks to Seth Alves!
10368
10369 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
10370 they aren't defined already.
10371
10372 2001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
10373
10374 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
10375 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
10376 problem.
10377
10378 * backtrace.c (display_expression, scm_set_print_params_x,
10379 display_application, display_frame, scm_backtrace), numbers.c
10380 (scm_istring2number), objects.c (scm_class_of,
10381 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
10382 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
10383
10384 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
10385 always positive.
10386
10387 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
10388 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
10389
10390 * objects.c (scm_class_of): Type fix.
10391
10392 (scm_mcache_lookup_cmethod): Improved comment, simplified,
10393 eliminated goto.
10394
10395 * pairs.h (scm_error_pair_access): The function can return if
10396 called recursively.
10397
10398 2001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10399
10400 * init.c (scm_init_guile_1): Removed initialization of tag.c.
10401
10402 * gdbint.c, init.c: Removed inclusion of tag.h.
10403
10404 * tag.h, tag.c: Removed files.
10405
10406 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
10407
10408 2001-06-20 Gary Houston <ghouston@arglist.com>
10409
10410 * deprecation.c, extensions.c, rw.c: include string.h.
10411
10412 2001-06-19 Gary Houston <ghouston@arglist.com>
10413
10414 * filter-doc-snarfage.c (process): added ungetc in
10415 MULTILINE_COOKIE case since otherwise it fails when there's no
10416 space between the '(' and the quote of the following string
10417 (gcc 3.0).
10418
10419 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
10420
10421 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
10422
10423 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
10424
10425 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
10426 extension takes place.
10427 * strings.h (SCM_STRING_LENGTH): Likewise.
10428 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
10429
10430 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
10431 it.
10432
10433 * tags.h: Include <stdint.h> when we have it.
10434 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
10435 available. Else use "unsigned long".
10436 (scm_signed_bits_t): New.
10437
10438 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
10439 (SCM_INUM): Cast result to scm_signed_bits_t.
10440
10441 2001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
10442
10443 * mkstemp.c: Update path to #include file scmconfig.h.
10444 Thanks to Golubev I. N.
10445
10446 2001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
10447
10448 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
10449
10450 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\' at the end of
10451 the macro definition.
10452
10453 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
10454 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
10455 instead of SCM_INST_TYPE.
10456
10457 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
10458 the object is a struct before accessing its struct flags.
10459
10460 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
10461
10462 2001-06-10 Gary Houston <ghouston@arglist.com>
10463
10464 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
10465 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
10466 work reliably anymore. try it from boot-9.scm instead.
10467
10468 2001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
10469
10470 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
10471 Thanks to Matthias Köppe!
10472
10473 2001-06-08 Michael Livshin <mlivshin@bigfoot.com>
10474
10475 * snarf.h, filter-doc-snarfage.c: more changes to cope with
10476 space-happy C preprocessors.
10477
10478 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
10479 inside cookies. thanks to Matthias Köppe!
10480
10481 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10482
10483 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
10484 keywords. Fix gc protection.
10485
10486 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
10487 operations in macro calls.
10488
10489 * pairs.c (scm_error_pair_access): Avoid recursion.
10490
10491 Thanks to Matthias Koeppe for reporting the bugs that correspond
10492 to the following set of patches.
10493
10494 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
10495 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
10496 bitvector base address using SCM_BITVECTOR_BASE.
10497
10498 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
10499 unsigned long*.
10500
10501 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
10502
10503 * goops.c (SCM_CLASS_REDEF): Removed.
10504
10505 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
10506 SCM_<foo>_H.
10507
10508 Thanks to Matthias Koeppe for reporting the bugs that correspond
10509 to the following set of patches.
10510
10511 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
10512 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
10513 scm_sys_allocate_instance, clear_method_cache,
10514 scm_sys_invalidate_method_cache_x, scm_make,
10515 create_standard_classes, scm_make_port_classes, scm_make_class,
10516 scm_add_slot): Use SCM_SET_SLOT to set slot values.
10517
10518 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
10519
10520 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
10521
10522 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
10523 UNARY_ELTS_CODE): Remove bogus break statement.
10524
10525 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
10526 Don't access bit vectors elements as SCM objects.
10527
10528 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
10529 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
10530 Don't assign to an unpacked value.
10531
10532 2001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
10533
10534 * __scm.h (SCM_NORETURN): Moved here from error.h.
10535
10536 (SCM_UNUSED): New macro.
10537
10538 (SCM_DEBUG_PAIR_ACCESSES): New macro.
10539
10540 * backtrace.c (display_error_handler), continuations.c
10541 (continuation_print), debug.c (debugobj_print), dynwind.c
10542 (guards_print), environments.c (observer_print,
10543 core_environments_finalize, leaf_environment_cell,
10544 leaf_environment_print, eval_environment_print,
10545 eval_environment_observer, import_environment_define,
10546 import_environment_undefine, import_environment_print,
10547 import_environment_observer, export_environment_define,
10548 export_environment_undefine, export_environment_print,
10549 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
10550 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
10551 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
10552 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
10553 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
10554 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
10555 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
10556 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
10557 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
10558 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
10559 set_slot_value, test_slot_existence, scm_change_object_class,
10560 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
10561 default_setter), guardians.c (guardian_print, guardian_gc_init,
10562 guardian_zombify, whine_about_self_centered_zombies), guile.c
10563 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
10564 mallocs.c (malloc_print), numbers.c (scm_print_real,
10565 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
10566 end_input_default, scm_port_print, fill_input_void_port,
10567 write_void_port), root.c (root_print), smob.c (scm_mark0,
10568 scm_free0, scm_smob_print, scm_smob_apply_1_error,
10569 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
10570 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
10571 (scm_struct_free_0, scm_struct_free_standard,
10572 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
10573 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
10574 scm_handle_by_throw, scm_ithrow), weaks.c
10575 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
10576 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
10577 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
10578
10579 * error.h (SCM_NORETURN): Moved to __scm.h.
10580
10581 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
10582 Renamed <foo>H to SCM_<foo>_H.
10583
10584 * gc.c (debug_cells_gc_interval): New static variable.
10585
10586 (scm_assert_cell_valid): If selected by the user, perform
10587 additional garbage collections.
10588
10589 (scm_set_debug_cell_accesses_x): Extended to let the user specify
10590 if additional garbage collections are desired.
10591
10592 (mark_gc_async): If additional garbage collections are selected
10593 by the user, don't call the after-gc-hook. Instead require the
10594 user to run the hook manually.
10595
10596 * pairs.c (scm_error_pair_access): New function. Only compiled
10597 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
10598
10599 * pairs.h (SCM_VALIDATE_PAIR): New macro.
10600
10601 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
10602 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
10603 is a real pair object. (Glocs are also accepted, but that may
10604 change.) If not, abort with an error message.
10605
10606 2001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
10607
10608 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
10609
10610 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
10611 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
10612
10613 2001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
10614
10615 * extensions.c (scm_c_register_extension): Allow NULL as library
10616 name.
10617 (load_extension): Ignore NULL library names when comparing.
10618
10619 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
10620 non-pointers are being compared. Thanks to Alexander Klimov!
10621
10622 2001-06-04 Gary Houston <ghouston@arglist.com>
10623
10624 * rw.c (scm_write_string_partial): new procedure implementing
10625 write-string/partial in (ice-9 rw).
10626 * rw.h: declare scm_write_string_partial.
10627
10628 2001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
10629
10630 * keywords.c (keyword_print): Substract 1 from length of symbol
10631 name, accounting for the silly dash.
10632
10633 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
10634 Do not emit deprecation warning.
10635
10636 Added exception notice to all files.
10637
10638 * dynl.c: Include "deprecation.h".
10639
10640 2001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
10641
10642 * dynl.c (scm_register_module_xxx, scm_registered_modules,
10643 scm_clear_registered_modules): Deprecated.
10644
10645 2001-06-02 Rob Browning <rlb@cs.utexas.edu>
10646
10647 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
10648 guile-snarf-docs-texi.
10649
10650 * fports.c: HAVE_ST_BLKSIZE changed to
10651 HAVE_STRUCT_STAT_ST_BLKSIZE.
10652 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
10653 HAVE_STRUCT_STAT_ST_BLKSIZE.
10654
10655 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
10656 HAVE_STRUCT_STAT_ST_RDEV.
10657 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
10658 HAVE_STRUCT_STAT_ST_BLKSIZE.
10659 (scm_stat2scm): HAVE_ST_BLOCKS changed to
10660 HAVE_STRUCT_STAT_ST_BLOCKS.
10661
10662 2001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
10663
10664 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
10665 of scm_eval_x to allow module changes between the forms in the
10666 string. Set/restore module using scm_c_call_with_current_module.
10667
10668 * mkstemp.c: New file, slightly modified from libiberties
10669 mkstemps.c.
10670
10671 2001-05-31 Michael Livshin <mlivshin@bigfoot.com>
10672
10673 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
10674 filter-doc-snarfage.c: new files.
10675
10676 * Makefile.am: add stuff to [build,] use and distribute
10677 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
10678
10679 * guile-snarf.in: grok the new snarf output.
10680
10681 * snarf.h: make the output both texttools- and `read'-friendly.
10682
10683 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
10684 guile-snarf-docs. (should also deprecate, I guess. maybe not).
10685
10686 2001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
10687
10688 * print.c (scm_simple_format): Support "~~" and "~%". Signal
10689 error for unsupported format controls and for superflous
10690 arguments. Thanks to Daniel Skarda!
10691
10692 * print.h, print.c (scm_print_symbol_name): Factored out of
10693 scm_iprin1.
10694 (scm_iprin1): Call it.
10695
10696 * keywords.c (keyword_print): Use scm_print_symbol_name so that
10697 weird names are printed correctly.
10698
10699 * print.c (scm_print_symbol_name): Symbols whose name starts with
10700 `#' or `:' or ends with `:' are considered weird.
10701
10702 2001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10703
10704 * numbers.c (scm_difference, scm_divide): Clarified comments for -
10705 and /.
10706
10707 2001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10708
10709 * debug.h: Removed prototype for scm_eval_string.
10710
10711 2001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10712
10713 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
10714 (make-string 2000 #\!))' in an older version).
10715
10716 Change strncpy to memcpy to allow embedded NUL characters in
10717 symbol prefix.
10718
10719 2001-05-28 Michael Livshin <mlivshin@bigfoot.com>
10720
10721 * hooks.c (scm_create_hook): deprecated.
10722 (make_hook): deleted.
10723 (scm_make_hook): all the hook creation code is now here.
10724
10725 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
10726 a hook, make it permanent, and do a `scm_c_define' on it.
10727
10728 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
10729
10730 * socket.c (s_scm_inet_pton): fix docstring quoting.
10731 (s_scm_inet_ntop): ditto.
10732
10733 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
10734
10735 * hashtab.c (scm_internal_hash_fold): fix argument position in
10736 SCM_ASSERT.
10737
10738 * environments.c (s_scm_import_environment_set_imports_x): fix
10739 argument position in SCM_ASSERT.
10740
10741 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
10742 (s_scm_make_iloc): ditto.
10743
10744 2001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
10745
10746 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
10747
10748 * eval.c (promise_print): Read the promise's value as an object.
10749
10750 (SCM_CEVAL): Don't perform side-effecting operations in macro
10751 parameters.
10752
10753 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
10754 conditional expression.
10755
10756 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
10757 initializer.
10758
10759 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
10760 text, removed redundant computation of effective_length and fixed
10761 the overflow check.
10762
10763 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
10764 values.
10765
10766 (wrap_init): Don't use SCM_C[AD]R for non pairs.
10767
10768 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
10769
10770 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
10771 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
10772
10773 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
10774
10775 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
10776 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
10777 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
10778 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
10779
10780 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
10781
10782 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
10783
10784 * ramap.c (ramap_rp): Removed bogus `;'.
10785
10786 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
10787 problem.
10788
10789 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
10790 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
10791 Read SCM objects rather than scm_bits_t values.
10792
10793 * tags.h (SCM_VOIDP_TEST): Removed.
10794
10795 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
10796 value of 2 now corresponds to the former 1, the current 1
10797 corresponds to the former situation that SCM_VOIDP_TEST was
10798 defined.
10799
10800 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
10801 If this appears to be not ANSI compliant, we will change it to
10802 typedef struct scm_unused_struct { } * SCM;
10803 Thanks to Han-Wen Nienhuys for the suggestion.
10804
10805 * unif.c (scm_array_set_x): Fix typing problem, and use
10806 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
10807 dealing with uniform vectors.
10808
10809 2001-05-27 Michael Livshin <mlivshin@bigfoot.com>
10810
10811 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
10812 (scm_igc): mark from them, too (precisely, not conservatively!).
10813
10814 * root.h (scm_gc_registered_roots): new object in
10815 scm_sys_protects.
10816
10817 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
10818 `scm_protect_object'. shouldn't call it at all, though, it seems.
10819
10820 * gc.c (scm_[un]protect_object): deprecated.
10821 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
10822 (scm_gc_[un]register_root[s]): new.
10823
10824 * gc.h: add prototypes for scm_gc_[un]protect_object,
10825 scm_gc_[un]register_root[s].
10826
10827 2001-05-26 Michael Livshin <mlivshin@bigfoot.com>
10828
10829 revert the controversial part of the 2001-05-24 changes.
10830
10831 2001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
10832
10833 * modules.c (scm_env_module): Exported to Scheme.
10834
10835 * eval.c (scm_debug_opts): New option `show-file-name'.
10836
10837 * debug.h (SCM_SHOW_FILE_NAME): New.
10838
10839 * backtrace.c: Include "libguile/filesys.h".
10840 (sym_base, display_backtrace_get_file_line,
10841 display_backtrace_file, display_backtrace_file_and_line): New.
10842 (display_frame): Call display_backtrace_file_and_line if that is
10843 requested.
10844 (display_backtrace_body): Call scm_display_backtrace_file if
10845 requested.
10846
10847 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
10848 Prototypes removed since there's no definition for these
10849 functions.
10850
10851 2001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
10852
10853 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
10854 Changed use of scm_array->scm_array_t and
10855 scm_array_dim->scm_array_dim_t to enable build with
10856 --disable-deprecated.
10857
10858 2001-05-24 Michael Livshin <mlivshin@bigfoot.com>
10859
10860 The purpose of this set of changes is to regularize Guile's usage
10861 of ANSI C integral types, with the following ideas in mind:
10862
10863 - SCM does not nesessarily have to be long.
10864 - long is not nesessarily enough to store pointers.
10865 - long is not nesessarily the same size as int.
10866
10867 The changes are incomplete and possibly buggy. Please test on
10868 something exotic.
10869
10870 * validate.h
10871 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
10872 new macros.
10873
10874 * unif.h: type renaming:
10875 scm_array -> scm_array_t
10876 scm_array_dim -> scm_array_dim_t
10877 the old names are deprecated, all in-Guile uses changed.
10878
10879 * tags.h (scm_ubits_t): new typedef, representing unsigned
10880 scm_bits_t.
10881
10882 * stacks.h: type renaming:
10883 scm_info_frame -> scm_info_frame_t
10884 scm_stack -> scm_stack_t
10885 the old names are deprecated, all in-Guile uses changed.
10886
10887 * srcprop.h: type renaming:
10888 scm_srcprops -> scm_srcprops_t
10889 scm_srcprops_chunk -> scm_srcprops_chunk_t
10890 the old names are deprecated, all in-Guile uses changed.
10891
10892 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
10893 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
10894 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
10895 vectors.c, vports.c, weaks.c:
10896 various int/size_t -> size_t/scm_bits_t changes.
10897
10898 * random.h: type renaming:
10899 scm_rstate -> scm_rstate_t
10900 scm_rng -> scm_rng_t
10901 scm_i_rstate -> scm_i_rstate_t
10902 the old names are deprecated, all in-Guile uses changed.
10903
10904 * procs.h: type renaming:
10905 scm_subr_entry -> scm_subr_entry_t
10906 the old name is deprecated, all in-Guile uses changed.
10907
10908 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
10909 type renaming:
10910 scm_option -> scm_option_t
10911 the old name is deprecated, all in-Guile uses changed.
10912
10913 * objects.c: various long -> scm_bits_t changes.
10914 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
10915
10916 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
10917 SCM_I_FIXNUM_BIT.
10918
10919 * num2integral.i.c: new file, multiply included by numbers.c, used
10920 to "templatize" the various integral <-> num conversion routines.
10921
10922 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
10923 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
10924 deprecated.
10925 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
10926 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
10927 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
10928 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
10929 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
10930 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
10931 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
10932 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
10933 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
10934 scm_num2size): new functions.
10935
10936 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
10937
10938 * load.c: change int -> size_t in various places (where the
10939 variable is used to store a string length).
10940 (search-path): call scm_done_free, not scm_done_malloc.
10941
10942 * list.c (scm_ilength): return a scm_bits_t, not long.
10943 some other {int,long} -> scm_bits_t changes.
10944
10945 * hashtab.c: various [u]int -> scm_bits_t changes.
10946 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
10947 (scm_ihashx): n: uint -> scm_bits_t
10948 use scm_bits2num instead of scm_ulong2num.
10949
10950 * gsubr.c: various int -> scm_bits_t changes.
10951
10952 * goops.[hc]: various {int,long} -> scm_bits_t changes.
10953
10954 * gh_data.c (gh_num2int): no loss of precision any more.
10955
10956 * gh.h (gh_str2scm): len: int -> size_t
10957 (gh_{get,set}_substr): start: int -> scm_bits_t,
10958 len: int -> size_t
10959 (gh_<num>2scm): n: int -> scm_bits_t
10960 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
10961 (gh_length): return scm_bits_t, not unsigned long.
10962
10963 * gc.[hc]: various small changes relating to many things stopping
10964 being long and starting being scm_[u]bits_t instead.
10965 scm_mallocated should no longer wrap around.
10966
10967 * fports.h: type renaming:
10968 scm_fport -> scm_fport_t
10969 the old name is deprecated, all in-Guile uses changed.
10970
10971 * fports.c (fport_fill_input): count: int -> scm_bits_t
10972 (fport_flush): init_size, remaining, count: int -> scm_bits_t
10973
10974 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
10975 those prototypes, as the functions they prototype don't exist.
10976
10977 * fports.c (default_buffer_size): int -> size_t
10978 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
10979 default_size: int -> size_t
10980 (scm_setvbuf): csize: int -> scm_bits_t
10981
10982 * fluids.c (n_fluids): int -> scm_bits_t
10983 (grow_fluids): old_length, i: int -> scm_bits_t
10984 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
10985 scm_bits_t
10986 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
10987
10988 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
10989 the new and shiny SCM_NUM2INT.
10990
10991 * extensions.c: extension -> extension_t (and made a typedef).
10992
10993 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
10994 there are no nasty surprises if/when the various deeply magic tag
10995 bits move somewhere else.
10996
10997 * eval.c: changed the locals used to store results of SCM_IFRAME,
10998 scm_ilength and such to be of type scm_bits_t (and not int/long).
10999 (iqq): depth, edepth: int -> scm_bits_t
11000 (scm_eval_stack): int -> scm_bits_t
11001 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
11002 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
11003 i: int -> scm_bits_t
11004
11005 * environments.c: changed the many calls to scm_ulong2num to
11006 scm_ubits2num.
11007 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
11008
11009 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
11010
11011 * debug.h: type renaming:
11012 scm_debug_info -> scm_debug_info_t
11013 scm_debug_frame -> scm_debug_frame_t
11014 the old names are deprecated, all in-Guile uses changed.
11015 (scm_debug_eframe_size): int -> scm_bits_t
11016
11017 * debug.c (scm_init_debug): use scm_c_define instead of the
11018 deprecated scm_define.
11019
11020 * continuations.h: type renaming:
11021 scm_contregs -> scm_contregs_t
11022 the old name is deprecated, all in-Guile uses changed.
11023 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
11024 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
11025
11026 * continuations.c (scm_make_continuation): change the type of
11027 stack_size from long to scm_bits_t.
11028
11029 * ports.h: type renaming:
11030 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
11031 scm_port -> scm_port_t
11032 scm_ptob_descriptor -> scm_ptob_descriptor_t
11033 the old names are deprecated, all in-Guile uses changed.
11034 (scm_port_t.entry): int -> scm_bits_t.
11035 (scm_port_t.line_number): int -> long.
11036 (scm_port_t.putback_buf_size): int -> size_t.
11037
11038 * __scm.h (long_long, ulong_long): deprecated (they pollute the
11039 global namespace and have little value beside that).
11040 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
11041 SCM handle).
11042 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
11043 exist (for size_t & ptrdiff_t).
11044 (scm_sizet): deprecated.
11045
11046 * Makefile.am (noinst_HEADERS): add num2integral.i.c
11047
11048 2001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
11049
11050 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
11051 SCM_VARIABLE_INIT since that it what it used to be.
11052
11053 * deprecation.c (scm_include_deprecated_features): Make docstring
11054 ANSIsh. Thanks to Matthias Köppe!
11055
11056 2001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
11057
11058 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
11059 needed for weak-key hashtables.
11060
11061 * procs.c (scm_make_subr_with_generic): Add missing last argument
11062 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
11063
11064 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
11065 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
11066
11067 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
11068
11069 2001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
11070
11071 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
11072 `duplicate_string'. Do not use an indirect cell, store symbol
11073 directly in collision list of hash table.
11074 (duplicate_string): Removed.
11075
11076 * init.c (scm_init_guile_1): Call scm_init_extensions.
11077
11078 * Makefile.am: Add "extensions.c" and related files in all the
11079 right places.
11080
11081 * extensions.h, extension.c: New files.
11082
11083 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
11084
11085 * modules.h (scm_system_module_env_p): Move out of deprecated
11086 section.
11087
11088 * rw.h (scm_init_rw): Added prototype.
11089
11090 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
11091 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
11092 New functions. They replace scm_make_gsubr and
11093 scm_make_gsubr_with_generic. The `make' variants only create the
11094 gsubr object, while the `define' variants also put it into the
11095 current module. Changed all callers.
11096 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
11097
11098 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
11099 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
11100 functions. They replace scm_make_subr, scm_make_subr_opt and
11101 scm_make_subr_with_generic. The `make' variants only create the
11102 subr object, while the `define' variants also put it into the
11103 current module. Changed all callers.
11104 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
11105 Deprecated.
11106
11107 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
11108 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
11109 the comments above.
11110
11111 2001-05-19 Neil Jerram <neil@ossau.uklinux.net>
11112
11113 * throw.c (scm_lazy_catch): Slight docstring clarification.
11114
11115 2001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
11116
11117 * throw.c: Lazy-catch handlers are no longer allowed to return.
11118 Fixed comments throughout.
11119 (scm_ithrow): Signal an error when a lazy-catch handler returns.
11120 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
11121 recognized as such.
11122
11123 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
11124 refered to s_scm_minor_version previously.
11125
11126 * modules.h, modules.c: Moved around a lot of code so that
11127 deprecated features appear at the bottom.
11128 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
11129 module_prefix, make_modules_in_var, beautify_user_module_x_var,
11130 scm_the_root_module, scm_make_module, scm_ensure_user_module,
11131 scm_load_scheme_module): Deprecated.
11132 (scm_system_module_env_p): Return SCM_BOOL_T directly for
11133 environments corresponding to the root module.
11134 (convert_module_name, scm_c_resolve_module,
11135 scm_c_call_with_current_module, scm_c_define_module,
11136 scm_c_use_module, scm_c_export): New.
11137 (the_root_module): New static variant of scm_the_root_module. Use
11138 it everywhere instead of scm_the_root_module.
11139
11140 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
11141 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
11142 (scm_c_with_fluid): New.
11143 (scm_with_fluids): Use scm_c_with_fluids instead of
11144 scm_internal_with_fluids.
11145
11146 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
11147 `scm_init_goops'. Do not explicitly create/switch modules.
11148 Return SCM_UNSPECIFIED.
11149 (scm_init_goops): Only register `%init-goops-builtins' procedure.
11150 (scm_load_goops): Use scm_c_resolve_module instead of
11151 scm_resolve_module.
11152
11153 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
11154 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
11155 `scm_init_rw' prior to loading the startup files.
11156
11157 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
11158 scm_init_rdelim. Do not explicitly create/switch modules.
11159 Return SCM_UNSPECIFIED.
11160 (scm_init_rdelim): Only register `%init-rdelim-builtins'
11161 procedure.
11162
11163 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
11164 explicitly create/switch modules. Return SCM_UNSPECIFIED.
11165 (scm_init_rw): Only register `%init-rw-builtins' procedure.
11166
11167 * script.c (scm_shell): Evaluate the compiled switches in the
11168 current module, not in the root module.
11169
11170 2001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
11171
11172 * fluids.c (scm_c_with_fluids): Rename from
11173 scm_internal_with_fluids.
11174 (scm_internal_with_fluids): Deprecated.
11175 (scm_c_with_fluid): New.
11176
11177 2001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11178
11179 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
11180
11181 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
11182 accessed with SCM_C[AD]R.
11183
11184 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
11185
11186 2001-05-16 Rob Browning <rlb@cs.utexas.edu>
11187
11188 * version.c (s_scm_major_version): doc fixes.
11189 (s_scm_minor_version): doc fixes.
11190 (s_scm_minor_version): new function.
11191
11192 * version.h (scm_init_version): new function.
11193
11194 * versiondat.h.in: add GUILE_MICRO_VERSION.
11195
11196 2001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
11197
11198 * deprecation.c (scm_init_deprecation): Renamed
11199 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
11200
11201 2001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
11202
11203 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
11204 dependent on cpp_cnvt.awk
11205
11206 2001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11207
11208 * script.c (scm_compile_shell_switches): New command line option
11209 `--use-srfi' for loading a list of SRFIs on startup.
11210 (scm_shell_usage): Added `--use-srfi' to help message.
11211
11212 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11213
11214 Merged from mvo-vcell-cleanup-1-branch.
11215
11216 The concept of vcells has been removed from Guile. With it,
11217 explicit obarrays and associated operations are gone. Use
11218 hashtables instead of obarrays.
11219
11220 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
11221 result as variable instead of vcell. Glocs no longer point to a
11222 vcell but to a variable. Use scm_c_define instead of
11223 scm_sysintern and treat the result as a variable (which it is),
11224 not a vcell.
11225
11226 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
11227 SCM_DEFVARIABLEP): Deprecated.
11228 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
11229 (variable_print): Do not print name of variable.
11230 (variable_equalp): Compare values, not vcells.
11231 (anonymous_variable_sym): Removed.
11232 (make_vcell_variable): Removed.
11233 (make_variable): New, as replacement.
11234 (scm_make_variable, scm_make_undefined_variable): Do not take name
11235 hint parameter.
11236 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
11237 error in that case.
11238 (scm_builtin_variable): Deprecated.
11239
11240 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
11241 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
11242 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
11243 scm_sysintern, scm_sysintern0, scm_symbol_value0,
11244 scm_string_to_obarray_symbol, scm_intern_symbol,
11245 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
11246 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
11247 Deprecated and moved to "symbols-deprecated.c".
11248 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
11249 (scm_init_symbols): Call scm_init_symbols_deprecated.
11250 * symbols-deprecated.c: New file.
11251 * Makefile.am: Added symbols-deprecated.c and related files in all
11252 the right places.
11253
11254 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
11255 SCM_GLOBAL_VCELL_INIT): Deprecated.
11256 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
11257 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
11258
11259 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
11260 SCM_GLOC_SYM.
11261
11262 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
11263 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
11264 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
11265 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
11266 Changed according to the `throughout' comments.
11267
11268 * modules.h, modules.c (scm_module_system_booted_p): Changed type
11269 to `int'.
11270 (scm_module_type): Removed.
11271 (the_root_module): Renamed to the_root_module_var. Now points to
11272 a variable instead of a vcell. Updated all uses.
11273 (scm_the_root_module): Return SCM_BOOL_F when module systems
11274 hasn't been booted yet.
11275 (SCM_VALIDATE_STRUCT_TYPE): Removed.
11276 (scm_post_boot_init_modules): Made static.
11277 (scm_set_current_module): Call scm_post_boot_init_modules on first
11278 call.
11279 (make_modules_in, beautify_user_module_x, resolve_module,
11280 try_module_autoload, module_make_local_var_x): Tacked on "_var"
11281 suffix. Now point to variables instead of vcells. Updated all
11282 uses.
11283 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
11284 and return SCM_BOOL_F in that case.
11285 (scm_module_transformer): Likewise.
11286 (sym_module, scm_lookup_closure_module, scm_env_module): New.
11287 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
11288 (scm_eval_closure_lookup): Do not allow new definitions when
11289 `interface' flag is set.
11290 (scm_standard_interface_eval_closure): New.
11291 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
11292 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
11293 scm_c_lookup, scm_c_module_define, scm_c_define,
11294 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
11295 scm_modules_prehistory): New.
11296 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
11297 instead of scm_intern0.
11298
11299 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
11300 symbol.
11301
11302 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
11303 hashtable operations to maintain the keywords, not obarray ones.
11304
11305 * init.c (scm_load_startup_files): Do not call
11306 scm_post_boot_init_modules. This is done by
11307 scm_set_current_module now.
11308 (scm_init_guile_1): Call scm_modules_prehistory. Call
11309 scm_init_variable early on.
11310
11311 * goops.c (s_scm_sys_goops_loaded): Get
11312 var_compute_applicable_methods from scm_sym2var, not from a direct
11313 invocation of scm_goops_lookup_closure.
11314
11315 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
11316
11317 * gc.c: Added simple debugging hack to mark phase of GC: When
11318 activated, do not tail-call scm_gc_mark. This gives nice
11319 backtraces.
11320 (scm_unhash_name): Removed.
11321
11322 * feature.c (features): Renamed to features_var. Now points to a
11323 variable instead of a vcell. Updated all uses.
11324
11325 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
11326 `scm_current_module_lookup_closure' which will do the right thing
11327 when the module system hasn't been booted yet.
11328 (SCM_GLOC_SYM): Removed.
11329 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
11330 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
11331
11332 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
11333 instead of with vcells. Do not overwrite `var' with the result of
11334 the lookup, use the new `real_var' instead. Remove `var2' in
11335 exchange (which was only used with threads).
11336 (sym_three_question_marks): New.
11337 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
11338 `SCM_GLOC_SYM'.
11339 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
11340 (scm_m_atfop): Expect the function definition to be a variable
11341 instead of a vcell.
11342 (scm_macroexp): Do not use `unmemocar', explicitely remember the
11343 symbol instead.
11344 (scm_unmemocopy): Removed thoughts about anti-macro interface.
11345 (scm_eval_args): Use more explicit code in the gloc branch of the
11346 atrocious struct ambiguity test. The optimizer will sort this
11347 out.
11348 (scm_deval_args): Likewise.
11349 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
11350 remember the symbol instead. Added some comments where
11351 scm_tc3_cons_gloc really exclusively refers to structs.
11352 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
11353 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
11354 of scm_sysintern in general.
11355
11356 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
11357 explicit magic.
11358
11359 * debug.c (s_scm_make_gloc): Only allow proper variables, no
11360 pairs. Put the variable directly in the gloc.
11361 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
11362 (scm_init_debug): Use scm_c_define instead scm_sysintern.
11363
11364 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
11365
11366 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
11367 scm_the_last_stack_fluid_var. It now points to a variable instead
11368 of a vcell. Updated all uses.
11369 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
11370 instead of a vcell. Updated all uses.
11371
11372 * _scm.h: Include "variables.h" and "modules.h" since almost
11373 everybody needs them now.
11374
11375 * root.h (scm_symhash, scm_symhash_vars): Removed.
11376 * gc.c (scm_init_storage): Do not initialize them.
11377
11378 2001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
11379
11380 * eval.c (scm_init_eval): Initialize scm_undefineds and
11381 scm_listofnull.
11382
11383 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
11384 like the SCM_NEWCELL macro counterparts.
11385
11386 (scm_init_storage, scm_init_gc): Moved initialization of
11387 scm_tc16_allocated from scm_init_gc to scm_init_storage.
11388
11389 (scm_init_storage): Moved initialization of scm_undefineds and
11390 scm_listofnull to eval.c, initializion of scm_nullstr to
11391 strings.c, initializion of scm_nullvect to vectors.c.
11392
11393 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
11394 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
11395
11396 * init.c (scm_init_guile_1): Reordered some initializations and
11397 added dependcy information comments.
11398
11399 * load.c (scm_init_load): Use scm_nullstr.
11400
11401 * strings.c (scm_init_strings): Initialize scm_nullstr.
11402
11403 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
11404
11405 2001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
11406
11407 * values.c (print_values): Print as a unreadable object, not as
11408 multiple lines. Thanks to Matthias Köppe!
11409
11410 2001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
11411
11412 * deprecation.c: Fixed copyright date.
11413
11414 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
11415 DEPRECATION_H to SCM_DEPRECATION_H.
11416
11417 2001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
11418
11419 * guile-doc-snarf.in: Update copyright.
11420 Fix relative path bug. Thanks to Sergey Poznyakoff.
11421
11422 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
11423
11424 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
11425 accept open ports. Thanks to Quetzalcoatl Bradley!
11426
11427 2001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11428
11429 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
11430 has 779 primitives on startup.
11431
11432 2001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
11433
11434 * eval.c (scm_i_eval): Copy expression before passing it to
11435 SCM_XEVAL. The copy operation was removed unintendedly during my
11436 change on 2001-03-25.
11437
11438 2001-05-09 Michael Livshin <mlivshin@bigfoot.com>
11439
11440 from Matthias Köppe (thanks!):
11441
11442 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
11443 portable.
11444
11445 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
11446 docstring.
11447
11448 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
11449
11450 * gc.c (scm_init_gc): Added FIXME comment.
11451
11452 * hooks.c: Since hooks don't have a name any more, it is not
11453 necessary to include objprop.h.
11454
11455 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
11456
11457 (symbol_name, scm_make_hook_with_name): Removed.
11458
11459 (scm_create_hook): Don't set the hook's name property.
11460
11461 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
11462
11463 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
11464
11465 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
11466
11467 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
11468 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
11469 FLOBUFLEN and define it unconditionally.
11470
11471 2001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
11472
11473 * gh_data.c (gh_lookup): Call gh_module_lookup with
11474 `scm_current_module ()', not `#f'.
11475 (gh_module_lookup): Expect a module instead of an obarray as first
11476 argument and do lookup in that module.
11477
11478 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
11479 arrays. The length of array is already determined differently and
11480 scm_uniform_vector_length does not work on arrays.
11481
11482 2001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
11483
11484 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
11485 as well. "SCM (*)(...)" does not work on RedHat 7.1.
11486
11487 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
11488 they are not used. Changed `wrong type' error into `wrong num
11489 args' error. Changed all callers.
11490
11491 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
11492 arguments are supplied.
11493
11494 2001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
11495
11496 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
11497 describe `regexp/notbol' and `regexp/noteol' execution flags.
11498
11499 * strop.c (scm_substring_move_x): Doc fix; nfc.
11500
11501 2001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
11502
11503 * objects.c, objects.h (scm_valid_object_procedure_p): New.
11504 (scm_set_object_procedure_x): Use it to check argument. Fix
11505 docstring.
11506
11507 * evalext.c (scm_definedp): Fix docstring.
11508
11509 2001-05-05 Gary Houston <ghouston@arglist.com>
11510
11511 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
11512 support.
11513
11514 2001-05-04 Neil Jerram <neil@ossau.uklinux.net>
11515
11516 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
11517 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
11518 Change R4RS references to R5RS.
11519
11520 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
11521 docstring source are correctly reproduced in the output (ii)
11522 we don't anymore get occasional trailing quotes. Also reorganized
11523 and commented the code a little.
11524
11525 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
11526 fixes.
11527
11528 2001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11529
11530 * strop.c (scm_string_split): New procedure.
11531
11532 * strop.h (scm_string_split): Added prototype.
11533
11534 2001-05-04 Gary Houston <ghouston@arglist.com>
11535
11536 * socket.c: define uint32_t if netdb.h doesn't. thanks to
11537 Dale P. Smith.
11538
11539 2001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
11540
11541 * rw.c: Include "modules.h" and "strports.h".
11542
11543 * net_db.h (scm_gethost): Added prototype.
11544
11545 * deprecation.h, deprecation.c: New.
11546 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
11547 (DOT_X_FILES): Added "deprecation.x".
11548 (modinclude_HEADERS): Added "deprecation.h".
11549
11550 * init.c: Include "deprecation.h".
11551 (scm_init_guile_1): Call scm_init_deprecation.
11552
11553 2001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
11554
11555 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
11556 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
11557 New.
11558
11559 2001-04-29 Gary Houston <ghouston@arglist.com>
11560
11561 * rw.c: new file, implementing C part of module (ice-9 rw).
11562 (scm_read_string_x_partial): moved from ioext.c
11563 (scm_init_rw): new proc.
11564 * rw.h: new file.
11565 init.c: include rw.h and call scm_init_rw.
11566 Makefile.am: include rw.c and rw.h.
11567
11568 2001-04-28 Rob Browning <rlb@cs.utexas.edu>
11569
11570 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
11571 know what's supposed to happen to it.
11572
11573 * list.h (scm_list_star): deprecation expired - removed.
11574
11575 * numbers.h (scm_dblproc): deprecation expired - removed.
11576 (SCM_UNEGFIXABLE): deprecation expired - removed.
11577 (SCM_FLOBUFLEN): deprecation expired - removed.
11578 (SCM_INEXP): deprecation expired - removed.
11579 (SCM_CPLXP): deprecation expired - removed.
11580 (SCM_REAL): deprecation expired - removed.
11581 (SCM_IMAG): deprecation expired - removed.
11582 (SCM_REALPART): deprecation expired - removed.
11583 (scm_makdbl): deprecation expired - removed.
11584 (SCM_SINGP): deprecation expired - removed.
11585 (SCM_NUM2DBL): deprecation expired - removed.
11586 (SCM_NO_BIGDIG): deprecation expired - removed.
11587
11588 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
11589 (scm_tc_dblr): deprecation expired - removed.
11590 (scm_tc_dblc): deprecation expired - removed.
11591 (scm_tc16_flo): deprecation expired - removed.
11592 (scm_tc_flo): deprecation expired - removed.
11593
11594 * tag.h (scm_tag): deprecation expired - removed.
11595
11596 * tag.c: (scm_tag): deprecation expired - removed.
11597
11598 * ioext.c: (scm_fseek): deprecation expired - removed.
11599
11600 * ioext.h (scm_fseek): deprecation expired - removed.
11601
11602 * gh_data.c (gh_int2scmb): deprecation expired - removed.
11603
11604 * gh.h (gh_int2scmb): deprecation expired - removed.
11605
11606 2001-04-28 Neil Jerram <neil@ossau.uklinux.net>
11607
11608 * stacks.c (scm_make_stack): Fix typo in docstring.
11609
11610 2001-04-27 Rob Browning <rlb@cs.utexas.edu>
11611
11612 * error.c (scm_sysmissing): deprecation expired - removed.
11613
11614 * error.h (scm_sysmissing): deprecation expired - removed.
11615
11616 * gc.c
11617 (scm_init_gc): gc-thunk deprecation expired - removed.
11618 (scm_gc_vcell): deprecation expired - removed.
11619 (gc_async_thunk): scm_gc_vcell related code removed.
11620
11621 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
11622
11623 * strings.h
11624 (SCM_NSTRINGP): deprecation expired - removed.
11625 (SCM_NRWSTRINGP): deprecation expired - removed.
11626
11627 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
11628
11629 * chars.h
11630 (SCM_ICHRP): deprecation expired - removed.
11631 (SCM_ICHR): deprecation expired - removed.
11632 (SCM_MAKICHR): deprecation expired - removed.
11633
11634 * ports.h
11635 (SCM_INPORTP): deprecation expired - removed.
11636 (SCM_OUTPORTP): deprecation expired - removed.
11637
11638 2001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
11639
11640 * modules.c (scm_module_type): New.
11641 (scm_post_boot_init_modules): Initialize from Scheme value.
11642 (the_module, scm_current_module, scm_init_modules): the_module is
11643 now a C only fluid.
11644 (scm_current_module): Export to Scheme.
11645 (scm_set_current_module): Do not call out to Scheme, do all the
11646 work in C. Export procedure to Scheme. Only accept modules, `#f'
11647 is no longer valid as the current module. Only set
11648 scm_top_level_lookup_closure_var and scm_system_transformer when
11649 they are not deprecated.
11650 (scm_module_transformer, scm_current_module_transformer): New.
11651
11652 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
11653 scm_current_module_transformer, scm_module_transformer): New.
11654
11655 * gh_data.c: Removed FIXME comment about gh_lookup returning
11656 SCM_UNDEFINED. That's the right thing to do.
11657
11658 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
11659 into the conditionally compiled sections.
11660 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
11661 scm_current_module_transformer instead of scm_system_transformer.
11662 * init.c (start_stack): Move initialization of
11663 scm_system_transformer to the deprecated section.
11664
11665 2001-04-22 Neil Jerram <neil@ossau.uklinux.net>
11666
11667 * throw.c (scm_throw): Correct docstring.
11668
11669 2001-04-22 Gary Houston <ghouston@arglist.com>
11670
11671 * socket.c: attempted to improve the docstrings slightly.
11672
11673 * net_db.c: remove bogus "close" declaration.
11674 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
11675 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
11676 moved to socket.c.
11677 * net_db.h: declarations moved too.
11678
11679 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
11680 long.
11681 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
11682 (VALIDATE_INET6): new macro.
11683 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
11684 inet-pton and inet-ntop.
11685 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
11686 (scm_addr_vector): use ipv6_net_to_num.
11687
11688 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
11689
11690 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
11691 smob number explicitly. Use SCM_TC2SMOBNUM instead.
11692
11693 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
11694 when compiled in debug mode.
11695
11696 (scm_gc_sweep): Only call smob's free function if it is defined.
11697
11698 * print.c (scm_iprin1): No need to check for validity of smob
11699 type or existence of print function.
11700
11701 * smob.[ch] (scm_smobs): Made into a fixed size global array.
11702 Resizing will not work well with preemptive threading.
11703
11704 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
11705
11706 (scm_make_smob_type): Extracted initialization of smob
11707 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
11708 of the critical section.
11709
11710 (scm_smob_prehistory): Initialize all smob descriptors. By
11711 default, don't assign a smob free function: Most smob types don't
11712 need one.
11713
11714 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
11715
11716 2001-04-21 Gary Houston <ghouston@arglist.com>
11717
11718 * socket.c (FLIP_NET_HOST_128): new macro.
11719 (scm_fill_sockaddr): use new macro.
11720 (scm_addr_vector): completed IPv6 address support. added const
11721 to the address parameter.
11722
11723 2001-04-20 Gary Houston <ghouston@arglist.com>
11724
11725 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
11726 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
11727 is defined.
11728 (scm_addr_vector): use a switch instead of multiple if statements.
11729 Add support for IPv6 (incomplete) .
11730 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
11731
11732 2001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
11733
11734 * struct.c (scm_free_structs): Only pairs may be accessed with
11735 SCM_C[AD]R.
11736
11737 2001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
11738
11739 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
11740
11741 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
11742 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
11743 parentheses in order to get the correct associativity.
11744
11745 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
11746
11747 * unif.c (scm_array_to_list): Added missing handling of arrays of
11748 bytes. Thanks to Masao Uebayashi for the bug report.
11749
11750 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
11751
11752 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
11753 consistently.
11754
11755 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
11756
11757 * procs.h (SCM_CLOSURE_FORMALS): New macro.
11758
11759 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
11760 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
11761 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
11762 SCM_CLOSURE_FORMALS.
11763
11764 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
11765 (scm_i_procedure_arity): Prefer stronger predicates like
11766 SCM_NULLP or SCM_FALSEP over SCM_IMP.
11767
11768 * macros.c (macro_print): Extracted macro printing code from
11769 print.c and simplified it.
11770
11771 (scm_macro_type): Use SCM_MACRO_TYPE;
11772
11773 (scm_init_macros): Use macro_print for printing macros.
11774
11775 * print.c (scm_print_opts): Improved option documentation.
11776
11777 (scm_iprin1): Extracted printing of macros to macros.c.
11778 Simplified printing of ordinary closures.
11779
11780 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
11781 Martin Grabmueller for the bug report.
11782
11783 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
11784
11785 This patch eliminates some further applications of SCM_C[AD]R to
11786 non pair cells.
11787
11788 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
11789 never been applied to real pairs.
11790
11791 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
11792
11793 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
11794
11795 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
11796 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
11797 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
11798
11799 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
11800 Added.
11801
11802 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
11803 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
11804
11805 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
11806 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
11807 SCM_SET{AND,OR}_CAR.
11808
11809 2001-04-17 Gary Houston <ghouston@arglist.com>
11810
11811 * some initial support for IPv6:
11812
11813 * socket.c (scm_fill_sockaddr): improve the argument validation.
11814 don't allocate memory until all args are checked. instead of
11815 unconditional memset of soka, try setting sin_len to 0 if
11816 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
11817 (scm_socket, scm_connect): extend docstrings for IPv6.
11818 (scm_init_socket): intern AF_INET6 and PF_INET6.
11819
11820 2001-04-17 Niibe Yutaka <gniibe@m17n.org>
11821
11822 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
11823 matches SCM_DEFER_INTS at the beginning of the function.
11824
11825 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
11826
11827 * gc.c (scm_igc): Unconditionally call
11828 SCM_CRITICAL_SECTION_START/END.
11829
11830 * fluids.c (next_fluid_num): Unconditionally call
11831 SCM_CRITICAL_SECTION_START/END.
11832 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
11833
11834 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
11835 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
11836 Removed.
11837
11838 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
11839 Defined as nothing for the case of !defined(USE_THREADS).
11840 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
11841 Removed.
11842 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
11843 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
11844 LINE.
11845 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
11846 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
11847 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
11848 SCM_CRITICAL_SECTION_START/END.
11849 (SCM_REALLOW_INTS: Bug fix. Don't call
11850 SCM_THREAD_SWITCHING_CODE.
11851 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
11852 SCM_THREAD_SWITCHING_CODE directly.
11853 (SCM_ENTER_A_SECTION): Unconditionally use
11854 SCM_CRITICAL_SECTION_START/END. (was:
11855 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
11856
11857 2001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
11858
11859 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
11860 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
11861 allowed to explicitly set this macro via the CFLAGS variable
11862 during make.
11863
11864 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
11865 (SCM_THREAD_CRITICAL_SECTION_START,
11866 SCM_THREAD_CRITICAL_SECTION_END): Renamed
11867 SCM_THREAD_CRITICAL_SECTION_START/END to
11868 SCM_CRITICAL_SECTION_START/END.
11869
11870 2001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
11871
11872 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
11873 instead of bzero.
11874
11875 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
11876 (MISSING_BZERO_DECL): Remove the declaration.
11877
11878 Thanks to NIIBE Yutaka.
11879
11880 2001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
11881
11882 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
11883 goops module should be registered in order to work for an
11884 application which uses libguile statically linked.)
11885
11886 2001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
11887
11888 * numbers.[ch] (scm_num2long, scm_num2long_long,
11889 scm_num2ulong_long, scm_num2ulong): Argument position is an
11890 unsigned integer.
11891
11892 * environments.c (eval_environment_folder,
11893 import_environment_folder), gh_data.c (gh_scm2longs,
11894 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
11895 for integers and pointers, respectively.
11896
11897 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
11898 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
11899 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
11900 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
11901
11902 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
11903 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
11904 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
11905 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
11906 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
11907 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
11908
11909 2001-04-09 Neil Jerram <neil@ossau.uklinux.net>
11910
11911 * strings.c (scm_read_only_string_p): Update docstring to reflect
11912 current (non-)usage of "read only" strings.
11913 (scm_make_shared_substring): Clarify docstring by changing
11914 "semantics" to "arguments".
11915
11916 2001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11917
11918 * hooks.c (scm_make_hook, scm_make_hook_with_name),
11919 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
11920 improvements.
11921
11922 2001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
11923
11924 The following changes make the documentation more consistent.
11925
11926 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
11927 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
11928 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
11929 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
11930 ... @end lisp.
11931
11932 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
11933 (scm_array_dimensions, scm_make_shared_array),
11934 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
11935 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
11936 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
11937 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
11938 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
11939 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
11940 macros.c (scm_makmmacro), list.c (scm_append), environments.c
11941 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
11942 @example ... @end example to @lisp ... @end lisp.
11943
11944 * weaks.c (scm_weak_vector): Corrected docstring.
11945
11946 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
11947 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
11948 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
11949 (scm_hashx_set_x, scm_hashx_get_handle),
11950 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
11951 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
11952 vectors.c (scm_vector_fill_x), strings.c
11953 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
11954 objprop.c (scm_set_object_properties_x):
11955 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
11956 strports.c (scm_call_with_input_string), ports.c
11957 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
11958 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
11959 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
11960 (scm_make_weak_vector,scm_weak_vector_p),
11961 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
11962 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
11963 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
11964 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
11965 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
11966 Made parameter names match documentation by renaming parameters
11967 and/or fixing docstrings.
11968
11969 * numbers.c (scm_ash): Corrected Texinfo markup.
11970
11971 * strop.c (scm_string_index, scm_string_rindex),
11972 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
11973
11974 * vports.c (scm_make_soft_port), unif.c
11975 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
11976 (scm_dimensions_to_uniform_array, scm_transpose_array),
11977 (scm_array_in_bounds_p, scm_uniform_vector_ref),
11978 (scm_bit_count, scm_bit_position, scm_bit_count_star),
11979 (scm_array_to_list, scm_list_to_uniform_array),
11980 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
11981 (scm_open_input_string, scm_open_output_string),
11982 (scm_get_output_string), strop.c (scm_string_copy),
11983 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
11984 (scm_get_internal_real_time, scm_times),
11985 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
11986 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
11987 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
11988 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
11989 simpos.c (scm_system), random.c (scm_random_uniform),
11990 (scm_random_normal, scm_random_exp), ramap.c
11991 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
11992 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
11993 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
11994 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
11995 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
11996 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
11997 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
11998 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
11999 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
12000 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
12001 (scm_logand, scm_logior, scm_logxor, scm_lognot),
12002 (scm_integer_expt, scm_bit_extract, scm_logcount),
12003 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
12004 net_db.c (scm_inet_netof, scm_lnaof), modules.c
12005 (scm_interaction_environment), macros.c (scm_makacro),
12006 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
12007 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
12008 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
12009 (scm_fluid_ref), filesys.c (scm_open_fdes),
12010 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
12011 Docstring correction: `Returns' -> `Return'
12012
12013 * gc.c (scm_set_debug_cell_accesses_x):
12014 (s_scm_gc_set_debug_check_freelist_x):
12015 * fluids.c (scm_fluid_p): Added texinfo markup.
12016
12017 * error.c (scm_strerror): Made docstring more precise.
12018
12019 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
12020 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
12021 (scm_symbol_p, scm_symbol_to_string), strorder.c
12022 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
12023 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
12024 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
12025 (scm_string_ci_geq_p), strop.c (scm_string_copy),
12026 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
12027
12028 2001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
12029
12030 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
12031 mode, as suggested by Michael Livshin.
12032
12033 2001-03-31 Michael Livshin <mlivshin@bigfoot.com>
12034
12035 * backtrace.c (display_backtrace_body): since the `print_state'
12036 variable is not used (instead its data field is used directly as
12037 `pstate'), protect it from the hungry compiler optimizations.
12038 thanks to Bill Schottstaedt for the report.
12039
12040 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12041
12042 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
12043 It is only defined and used if guile is compiled with
12044 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
12045 let cells with a free_cell type tag be visible outside of the
12046 garbage collector when in debug mode.
12047
12048 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
12049
12050 (scm_assert_cell_valid): Use a local static variable to avoid
12051 recursion.
12052
12053 (MARK): Only check for rogue cell pointers in debug mode. Use
12054 scm_cellp for this purpose and place all checks for rogue pointers
12055 into that function. Further, since due to conservative scanning
12056 we may encounter free cells during marking, don't use the standard
12057 cell type accessor macro to determine the cell type.
12058
12059 (scm_cellp): Check if the cell pointer actually points into a
12060 card header.
12061
12062 (scm_init_gc): Initalize scm_tc16_allocated.
12063
12064 * gc.h (GCH): Renamed to SCM_GC_H.
12065
12066 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
12067 might be unnecessary, but I feel better this way :-)
12068
12069 (SCM_GC_CELL_TYPE): New macro.
12070
12071 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
12072 in guile, and it is unlikely that they will be applied to real
12073 pairs anyway.
12074
12075 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
12076
12077 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
12078 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
12079
12080 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
12081 make sure that in debug mode no free cell will ever be visible
12082 outside of the garbage collector.
12083
12084 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
12085
12086 * async.c (scm_asyncs_pending): Don't use != to compare SCM
12087 values.
12088
12089 * async.c (scm_system_async), variable.c (scm_make_variable,
12090 scm_make_undefined_variable): Use scm_cons to create a pair.
12091
12092 * debug.c (scm_reverse_lookup): Perform proper type checking.
12093 Remove suspicious use of SCM_SLOPPY_CONSP.
12094
12095 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
12096 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
12097 the corresponding optimization.
12098
12099 * eval.c (iqq): Use proper type check.
12100
12101 (scm_m_expand_body): Remove redundant type checks.
12102
12103 (promise_print): Don't access promise cells as pairs.
12104
12105 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
12106 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
12107 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
12108 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
12109 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
12110
12111 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
12112 (scm_iprin1): Use new macro predicate and accessors.
12113
12114 * eval.h (scm_tc16_macro): Removed declaration. It is declared
12115 in macros.h.
12116
12117 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
12118 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
12119 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
12120 SCM_VARIABLE_H. Even the macros that are used to inhibit
12121 including a header file twice should be in the SCM_ namespace.
12122
12123 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
12124 properties.c (scm_primitive_property_ref,
12125 scm_primitive_property_del_x): Prefer stronger predicates like
12126 SCM_NULLP or SCM_FALSEP over SCM_IMP.
12127
12128 * gc.c (MARK): Use proper macros to access procedure-with-setter
12129 cell elements and closure cell elements.
12130
12131 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
12132 access free cells as pairs.
12133
12134 (scm_unprotect_object): scm_hashq_get_handle returns #f if
12135 no hashtab entry is found.
12136
12137 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
12138 SCM_CLR_PORT_OPEN_FLAG.
12139
12140 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
12141 use SCM_SET_C[AD]R for uninitialized cells.
12142
12143 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
12144 If the hashtable has no slots, return #f instead of '(). This
12145 unifies the return value with most assoc-functions.
12146
12147 (scm_hash_fn_ref): Use proper type check.
12148
12149 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
12150 Removed references to non-existing functions from documentation.
12151
12152 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
12153 access keyword cell elements.
12154
12155 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
12156 macros.
12157
12158 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
12159
12160 * print.c (scm_iprlist): Added comment. Improved loop
12161 conditions.
12162
12163 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
12164 pairs.
12165
12166 * smob.c (scm_markcdr): Don't access smob cells as pairs.
12167
12168 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
12169
12170 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
12171 cells as pairs.
12172
12173 * variable.c (variable_print, variable_equalp, scm_variable_ref,
12174 scm_variable_set_x): Use proper macros to access variable cell
12175 elements.
12176
12177 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
12178
12179 * variable.h (SCM_VARVCELL): Don't access variable cells as
12180 pairs.
12181
12182 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
12183 added FIXME comment, removed register specifier.
12184
12185 2001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
12186
12187 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
12188 * init.c (scm_init_guile_1): Don't init goopscore module.
12189
12190 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12191
12192 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
12193
12194 2001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12195
12196 * strop.c (scm_string_to_list): Fixed docstring markup.
12197 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
12198 (scm_string_downcase, scm_string_capitalize_x),
12199 (scm_string_capitalize): Rewrote and corrected docstrings.
12200 (scm_string_ci_to_symbol): Made docstring more explicit.
12201
12202 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
12203
12204 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
12205 eval.c can use it.
12206 (scm_call_with_values): Removed.
12207 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
12208 so that it can be exported.
12209 (scm_call_with_values): Removed.
12210
12211 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
12212 * eval.c: Include "libguile/values.h"
12213 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
12214 New.
12215 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
12216 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
12217 New delcarations to support above change.
12218
12219 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
12220 errors with last change.
12221
12222 2001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
12223
12224 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
12225 scm_i_eval): Moved the application of the system transformer from
12226 scm_i_eval to scm_primitive_eval.
12227
12228 2001-03-23 Neil Jerram <neil@ossau.uklinux.net>
12229
12230 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
12231
12232 * strop.c (scm_string_index): Fix docstring line break
12233 regression.
12234
12235 * list.c (scm_cons_star): Fix docstring typo.
12236
12237 2001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
12238
12239 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
12240 (big2str), ports.c (scm_drain_input), read.c (scm_read,
12241 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
12242 scm_make_string, scm_string_append), strports.c (st_resize_port,
12243 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
12244 scm_makstr with calls to scm_allocate_string.
12245
12246 * strings.[ch] (scm_allocate_string): New function.
12247
12248 * strings.[ch] (scm_makstr): Deprecated.
12249
12250 2001-03-18 Gary Houston <ghouston@arglist.com>
12251
12252 * posix.c (scm_tmpnam): check that return value from tmpnam is not
12253 NULL. rewrote the docstring.
12254 (scm_mkstemp): new procedure implementing "mkstemp!".
12255 * posix.h: declare scm_mkstemp.
12256
12257 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
12258 normally it would be found in netdb.h.
12259
12260 2001-03-17 Gary Houston <ghouston@arglist.com>
12261
12262 * sort.c (scm_sort): move sortvec variable to avoid a compiler
12263 warning when HAVE_ARRAYS is not defined. move len too.
12264
12265 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
12266 (EXTRA_DOT_X_FILES): let configure set the value.
12267 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
12268
12269 * gc.c (scm_must_malloc): changed the comment explaining when
12270 scm_must variants of malloc/free etc., should be used, based on
12271 explanation from Dirk Herrmann.
12272 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
12273 string with procedure name. use scm_must_malloc instead of malloc.
12274 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
12275 of malloc/free.
12276 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
12277 scm_ungetc): use scm_must variants of malloc/realloc/free.
12278 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
12279
12280 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12281
12282 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
12283 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
12284 scm_wrong_type_arg instead.
12285
12286 (SCM_WNA): Deprecated.
12287
12288 * error.[ch] (scm_wta): Deprecated.
12289
12290 * numbers.c (s_i_log): Minor comment fix.
12291
12292 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
12293 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
12294 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
12295 wrong-num-args or misc errors.
12296
12297 * unif.c (scm_make_shared_array, scm_transpose_array,
12298 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
12299 Validate the rest argument (note: this is only done when guile is
12300 built with SCM_DEBUG_REST_ARGUMENT=1)
12301
12302 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
12303 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
12304
12305 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
12306 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
12307
12308 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12309
12310 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
12311 instead of scm_wrong_num_args.
12312
12313 * coop-threads.c: Don't include libguile/strings.h. (Was only
12314 needed for former implementation of SCM_WRONG_NUM_ARGS.)
12315
12316 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
12317 wrong-num-args errors.
12318
12319 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
12320
12321 * error.[ch] (scm_error_num_args_subr): New function.
12322
12323 2001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12324
12325 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
12326 (scm_length, scm_append, scm_reverse, scm_list_ref),
12327 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
12328 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
12329 (scm_delete1_x), gc.c (scm_map_free_list),
12330 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
12331 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
12332 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
12333 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
12334 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
12335 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
12336 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
12337
12338 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
12339 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
12340 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
12341 symbols.c (scm_symbol_interned_p), numbers.c
12342 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
12343 markup.
12344
12345 2001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
12346
12347 * snarf.h (SCM_CONST_LONG): Deprecated.
12348 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
12349
12350 2001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
12351
12352 * numbers.c (scm_num2ulong): Check that a bignum is positive
12353 before looking at the magnitude. Correctly check for overflow
12354 during conversion.
12355 (scm_num2long_long): Likewise.
12356 (scm_num2ulong_long): New.
12357 (ULONG_LONG_MAX): Define if not already defined.
12358 * numbers.h: (scm_num2ulong_long): New prototype.
12359
12360 2001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12361
12362 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
12363
12364 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
12365 (SCM_OPOUTSTRPORTP): New predicate macros.
12366 (scm_open_input_string, scm_open_output_string),
12367 (scm_get_output_string): New prototypes.
12368
12369 * strports.c (scm_open_input_string, scm_open_output_string),
12370 (scm_get_output_string): New procedures (SRFI-6 compliant).
12371 Made scm_tc16_strport non-static.
12372
12373 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12374
12375 * macros.h (SCM_ASSYNT): Removed unused object argument from
12376 signature.
12377
12378 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
12379 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
12380 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
12381 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
12382 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
12383 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
12384 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
12385 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
12386 scm_m_atdispatch): Removed unused object argument from call to
12387 SCM_ASSYNT.
12388
12389 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
12390
12391 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
12392 const int* to reflect that the input array of integers remains
12393 unchanged. Thanks to Brett Viren for the hint.
12394
12395 2001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12396
12397 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
12398 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
12399 in various places.
12400 (gh_scm2newstr, gh_symbol2newstr): Change call to
12401 scm_must_malloc() to malloc(), because user-free()able memory is
12402 allocated.
12403
12404 * gc.c: Added declaration of `scm_debug_check_freelist'.
12405
12406 2001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12407
12408 * ports.c (scm_port_mode): Changed `mode' array size to 4.
12409
12410 2001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
12411
12412 * strports.c (scm_object_to_string): New procedure.
12413 (scm_strprint_obj): Deprecated.
12414 * strports.h: Reflect the changes.
12415
12416 2001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
12417
12418 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
12419
12420 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
12421 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
12422 SCM_ASSYNT to check for correct argument types. Either use some
12423 SCM_VALIDATE_* macro or an explicit test.
12424
12425 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
12426 misc-errors.
12427
12428 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
12429 instead of calling scm_wta.
12430
12431 2001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12432
12433 * load.c (scm_primitive_load, scm_primitive_load_path),
12434 (scm_sys_search_load_path): Corrected docstrings (file ->
12435 filename).
12436
12437 * eval.c (scm_force): Added texinfo markup to docstring.
12438 (scm_promise_p): Renamed parameter to `obj' to match docstring.
12439
12440 * debug-malloc.c: Reinserted #include <stdio.h>.
12441
12442 2001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
12443
12444 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
12445
12446 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
12447 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
12448 Use SCM_LISTn instead of scm_listify.
12449
12450 2001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12451
12452 * _scm.h: Removed #include <errno.h>.
12453
12454 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
12455 errno variable (can be a macro on some systems, for example when
12456 using linux libc with threads).
12457
12458 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
12459 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
12460 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
12461 #include <errno.h> in these 20 out of 100 files.
12462
12463 2001-03-10 Gary Houston <ghouston@arglist.com>
12464
12465 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
12466 not already defined.
12467
12468 2001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12469
12470 * coop.c: Inserted #include <stdio.h>.
12471
12472 * iselect.c: Reinserted #include <stdio.h>.
12473
12474 2001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
12475
12476 * posix.c: Replaced `#define' of __USE_XOPEN right before
12477 including unistd.h with a define of _GNU_SOURCE at the very top of
12478 the file.
12479
12480 2001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
12481
12482 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
12483 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
12484 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
12485 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
12486 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
12487 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
12488 print.c, procprop.c, procs.c, properties.c, ramap.c,
12489 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
12490 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
12491 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
12492 Remove #include <stdio.h>
12493 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
12494
12495 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
12496
12497 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12498
12499 * posix.c (scm_gethostname): Set initial name length to 256 for
12500 Solaris.
12501
12502 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12503
12504 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
12505 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
12506 (scm_sethostname, scm_gethostname): New prototypes.
12507
12508 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
12509 <sys/file.h>, if present.
12510 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
12511 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
12512 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
12513 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
12514 (scm_sethostname, scm_gethostname): New procedures.
12515
12516 2001-03-08 Neil Jerram <neil@ossau.uklinux.net>
12517
12518 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
12519 not optional (ii) "recommend" spelling correction.
12520
12521 2001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12522
12523 * ramap.c (racp): Removed optimization which caused array copying
12524 to fail if the two arrays shared storage. Re-inserted the IVDEP
12525 macros removed in the change of 2000-03-09. (Don't really have a
12526 complete grasp of what they are for, but they seem to be necessary
12527 on Crays. This needs testing!) Thanks to Miroslav Silovic.
12528
12529 * hash.c (scm_string_hash): Don't downcase characters.
12530
12531 2001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12532
12533 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
12534 size from 277 --> 1009.
12535
12536 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
12537 function.
12538
12539 * coop-threads.c: Fixed change of 2001-03-06.
12540
12541 * validate.h: Code formatting.
12542
12543 2001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
12544
12545 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
12546 (*.doc): Add dependency on guile-snarf.awk.in.
12547
12548 * guile-snarf.awk.in: Neglect spaces at the end of
12549 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
12550 middle of docstrings. (To avoid the problem with gcc-2.96.)
12551
12552 2001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
12553
12554 * coop-threads.c (scm_call_with_new_thread), load.c
12555 (scm_primitive_load, scm_sys_search_load_path), random.c
12556 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
12557 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
12558 (potentially) issue a scm-misc-error or wrong-num-args error
12559 message.
12560
12561 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
12562 about the expected type with the wrong-type-arg error message.
12563
12564 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
12565 a C level bug that can't be fixed from scheme anyway.
12566
12567 2001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12568
12569 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
12570 Duplicate bindings are OK in a let* since a let* is semantically
12571 equivalent to a nested set of let:s.
12572
12573 2001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12574
12575 * print.c (scm_print_options): Fixed texinfo in docstring.
12576
12577 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
12578 the underlying functions getservent, getprotoent or getnetent
12579 return NULL instead of signalling an error.
12580
12581 2001-03-04 Gary Houston <ghouston@arglist.com>
12582
12583 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
12584 taking an unexpectedly large filename for an AF_UNIX socket from
12585 bind/connect/sendto (thanks to Martin Grabmueller).
12586
12587 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
12588 former and adjusted the latter.
12589 (scm_socket, scm_socketpair): cosmetic changes.
12590 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
12591 size_t as socklen_t substitute. don't restrict args/return values
12592 to INUM: allow full range of int or size_t.
12593 (scm_fill_sockaddr): check arguments before allocating memory, to
12594 avoid leakage. use malloc, not scm_must_malloc.
12595 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
12596 substitute. free the sockaddr structure before throwing an error.
12597 (scm_init_add_buffer): procedure removed, together with its static
12598 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
12599 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
12600 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
12601 scm_sendto): use a local buffer instead of scm_addr_buffer.
12602 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
12603 not size_t.
12604 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
12605 call to detect whether recvfrom could be bothered to set the address.
12606 (scm_init_socket): don't call scm_init_addr_buffer.
12607
12608 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
12609
12610 * debug.c (scm_procedure_source, scm_procedure_environment),
12611 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
12612 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
12613 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
12614 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
12615 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
12616 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
12617 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
12618 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
12619 scm_array_to_list, scm_array_prototype), validate.h
12620 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
12621 scm_misc_error or scm_wrong_type_arg instead.
12622
12623 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
12624
12625 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12626
12627 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
12628 (scm_sys_tag_body): Added.
12629
12630 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
12631
12632 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
12633 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
12634 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
12635 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
12636 options.c (scm_options), ports.c (scm_remove_from_port_table),
12637 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
12638 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
12639 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
12640 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
12641 instead.
12642
12643 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12644
12645 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
12646
12647 2001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
12648
12649 * eval.c (scm_s_duplicate_bindings): New error message.
12650 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
12651
12652 2001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
12653
12654 * eval.h (SCM_EVALIM2): New macro. Use it when a
12655 immediate, literal constant should be evaluated.
12656 * eval.c (scm_s_duplicate_formals): New error message string.
12657 (scm_c_improper_memq): New function.
12658 (scm_m_lambda): Check for duplicate arguments.
12659 (scm_ceval, scm_deval): When executing a body: only cons a new
12660 toplevel environment frame when it is different from the
12661 existing one; use EVALCAR instead of SIDEVAL so that we can properly
12662 check for empty combinations; use SCM_EVALIM2 for the same reason
12663 in the non-toplevel loop.
12664 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
12665 New labels with the meaning of their non-"nontoplevel" partners,
12666 but they are used when it is known that the body is not evaluated at
12667 top-level.
12668 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
12669 reporting for empty combinations.
12670
12671 2001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
12672
12673 * Remove dump facilities.
12674 * dump.c, dump.h: Removed.
12675 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
12676 * init.c: Remove #include "libguile/dump.h".
12677 (scm_init_guile_1): Remove scm_init_dump.
12678 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
12679 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
12680 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
12681 (scm_set_smob_dump, scm_set_smob_undump): Removed.
12682
12683 * keywords.c: Remove #include "libguile/dump.h".
12684 (keyword_dump, keyword_undump): Removed.
12685 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
12686
12687 2001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12688
12689 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
12690 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
12691 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
12692 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
12693 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
12694 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
12695 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
12696 to @code{} as the texinfo manual recommends, converted the
12697 examples to use a @lisp{}-environment.
12698
12699 * strports.c (scm_eval_string): Cleaned up the docstring.
12700
12701 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
12702 markup.
12703
12704 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
12705 (scm_number_to_string, scm_string_to_number, scm_number_p)
12706 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
12707 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
12708 (scm_ash): Added texinfo markup and removed obsolete @refill.
12709 (scm_gr_p): Corrected comment.
12710 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
12711 docstring) comments.
12712 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
12713 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
12714 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
12715 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
12716 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
12717 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
12718 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
12719 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
12720
12721 2001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
12722
12723 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
12724 (Obviously nobody compiles with SCM_RECKLESS defined...)
12725
12726 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
12727
12728 2001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
12729
12730 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
12731
12732 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
12733
12734 2001-02-24 Neil Jerram <neil@ossau.uklinux.net>
12735
12736 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
12737 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
12738 since use of `z' suggests that the arguments may be complex.
12739
12740 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
12741 typos.
12742
12743 2001-02-23 Neil Jerram <neil@ossau.uklinux.net>
12744
12745 * dump.c (scm_binary_write, scm_binary_read), eval.c
12746 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
12747 scm_guardian_greedy_p, scm_make_guardian), fports.c
12748 (scm_file_port_p): Minor docstring fixes.
12749
12750 2001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
12751
12752 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
12753
12754 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
12755 scm_i_eval.
12756 (make_class_from_template): Do not bother to set the current
12757 module around the call to DEFVAR, scm_eval takes care of that.
12758 (scm_init_goops): Make scm_module_goops and
12759 scm_goops_lookup_closure permanent objects.
12760
12761 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
12762 top level, create a fresh top-level environment for each
12763 expression instead of mutating the exisint frame. This is
12764 important when that frame is closed over.
12765
12766 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
12767 SCM_DIGSPERLONG instead of DIGSPERLONG.
12768
12769 2001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
12770
12771 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
12772 before applying arrow procedure in `cond' and before applying
12773 receiver procedure in call-with-current-continuation.
12774 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
12775 macro. The argument is expanded more than one time.
12776
12777 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
12778 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
12779
12780 2001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
12781
12782 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
12783 notice and license.
12784
12785 2001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12786
12787 * variable.c (scm_make_variable, scm_make_undefined_variable)
12788 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
12789 (scm_variable_bound_p), values.c (scm_values)
12790 (scm_call_with_values), unif.c (scm_bit_count)
12791 (scm_bit_set_star_x), symbols.c (scm_gentemp)
12792 (scm_gensym), strings.c (scm_string_p, scm_make_string)
12793 (scm_read_only_string_p, scm_string_length, scm_string_ref)
12794 (scm_string_set_x, scm_substring, scm_string_append), stime.c
12795 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
12796 (scm_copy_random_state, scm_random), print.c (scm_newline)
12797 (scm_write_char, scm_simple_format), debug-malloc.c
12798 (scm_malloc_stats), environments.c (scm_environment_p)
12799 (scm_environment_bound_p, scm_environment_ref)
12800 (scm_environment_fold, scm_environment_define)
12801 (scm_environment_undefine, scm_environment_set_x)
12802 (scm_environment_cell, scm_environment_observe)
12803 (scm_environment_observe_weak, scm_environment_unobserve)
12804 (scm_make_eval_environment, scm_eval_environment_p)
12805 (scm_eval_environment_set_local_x, scm_eval_environment_local)
12806 (scm_eval_environment_imported)
12807 (scm_eval_environment_set_imported_x, scm_make_import_environment)
12808 (scm_import_environment_p, scm_import_environment_imports)
12809 (scm_import_environment_set_imports_x, scm_make_export_environment)
12810 (scm_export_environment_p, scm_export_environment_private)
12811 (scm_export_environment_set_private_x)
12812 (scm_export_environment_signature)
12813 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
12814 Added texinfo markup.
12815
12816 * ports.c (scm_drain_input): Lowercased argument to @var.
12817 (scm_current_input_port, scm_current_output_port): Filled in
12818 missing explanation.
12819 (scm_current_load_port, scm_set_current_output_port)
12820 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
12821 Added texinfo markup.
12822
12823 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
12824 (scm_release_arbiter): Added texinfo markup to docstrings.
12825 Changed `Returns' to `Return'.
12826 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
12827
12828 2001-02-16 Neil Jerram <neil@ossau.uklinux.net>
12829
12830 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
12831 by doubling them to `@@'.
12832
12833 2001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
12834
12835 * numbers.c (scm_lognot), random.c (scm_random,
12836 scm_random_normal, scm_random_solid_sphere_x,
12837 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
12838 scm_random_exp), dynwind.c
12839 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
12840
12841 * goops.c (scm_sys_initialize_object, scm_instance_p,
12842 scm_class_name, scm_class_precedence_list, scm_class_slots,
12843 scm_class_environment, scm_generic_function_name,
12844 scm_generic_function_methods, scm_method_generic_function,
12845 scm_method_specializers, scm_method_procedure, scm_make_unbound,
12846 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
12847 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
12848 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
12849 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
12850 scm_class_direct_supers, scm_class_direct_slots,
12851 scm_class_direct_subclasses, scm_class_direct_methods,
12852 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
12853 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
12854 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
12855 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
12856 scm_memoized_environment, scm_procedure_name,
12857 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
12858 objects.c
12859 (scm_class_of, scm_entity_p, scm_operator_p,
12860 scm_set_object_procedure_x, scm_object_procedure,
12861 scm_make_class_object), hooks.c (scm_make_hook_with_name,
12862 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
12863 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
12864 scm_hook_to_list), lang.c
12865 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
12866 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
12867 (scm_print_options, scm_port_with_print_state,
12868 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
12869 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
12870 scm_make_procedure_with_setter, scm_procedure), throw.c
12871 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
12872 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
12873 scm_stack_ref, scm_stack_length, scm_frame_p,
12874 scm_last_stack_frame, scm_frame_number, scm_frame_source,
12875 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
12876 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
12877 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
12878 (scm_dirname, scm_basename), dynwind.c
12879 (scm_wind_chain), read.c (scm_read_options, scm_read,
12880 scm_read_hash_extend), gc.c
12881 (scm_unhash_name), eval.c (scm_eval_options_interface,
12882 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
12883 (scm_display_error, scm_set_print_params_x,
12884 scm_display_application, scm_display_backtrace, scm_backtrace),
12885 async.c (scm_async, scm_system_async, scm_async_mark,
12886 scm_system_async_mark, scm_run_asyncs, scm_noop,
12887 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
12888 scm_mask_signals): Added docstrings.
12889
12890 2001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
12891
12892 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
12893 address of car/cdr. (Thanks to Dirk Herrmann)
12894 Use scm_sizet to obtain the length of strings.
12895 (Thanks to Matthias Koeppe)
12896
12897 2001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
12898
12899 * symbols.c (scm_mem2symbol): Put a empty statement after the
12900 next_symbol label. This is mandated by ANSI, appearantly.
12901
12902 2001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
12903
12904 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
12905 sense to compile for a specific kernel version. Do not include
12906 <asm/signal.h> while defining __KERNEL__. This hack should no
12907 longer be needed and caused problems.
12908
12909 2001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
12910
12911 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
12912 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
12913 can not deal with immediates.
12914
12915 2001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
12916
12917 * list.c (scm_list_copy): Validate the first argument.
12918
12919 2001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
12920
12921 Fix evaluator so that top-level expressions are correctly
12922 evaluated with respect to the module system.
12923
12924 * modules.h. modules.c (scm_current_module_lookup_closure): New
12925 function.
12926
12927 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
12928 prototypes.
12929 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
12930 names to better reflect their meaning.
12931
12932 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
12933 evaluated at top-level and synronize lookup closure before
12934 executing every subform.
12935 (scm_primitve_eval_x, scm_primitive_eval): New functions.
12936 (scm_eval_x, scm_eval): Reimplement in terms of
12937 scm_primitive_eval_x and scm_primitive_eval, respectively.
12938
12939 2001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
12940
12941 * macros.c (scm_macro_name, scm_macro_transformer): Use
12942 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
12943 Thanks!
12944
12945 2001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
12946
12947 * dump.c (scm_store_bytes): Store data size before data.
12948 (scm_restore_bytes): Restore data size. Takes a pointer to size.
12949 * dump.h (scm_restore_bytes): Updated.
12950
12951 2001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
12952
12953 * dump.c: Use double cells for update schedule.
12954
12955 2001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
12956
12957 * ports.c (scm_unread_char): Take an optional argument.
12958
12959 2001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
12960
12961 * modules.h (scm_selected_module, scm_current_module): Renamed
12962 scm_selected_module to scm_current_module to synchronize Scheme
12963 and C names.
12964 (scm_select_module, scm_set_current_module): Likewise. Changed
12965 all uses.
12966
12967 * ports.c (scm_port_for_each): Make a snapshot of the port table
12968 before iterating over it. The table might change while the user
12969 code is running. With the snapshot, the user can depend on the
12970 fact that each port that existed at the start of the iteration is
12971 encountered exactly once. (ice-9 popen) depends on this.
12972
12973 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
12974
12975 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
12976
12977 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
12978 range checking for the size parameter. Thanks to Martin
12979 Grabmueller for the hint.
12980
12981 (scm_makstr): Reordered string initialization to make interrupt
12982 deferring unnecessary.
12983
12984 * vectors.c (scm_make_vector): Fixed range checking.
12985
12986 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
12987
12988 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
12989
12990 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
12991 checking of the size parameter for type correctness and valid
12992 range. Thanks to Rob Browning for reporting the problem. Instead
12993 of deferring interrupts, scm_remember_upto_here_1 is used.
12994
12995 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
12996
12997 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
12998 (scm_dump_cell_update): Removed.
12999 (scm_dump_update): Renamed from scm_dump_object_update.
13000 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
13001 a pointer instead of returning a value.
13002 * keywords.c (keyword_undump): Updated.
13003
13004 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
13005
13006 * dump.c, dump.h: Modified a lot.
13007 (SCM_DUMP_COOKIE): Version 0.1
13008 (scm_dump_mark): Removed.
13009 (scm_restore_cell_object, scm_store_cell_object): New functions.
13010
13011 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
13012 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
13013 New slots: dump, undump.
13014 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
13015 Updated.
13016
13017 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
13018 (keyword_undump): Renamed from keyword_alloc.
13019 (scm_init_keywords): Set keyword_dump and keyword_undump.
13020
13021 2001-02-03 Michael Livshin <mlivshin@bigfoot.com>
13022
13023 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
13024 the deprecated SCM_DOUBLE_CELLP.
13025
13026 * tags.h (SCM_DOUBLE_CELLP): deprecated.
13027
13028 2001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
13029
13030 * dump.c, dump.h: New files.
13031 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
13032 * init.c: #include "libguile/dump.h".
13033 (scm_init_guile_1): Call scm_init_dump.
13034 * smob.h (scm_smob_descriptor): New slots: dump_mark,
13035 dump_dealloc, dump_store, undump_alloc, undump_restore,
13036 undump_init.
13037 * smob.c (scm_make_smob_type): Init the new slots.
13038 (scm_set_smob_dump, scm_set_smob_undump): New functions.
13039 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
13040
13041 * keywords.c: #include "libguile/dump.h".
13042 (keyword_dealloc, keyword_alloc): New functions.
13043 (scm_init_keywords): Set smob_dump and smob_undump.
13044
13045 2001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
13046
13047 * vectors.c (scm_c_make_vector): New function.
13048 * vectors.h (scm_c_make_vector): Declared.
13049 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
13050 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
13051 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
13052 (scm_make_method_cache, scm_i_vector2list,
13053 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
13054 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
13055 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
13056 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
13057 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
13058 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
13059 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
13060 (scm_vector, scm_make_vector): Use scm_c_make_vector.
13061
13062 * hashtab.c (scm_c_make_hash_table): New function.
13063 * hashtab.h (scm_c_make_hash_table): Declared.
13064 * environments.c (scm_make_leaf_environment,
13065 scm_make_eval_environment), gc.c (scm_init_storage),
13066 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
13067 Use scm_c_make_hash_table.
13068
13069 2001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13070
13071 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
13072
13073 2001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
13074
13075 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
13076 end of docstring.
13077
13078 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
13079 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
13080 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
13081 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
13082 srcprop.c (scm_source_properties, scm_set_source_properties_x,
13083 scm_source_property, scm_set_source_property_x), sort.c
13084 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
13085 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
13086 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
13087 docstrings.
13088
13089 2001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13090
13091 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
13092 really get that arg.
13093
13094 2001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
13095
13096 * goops.c (s_scm_get_keyword): Bug fix.
13097
13098 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13099
13100 The following patch was sent by Martin Grabmueller. It makes sure
13101 that in case of parameter errors the correct function name is
13102 shown, and that parameter types are only checked once.
13103
13104 * strop.c (string_copy, string_upcase_x, string_downcase_x,
13105 string_capitalize_x): New functions. Each one performs the core
13106 functionality of the corresponding scm_* function.
13107
13108 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
13109 scm_string_downcase_x, scm_string_downcase,
13110 scm_string_capitalize_x, scm_string_capitalize): Reduced to
13111 parameter checking wrappers of the above functions.
13112
13113 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
13114
13115 * continuations.c, dynl.c, keywords.c, load.c: Include
13116 strings.h. Thanks to Bill Schottstaedt for the bug report.
13117
13118 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13119
13120 * backtrace.c (display_header): Make sure that line and column
13121 information is shown independent of whether the port the code was
13122 read from had an associated filename. Thanks to Martin
13123 Grabmueller for providing this patch.
13124
13125 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13126
13127 * fports.[ch] (scm_file_port_p): New primitive.
13128
13129 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13130
13131 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
13132 These are now defined in fports.c, strports.c and vports.c.
13133
13134 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
13135 vports.c (scm_tc16_sfport): Made variables (were macros defined in
13136 tags.h).
13137
13138 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
13139 (scm_make_sfptob): Made static. These return a type code now.
13140
13141 fports.c (scm_init_fports), strports.c (scm_init_strports),
13142 vports.c (scm_init_vports): Create the corresponding port types.
13143
13144 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
13145 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
13146
13147 * init.c (scm_init_guile_1): Make sure strports are initialized
13148 before gdbint.
13149
13150 * ports.[ch] (scm_make_port_type): Changed the return type to
13151 scm_bits_t.
13152
13153 * ports.c (scm_ports_prehistory): Don't create any port types
13154 here.
13155
13156 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
13157 against scm_tc16_fport directly.
13158
13159 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
13160
13161 * srcprop.c (scm_set_source_property_x): Fix to handle
13162 (set-source-property! <obj> 'copy <datum>) correctly.
13163
13164 2001-01-24 Gary Houston <ghouston@arglist.com>
13165
13166 * filesys.c (scm_link): docstring fix.
13167 * fports.h (scm_setfileno): obsolete declaration removed.
13168 * posix.c: bogus popen declaration removed.
13169
13170 * rdelim.c: new file, split from ioext.c.
13171 * rdelim.h: new file, split from ioext.h
13172 * Makefile.am: add rdelim.c and related files.
13173 * init.c: call scm_init_rdelim. include rdelim.h.
13174
13175 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13176
13177 This patch was sent by Martin Grabmueller and makes sure that
13178 parameter errors are reported correctly by the lexicographic
13179 ordering predicates.
13180
13181 * strorder.c (string_less_p, string_ci_less_p): New functions.
13182
13183 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
13184 functionality into string_less_p, string_ci_less_p respectively.
13185 The remaining code is just a wrapper to do the parameter
13186 checking.
13187
13188 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
13189 parameters and call string_less_p instead of scm_string_less_p.
13190
13191 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
13192 Check the parameters and call string_less_ci_p instead of
13193 scm_string_ci_less_p.
13194
13195 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13196
13197 This patch modifies scm_display_error to perform parameter
13198 checking. Thanks to Neil Jerram for the bug report.
13199
13200 * backtrace.[ch] (scm_i_display_error): New function.
13201
13202 * backtrace.c (scm_display_error): Added parameter check and
13203 extracted the core functionality into function
13204 scm_i_display_error.
13205
13206 * throw.c (handler_message): Call scm_i_display_error to display
13207 the error message.
13208
13209 2001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
13210
13211 * eval.c (SCM_APPLY): Added # args check for application of
13212 procedures with arity 3. (Thanks to Anders Holst.)
13213
13214 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
13215
13216 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
13217
13218 (SCM_OPDIRP): Deprecated.
13219
13220 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
13221 SCM_OPN.
13222
13223 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
13224 Instead, give an explicit error message in case the directory is
13225 closed.
13226
13227 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
13228 instead of SCM_OPENP and SCM_CLOSEDP.
13229
13230 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
13231
13232 2001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
13233
13234 * eval.c (inner_eval, scm_eval): Move all real functionality into
13235 inner_eval. Avoid to copy the expression twice by inlining some
13236 code from scm_i_eval.
13237
13238 2001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
13239
13240 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
13241 now has to be the last clause, as required by R5RS. Thanks to
13242 Martin Grabmueller for the patch.
13243
13244 2001-01-18 Gary Houston <ghouston@arglist.com>
13245
13246 * ioext.c: further simplify scm_read_string_x_partial by defining
13247 a macro SCM_EBLOCK.
13248
13249 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13250
13251 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
13252
13253 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
13254
13255 * __scm.h: Added comment about architecture and compiler
13256 properties that are required by guile.
13257
13258 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13259 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
13260
13261 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
13262
13263 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
13264
13265 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
13266 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
13267
13268 2001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
13269
13270 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
13271 to the names in limits.h.
13272
13273 * numbers.c (abs_most_negative_fixnum): Added.
13274
13275 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
13276 fixnum-min) special case.
13277
13278 (scm_big_and): Fix for negative first parameter.
13279
13280 (scm_bit_extract): Fix for fixnum paramters.
13281 Thanks to Rob Browning for the bug report.
13282
13283 (scm_init_numbers): Initialize abs_most_negative_fixnum.
13284
13285 2001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
13286
13287 * symbols.c (scm_symbol_bound_p): Fixed comment.
13288 Thanks to Chris Cramer.
13289
13290 2001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
13291
13292 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
13293 Thanks to Bill Schottstaedt.
13294
13295 2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
13296
13297 from Matthias Köppe:
13298
13299 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
13300 casts its result, so doesn't yield an lvalue per ANSI C.
13301
13302 * goops.c (s_scm_sys_set_object_setter_x): use
13303 SCM_SET_ENTITY_SETTER.
13304 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
13305
13306 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
13307 its result, so doesn't yield an lvalue per ANSI C.
13308 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
13309 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
13310 SCM_GC_SET_CARD_FLAGS.
13311 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
13312
13313 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
13314
13315 2001-01-08 Gary Houston <ghouston@arglist.com>
13316
13317 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
13318 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
13319 socket.c (scm_recvfrom): use the new macro, plus minor docstring
13320 changes.
13321 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
13322 for fdes. if current input port is used, check that it's a file
13323 port.
13324
13325 2001-01-06 Gary Houston <ghouston@arglist.com>
13326
13327 * ioext.c (scm_read_string_x_partial): new procedure, implements
13328 read-string!/partial.
13329 * ports.c (scm_take_from_input_buffers): new procedure used by
13330 scm_read_string_x_partial.
13331 (scm_drain_input): use scm_take_from_input_buffers.
13332
13333 2001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
13334
13335 * validate.h (SCM_VALIDATE_NUMBER): New.
13336
13337 2001-01-03 Michael Livshin <mlivshin@bigfoot.com>
13338
13339 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
13340 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
13341 SET_DESTROYED): new defines/macros.
13342 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
13343 (add_to_live_list): takes a `guardian_t *' now, not SCM.
13344 (guardian_print): print more info.
13345 (guardian_apply): check if the guardian is destroyed, and throw an
13346 error if so. take one more optional argument `throw_p'.
13347 (scm_guard): depending on the value of `throw_p', return a boolean
13348 result.
13349 (scm_get_one_zombie): remove redundant property test.
13350 (guardian_t): represent the various (currently 3, I hope nothing
13351 more gets added) boolean fields as bit flags.
13352 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
13353 (scm_destroy_guardian_x): new procedure.
13354
13355 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
13356 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
13357
13358 2001-01-01 Gary Houston <ghouston@arglist.com>
13359
13360 * fports.c (fport_write): bugfix: handle short writes for
13361 unbuffered ports too. optimize the buffered case by minimizing
13362 the number of write/flush calls.
13363 (write_all): new helper procedure.
13364
13365 The ChangeLog continues in the file: "ChangeLog-2000"