* futures.c (mark_futures): Don't need to mark data of recycled
[bpt/guile.git] / libguile / ChangeLog
1 2003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2
3 * futures.c (mark_futures): Don't need to mark data of recycled
4 futures.
5 (scan_futures, cleanup_undead): Be smarter about marking
6 futures---avoid unnecessary passes through future lists.
7
8 * futures.h, futures.c: New files; Introduced recycling of
9 futures. For fine-grained threading this lifts performance to
10 another level. We can now use parallelization in inner loops of
11 Guile programs without impossible overhead.
12
13 * threads.h, threads.c: Moved futures to their own file.
14
15 * Makefile.am (libguile_la_SOURCES): Added futures.c.
16 (DOT_X_FILES): Added futures.x.
17 (DOT_DOC_FILES): Added futures.doc.
18 (modinclude_HEADERS): Added futures.h.
19
20 * threads.c, threads.h (scm_i_create_thread): Renamed from
21 create_thread and made global.
22
23 * futures.c (scm_make_future): New procedure.
24
25 * eval.c: #include "libguile/futures.h".
26
27 * init.c: #include "futures.h"
28 (scm_init_guile_1): Call scm_init_futures.
29
30 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
31
32 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
33
34 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
35 functions.
36
37 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
38
39 2003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
40
41 * threads.c (create_thread): Don't unwind dynwind chain of parent
42 thread before creation. Just start the new thread with an empty
43 dynwind chain.
44
45 2003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
46
47 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
48
49 2003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
50
51 * threads.c (scm_timed_wait_condition_variable): Support timed
52 waiting also for simple condition variables.
53
54 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
55 of calling the procedure change-object-class.
56
57 2003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
58
59 * ramap.c (scm_ramapc): Typo in error message.
60
61 2003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
62
63 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
64 slots with instance allocation.
65
66 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
67 class.
68 (scm_compute_applicable_methods): Use scm_generic_function_methods.
69
70 * goops.c (scm_generic_function_methods): Support extended
71 generic functions.
72
73 2002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
74
75 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
76 Thanks to Neil for pointing this out!
77
78 2002-12-29 Neil Jerram <neil@ossau.uklinux.net>
79
80 * lang.h: Remove declarations matching definitions removed from
81 lang.c (just below).
82
83 2002-12-28 Neil Jerram <neil@ossau.uklinux.net>
84
85 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
86 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
87 and already commented out.
88
89 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
90 scm_lreadparen): Support reading vectors with Elisp syntax if
91 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
92 is not currently defined, and there isn't even a configure switch
93 to enable it yet.)
94
95 2002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
96
97 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
98 builds work.
99 (EXTRA_DIST): Added version.h.in.
100
101 2002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
102
103 This change makes it possible for one thread to do lazy sweeping
104 while other threads are running. Now only the mark phase need to
105 have all threads asleep. We should look further into this issue.
106 Presently, I've put the locking of scm_i_sweep_mutex at
107 "conservative" places due to my current lack of knowledge about
108 the garbage collector. Please feel free to restrict these regions
109 further to allow for maximal parallelism!
110
111 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
112
113 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
114 scm_gc_register_collectable_memory): Substitute locking of
115 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
116 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
117 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
118 the single-thread section (which now only contains the mark
119 phase).
120 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
121 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
122
123 * threads.c (gc_section_mutex): Removed.
124
125 2002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
126
127 * threads.c (create_thread): Clear parent field in root state in
128 order not to unnecessarily remember dead threads.
129
130 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
131 (scm_trampoline_1, scm_trampoline_2): Use them.
132
133 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
134
135 Partial introduction of real plugin interface.
136
137 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
138 (EXTRA_DIST): Added threads-plugin.c.
139
140 * threads-plugin.h, threads-plugin.c: New files.
141
142 * threads.h: #include "libguile/threads-plugin.h".
143
144 * threads.c: #include "libguile/threads-plugin.c".
145
146 * pthread-threads.c: Temporarily remove debugging functions.
147
148 * threads.c, threads.h (scm_yield): Added back.
149
150 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
151
152 * threads.c (really_launch): Detach before unlocking
153 thread_admin_mutex in order not to risk being joined.
154 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
155 thread_admin_mutex locked during GC.
156
157 * pthread-threads.c, pthread-threads.h: Improvements to debugging
158 functions.
159
160 2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
161
162 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
163 support for debugging mutex operations.
164
165 * threads.c (scm_thread): Removed filed joining_threads.
166 (thread_print): Print thread number as well as address of thread
167 structure.
168 (scm_join_thread): Bugfix.
169 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
170 scm_timed_wait_condition_variable, scm_signal_condition_variable,
171 scm_broadcast_condition_variable): Use the low-level API.
172 (scm_all_threads): Return copy of thread list (to prevent
173 unintended destruction).
174 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
175
176 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
177 pthread "native" recursive mutex support.
178
179 2002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
180
181 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
182 Simply lock a thread C API recursive mutex.
183 (SCM_NONREC_CRITICAL_SECTION_START,
184 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
185 SCM_REC_CRITICAL_SECTION_END): Removed.
186
187 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
188 direct calls to scm_rec_mutex_lock / unlock around the three calls
189 to scm_m_expand_body.
190
191 * eval.c, eval.h (promise_free): New function.
192 (scm_force): Rewritten; Now thread-safe; Removed
193 SCM_DEFER/ALLOW_INTS.
194
195 * pthread-threads.h: Added partially implemented plugin interface
196 for recursive mutexes. These are, for now, only intended to be
197 used internally within the Guile implementation.
198
199 * pthread-threads.c: New file.
200
201 * threads.c: Conditionally #include "pthread-threads.c".
202
203 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
204 thread-safe;
205
206 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
207 SCM_GLOBAL_REC_MUTEX): New macros.
208
209 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
210 macros---use mutexes instead.
211
212 * tags.h (SCM_IM_FUTURE): New tag.
213
214 * eval.c (scm_m_future): New primitive macro.
215 (SCM_CEVAL): Support futures.
216 (unmemocopy): Support unmemoization of futures.
217
218 * print.c (scm_isymnames): Name of future isym.
219
220 * version.c: Unmade some changes to my private copy that got
221 committed by mistake.
222
223 2002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
224
225 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
226 2002-12-10.
227
228 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
229
230 * gc.c (scm_gc_sweep): Call it here instead, which is a more
231 logical place.
232
233 * threads.c (create_thread): Remember root object until the handle
234 of the new thread is on all_threads list.
235
236 * root.c (scm_make_root): Moved copying of fluids until after
237 creation of root handle so that the fluids are GC protected. Also
238 removed the critical section.
239
240 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
241
242 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
243
244 * gc-malloc.c (malloc_mutex): New mutex.
245 (scm_gc_malloc_prehistory): Initialize it.
246 (scm_realloc): Serialize call to realloc
247 (scm_calloc): Same for calloc.
248 Thanks to Wolfgang Jaehrling!
249 (Now we have to make sure all calls to malloc/realloc are made
250 through scm_malloc.)
251
252 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
253
254 * threads.c (really_launch): Release heap (to prevent deadlock).
255 (create_thread): Release heap before locking thread admin mutex.
256
257 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
258
259 * threads.c (scm_i_thread_invalidate_freelists): New
260 function.
261
262 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
263
264 * modules.c (scm_export): Inserted a return statement.
265
266 2002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
267
268 * modules.c (scm_export): new function
269
270 * gc-card.c: add a note about malloc()/free() overhead.
271
272 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
273
274 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
275 in srcdir.
276
277 2002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
278
279 These changes remove scm_ints_disabled (which hasn't has any
280 effect in Guile for quite some time).
281
282 * async.c, error.h (scm_ints_disabled): Removed.
283
284 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
285 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
286 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
287 (old_ints): Removed.
288
289 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
290 critical section.
291 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
292 SCM_ALLOW_INTS.
293
294 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
295
296 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
297 Removed accidental #if 0 around these functions.
298
299 These changes are the start of support for preemptive
300 multithreading. Marius and I have agreed that I commit this code
301 into the repository although it isn't thoroughly tested and surely
302 introduces many bugs. The bugs should only be exposed when using
303 threads, though. Signalling and error handling for threads is
304 very likely broken. Work on making the implementation cleaner and
305 more efficient is needed.
306
307 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
308 (SCM_NONREC_CRITICAL_SECTION_START,
309 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
310 SCM_REC_CRITICAL_SECTION_END): New macros.
311 (SCM_CRITICAL_SECTION_START/END): Defined here.
312
313 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
314 the three calls to scm_m_expand_body.
315
316 * gc.h: #include "libguile/pthread-threads.h";
317 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
318
319 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
320 scm_t_key;
321
322 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
323 access.
324
325 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
326
327 * gc-freelist.c, threads.c (really_launch): Use
328 SCM_FREELIST_CREATE.
329
330 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
331
332 * gc.c (scm_i_expensive_validation_check, scm_gc,
333 scm_gc_for_newcell): Put threads to sleep before doing GC-related
334 heap administration so that those pieces of code are executed
335 single-threaded. We might consider rewriting these code sections
336 in terms of a "call_gc_code_singly_threaded" construct instead of
337 calling the pair of scm_i_thread_put_to_sleep () and
338 scm_i_thread_wake_up (). Also, we would want to have as many of
339 these sections eleminated.
340
341 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
342
343 * inline.h: #include "libguile/threads.h"
344
345 * pthread-threads.h: Macros now conform more closely to the
346 pthreads interface. Some of them now take a second argument.
347
348 * threads.c, threads.h: Many changes.
349
350 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
351
352 * Makefile.am (version.h): Changed $^ --> $< in rule for
353 version.h.
354
355 2002-12-08 Rob Browning <rlb@defaultvalue.org>
356
357 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
358 (SCM_MINOR_VERSION): use @--@ substitution now.
359 (SCM_MICRO_VERSION): use @--@ substitution now.
360 (scm_effective_version): new function prototype.
361
362 * version.c (scm_effective_version): new function, also add
363 effective-version.
364
365 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
366 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
367 SCM_LIBRARY_DIR.
368 (version.h): generate this here rather than configure.in. This
369 approach tracks source edits better (i.e. more immediately).
370 Might be worth considering for other .in files too.
371
372 2002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
373
374 Reorganized thread package selection. A thread package now only
375 implements a small set of pthread like functions and Guile
376 implements the rest on top of that. Guile's implementation is
377 what the "coop-pthreads" package has been previously. Support for
378 "coop" threads has been removed until I get time to add it again.
379
380 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
381 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
382 null-threads.c, coop-pthreads.c.
383 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
384 pthread-threads.h.
385
386 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
387
388 * threads.h: Do not include "libguile/coop-defs.h". Include
389 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
390 (previously deprecated) C level thread API prototypes. They are
391 now in the thread package specific headers, "null-threads.h" and
392 "pthread-threads.h".
393 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
394 New.
395 (scm_threads_init): Removed.
396 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
397 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
398 SCM_I_THREAD_SWITCH_COUNT): Define here.
399 (scm_single_thread_p): Removed.
400 (scm_call_with_new_thread): Take two args directly instead of list
401 of two args.
402 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
403 SCM_SET_THREAD_LOCAL_DATA): Define here.
404
405 * threads.c: Merged with "coop-pthreads.c".
406
407 * null-threads.h: Implement pthread-like API as a set of macros.
408
409 * pthread-threads.h: New, implement pthread-like API by deferring
410 to pthread itself.
411
412 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
413 has been lost in the reorganization.
414
415 2002-12-01 Mikael Djurfeldt <mdj@linnaeus>
416
417 The following change makes it possible to move procedure
418 application dispatch outside inner loops. The motivation was
419 clean implementation of efficient replacements of R5RS primitives
420 in SRFI-1.
421
422 The semantics is clear: scm_trampoline_N returns an optimized
423 version of scm_call_N (or NULL if the procedure isn't applicable
424 on N args).
425
426 Applying the optimization to map and for-each increases efficiency
427 noticeably. For example, (map abs ls) is 8 times faster than
428 before.
429
430 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
431
432 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
433
434 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
435 (map, for-each): Handle also application on two args as a special
436 case; Use trampolines.
437
438 Other changes:
439
440 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
441 (subr2oless): Removed.
442 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
443 vector GC protected.
444
445 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
446 scm_out_of_range.
447
448 2002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
449
450 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
451
452 2002-11-17 Mikael Djurfeldt <mdj@linnaeus>
453
454 * debug.c (scm_make_iloc): Added missing "return".
455
456 2002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
457
458 * strports.c (scm_eval_string_in_module): Validate second arg to
459 be a module. Thanks to Arno Peters!
460
461 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
462
463 * .cvsignore: remove goops.c
464
465 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
466
467 * modules.c (scm_env_top_level, scm_lookup_closure_module,
468 module_variable, scm_module_lookup_closure,
469 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
470 scm_system_module_env_p): Don't compare SCM values with C
471 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
472 over SCM_NFALSEP.
473
474 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
475
476 * eval.h (SCM_MAKE_ILOC): New macro.
477
478 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
479 the iloc bitpattern here.
480
481 2002-11-14 Mikael Djurfeldt <mdj@linnaeus>
482
483 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
484 part of the API, otherwise it's difficult to write Guile
485 extensions using non-blocking I/O => moved #include
486 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
487
488 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
489 s_unlock_mutex.
490
491 2002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
492
493 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
494 are defined in configure.in.
495
496 * threads.c: Removed SCM_API from function definitions. SCM_API
497 is only for declarations.
498
499 2002-11-07 Mikael Djurfeldt <mdj@linnaeus>
500
501 * coop-pthreads.h: Added support for thread specific data to the
502 generic C API for the coop-pthreads case.
503
504 * threads.c, threads.h (scm_cond_init): Undo unintentional API
505 change.
506 (scm_cond_broadcast): Added missing function.
507
508 2002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
509
510 * coop.c (coop_next_runnable_thread): Removed, wich should have
511 happened when GUILE_ISELECT was hard-wired.
512
513 2002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
514
515 * Makefile.am (libguile_la_SOURCES): Added threads.c
516 (DOT_DOC_FILES): Added threads.doc.
517 (DOT_X_FILES): Added threads.x.
518 (EXTRA_libguile_la_SOURCES): Removed threads.c.
519 (noinst_HEADERS): Added coop-pthreads.c.
520 (modinclude_HEADERS): Added coop-pthreads.h.
521
522 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
523 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
524
525 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
526 Thanks to Bill Schottstaedt!
527
528 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
529
530 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
531 SCM_COPT_THREADS is defined.
532 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
533 is defined.
534
535 * coop-pthreads.c: Some harmless renamings of internal stuff.
536 (create_thread): New, generalized version of
537 scm_call_with_new_thread.
538 (scm_call_with_new_thread): Use it.
539 (scm_spawn_thread): New, use create_thread.
540
541 2002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
542
543 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
544 start testing it now.
545
546 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
547 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
548 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
549 is defined.
550
551 2002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
552
553 * scmsigs.c (signal_cell_handlers, install_handler_data,
554 scm_delq_spine_x, really_install_handler, install_handler): New
555 scheme for triggering signal handlers, to simplify take_signal.
556 (take_signal): Simplified, to avoid race conditions.
557 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
558 hasn't exited yet.
559
560 * async.c (scm_async_click): Reset pending_asyncs, handle
561 signal_asyncs. Don't set cdr of a non-signal async to #f.
562 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
563 always. Set pending_asyncs.
564 (scm_system_async_mark_for_thread): Check that thread has not
565 exited.
566 (scm_unmask_signals, decrease_block): Call scm_async_click after
567 block_asyncs becomes zero.
568
569 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
570 active_asyncs.
571
572 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
573 fields.
574 * root.c (root_mark): Mark them.
575 (make_root): Initialize them.
576
577 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
578 USE_COOP_THREADS.
579 (scm_internal_select): Define one version for USE_COOP_THREADS and
580 one for USE_NULL_THREADS.
581 (scm_init_iselect): Likewise.
582
583 * inline.h (scm_cell, scm_double_cell): Also allow
584 USE_COPT_THREADS to not protect the slot initializers.
585
586 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
587 because threads need to be initialized before the stack, but
588 gsubrs such as scm_timed_condition_variable_wait can only be
589 created later.
590
591 * threads.h: Include "coop-pthreads.h" when requested.
592 (scm_threads_make_mutex, scm_threads_lock_mutex,
593 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
594 not implemented anyway.
595 (scm_init_thread_procs, scm_try_mutex,
596 scm_timed_condition_variable_wait,
597 scm_broadcast_condition_variable, scm_c_thread_exited_p,
598 scm_thread_exited_p): New prototypes.
599 (struct timespec): Define if not already defined.
600 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
601 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
602 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
603 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
604 deprecated.
605
606 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
607 requested.
608 (scm_thread_exited_p): New.
609 (scm_try_mutex, scm_broadcast_condition_variable): Newly
610 registered procedures.
611 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
612 Use the latter as the procedure for "wait-condition-variable",
613 thus offering a optional timeout parameter to Scheme.
614 (scm_wait_condition_variable): Implement in terms of
615 scm_timed_wait_condition_variable.
616 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
617 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
618 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
619 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
620 scm_make_mutex, etc, and deprecate.
621 (scm_init_threads): Do not create smobs, leave this to
622 scm_threads_init. Do not include "threads.x" file.
623 (scm_init_thread_procs): New, include "threads.x" here.
624
625 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
626 scm_null_mutex_lock, scm_null_mutex_unlock,
627 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
628 scm_null_condvar_wait, scm_null_condvar_signal,
629 scm_null_condvar_destroy): Removed.
630 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
631 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
632 scm_cond_destory): Do not define, they are now deprecated and
633 handled by threads.{h,c}.
634
635 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
636 (scm_threads_init): Create smobs here, using the appropriate
637 sizes.
638 (block): Removed, now unused.
639 (scm_c_thread_exited_p): New.
640 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
641 scm_null_mutex_destroy, scm_null_condvar_init,
642 scm_null_condvar_wait, scm_null_condvar_signal,
643 scm_null_condvar_destroy): Removed and updated users to do their
644 task directly.
645 (scm_try_mutex, timeval_subtract,
646 scm_timed_wait_condition_variable,
647 scm_broadcast_condition_variable): New.
648 (scm_wait_condition_variable): Removed.
649
650 * coop-defs.h (coop_m): Added 'level' field.
651 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
652 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
653 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
654 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
655 define.
656 (coop_condition_variable_broadcast): New.
657
658 * coop-threads.c (scm_threads_init): Create smobs here, using the
659 appropriate sizes.
660 (scm_c_thread_exited_p, scm_try_mutex,
661 scm_timed_wait_condition_variable,
662 scm_broadcast_condition_variable): New.
663 (scm_wait_condition_variable): Removed.
664
665 * coop.c (coop_new_mutex_init): Initialize level.
666 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
667 level.
668 (coop_condition_variable_signal): Renamed to
669 coop_condition_variable_broadcast and reimplemented in terms of
670 that. Thus...
671 (coop_condition_variable_broadcast): New.
672
673 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
674
675 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
676
677 2002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
678
679 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
680 of system headers.
681
682 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
683 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
684 give better error messages. Thanks to Bill Schottstaedt!
685
686 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
687
688 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
689 scm_definedp to scm_defined_p and deprecated scm_definedp.
690
691 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
692
693 * async.h, async.c (scm_system_async): Fixed deprecation to work
694 correctly when deprecated features are excluded.
695
696 2002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
697
698 * async.c (scm_system_async_mark_for_thread): Validate thread
699 argument.
700
701 * coop-threads.c (scm_i_thread_root): Do not validate argument.
702
703 * feature.c (scm_init_feature): Don't add 'threads' for
704 USE_NULL_THREADS.
705
706 * inline.h (scm_cell, scm_double_cell): Also allow
707 USE_NULL_THREADS to not protect the slot initializers.
708
709 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
710 "USE_THREAD".
711
712 * Makefile.am (noinst_HEADERS): Added null-threads.c.
713 (modinclude_HEADERS): Added null-threads.h.
714
715 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
716 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
717 (scm_init_threads): Use generic type names scm_t_mutex and
718 scm_t_cond instead of coop_m and coop_c.
719
720 * null-threads.c, null-threads.h: New files.
721
722 2002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
723
724 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
725 This is to support makes that know about "$<" only in pattern
726 rules, like Sun's make.
727
728 2002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
729
730 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
731 substitution. Thanks to David Allouche!
732
733 2002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
734
735 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
736 !SCM_ENABLE_DEPRECATED.
737
738 2002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
739
740 * async.c (scm_system_async_mark_for_thread): Only call
741 scm_i_thread_root when USE_THREADS is defined. Use scm_root
742 otherwise.
743
744 * scmsigs.c (take_signal): Only call scm_i_thread_root when
745 USE_THREADS is defined. Use scm_root otherwise.
746 (scm_sigaction_for_thread): Ignore THREAD argument when
747 USE_THREADS is not defined. Also, move THREAD argument defaulting
748 out of HAVE_SIGACTION section, which was a bug.
749
750 2002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
751
752 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
753 signal_handlers, not the closure that is used as the async.
754 The closure is stored in signal_handler_cells, as previously.
755
756 2002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
757
758 * root.h (scm_root_state): Added 'block_async' slot.
759 (scm_active_asyncs): Removed abbrev.
760 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
761
762 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
763 abbrev.
764
765 * async.h (scm_call_with_blocked_asyncs,
766 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
767 scm_c_call_with_unblocked_asyncs): New prototypes.
768 (scm_mask_signals, scm_unmask_signals): Deprecated.
769 (scm_mask_ints): Turned into a macro.
770 * async.c (scm_mask_ints): Removed.
771 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
772 this should not be necessary.
773 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
774 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
775 deprecation warning and check for errornous use. Set block_asyncs
776 instead of scm_mask_ints.
777 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
778 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
779 scm_c_call_with_unblocked_asyncs): New.
780
781 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
782 Asyncs are enabled by default.
783
784 2002-10-09 Neil Jerram <neil@ossau.uklinux.net>
785
786 * vports.c (scm_make_soft_port): Allow vector argument to carry a
787 6th element: an input waiting thunk.
788 (sf_input_waiting): New.
789
790 2002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
791
792 * root.c (root_mark): Mark active_asyncs slot.
793
794 * async.c (scm_async_click): Set the cdr of a executed handler
795 cell to SCM_BOOL_F, not SCM_EOL.
796 (scm_i_queue_async_cell): Queue the cell at the end of the list,
797 and only if the handler procedure is not already present.
798 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
799 with SCM_BOOL_F.
800 * scmsigs.c (scm_sigaction_for_thread): Likewise.
801
802 2002-10-04 Rob Browning <rlb@defaultvalue.org>
803
804 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
805
806 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
807 scm_lt_dlopenext, and scm_lt_dlerror.
808 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
809 and scm_lt_dlerror.
810 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
811 and scm_lt_dlerror.
812 (sysdep_dynl_init): switch to scm_lt_dlinit();
813
814 * Makefile.am (libguile_la_LIBADD): switch to use
815 libguile-ltdl.la.
816
817 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
818
819 2002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
820
821 * scmsigs.h (scm_sigaction_for_thread): New prototype.
822 * scmsigs.c (got_signal): Removed.
823 (signal_handler_cells, signal_handler_threads): New.
824 (take_signal): Queue the cell of the signal for the specified
825 thread. Reset the signal handler on systems that don't have
826 sigaction.
827 (sys_deliver_signals): Removed.
828 (close_1): New.
829 (scm_sigaction_for_thread): Renamed from scm_sigaction and
830 extended to also set the thread of a signal and allocate a cell
831 for it. Keep the Scheme name "sigaction". Check that signum is
832 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
833 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
834 (scm_init_scmsigs): Allocate signal_handler_cells and
835 signal_handler_threads vectors.
836
837 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
838 that system asnycs and user asyncs are separated. Reimplemented
839 system asyncs to work per-thread.
840
841 * gc.c (scm_init_gc): Do not use scm_system_async.
842
843 * async.h (scm_asyncs_pending, scm_set_tick_rate,
844 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
845 Removed prototypes.
846 (scm_i_queue_async_cell): New.
847
848 * __scm.h (scm_asyncs_pending_p): Removed.
849 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
850 scm_asyncs_pending_p.
851
852 * async.h (scm_system_async_mark_for_thread): New prototype.
853
854 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
855
856 * root.h (scm_root_state): Added new "active_asyncs" slot.
857 * root.c (scm_make_root): Initialize it to SCM_EOL.
858
859 * coop-defs.h (coop_t): Added new "handle" slot.
860 * coop-threads.c (all_threads, scm_current_thread,
861 scm_all_threads, scm_i_thread_root): New.
862 (scm_threads_init): Add main thread to all_threads.
863 (scheme_launch_thread): Remove thread from all_threads when it
864 terminates.
865 (scm_call_with_new_thread): Initialize handle slot of coop_t
866 structure and add new thread to all_threads.
867 (scm_spawn_thread): Likewise.
868
869 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
870 * threads.c (scm_current_thread, scm_all_threads): Register as
871 primitives.
872
873 * dynl.c: Use scm_lt_ prefix for libltdl functions.
874
875 2002-09-29 Neil Jerram <neil@ossau.uklinux.net>
876
877 * script.c (scm_compile_shell_switches): Fix bad spelling of
878 `explicitly' in comment.
879
880 2002-09-28 Neil Jerram <neil@ossau.uklinux.net>
881
882 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
883 Refer to provided? in doc string rather than deprecated feature?.
884
885 2002-09-24 Gary Houston <ghouston@arglist.com>
886
887 * inline.h (scm_double_cell): prevent reordering of statements
888 with any following code (for GCC 3 strict-aliasing).
889 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
890 the earlier version of the reordering prevention.
891
892 2002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
893
894 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
895
896 2002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
897
898 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
899 protection.
900
901 2002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
902
903 * inline.h: include stdio.h
904
905 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
906
907 2002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
908
909 * gc-segment.c (scm_i_make_initial_segment): check user settings
910 for sanity.
911
912 * gc-malloc.c (scm_gc_init_malloc): check user settings for
913 sanity.
914
915 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
916
917 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
918
919 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
920 these won't ever wrap around with high memory usage. Thanks to
921 Sven Hartrumpf for finding this.
922
923 * gc-freelist.c: include <stdio.h>
924
925 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
926
927 2002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
928
929 * vectors.h (SCM_VECTOR_REF): New.
930
931 * snarf.h (SCM_DEFINE_PUBLIC): New.
932
933 2002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
934
935 * socket.c (scm_addr_vector): Added size of address to arguments.
936 Use it to avoid accessing a non-existent path in a sockaddr_un.
937 Changed all callers.
938
939 2002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
940
941 * gc.h: remove DOUBLECELL card flags.
942
943 * gc-malloc.c (scm_calloc): try to use calloc() before calling
944 scm_realloc().
945
946 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
947 init loop; handle this from scm_init_card_freelist()
948
949 * gc-card.c (scm_init_card_freelist): init bit vector here.
950
951 * numbers.c (scm_make_real): prevent reordering of statements
952 num2float.i.c (FLOAT2NUM): idem
953
954 2002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
955
956 * eval.h: prepend libguile/ to include path
957
958 2002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
959
960 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
961 years. Thanks to Martin Grabmüller!
962
963 2002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
964
965 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
966 unsigned numbers for computing minimum heap increment. This
967 prevents weird results when a a negative minimum increment is
968 computed.
969
970 2002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
971
972 * gc_os_dep.c: When we have __libc_stack_end, use that directly
973 instead of the old tricks.
974
975 * guile-snarf.in: Do not expect the input file to be the first
976 argument after the optional "-o" option, just pass everything to
977 the pre-processor without extracting the input file name.
978
979 2002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
980
981 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
982 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
983
984 2002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
985
986 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
987 Bill Schottstaedt for the bug report
988
989 2002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
990
991 * print.c (scm_iprin1): Print primitives generics always as
992 "primitive-generic" even when they have no primitive methods yet.
993
994 2002-08-17 Gary Houston <ghouston@arglist.com>
995
996 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
997 call.
998
999 2002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1000
1001 * ports.c (scm_add_to_port_table): small bugfix.
1002
1003 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
1004 malloc.
1005
1006 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
1007 only use SCM_MIN_HEAP_SEG_SIZE.
1008
1009 * ports.c (scm_add_to_port_table): add backwards compatibility
1010 function
1011
1012 * ports.h: use scm_i_ prefix for port table and port table size.
1013
1014 2002-08-15 Mikael Djurfeldt <mdj@linnaeus>
1015
1016 * vports.c (scm_make_soft_port): Initialize pt variable.
1017
1018 2002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
1019
1020 * strports.h (scm_c_eval_string_in_module,
1021 scm_eval_string_in_module): New prototypes.
1022 * strports.c (scm_eval_string_in_module): New, but use
1023 "eval-string" as the Scheme name and make second parameter
1024 optional.
1025 (scm_eval_string): Implement using scm_eval_string_in_module.
1026 (scm_c_eval_string_in_module): New.
1027 Thanks to Ralf Mattes for the suggestion!
1028
1029 2002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1030
1031 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
1032 message and abort.
1033
1034 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
1035
1036 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
1037 stead of scm_t_port*. The function now takes a tag argument.
1038
1039 2002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1040
1041 * gc.h: add scm_debug_cells_gc_interval to public interface
1042
1043 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
1044
1045 * gc.c (scm_i_expensive_validation_check): separate expensive
1046 validation checks from cheap ones.
1047
1048 2002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1049
1050 * read.c (scm_input_error): new function: give meaningful error
1051 messages, and throw read-error
1052
1053 * gc-malloc.c (scm_calloc): add scm_calloc.
1054
1055 2002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1056
1057 * tags.h: remove GC bits documentation from the tags table.
1058
1059 * read.c (INPUT_ERROR): Prepare for file:line:column error
1060 messages for errors in scm_lreadr() and friends.
1061
1062 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1063
1064 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
1065 implementation).
1066 (scm_gc_calloc): new function
1067
1068 2002-08-04 Han-Wen <hanwen@cs.uu.nl>
1069
1070 * ports.c (scm_new_port_table_entry): init port entry to 0
1071 completely.
1072
1073 * ports.c (scm_new_port_table_entry): change function from
1074 scm_add_to_port_table. This prevents cells with null-pointers from
1075 being exposed to GC.
1076
1077 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
1078 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
1079
1080 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
1081 to gc-stats.
1082
1083 * numbers.c (big2str): return "0" for 0 iso. ""
1084
1085 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
1086 private-gc.h: new file
1087
1088 * gc.c: completely revised and cleaned up the GC. It now uses lazy
1089 sweeping. More documentation in workbook/newgc.text
1090
1091 2002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1092
1093 * random.c (rstate_free): Return zero.
1094
1095 2002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
1096
1097 * environments.c (remove_key_from_alist): Removed.
1098
1099 (obarray_remove): Simplified.
1100
1101 2002-07-24 Stefan Jahn <stefan@lkcc.org>
1102
1103 * continuations.h: ia64: Include <signal.h> before
1104 <sys/ucontext.h>.
1105
1106 2002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1107
1108 * modules.c (scm_sym2var): Don't compare SCM values with ==.
1109
1110 2002-07-21 Han-Wen <hanwen@cs.uu.nl>
1111
1112 * goops.c (scm_compute_applicable_methods): use
1113 scm_remember_upto_here_1 iso scm_remember_upto_here
1114
1115 * macros.c: include deprecation.h
1116
1117 * vectors.c (scm_vector_move_right_x): remove side effect in
1118 macro arg.
1119 (scm_vector_move_left_x): idem.
1120
1121 * net_db.c, posix.c, socket.c: variable naming: change ans to
1122 result.
1123
1124 * sort.c (scm_merge_vector_x): accept vector as argument
1125 iso. SCM*. This is needed for full GC correctness.
1126
1127 * gc.h: undo previous undocumented changes related to #ifdef
1128 GENGC.
1129
1130 2002-07-20 Han-Wen <hanwen@cs.uu.nl>
1131
1132 * *.c: add space after commas everywhere.
1133
1134 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
1135 Document cases where SCM_WRITABLE_VELTS() is used.
1136
1137 * vectors.h (SCM_VELTS): prepare for write barrier, and let
1138 SCM_VELTS() return a const pointer
1139 (SCM_VECTOR_SET): add macro.
1140
1141 2002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
1142
1143 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
1144 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
1145 Deprecated the special kind of built-in dynamic syntax transformer
1146 that was inaccurately named "macro". Note: The built-in syntax
1147 transformers that are named "mmacro" or "memoizing-macro" still
1148 exist, and it is these which come much closer to what one would
1149 call a macro.
1150
1151 2002-07-13 Neil Jerram <neil@ossau.uklinux.net>
1152
1153 * eval.c (unmemocopy): Fix for
1154 1001-local-eval-error-backtrace-segfaults (unmemoization crash
1155 with internal definitions and local-eval).
1156
1157 2002-07-12 Gary Houston <ghouston@arglist.com>
1158
1159 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
1160 defined. They don't do anything useful, especially since the
1161 only case where DYNAMIC_LINKING is undefined seems to be
1162 when --with-modules=no is given to configure, which is basically
1163 requesting that the "dynamic linking module" be omitted.
1164
1165 * Makefile.am (libguile_la_SOURCES): move dynl.c from
1166 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
1167
1168 * extensions.c (load_extension): check DYNAMIC_LINKING for
1169 scm_dynamic_call.
1170 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
1171 scm_init_dynamic_linking.
1172
1173 2002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
1174
1175 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
1176 check for Cygwin when including <winsock2.h>, this is already
1177 check for by configure. Thus, revert change from 2002-07-07.
1178
1179 2002-07-10 Gary Houston <ghouston@arglist.com>
1180
1181 * eq.c: include <string.h>
1182 * dynl.c: docstring editing.
1183
1184 2002-07-09 Gary Houston <ghouston@arglist.com>
1185
1186 * dynl.c (scm_dynamic_call): docstring editing.
1187
1188 2002-07-08 Rob Browning <rlb@defaultvalue.org>
1189
1190 * gc_os_dep.c: HURD fixes.
1191
1192 2002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
1193
1194 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
1195
1196 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
1197 this should be compiled for BUILD host.
1198 Override default rule for
1199 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
1200 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
1201 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
1202
1203 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
1204 <winsock2.h> on Cygwin even when we have it.
1205
1206 2002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
1207
1208 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
1209 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
1210 the code. Full number of arguments checking of closures is
1211 mandatory now. However, the option to disable the checking has
1212 most probably not been used anyway.
1213
1214 2002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
1215
1216 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
1217 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
1218 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
1219 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
1220 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
1221 (scm_source_properties, scm_set_source_properties_x,
1222 scm_source_property): Removed compile time option SCM_RECKLESS to
1223 clean up the code. Full number of arguments checking of closures
1224 is mandatory now. However, the option to disable the checking has
1225 most probably not been used anyway.
1226
1227 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
1228 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
1229
1230 2002-06-30 Gary Houston <ghouston@arglist.com>
1231
1232 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
1233 do anything useful. Added a comment about need for a mutex if
1234 pre-emptive threading is supported.
1235
1236 * posix.c (scm_convert_exec_args), dynl.c
1237 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
1238 allocate_string_pointers. 2) simplified: don't reallocate the
1239 strings, just make an array of pointers 3) avoid memory leaks on
1240 error 4) let the procedure report errors in its own name.
1241 Consequences: 1) the procedures now assume that SCM strings are
1242 nul-terminated, which should always be the case. 2) Since strings
1243 are not reallocated, it's now possible for strings passed to
1244 dynamic-args-call to be mutated.
1245
1246 2002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
1247
1248 * __scm.h, eval.c, eval.h: Removed compile time option
1249 MEMOIZE_LOCALS to clean up the code. Now, caching of local
1250 variable positions during memoization is mandatory. However, the
1251 option to disable the caching has most probably not been used
1252 anyway.
1253
1254 2002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
1255
1256 * print.c (scm_simple_format): Print missing part of format before
1257 ~% control. Thanks to Daniel Skarda!
1258
1259 2002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
1260
1261 * mkstemp.c: Added exception notice to license statement.
1262
1263 2002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
1264
1265 * numbers.c (mem2ureal): When returning an inexact zero, make sure
1266 it is represented as a floating point value so that we can change
1267 its sign.
1268
1269 From John W. Eaton <jwe@bevo.che.wisc.edu>
1270
1271 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
1272
1273 2002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
1274
1275 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
1276 in addition to `i386'. Thanks to Dale P. Smith.
1277
1278 2002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
1279
1280 * eq.c (real_eqv): New.
1281 (scm_eqv_p): Use it when comparing reals and complexes.
1282
1283 * numbers.c: Include <string.h>, for strncmp.
1284 (mem2complex): Do not create negative NaNs.
1285 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
1286 NaN.
1287 (scm_inexact_to_exact): Signal error when converting a NaN.
1288
1289 2002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
1290
1291 * posix.c (scm_putenv): Handle removing variables explicitely by
1292 calling unsetenv.
1293
1294 From John W. Eaton.
1295
1296 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
1297 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
1298 and scm_nan.
1299 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
1300 [SCO && ! HAVE_ISINF] (isinf): New function.
1301 (xisinf, xisnan): New functions.
1302 (IS_INF): Delete.
1303 (isfinite): Define in terms of xisinf.
1304 (scm_inf_p, scm_nan_p): New functions.
1305 (guile_Inf, guile_NaN): New file-scope vars.
1306 (guile_ieee_init): New function.
1307 (scm_inf, scm_nan): New functions.
1308 (idbl2str): Handle Inf and NaN. Remove funny label and
1309 corresponding gotos.
1310 (ALLOW_DIVIDE_BY_ZERO): New macro.
1311 (scm_divide): Allow division by zero to occur if
1312 ALLOW_DIVIDE_BY_ZERO is defined.
1313 Handle bignums and ints as special cases.
1314
1315 Additional stuff by me:
1316
1317 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
1318 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
1319 (iflo2str): Don't output a '+' for negative numbers or for Inf and
1320 NaN. They will provide their own sign.
1321 (scm_divide): Only allow divides by inexact zeros. Dividing by
1322 exact zeros still signals an errors.
1323
1324 2002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
1325
1326 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
1327 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
1328 (scm_slot_exists_p): Rename from scm_slots_exists_p.
1329 Thanks to Andreas Rottmann.
1330
1331 2002-04-20 Gary Houston <ghouston@arglist.com>
1332
1333 * removal of unused fields in root state (thanks to Christopher
1334 Cramer for pointing out the disuse.)
1335 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
1336 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
1337
1338 * root.c (root_mark): don't mark them.
1339 (scm_make_root): don't set them to #f.
1340 * init.c (scm_init_standard_ports): don't initialise with the
1341 default ports.
1342
1343 2002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
1344
1345 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
1346 cpp_sig_symbols.c.
1347
1348 2002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
1349
1350 * guile-snarf.in: Do not clean input file. This would write to
1351 the $(srcdir) during a VPATH build, which is not allowed. It also
1352 isn't needed since it only works when an output filename has been
1353 specified and in that case we don't need to clean the input file
1354 because the output file will already exist.
1355
1356 2002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
1357
1358 * guile-snarf: Install the trap for removing $cleanfile only when
1359 the value of $cleanfile is actually known.
1360
1361 2002-04-10 Rob Browning <rlb@defaultvalue.org>
1362
1363 * .cvsignore: add versiondat.h and *.c.clean.c.
1364
1365 2002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
1366
1367 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
1368 function, replaces macro SRCBRKP.
1369
1370 (SRCBRKP): Deprecated.
1371
1372 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
1373 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
1374 temporary variable.
1375
1376 2002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1377
1378 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
1379 CHECK_EXIT and removed all references to them.
1380
1381 2002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
1382
1383 * debug.h (scm_ready_p, debug_print): Removed declarations.
1384
1385 * eval.c (EVALCELLCAR): Removed.
1386
1387 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
1388 operation from condition.
1389
1390 2002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
1391
1392 * guile-snarf.in: When the output filename is "-", write to
1393 stdout. When no "-o" option is given, use "-" as the output
1394 filename (i.e., stdout). Only 'clean' the inputfile or remove the
1395 output file on error when the output file name is not "-". Define
1396 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
1397
1398 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
1399
1400 2002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
1401
1402 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
1403 and the corresponding goto statements. Removed redundant code.
1404
1405 2002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1406
1407 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
1408 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
1409 Re-enabled handing of rpsubrs and asubrs.
1410
1411 2002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
1412
1413 * eval.c (SIDEVAL): Removed.
1414
1415 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
1416 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
1417 argument checking order for set! to locals, variables and symbols.
1418 Improvements to control structure. Removed some uses of arg1 and
1419 arg2 as temporary variables.
1420
1421 2002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
1422
1423 * guile-snarf.in: Remove "--compat=1.4" support.
1424 Add "-d" and "-D" support.
1425
1426 (deprecated_list): New var.
1427 (compat_mode_clean_xxx): Delete.
1428 (grep_deprecated): New func.
1429 ("main"): If "-d" or "-D", call `grep_deprecated'.
1430
1431 2002-03-15 Neil Jerram <neil@ossau.uklinux.net>
1432
1433 * hooks.h: Change scm_t_c_hookype_t everywhere to
1434 scm_t_c_hook_type.
1435
1436 Docstring fixes:
1437
1438 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
1439
1440 * ports.c (scm_sys_make_void_port): Use `@file'.
1441
1442 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
1443 than `else'.
1444
1445 * macros.c (scm_makmacro): Don't say that the form replaces its
1446 source, because it doesn't.
1447 (scm_makmmacro): Clarify difference between this and scm_makmacro.
1448
1449 * backtrace.c (scm_display_error), filesys.c (scm_umask,
1450 scm_select, scm_basename), goops.c (scm_method_generic_function),
1451 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
1452 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
1453 spelling mistakes.
1454
1455 * debug.c (scm_debug_options), eval.c
1456 (scm_eval_options_interface), read.c (scm_read_options): Change
1457 incorrect @var in docstring to @code.
1458
1459 2002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
1460
1461 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
1462
1463 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
1464 guile-snarf can remove trailing non-init code.
1465
1466 * guile-snarf.in (modern_snarf): Remove everything following and
1467 including "^:^" from the output.
1468
1469 2002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
1470
1471 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
1472
1473 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
1474
1475 2002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
1476
1477 * guile-snarf.in: Update copyright.
1478 Rewrite to internalize error handling.
1479 Add "--compat=1.4" handling.
1480 Add commentary.
1481
1482 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
1483 (snarfcppopts): New var.
1484 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
1485 (.c.doc): Use $(snarfcppopts).
1486
1487 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
1488 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
1489 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
1490 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
1491 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
1492 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
1493 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
1494 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
1495 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
1496 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
1497 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
1498 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
1499 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
1500 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
1501
1502 2002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
1503
1504 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
1505 The next step will be to remove the union 't' and simplify the
1506 code of SCM_CEVAL that way.
1507
1508 2002-03-12 Neil Jerram <neil@ossau.uklinux.net>
1509
1510 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
1511 rreadfds, rwritefds, rexceptfds): Made static.
1512
1513 * gc.c (terminating), fports.c (terminating): Renamed
1514 scm_i_terminating.
1515
1516 2002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
1517
1518 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
1519 potential overflow problems. Thanks to John W Eaton!
1520
1521 * strop.c (string_capitalize_x): Treat characters as unsigned so
1522 that 8-bit chars work. Thanks to David Pirotte!
1523
1524 2002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
1525
1526 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
1527 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
1528 proc as temporary variables. Introduced temporary variables with
1529 hopefully descriptive names for clarification. Replaced SCM_N?IMP
1530 by a more explicit predicate in some places.
1531
1532 2002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
1533
1534 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
1535 Added lots of comments regarding the implementation of #@dispatch.
1536 Changed intra-procedure communication to use t.arg1 instead of
1537 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
1538 variables. Introduced temporary variables with hopefully
1539 descriptive names for clarification. Replaced SCM_N?IMP by a more
1540 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
1541 of computing the expression explicitly. Eliminate now unused
1542 label nontoplevel_cdrxbegin.
1543
1544 * goops.h (SCM_INSTANCE_HASH): New macro.
1545
1546 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
1547
1548 2002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
1549
1550 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
1551 "guile-snarf" moved back from `noinst_SCRIPTS'.
1552
1553 2002-03-08 Neil Jerram <neil@ossau.uklinux.net>
1554
1555 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
1556 exists when adding a source property other than those that are
1557 handled explicitly, add the new property to the SRCPROPS obj's
1558 plist.
1559
1560 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
1561 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
1562
1563 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
1564 debug.status. It isn't needed, and it can overflow the bits
1565 reserved for it (which may lead to a segv or a GC abort).
1566
1567 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
1568
1569 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
1570 side-effecting operations from conditions and macro calls.
1571 Replaced SCM_N?IMP by a more explicit predicate in some places.
1572 Minimized the scope of some variables.
1573
1574 2002-03-02 Stefan Jahn <stefan@lkcc.org>
1575
1576 * convert.i.c: Fixed int <-> long conversions which would have
1577 failed if their sizes were different.
1578
1579 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
1580
1581 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
1582 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
1583 as temporary variables. Removed side-effecting operations from
1584 conditions and macro calls. Introduced temporary variables with
1585 hopefully descriptive names for clarification. Replaced SCM_N?IMP
1586 by a more explicit predicate in some places. Removed code that
1587 was conditionally compiled if SICP was defined - which it never
1588 is.
1589
1590 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
1591
1592 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
1593 Removed some uses of t.arg1 and proc as temporary variables.
1594 Removed side-effecting operations from conditions and macro calls.
1595 Introduced temporary variables with hopefully descriptive names
1596 for clarification. Replaced SCM_N?IMP by a more explicit
1597 predicate in some places.
1598
1599 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
1600
1601 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
1602 explicit predicate in some places.
1603
1604 (CHECK_EQVISH): Removed.
1605
1606 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
1607 variables. Removed side-effecting operations from conditions and
1608 macro calls. Introduced temporary variables for clarification.
1609 Sorted if-else-if check for the type of the last form in a list by
1610 frequency. Avoided some unnecessary tail-recursion calls.
1611
1612 2002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
1613
1614 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
1615 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
1616 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
1617 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
1618 scm_cell and all its uses to scm_t_cell in accordance to Guile's
1619 naming scheme for types.
1620
1621 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
1622 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
1623 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
1624 (scm_make_environment), eval.c (scm_closure), fports.c
1625 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
1626 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
1627 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
1628 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
1629 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
1630 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
1631 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
1632 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
1633 scm_alloc_cell to scm_cell.
1634
1635 * environments.c (core_environments_observe), gc.c
1636 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
1637 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
1638 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
1639 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
1640 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
1641 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
1642 (allocate_weak_vector): Renamed scm_alloc_double_cell to
1643 scm_double_cell.
1644
1645 2002-02-27 Stefan Jahn <stefan@lkcc.org>
1646
1647 * convert.i.c, convert.c: Better range checking.
1648
1649 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
1650
1651 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
1652 Windows (MinGW).
1653
1654 2002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
1655
1656 * Makefile.am: Update path to pre-inst-guile automake frag.
1657
1658 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1659
1660 * gc.c (scm_gc_sweep): Make it compile even when deprecated
1661 features are excluded.
1662
1663 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1664
1665 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
1666
1667 2002-02-25 Gary Houston <ghouston@arglist.com>
1668
1669 * convert.c: include <string.h> for convert_i.c.
1670
1671 2002-02-24 Rob Browning <rlb@defaultvalue.org>
1672
1673 * .cvsignore: add stamp-h1.
1674
1675 2002-02-21 Neil Jerram <neil@ossau.uklinux.net>
1676
1677 * unif.c (scm_array_to_list): Correct name, which had been
1678 accidentally changed to scm_t_arrayo_list!
1679
1680 2002-02-20 Mikael Djurfeldt <mdj@linnaeus>
1681
1682 * gc.c (scm_gc_sweep): Print an error message when aborting due to
1683 underflowing scm_mallocated.
1684
1685 2002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1686
1687 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
1688 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
1689 Reimplemented using the new scm_gc_malloc, etc., functions and
1690 deprecated.
1691
1692 2002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
1693
1694 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
1695 to `noinst_PROGRAMS'.
1696 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
1697 (noinst_PROGRAMS, noinst_SCRIPTS): New.
1698
1699 2002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1700
1701 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
1702 non-zero is returned from a port or smob free function.
1703 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
1704 scm_gc_register_collectable_memory,
1705 scm_gc_unregister_collectable_memory, scm_gc_malloc,
1706 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
1707
1708 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
1709 debug-malloc.c, dynl.c, environments.c, environments.h,
1710 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
1711 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
1712 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
1713 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
1714 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
1715 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
1716 appropriate. Return zero from smob and port free functions.
1717
1718 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
1719
1720 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
1721 messages while the GC is running.
1722 (scm_c_issue_deprecation_warning_fmt): New.
1723
1724 * fports.c (scm_setvbuf): Reset read buffer to saved values when
1725 it is pointing to the putback buffer.
1726
1727 2002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
1728
1729 * gsubr.c (create_gsubr): On "too many args" error,
1730 also display arg count and name. Thanks to Bill Schottstaedt.
1731
1732 2002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
1733
1734 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
1735
1736 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
1737 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
1738 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
1739
1740 * guile-snarf-docs-texi.in: Bye bye.
1741
1742 2002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1743
1744 * symbols.c (scm_make_symbol): Fix typo in docstring.
1745
1746 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
1747 scm_make_symbol): New prototypes.
1748
1749 2002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
1750
1751 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
1752 (SCM_SYMBOL_INTERNED_P): New.
1753 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
1754 SCM_MAKINUM since hash values can well be bignums.
1755 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
1756 This signals a interned symbol.
1757 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
1758 scm_make_symbol): New.
1759
1760 * print.c (scm_iprin1): Print uninterned symbols unreadably.
1761
1762 2002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
1763
1764 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
1765 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
1766 Thanks to Dave Love.
1767
1768 2002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
1769
1770 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
1771 This might help to make unintended clashes less likely.
1772 (scm_string_to_symbol): Protect the string until the symbols is
1773 created.
1774
1775 2002-01-31 Stefan Jahn <stefan@lkcc.org>
1776
1777 * convert.c, convert.h, convert.i.c: New files containing C
1778 array to Scheme conversion helpers meant to be replacement
1779 functions for the deprecated gh interface.
1780
1781 * Makefile.am: Setup rules for new `convert.*' files.
1782
1783 2002-01-28 Stefan Jahn <stefan@lkcc.org>
1784
1785 * symbols.c (scm_c_symbol2str): New function, replacement for
1786 `gh_scm2newsymbol()'.
1787
1788 * strings.c (scm_c_substring2str): New function. Proper
1789 replacement for `gh_get_substr()'.
1790
1791 * socket.c: Include `stdint.h' if available for the `uint32_t'
1792 declaration.
1793
1794 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
1795 compiler warning).
1796
1797 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
1798
1799 2002-01-22 Neil Jerram <neil@ossau.uklinux.net>
1800
1801 Other changes unrelated to Elisp...
1802
1803 * eval.c (scm_m_if): Use s_if rather than repeating string literal
1804 "if".
1805 (comments): Fix a few typos.
1806 (scm_for_each): Add parentheses around oddly unparenthesized
1807 if/while conditions.
1808
1809 * read.c (scm_read_opts): Add full stop at end of doc for
1810 `keywords' option.
1811
1812 * script.c (scm_compile_shell_switches): Use scm_str2symbol
1813 instead of gh_symbol2scm.
1814
1815 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
1816 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
1817
1818 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
1819 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
1820
1821 First batch of changes for Elisp support...
1822
1823 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
1824 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
1825 throw.c, vectors.c, weaks.c: Add #include for lang.h.
1826
1827 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
1828 conditionalize compilation and initialization of Elisp support
1829 function.
1830
1831 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
1832 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
1833 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
1834 filesys.c (fill_select_type, retrieve_select_type), fluids.c
1835 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
1836 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
1837 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
1838 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
1839 options.c (change_option_setting, scm_options), posix.c
1840 (environ_list_to_c), print.c (scm_iprlist), throw.c
1841 (scm_exit_status), vectors.c (scm_vector), weaks.c
1842 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
1843
1844 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
1845 just SCM_FALSEP.
1846
1847 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
1848 of just SCM_BOOLP.
1849
1850 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
1851 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
1852 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
1853 (scm_m_atfop): Support function aliasing. Support both function
1854 args, which need transformation, and macro args, which do not.
1855 Add explanatory comments.
1856 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
1857 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
1858 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
1859 SCM_NULLP || SCM_NILP instead of checks against (removed)
1860 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
1861 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
1862
1863 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
1864 scm_m_while, scm_nil_eq): Commented out; I don't think we need
1865 these, but I don't want to remove them yet, just in case.
1866 (scm_init_lang): Define `%nil' variable on Scheme level to hold
1867 Elisp nil value.
1868
1869 * lang.h (SCM_NILP): Test against Elisp nil value instead of
1870 against (removed) scm_lisp_nil.
1871 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
1872 (SCM_NULL_OR_NIL_P): New.
1873
1874 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
1875 SCM_VALIDATE_NULL.
1876
1877 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
1878 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
1879 value).
1880
1881 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
1882 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
1883 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
1884 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
1885
1886 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
1887 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
1888 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
1889 Numbering shifted down accordingly.
1890 (SCM_ELISP_NIL): New IFLAG.
1891
1892 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
1893
1894 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
1895
1896 * eval.c: Removed outdated references to "everr". Improved some
1897 comments.
1898
1899 (scm_deval_args, deval_args): Renamed scm_deval_args to
1900 deval_args, since it is not part of the interface.
1901
1902 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
1903 use references to debug.vect[0] before it exists. Add parentheses
1904 to switch statement.
1905
1906 * goops.h: Added local emacs variables.
1907
1908 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
1909
1910 * eval.[ch] (scm_deval_args): Made static.
1911
1912 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
1913 test.
1914
1915 * strings.c (scm_c_string2str): Clarified comment. Replaced
1916 THINKME by FIXME for uniformness. Removed question about whether
1917 arguments need to be protected from garbage collection: Arguments
1918 must be protected as any other variable.
1919
1920 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
1921
1922 * procs.h (SCM_CLOSURE_BODY): New Macro.
1923
1924 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
1925 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
1926 get_slot_value, set_slot_value), procs.c
1927 (scm_procedure_documentation), sort.c (closureless), stacks.c
1928 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
1929 SCM_CLOSURE_BODY.
1930
1931 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
1932
1933 2001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
1934
1935 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
1936 use "cp" instead.
1937
1938 2001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
1939
1940 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
1941 everywhere.
1942
1943 * continuations.c (scm_make_continuation): Do not retain the
1944 throw_value when the continuation is invoked.
1945
1946 2001-12-08 Stefan Jahn <stefan@lkcc.org>
1947
1948 * strings.c (scm_c_string2str): New function. Converts a
1949 given Scheme string into a C string. Also put in two
1950 THINKME's regarding the malloc policy for the missing converter
1951 routines.
1952
1953 2001-12-01 Neil Jerram <neil@ossau.uklinux.net>
1954
1955 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
1956 gh_symbol2scm.
1957
1958 2001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
1959
1960 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
1961 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
1962
1963 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
1964 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
1965 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
1966 macros.
1967
1968 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
1969
1970 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
1971 SCM_GC_CELL_* macros when accessing free cells.
1972
1973 2001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
1974
1975 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
1976 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
1977 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
1978 * strings.h (SCM_MAKE_STRING_TAG): New.
1979 * procs.h (SCM_MAKE_CCLO_TAG): New.
1980 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
1981
1982 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
1983 !SCM_ENABLE_DEPRECATED.
1984
1985 * async.c, async.h (scm_system_async_mark_from_signal_handler):
1986 New.
1987
1988 * scmsigs.c (scm_take_signal): Removed all code that assumes that
1989 signal handlers are allowed to divert the flow of control. Call
1990 scm_system_async_mark_from_signal_handler instead of
1991 scm_system_async_mark.
1992
1993
1994 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
1995 scm_alloc_double_cell in their place.
1996
1997 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
1998 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
1999 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
2000 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
2001 scm_deprecated_newcell and scm_deprecated_newcell2.
2002
2003 gc.c (scm_tc16_allocated): Only define when including deprecated
2004 features.
2005 (scm_debug_newcell, scm_debug_newcell2): Removed.
2006 (scm_init_storage): Do not initialize scm_tc16_allocated.
2007 (scm_init_gc): Do it here.
2008 (allocated_mark): New, from old code.
2009 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
2010
2011 * inline.c, inline.h: New files.
2012 * Makefile.am: Added them in all the right places.
2013
2014 * _scm.h: Include "libguile/inline.h".
2015
2016 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
2017 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
2018 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
2019 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
2020 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
2021 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
2022 scm_alloc_double_cell, respectively.
2023
2024 2001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
2025
2026 * modules.c (scm_c_use_module): Adapt to changes to
2027 `process-use-modules'.
2028
2029 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
2030
2031 * numbers.c (scm_divide): Fix more division by zero errors.
2032
2033 2001-11-21 Gary Houston <ghouston@arglist.com>
2034
2035 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
2036 obsolete. autogen.sh says:
2037 invalid unused variable name: `OMIT_DEPENDENCIES'
2038
2039 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
2040
2041 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
2042 reporting the bug.
2043
2044 2001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
2045
2046 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
2047 Thanks to Eric Gillespie, Jr!
2048
2049 2001-11-21 Stefan Jahn <stefan@lkcc.org>
2050
2051 * win32-socket.c (getservent, setservent, endservent,
2052 getprotoent, setprotoent, endprotoent): New functions.
2053 Appropriate replacements for M$-Windows.
2054
2055 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
2056 these definitions for GUILE_DEBUG.
2057
2058 * net_db.c: Include "win32-socket.h" if compiling with a native
2059 M$-Windows compiler. Include some pieces of code (protoent and
2060 servent interface) protected by HAVE_* macros when using a
2061 native M$-Windows compiler.
2062
2063 2001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
2064
2065 * modules.c (scm_c_export): Do nothing when the first argument is
2066 already the terminating NULL. Thanks to Han-Wen Nienhuys!
2067
2068 2001-11-20 Thien-Thi Nguyen <ttn@glug.org>
2069
2070 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
2071 also include `buildstamp'.
2072
2073 2001-11-18 Rob Browning <rlb@defaultvalue.org>
2074
2075 * version.c
2076 (s_scm_major_version): use SCM_MAJOR_VERSION.
2077 (s_scm_minor_version): use SCM_MINOR_VERSION.
2078 (s_scm_micro_version): use SCM_MICRO_VERSION.
2079 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
2080 SCM_MICRO_VERSION.
2081
2082 * version.h.in
2083 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
2084 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
2085 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
2086
2087 2001-11-18 Neil Jerram <neil@ossau.uklinux.net>
2088
2089 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
2090 Rewrite docstrings without reference to substring-move-left/right,
2091 since the latter no longer exist.
2092
2093 2001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
2094
2095 * eval.c: Removed bogus comment about acros.
2096
2097 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
2098 Minimize scope of local variable. Eliminate dependency on
2099 macro DEBUG_EXTENSIONS.
2100
2101 (s_splicing): New error message string.
2102
2103 (scm_m_body): Issue 'bad body' message rather than 'missing
2104 expression' message.
2105
2106 (scm_m_quote): Eliminate unnecessary copying.
2107
2108 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
2109 checking of the body to scm_m_body.
2110
2111 (scm_m_do): Move comment to function header. Rename arg1 to
2112 binding. Made the code a bit easier to read.
2113
2114 (evalcar): Removed.
2115
2116 (iqq): Added a comment. Changed the depth parameter to
2117 unsigned. Use size_t for vector lengths. Make sure vector object
2118 is gc protected as long as its contents are read. Add some syntax
2119 checks. Get rid of unnecessary SCM_IMP test. Clean up the
2120 control structure a bit.
2121
2122 (scm_m_delay): Added comment about the implementation of
2123 scm_m_delay.
2124
2125 (scm_m_define): Add comment about guile's currying define
2126 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
2127 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
2128
2129 (scm_m_letrec1): Removed. Part of the functionality is taken
2130 over by the new function 'transform_bindings'.
2131
2132 (transform_bindings): New function. Takes over some of the
2133 functionality of removed function 'scm_m_letrec1', namely to split
2134 a list of bindings into a reversed list of variables and a list of
2135 initializers.
2136
2137 (scm_m_letrec): Call 'transform_bindings'.
2138
2139 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
2140 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
2141 test. Use 'transform_bindings'. Fixed scoping error with named
2142 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
2143 Jerram for suggesting the fix). Cleaned up the control structure
2144 a bit.
2145
2146 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
2147 unnecessary consing. Eliminated unnecessary
2148 SCM_DEFER/ALLOW_INTS.
2149
2150 (SCM_CEVAL): Un-obfuscated some loops.
2151
2152 2001-11-16 Neil Jerram <neil@ossau.uklinux.net>
2153
2154 * gc.h (scm_unhash_name): Old declaration removed.
2155
2156 * eval.c (s_scm_eval): Change @var{primitive-eval} to
2157 @code{primitive-eval}.
2158
2159 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
2160 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
2161 Change @deffnx lines in docstrings to say {Scheme Procedure}
2162 rather than primitive or procedure.
2163
2164 * posix.c (scm_execl), filesys.c (scm_close), unif.c
2165 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
2166 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
2167 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
2168 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
2169 (scm_string_split, scm_string_ci_to_symbol), strings.c
2170 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
2171 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
2172 Docstring fixes and improvements reflecting edits that have been
2173 made in the reference manual source.
2174
2175 * objprop.c (scm_object_properties, scm_set_object_properties_x,
2176 scm_object_property, scm_set_object_property_x): Remove invalid
2177 @deffnx lines for corresponding procedure property primitives.
2178
2179 These changes add a @deffnx C function declaration and function
2180 index entries for each Guile primitive to the copy of the doc
2181 snarf output that is used for reference manual synchronization.
2182 Online help is unchanged.
2183
2184 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
2185 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
2186 name to SCM_SNARF_DOCS.
2187
2188 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
2189 snarf-check-and-output-texi.
2190
2191 * Makefile.am (guile-procedures.texi): New rule.
2192 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
2193 Changed so that the last stage of doc snarfing is now performed
2194 twice, once to produce guile-procedures.txt for online help, and
2195 once to produce guile.texi for reference manual synchronization.
2196
2197 2001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
2198
2199 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
2200 safely usable as a single statement followed by a ';', for example
2201 in an if statement.
2202
2203 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
2204
2205 2001-11-13 Neil Jerram <neil@ossau.uklinux.net>
2206
2207 * random.c (scm_random_solid_sphere_x,
2208 scm_random_hollow_sphere_x): Correct "shere" typos.
2209
2210 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
2211
2212 * version.c (scm_version): Update docstring to include
2213 `micro-version'.
2214
2215 2001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
2216
2217 * modules.c (scm_c_export): Call va_end after collecting the
2218 symbols.
2219
2220 * strop.h, strop.c (scm_substring_move_left_x,
2221 scm_substring_move_right_x): Removed.
2222
2223 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
2224 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
2225 configure does.
2226
2227 2001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
2228
2229 * numbers.c: Document macros to define when including
2230 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
2231 now rely on SIZEOF_ macros that have been figured out at
2232 configure time.
2233
2234 * num2integral.i.c: Adapt to new interface.
2235 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
2236 target type by casting it and checking whether it is still the
2237 same. Do not try to handle bignums for integral types that are
2238 smaller than fixnums. When handling bignums, collect the
2239 magnituse first into a unsigned type, and correctly check for
2240 overflow.
2241 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
2242 only -MIN_VALUE can still be negative of all negative numbers (in
2243 twos-complement).
2244
2245 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
2246
2247 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
2248 HAVE_LONG_LONG depending on whether their size is non-zero.
2249
2250 2001-11-11 Thien-Thi Nguyen <ttn@glug.org>
2251
2252 * strop.c (scm_string_null_p): Docfix; nfc.
2253 Thanks to Scott Lenser.
2254
2255 2001-11-07 Neil Jerram <neil@ossau.uklinux.net>
2256
2257 * extensions.c (scm_load_extension): Canonicalize docstring
2258 whitespace.
2259
2260 * unif.c (scm_uniform_array_write), ports.c
2261 (scm_current_output_port, scm_force_output), dynwind.c
2262 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
2263 filesys.c (scm_open, scm_lstat), struct.c
2264 (scm_make_struct_layout), random.c (scm_random,
2265 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
2266 (scm_i_index): Remove superfluous whitespace from end of docstring
2267 lines.
2268
2269 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
2270 strings.c (scm_make_string), variable.c (scm_make_variable,
2271 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
2272 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
2273 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
2274 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
2275 newline at end of docstrings.
2276
2277 * modules.c (scm_set_current_module): Add missing newline to
2278 docstring.
2279
2280 2001-11-07 Stefan Jahn <stefan@lkcc.org>
2281
2282 * win32-socket.[ch]: New files. Defines Winsock-API error codes
2283 and makes them available through Guile. That is because the
2284 Winsock-API does not store its errors in `errno' and thus cannot
2285 return error messages via `strerror (errno)'.
2286
2287 * socket.c (scm_init_socket): Initialize `win32-socket' part
2288 here under M$-Windows.
2289
2290 * numbers.h: Added missing declaration of
2291 `scm_sys_check_number_conversions()'.
2292
2293 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
2294 and use in `(strerror)' and `(system-error)'.
2295
2296 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
2297 `win32-socket.[ch]' to extra source and header files.
2298
2299 2001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
2300
2301 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
2302 a call to turn-on-debugging when --debug has been given instead of
2303 turning it on directly. Also, handle new `--no-debug' option,
2304 which might suppress the call to turn-on-debugging.
2305
2306 2001-11-05 Stefan Jahn <stefan@lkcc.org>
2307
2308 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
2309
2310 2001-11-04 Stefan Jahn <stefan@lkcc.org>
2311
2312 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
2313 here (was at guile_LDADD) which describes the dependency
2314 correctly and allows a clean build on Win32.
2315
2316 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
2317 into FOO.
2318
2319 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
2320 import macros for external libraries (libcrypt, libqthreads,
2321 libreadline and libregex).
2322
2323 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
2324
2325 * posix.c (flock): Added support for flock() in M$-Windows.
2326
2327 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
2328 of __SCM_IMPORT__.
2329
2330 * fports.c (getflags): Differentiate reading and writing pipes
2331 descriptors.
2332
2333 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
2334 M$-Windows.
2335
2336 * coop.c (coop_condition_variable_timed_wait_mutex): Use
2337 conditionalized error code if `ETIMEDOUT' is not available.
2338 (scm_thread_usleep): Remove bogus declaration of `struct timeval
2339 timeout'.
2340
2341 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
2342 belongs. That is because NO_PREPRO_MAGIC gets undefined after
2343 each inclusion of `num2integral.i.c'.
2344 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
2345
2346 2001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
2347
2348 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
2349 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
2350
2351 2001-11-02 Mikael Djurfeldt <mdj@linnaeus>
2352
2353 * print.c (scm_iprin1): Mark print state as revealed when
2354 dispatching to generic write or display.
2355
2356 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
2357
2358 2001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
2359
2360 Support for native Win32. Thanks to Stefan Jahn!
2361
2362 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
2363 and win32-dirent.h to extra source and header files. These
2364 include the uname() and the POSIX dirent interface implementation
2365 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
2366 linkers which do not allow unresolved symbols inside shared
2367 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
2368 dependency.
2369
2370 * __scm.h: Defined SCM_API. This macro gets prepended to all
2371 function and data definitions which should be exported or imported
2372 in the resulting dynamic link library in the Win32 port.
2373
2374 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
2375 chars.h, continuations.h, coop-defs.h, coop-threads.h,
2376 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
2377 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
2378 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
2379 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
2380 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
2381 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
2382 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
2383 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
2384 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
2385 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
2386 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
2387 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
2388 vports.h, weaks.h:
2389 Prefixed each each exported symbol with SCM_API.
2390
2391 * continuations.c: Added comment about the use of the extern
2392 declarations of {get,set}context() functions used in the ia64 port.
2393
2394 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
2395 is meant to be a `unsigned long *'.
2396
2397 * filesys.c: Include `direct.h' if possible. Use local
2398 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
2399 macros for M$-Windows. Implementation of `fstat_Win32()' which is
2400 able to differentiate between sockets and other file descriptors.
2401 Use this function as wrapper in `scm_fstat()'. Fixed typo in
2402 `scm_dirname()'.
2403
2404 * fports.c: Include `io.h' is possible. Put `*fp' into referring
2405 statement block in `scm_fport_buffer_add()'.
2406 Some corrections in `getflags()'.
2407
2408 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
2409
2410 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
2411 build on Win32. Disable preloaded symbols on Win2 platforms.
2412
2413 * ioext.c, ports.c: Include `io.h' is possible.
2414
2415 * mkstemp.c: Include `process.h' is possible.
2416
2417 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
2418 too.
2419 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
2420
2421 * posix.c: Remove unnecessary dirent includes and defines. Include
2422 local `win32-uname.h' for MinGW. Extern declaration of
2423 `mkstemp()' for systems where it does not exists. Make
2424 `getlogin()' available on M$-Windows.
2425
2426 * scmsigs.c: Made `usleep()' avalable on MinGW.
2427
2428 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
2429
2430 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
2431
2432 * win32-uname.c: Include "win32-uname.h", not "uname.h".
2433
2434 2001-10-28 Mikael Djurfeldt <mdj@linnaeus>
2435
2436 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
2437 Don't apply scm_uniform_vector_length on arrays.
2438
2439 2001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
2440
2441 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
2442 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
2443 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
2444 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
2445 scm_list_<n> over scm_cons[2]?.
2446
2447 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
2448 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
2449 SCM_C[AD][AD]R instead of explicit form.
2450
2451 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
2452 comparison parameters.
2453
2454 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
2455 !SCM_NULLP instead of SCM_NIMP.
2456
2457 (scm_m_case): Don't copy the form. Renamed proc to clause and
2458 minimized its scope. Renamed x to clauses. Removed side
2459 effecting operation from macro call.
2460
2461 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
2462 minimized its scope. Renamed x to clauses. Minimized the scope
2463 of variable 'len'. Make sure the else clause is treated specially
2464 even in case of '=>' occurences. Don't change the else to #t in
2465 order to be able to distinguish this case in the evaluator. Leave
2466 type checking of the recipient to the evaluator.
2467
2468 (scm_c_improper_memq): Made the comment somewhat clearer.
2469
2470 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
2471 test for SCM_IM_LET at the place of the formal parameters.
2472 Simplified the formal parameter checking.
2473
2474 (scm_m_letstar): Added Comment. Renamed proc to bindings.
2475 Renamed arg1 to binding and minimized its scope. Eliminated
2476 unnecessary consing.
2477
2478 (scm_m_do): Renamed proc to bindings. Minimized the scope of
2479 variable 'len'.
2480
2481 (build_binding_list): New static function.
2482
2483 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
2484 Further, split up the 'letrec' unmemoizing code to the
2485 corresponding parts for 'do', 'let' and 'letrec', adding comments
2486 to each form. Cleanup the handling of the do form (This removes
2487 some *real* code :-).
2488
2489 (SCM_CEVAL): Removed side effecting operation from macro call.
2490 Handle the 'else clause of the 'cond form specially - the symbol
2491 'else is not replaced with #t any more.
2492
2493 2001-10-14 Gary Houston <ghouston@arglist.com>
2494
2495 * version.c (scm_version): use sprintf instead of snprintf,
2496 for portability. thanks to Bill Schottstaedt.
2497
2498 2001-10-14 Mikael Djurfeldt <mdj@linnaeus>
2499
2500 * read.c (scm_lreadr): When user-defined hash procedure returns
2501 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
2502 an exception. (This prevents parsing of uniform vectors from
2503 interfering with parsing of numbers.)
2504
2505 2001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
2506
2507 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
2508 PTRDIFF_MIN. Thanks to Ken Raeburn.
2509
2510 2001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
2511
2512 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
2513
2514 * eval.c (scm_m_atbind): First try to find the variable without
2515 defining it locally; when it has not been found, define it
2516 locally.
2517
2518 * modules.c (module_variable): Pass over variables that exist but
2519 are unbound.
2520
2521 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
2522
2523 * backtrace.c (display_backtrace_file_and_line): Only use
2524 scm_basename when POSIX support is compiled in. Thanks to Chris
2525 Cramer.
2526
2527 2001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
2528
2529 * numbers.c (mem2uinteger): Return number read so far when coming
2530 across a hexdigit after having read a # or if not reading a hex
2531 value. This will enable the calling code to correctly handle
2532 forms like 1e2. (The background is, that the exponent markers d,
2533 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
2534 providing this patch.
2535
2536 (mem2complex): Fix erroneous double-negation. Now, numbers like
2537 1-i will be read correctly.
2538
2539 2001-10-12 Mikael Djurfeldt <mdj@linnaeus>
2540
2541 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
2542
2543 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
2544
2545 2001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
2546
2547 * print.c (scm_print_state_vtable, print_state_pool):
2548 Initialize. These variables are now registered as gc roots.
2549
2550 (scm_current_pstate): Update documentation.
2551
2552 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
2553 scm_prin1, scm_init_print): print_state_pool is registered as a
2554 gc root and thus does not need to be protected by a surrounding
2555 pair any more.
2556
2557 (make_print_state): The car of print_state_pool no longer holds
2558 the scm_print_state_vtable.
2559
2560 (scm_current_pstate, scm_make_print_state, print_circref,
2561 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
2562 SCM_N<foo>.
2563
2564 (scm_prin1): When building lists, prefer scm_list_<n> over
2565 scm_cons[2]?.
2566
2567 (scm_iprlist): Removed a redundant SCM_IMP test.
2568
2569 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
2570
2571 2001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
2572
2573 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
2574
2575 (scm_memcons, scm_mem_to_proc): When building lists, prefer
2576 scm_list_<n> over scm_cons[2]?.
2577
2578 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
2579
2580 (scm_procedure_name): Use SCM_CADR instead of explicit form.
2581
2582 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
2583 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
2584 for some reason his patch didn't make it into the cvs.
2585
2586 2001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
2587
2588 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
2589 little bit - should even be somewhat more accurate now.
2590
2591 2001-10-08 Rob Browning <rlb@defaultvalue.org>
2592
2593 * gc.c: support ia64 register backing store.
2594 (SCM_MARK_BACKING_STORE): new macro.
2595
2596 * continuations.h: support ia64 register backing store.
2597 (struct scm_t_contregs): add ia64 register backing store.
2598
2599 * continuations.c: support ia64 register backing store.
2600 (continuation_mark): mark ia64 register backing store.
2601 (continuation_free): free ia64 register backing store.
2602 (scm_make_continuation): capture ia64 register backing store.
2603 (copy_stack_and_call): copy ia64 register backing store.
2604
2605 2001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
2606
2607 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
2608 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
2609 instead of SCM_NIMP to test for that case.
2610
2611 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
2612 scm_t_bits instead of long.
2613
2614 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
2615
2616 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
2617 SCM_T_SIGNED_BITS_MIN): New.
2618 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
2619 Use them to make these macros computable by the preprocessor.
2620
2621 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
2622 whether the integral type fits in a fixnum, not the compiler.
2623 This removes a spurious compiler warning. Also, honor the
2624 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
2625 needed for `long long's.
2626
2627 * numbers.c: Define NO_PREPRO_MAGOC when including
2628 num2integral.c.i for `long long' and `signed long long'.
2629
2630 2001-10-06 Mikael Djurfeldt <mdj@linnaeus>
2631
2632 These changes fixes a race condition in the Guile coop - pthread
2633 compatibility code.
2634
2635 * coop.c (mother_awake_p): New variable.
2636 (coop_create): Set mother_awake_p before creating or signalling
2637 mother; wait until mother is going to sleep before returning.
2638 (mother): Reset mother_awake_p before going to sleep.
2639
2640 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
2641
2642 * options.c (protected_objects, scm_init_options): The content of
2643 protected_objects is now protected from garbage collection using
2644 scm_gc_register_root instead of scm_permanent_object.
2645
2646 (get_option_setting): New static function that computes an option
2647 setting as it was formerly done in the function scm_options.
2648
2649 (get_documented_option_setting): New static function that
2650 returns option documentation as it was formerly done in the
2651 function scm_options. Note that documentation C strings are no
2652 longer precomputed into SCM objects. Instead, they are converted
2653 into SCM strings every time get_documented_option_setting is
2654 called.
2655
2656 (change_option_setting): New static functions that modifies the
2657 option setting as it was formerly done in the function
2658 scm_options. The function is now exception safe, i. e. won't
2659 cause a memory leak when interrupted. Further, only non-immediate
2660 option values are added to the protection list.
2661
2662 (scm_options): This function now has only the purpose to dispatch
2663 to to get_option_setting, get_documented_option_setting or
2664 change_option_setting, depending on the arguments given to
2665 scm_options.
2666
2667 (scm_init_opts): Don't convert documentation C strings into SCM
2668 strings. Further, don't protect any object values: They _must_
2669 be immediate values, otherwise there is no guarantee that they
2670 have not been collected before anyway.
2671
2672 * options.[ch] (scm_t_option): Made type unsigned, name into a
2673 constant char* and val into a scm_t_bits type.
2674
2675 (scm_options, scm_init_opts): The number of options is guaranteed
2676 to be larger or equal to zero. Thus, the type is changed to
2677 unsigned.
2678
2679 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
2680
2681 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
2682 testing an unsigned value for being >= 0.
2683
2684 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
2685
2686 * numbers.h: Removed old comment about using SCM_CAR to access
2687 non-pair cells.
2688
2689 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
2690 the return value is signed. Thanks to Brian Crowder for the bug
2691 report.
2692
2693 (SCM_SRS): Avoid unnecessary casting and don't unpack input
2694 values. With this patch, SCM_SRS can be safely used for other
2695 types than scm_t_signed_bits. However, it should still better be
2696 an internal macro and thus be renamed to SCM_I_SRS.
2697
2698 (SCM_MAKINUM, SCM_INUM): Use proper casting.
2699
2700 2001-10-03 Gary Houston <ghouston@arglist.com>
2701
2702 * continuations.h, unif.h: in the descriptions of the bit patterns
2703 of the heap cells, make bit 0 the least significant.
2704
2705 2001-09-25 Thien-Thi Nguyen <ttn@glug.org>
2706
2707 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
2708 Thanks to Golubev I. N.
2709
2710 2001-09-25 Gary Houston <ghouston@arglist.com>
2711
2712 * ports.c (scm_drain_input): extended the docstring. thanks to
2713 Alex Schroeder and Thien-Thi Nguyen.
2714
2715 2001-09-23 Mikael Djurfeldt <mdj@linnaeus>
2716
2717 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
2718 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
2719 macros. (The NUM names might soon change.)
2720
2721 * numbers.h: Added missing declarations.
2722
2723 2001-09-22 Mikael Djurfeldt <mdj@linnaeus>
2724
2725 * Makefile.am: Distribute num2float.i.c.
2726
2727 * num2float.i.c: New file, multiply included by numbers.c, used
2728 to "templatize" the float <-> num conversion routines.
2729
2730 * numbers.c: New functions: scm_num2float, scm_float2num,
2731 scm_num2double, scm_double2num.
2732
2733 2001-09-21 Rob Browning <rlb@defaultvalue.org>
2734
2735 * .cvsignore: really add version.h
2736
2737 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
2738 Otherwise it fails on the alpha. However, we might rather choose
2739 this size conditionally.
2740
2741 * numbers.c (scm_gcd): change "k" to a long from an int.
2742 Otherwise it fails on the alpha. However, we might rather choose
2743 this size conditionally.
2744
2745 * error.c (scm_wta): coerce char* to intptr_t before int
2746 assignment.
2747
2748 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
2749 int.
2750
2751 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
2752
2753 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
2754
2755 * numbers.c (scm_integer_expt): Accept inexact integer in second
2756 argument. (Thanks to Bill Schottstaedt.)
2757
2758 2001-09-20 Rob Browning <rlb@defaultvalue.org>
2759
2760 * .cvsignore: add version.h
2761
2762 * versiondat.h.in: removed (obsolete).
2763
2764 * version.h.in: renamed from version.h.
2765 (SCM_GUILE_MAJOR_VERSION): new public macro.
2766 (SCM_GUILE_MINOR_VERSION): new public macro.
2767 (SCM_GUILE_MICRO_VERSION): new public macro.
2768
2769 * version.h: renamed to version.h.in.
2770
2771 * version.c
2772 (scm_major_version): support integer *_VERSION macros.
2773 (scm_minor_version): support integer *_VERSION macros.
2774 (scm_micro_version): support integer *_VERSION macros.
2775 (scm_version): support integer *_VERSION macros.
2776
2777 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
2778
2779 * error.c, error.h: Made error keys globally accessible.
2780 Applications might want to test for these or use them in a direct
2781 call to scm_error.
2782
2783 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
2784 routines are passed an inexact. This change in behavior is
2785 motivated by concordance with R5RS: It is more common that a
2786 primitive doesn't want to accept an inexact for an exact.
2787
2788 2001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
2789
2790 The following patch partially undoes my patch from 2001-06-30,
2791 where I added the function scm_gc_mark_cell_conservatively. The
2792 function is buggy, since it breaks guile during conservative
2793 marking if a pointer on the stack points directly into the list of
2794 free cells on the heap: With conservative cell marking this will
2795 cause the whole free list to be scanned and marked - boom!
2796
2797 * gc.c (allocated_mark, MARK, heap_segment,
2798 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
2799 (scm_gc_mark_cell_conservatively): Remove function
2800 scm_gc_mark_cell_conservatively and update the corresponding
2801 comments and uses accordingly. Thanks to Christopher Cramer for
2802 the patch. (Minor corrections by me.)
2803
2804 2001-09-15 Gary Houston <ghouston@arglist.com>
2805
2806 * root.h (scm_root_state): removed the continuation_stack and
2807 continuation_stack_ptr members, which have no apparent purpose.
2808 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
2809 removed.
2810
2811 * root.c (root_mark), init.c (restart_stack, start_stack), gc
2812 (scm_igc): remove all references to contination_stack and
2813 continuation_stack_ptr, avoiding allocation of a vector and
2814 useless processing during gc.
2815
2816 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
2817
2818 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
2819
2820 (TCONC_IN): Make sure that the cell word 0 is initialized last.
2821
2822 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
2823
2824 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
2825
2826 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
2827 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
2828
2829 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
2830
2831 * guardians.c (mark_dependencies_in_tconc,
2832 whine_about_self_centered_zombies, scm_init_guardians): Register
2833 the static global variable `self_centered_zombies' via
2834 scm_gc_register_root, to make some cdr-ing unnecessary.
2835
2836 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
2837
2838 * backtrace.c (display_backtrace_file,
2839 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
2840 values, use SCM_FALSEP when comparing SCM values against #f.
2841 Thanks to Rob Browning for the bug report.
2842
2843 2001-09-12 Martin Baulig <martin@home-of-linux.org>
2844
2845 * strings.[ch] (scm_str2string): New function.
2846
2847 2001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
2848
2849 * gc.c (scm_done_free): Always subtract size from scm_mallocated
2850 when computing nm, even if it's negative.
2851 (scm_must_malloc): Abort on overflow of scm_mtrigger.
2852 (scm_must_realloc): Likewise.
2853
2854 2001-09-01 Michael Livshin <mlivshin@bigfoot.com>
2855
2856 * numbers.c (scm_sys_check_number_conversions): new function,
2857 defined if Guile is compiled in debugging mode. currently checks
2858 `scm_num2ulong', should check much much more.
2859
2860 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
2861 unsigned, ensure that it's positive. thanks to Martin Baulig!
2862
2863 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
2864
2865 * __scm.h: Added new section about compile time selectable
2866 features.
2867
2868 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
2869 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
2870 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
2871 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
2872 Removed.
2873
2874 * deprecation.c (scm_include_deprecated_features): Simplified.
2875
2876 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
2877 `SCM_IMP´ instead of `!SCM_CELLP´.
2878
2879 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
2880 Extract side-effecting operations from macros.
2881
2882 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
2883 scm_top_level_lookup_closure_var and scm_system_transformer.
2884
2885 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
2886
2887 (heap_segment): Use CELL_P instead of SCM_CELLP.
2888
2889 * init.c (start_stack): Don't initialize
2890 scm_top_level_lookup_closure_var and scm_system_transformer.
2891
2892 * modules.c (scm_set_current_module): Don't access
2893 scm_top_level_lookup_closure_var and scm_system_transformer.
2894
2895 (scm_sym2var): Don't call scm_variable_set_name_hint.
2896
2897 (scm_post_boot_init_modules): Removed deprecated initializations.
2898
2899 * print.c (scm_ipruk): Don't access cell contents of non cells.
2900
2901 * strings.c (scm_string_set_x): All strings are writable.
2902
2903 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
2904 type. There is only one string type now.
2905
2906 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
2907
2908 * tags.h: Remove comments about two different string types.
2909
2910 (SCM_CELLP, SCM_NCELLP): Deprecated.
2911
2912 * variable.c (make_variable): Remove code variant for vcells.
2913
2914 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
2915 SCM_VARIABLE_LOC): Remove code variant for vcells.
2916
2917 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
2918 SCM_ENABLE_DEPRECATED with the logic reversed.
2919
2920 * dynl.c (moddata, registered_mods), dynl.[ch]
2921 (scm_register_module_xxx, scm_registered_modules,
2922 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
2923 (*top-level-lookup-closure*), eval.[ch]
2924 (scm_top_level_lookup_closure_var, scm_system_transformer,
2925 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
2926 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
2927 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
2928 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
2929 scm_unprotect_object), modules.c (root_module_lookup_closure,
2930 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
2931 beautify_user_module_x_var, try_module_autoload_var,
2932 scm_module_full_name), modules.[ch] (scm_the_root_module,
2933 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
2934 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
2935 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
2936 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
2937 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
2938 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
2939 scm_make_shared_substring), tags.h (scm_tc7_substring,
2940 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
2941 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
2942 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
2943 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
2944 Removed.
2945
2946 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
2947 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
2948 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
2949 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
2950 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
2951 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
2952 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
2953 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
2954 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
2955 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
2956 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
2957 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
2958 (setzone, scm_strftime, scm_strptime), vports.c
2959 (scm_make_soft_port): Remove calls to
2960 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
2961 gone, all strings are 0-terminated anyway.
2962
2963 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
2964 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
2965 double inclusion of the same headers to the SCM_<filename>_H
2966 format.
2967
2968 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
2969 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
2970 print.c (scm_iprin1): The type scm_tc7_substring does not exist
2971 any more.
2972
2973 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
2974 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
2975 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
2976 !SCM_<foo> over SCM_N<foo>.
2977
2978 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
2979
2980 * Makefile.am: Remove references to symbols-deprecated.c.
2981
2982 * symbols.c (scm_init_symbols): Don't initialize deprecated
2983 symbol functions.
2984
2985 * symbols-deprecated.c: Removed.
2986
2987 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
2988 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
2989 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
2990 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
2991 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
2992 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
2993 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
2994 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
2995 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
2996 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
2997 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
2998 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
2999 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
3000 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
3001 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
3002 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
3003 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
3004 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
3005 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
3006 scm_intern0, scm_sysintern, scm_sysintern0,
3007 scm_sysintern0_no_module_lookup, scm_symbol_value0,
3008 scm_string_to_obarray_symbol, scm_intern_symbol,
3009 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
3010 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
3011 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
3012 vectors.[ch] (scm_vector_set_length_x): Removed.
3013
3014 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
3015 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
3016 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
3017 Renamed the macros that are defined to inhibit double inclusion of
3018 the same headers to the SCM_<filename>_H format.
3019
3020 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
3021 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
3022 SCM_N<foo>.
3023
3024 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
3025
3026 * continuations.h (scm_contregs), debug.h (scm_debug_info,
3027 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
3028 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
3029 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
3030 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
3031 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
3032 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
3033 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
3034 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
3035 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
3036 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
3037 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
3038
3039 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
3040 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
3041 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
3042 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
3043 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
3044 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
3045 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
3046 double inclusion of the same headers to the SCM_<filename>_H
3047 format.
3048
3049 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
3050 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
3051 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
3052 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
3053 !SCM_<foo> over SCM_N<foo>.
3054
3055 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
3056
3057 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
3058 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
3059 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
3060 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
3061 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
3062 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
3063 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
3064 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
3065 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
3066 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
3067 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
3068 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
3069 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
3070 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
3071 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
3072 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
3073 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
3074 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
3075 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
3076 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
3077 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
3078 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
3079 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
3080 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
3081 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
3082 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
3083 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
3084 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
3085 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
3086 the macros that are defined to inhibit double inclusion of the
3087 same headers to the SCM_<filename>_H format.
3088
3089 2001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
3090
3091 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
3092 "scm_t_portable" with "scm_port_table" which was an artifact from
3093 the great "scm_*_t -> scm_t_" renaming.
3094
3095 2001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
3096
3097 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
3098 used; nfc. Thanks to Bill Schottstaedt.
3099
3100 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
3101 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
3102 Thanks to Chris Cramer.
3103
3104 2001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
3105
3106 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
3107
3108 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
3109 dynamic scope.
3110 * dynwind.h (scm_swap_bindings): Declare.
3111 * dynwind.c (scm_swap_bindings): Make non-static.
3112
3113 2001-08-25 Michael Livshin <mlivshin@bigfoot.com>
3114
3115 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
3116 doing exactly nothing about them). thanks Neil!
3117
3118 2001-08-18 Neil Jerram <neil@ossau.uklinux.net>
3119
3120 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
3121
3122 2001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
3123
3124 * gc.c: Fix omission bug: Add `heap_segment' forward decl
3125 (proto) in the case when either `GUILE_DEBUG' or
3126 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
3127
3128 (map_free_list): Fix typo: Ref `f' correctly.
3129
3130 Thanks to Chris Cramer.
3131
3132 2001-08-15 Rob Browning <rlb@defaultvalue.org>
3133
3134 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
3135 variables.
3136 (libpath.h): change libguileversion to libguileinterface.
3137
3138 2001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
3139
3140 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
3141 ChangeLog-2000. Thanks to Daniel Skarda!
3142
3143 2001-08-07 Michael Livshin <mlivshin@bigfoot.com>
3144
3145 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
3146 do it from the Makefile.
3147
3148 * Makefile.am: rearrange the snarfing slightly, so that .doc files
3149 are of a reasonable size.
3150
3151 2001-08-02 Neil Jerram <neil@ossau.uklinux.net>
3152
3153 * stacks.c (scm_make_stack): Improve docstring by explaining use
3154 of cutting args.
3155
3156 2001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
3157
3158 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
3159 scm_char_whitespace_p, scm_char_upper_case_p,
3160 scm_char_lower_case_p, scm_char_is_both_p): Do not require
3161 characters to fulfill isascii in addition to the primary
3162 predicate.
3163
3164 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
3165
3166 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
3167 scm_istr2flo, scm_istring2number): Removed.
3168
3169 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
3170 SCM_SLOPPY_<foo>.
3171
3172 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
3173 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
3174 Added.
3175
3176 (scm_string_to_number): Use new number parser.
3177
3178 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
3179 handles complex numbers.
3180
3181 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
3182 SCM_<foo>_H.
3183
3184 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
3185 SCM_N<pred>.
3186
3187 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
3188
3189 (scm_i_mem2number): Added.
3190
3191 (scm_exact_to_inexact): Changed signature.
3192
3193 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
3194 here instead of within scm_i_mem2number. Call scm_i_mem2number
3195 instead of scm_istr2int and scm_istring2number.
3196
3197 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
3198
3199 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
3200 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
3201 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
3202 !SCM_<pred> over SCM_N<pred>.
3203
3204 (scm_eval_body): Remove side effecting code from macro call.
3205
3206 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
3207 SCM_NIMP test.
3208
3209 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
3210
3211 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
3212
3213 2001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
3214
3215 Removed vcell slot from structs.
3216
3217 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
3218 subsequent indices.
3219
3220 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
3221 zero. Use scm_vtable_index_layout instead of "0" when accessing
3222 said slot.
3223 (scm_init_struct): Remove vcell slot layout code from
3224 required_vtable_fields.
3225
3226 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
3227
3228 * goops.c (build_class_class_slots): Removed vcell slot
3229 definition.
3230
3231 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
3232 Removed vcell slot layout code.
3233 (scm_si_vcell): Removed.
3234
3235 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
3236
3237 "Glocs" have been removed.
3238
3239 * tags.h: Update tag system docs.
3240 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
3241 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
3242 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
3243 or SCM_NCONSP, respectively.
3244
3245 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
3246 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
3247 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
3248
3249 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
3250 tell glocs from structs.
3251
3252 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
3253
3254 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
3255 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
3256 instead of with glocs.
3257 (EVALCAR): Do not test for glocs.
3258 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
3259 condition.
3260 (scm_unmemocar): Do not handle glocs.
3261 (scm_m_atfop): Memoize as a variable, not as a gloc.
3262 (scm_eval_args, scm_deval_args): Do not handle glocs.
3263 (scm_ceval, scm_deval): Likewise.
3264
3265 * eval.h (SCM_XEVALCAR): Do not test for glocs.
3266 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
3267 Removed.
3268
3269 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
3270
3271 * dynwind.c (scm_swap_bindings): Likewise.
3272 (scm_dowinds): Updated to recognize lists of variables instead of
3273 lists of glocs.
3274
3275 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
3276
3277
3278 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
3279 where it is needed.
3280
3281 2001-07-25 Gary Houston <ghouston@arglist.com>
3282
3283 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
3284 docstrings to reflect the n-ary implementation.
3285
3286 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
3287
3288 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
3289 value of a variable, not the plain "return" statement.
3290
3291 2001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
3292
3293 * eval.c: Allow variables in memoized code (in addition to glocs).
3294 (scm_lookupcar): Handle variables in lost races. Replace symbol
3295 with variable directly, do not make a gloc.
3296 (scm_unmemocar): Rewrite variables using a reverse lookup, just
3297 like glocs.
3298 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
3299 the main switch.
3300
3301 2001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3302
3303 * variable.c (scm_i_variable_print): Use "value" instead of
3304 "binding" since a binding is the mapping between symbols and
3305 variables, not between variables and their values.
3306
3307 * tags.h (scm_tc7_variable): New.
3308 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
3309 * print.c (scm_iprin1): Likewise.
3310
3311 * variable.h (scm_tc16_variable): Removed.
3312 (SCM_VARIABLEP): Test for new tc7 code.
3313 (scm_i_variable_print): New.
3314 * variable.c (scm_tc16_variable): Removed.
3315 (variable_print): Renamed to scm_i_variable_print and made
3316 non-static.
3317 (variable_equal_p): Removed.
3318 (make_variable): Construct a tc7 object instead of a smob.
3319 (scm_init_variable): Do not register smob.
3320
3321 2001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
3322
3323 * tags.h: Include inttypes.h when we have it.
3324
3325 2001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
3326
3327 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
3328 is taken by the new SCM_IM_CALL_WITH_VALUES.
3329 * print.c (scm_isymnames): Update table accordingly.
3330
3331 2001-07-22 Gary Houston <ghouston@arglist.com>
3332
3333 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
3334 SCM_MAKINUM to convert regoff_t value to SCM.
3335
3336 2001-07-21 Gary Houston <ghouston@arglist.com>
3337
3338 * scmsigs.c: include sys/time.h for itimer stuff.
3339
3340 2001-07-19 Rob Browning <rlb@defaultvalue.org>
3341
3342 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
3343
3344 * c-tokenize.lex: add option %nounput to quiet warning.
3345 Add prototype for yylex to quiet warning.
3346
3347 * scmconfig.h.in: add flags for setitimer and getitimer.
3348
3349 * scmsigs.h (scm_init_scmsigs): new prototype.
3350 (scm_init_scmsigs): new prototype.
3351
3352 * scmsigs.c (s_scm_setitimer): new function.
3353 (s_scm_setitimer): new function.
3354
3355 2001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
3356
3357 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
3358 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
3359 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
3360 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
3361 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
3362 guile-func-name-check.in, guile-snarf-docs-texi.in,
3363 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
3364 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
3365 objprop.c, objprop.h, options.c, options.h, random.h,
3366 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
3367 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
3368 version.c, version.h: Updated copyright notice.
3369
3370 2001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
3371
3372 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
3373 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
3374 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
3375 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
3376 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
3377 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
3378 sym_environment, scm_sym_change_class): New static variables to
3379 hold predefined symbols.
3380
3381 (build_class_class_slots): Build the list using scm_list_n
3382 instead of cons. Also, slots are already created as lists, thus
3383 making a call to maplist unnecessary.
3384
3385 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
3386 scm_class_direct_subclasses, scm_class_direct_methods,
3387 scm_class_precedence_list, scm_class_slots, scm_class_environment,
3388 scm_method_procedure, create_standard_classes, purgatory): Use
3389 predefined symbols.
3390
3391 (build_slots_list, compute_getters_n_setters,
3392 scm_sys_initialize_object, scm_sys_inherit_magic_x,
3393 get_slot_value_using_name, set_slot_value_using_name,
3394 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
3395 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
3396 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
3397
3398 (scm_sys_prep_layout_x): Minimize variable scopes.
3399
3400 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
3401 scm_sys_fast_slot_set_x): Fix signedness.
3402
3403 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
3404 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
3405 scm_memoize_method, scm_wrap_object): Use packing and unpacking
3406 when converting to and from SCM values.
3407
3408 (scm_enable_primitive_generic_x): Add rest argument checking.
3409
3410 (map, filter_cpl, maplist, scm_sys_initialize_object,
3411 scm_sys_prep_layout_x, slot_definition_using_name,
3412 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
3413 call_memoize_method, scm_make, scm_make_class): Prefer explicit
3414 predicates over SCM_N?IMP tests.
3415
3416 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
3417 checking.
3418
3419 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
3420 alias.
3421
3422 2001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
3423
3424 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
3425
3426 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
3427
3428 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
3429
3430 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
3431
3432 2001-07-12 Michael Livshin <mlivshin@bigfoot.com>
3433
3434 * strings.c (s_scm_string): fix arg position in assert.
3435
3436 2001-07-11 Gary Houston <ghouston@arglist.com>
3437
3438 * strports.c (st_write): use memcpy, not strncpy. thanks to
3439 Dale P. Smith.
3440
3441 2001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
3442
3443 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
3444 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
3445 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
3446 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
3447 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
3448 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
3449 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
3450 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
3451 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
3452 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
3453 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
3454 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
3455 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
3456 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
3457 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
3458 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
3459 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
3460 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
3461 weaks.c, weaks.h: Remove "face-lift" comment.
3462
3463 2001-07-08 Rob Browning <rlb@defaultvalue.org>
3464
3465 * .cvsignore: add stamp-h.in.
3466
3467 2001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
3468
3469 * hooks.c (scm_make_hook, scm_add_hook_x),
3470 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
3471 value info to the docstrings.
3472
3473 2001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
3474
3475 Some more compatibility patches for Windows.
3476
3477 * posix.c (getlogin): getlogin() implementation for Windows.
3478
3479 * backtrace.c, ioext.c: Include <stdio.h>.
3480
3481 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
3482 exist.
3483
3484 * cpp_sig_symbols.in: Added SIGBREAK.
3485
3486 2001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
3487
3488 * strports.c (scm_read_0str, scm_eval_0str): Call
3489 scm_c_read_string and scm_c_eval_string respectively, not
3490 themselves. Thanks to Dale P. Smith!
3491
3492 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
3493
3494 * unif.c (scm_array_set_x): The variable args does not
3495 necessarily have to be a list. Further, got rid of a redundant
3496 SCM_NIMP test.
3497
3498 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
3499
3500 * list.c (SCM_I_CONS): Make sure the cell type is initialized
3501 last.
3502
3503 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
3504 init_heap_seg): Fixed signedness.
3505
3506 (init_heap_seg): Replaced strange for-loop with a while loop.
3507
3508 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
3509
3510 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
3511
3512 The following patch adds conservative marking for the elements of
3513 free or allocated cells.
3514
3515 * gc.c (allocated_mark, heap_segment): New static functions.
3516
3517 (which_seg): Deleted, since the functionality is now provided by
3518 function heap_segment.
3519
3520 (map_free_list): Use heap_segment instead of which_seg.
3521
3522 (MARK): If cell debugging is disabled, mark free cells
3523 conservatively.
3524
3525 (scm_mark_locations, scm_cellp): Extracted the search for the
3526 heap segment of a SCM value into function heap_segment.
3527
3528 (scm_init_storage): Allocated cells must be marked
3529 conservatively.
3530
3531 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
3532
3533 The following patch changes the representation of weak vectors to
3534 double cells instead of using an extension of the vector's
3535 allocated memory.
3536
3537 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
3538 the result of SCM_WVECT_GC_CHAIN.
3539
3540 (scm_gc_sweep): Weak vectors don't have extra fields any more.
3541
3542 * weaks.c (allocate_weak_vector): New static function. It does
3543 not patch any previously created vector object during the
3544 construction of a weak vector, and thus doesn't need to switch
3545 off interrupts during vector creation.
3546
3547 (scm_make_weak_vector, scm_make_weak_key_hash_table,
3548 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
3549 Use allocate_weak_vector to provide the new weak vector object.
3550
3551 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
3552 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
3553 now stored in the double cell.
3554
3555 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
3556 Use SCM_WVECT_TYPE.
3557
3558 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
3559 using an entry of the double cell.
3560
3561 2001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
3562
3563 * stamp-h.in: bye bye
3564
3565 2001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
3566
3567 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
3568 scm_eval_0str.
3569
3570 * load.c, load.h (scm_c_primitive_load,
3571 scm_c_primitive_load_path): New.
3572
3573 * strports.c, strports.h (scm_c_read_string): Renamed from
3574 scm_read_0str. Also, added "const" qualifier to argument.
3575 (scm_c_eval_string): Renamed from scm_eval_0str.
3576 (scm_read_0str, scm_eval_0str): Deprecated.
3577
3578 2001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
3579
3580 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
3581 SCM_LIST1.
3582
3583 2001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
3584
3585 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
3586 scm_list_n): New functions.
3587 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
3588 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
3589 (lots of files): Use the new functions.
3590
3591 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
3592
3593 * strings.c: #include "libguile/deprecation.h".
3594
3595 2001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
3596
3597 * read.c (scm_lreadr): When reading a hash token, check for a
3598 user-defined hash procedure first, so that overriding the builtin
3599 hash characters is possible (this was needed for implementing
3600 SRFI-4's read synax `f32(...)').
3601
3602 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
3603 because the latter is unsigned now and breaks comparisons like
3604 (n < (scm_t_signed_bits)MIN_VALUE).
3605
3606 2001-06-26 Neil Jerram <neil@ossau.uklinux.net>
3607
3608 * eval.h, eval.c (scm_call_4): New function.
3609
3610 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
3611 directly rather than dispatching to them via scm_ithrow and a lazy
3612 catch.
3613
3614 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
3615 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
3616 for trap handler procedures.
3617
3618 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
3619 procedures not being #f.
3620
3621 2001-06-27 Michael Livshin <mlivshin@bigfoot.com>
3622
3623 * Makefile.am (c-tokenize.c): add rule to generate it.
3624 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
3625
3626 filter-doc-snarfage.c: remove.
3627
3628 2001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
3629
3630 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
3631
3632 The following set of changes makes compiling Guile under various
3633 Windows compilers easier. Compilation under GNU systems should
3634 not be affected at all.
3635
3636 Thanks to Stefan Jahn for all necessary information, patches and
3637 testing.
3638
3639 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
3640 getpgrp, ttyname, primitive-fork and some header inclusion for
3641 Windows.
3642
3643 * random.c: Define M_PI, if not predefined and use __int64 for
3644 LONG64 under Windows.
3645
3646 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
3647 Windows and conditionalize some signal names.
3648
3649 * socket.c (scm_getsockopt): Added missing comma.
3650 Include socket library header under Windows.
3651
3652 * stime.c (CLKTCK): Add cast to int, to make it compile under
3653 Windows.
3654
3655 * ports.c (truncate): New function, compiled only under Windows.
3656
3657 * net_db.c: Do not declare errno under Windows.
3658
3659 * iselect.h, inet_aton.c: Include socket library headers under
3660 Windows.
3661
3662 * guile.c (inner_main): Under Windows, initialize socket library
3663 and initialize gdb_interface data structures.
3664
3665 * gdb_interface.h: Under Windows, gdb_interface cannot be
3666 initialized statically. Initialize at runtime instead.
3667
3668 * fports.c (write_all): ssize_t -> size_t.
3669 (fport_print): Conditionalize call to ttyname().
3670 (getflags): New function, compiled only under Windows.
3671
3672 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
3673 primitives chown, link, fcntl.
3674 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
3675 as path seperator.
3676
3677 * backtrace.c: Include <io.h> under Windows.
3678
3679 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
3680
3681 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
3682 declaration.
3683
3684 2001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
3685
3686 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
3687 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
3688 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
3689 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
3690 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
3691 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
3692 (scm_dynamic_wind, scm_dowinds), environments.c
3693 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
3694 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
3695 goops.c (GETVAR, purgatory, make_class_from_template,
3696 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
3697 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
3698 (scm_primitive_load), modules.c (scm_resolve_module,
3699 scm_c_define_module, scm_c_use_module, scm_c_export,
3700 module_variable, scm_eval_closure_lookup, scm_sym2var,
3701 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
3702 ports.c (scm_port_for_each), print.c (scm_printer_apply),
3703 properties.c (scm_primitive_property_ref), ramap.c (ramap,
3704 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
3705 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
3706 (scm_object_to_string, scm_call_with_output_string,
3707 scm_call_with_input_string), throw.c (scm_body_thunk,
3708 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
3709 scm_make_shared_array), vports.c (sf_flush, sf_write,
3710 sf_fill_input, sf_close): Use one of the above functions.
3711 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
3712
3713 2001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
3714
3715 * filesys.c (scm_close), ports.c (scm_close_port,
3716 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
3717 instead of SCM_NEGATE_BOOL.
3718
3719 * filesys.c (scm_stat): Clean up type dispatch.
3720
3721 * filesys.c (scm_stat), ports.c (scm_input_port_p,
3722 scm_output_port_p): Get rid of redundant IM type check.
3723
3724 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
3725 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
3726 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
3727 scm_return_entry), numbers.c (scm_number_to_string), objects.c
3728 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
3729 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
3730 scm_addr_vector), stime.c (scm_strftime), strings.c
3731 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
3732 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
3733 scm_string_split), strports.c (scm_strport_to_string), symbols.c
3734 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
3735 instead of scm_makfromstr.
3736
3737 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
3738 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
3739 scm_read_hash_extend), stime.c (scm_strftime), strings.c
3740 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
3741 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
3742 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
3743 !SCM_<pred> over SCM_N<pred>.
3744
3745 * strings.[ch] (scm_makfromstr): Deprecated.
3746
3747 (scm_mem2string): New function, replaces scm_makfromstr.
3748
3749 * strings.c (scm_substring), strop.c (string_copy,
3750 scm_string_split), strports.c (scm_strport_to_string), symbols.c
3751 (scm_symbol_to_string): Fix gc problem.
3752
3753 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
3754 SCM_<foo>_H.
3755
3756 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
3757 warning about comparing signed and unsigned values. This fix is
3758 not optimal, since it won't work reliably if sizeof (c_start) >
3759 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
3760 solution is to define this macro as an inline function, thus
3761 allowing to specifiy the types of c_start and c_end.
3762
3763 2001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
3764
3765 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
3766 scm_t_debug_frame*.
3767
3768 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
3769 Rename <foo>H to SCM_<foo>_H.
3770
3771 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
3772 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
3773
3774 (narrow_stack): Make i unsigned. Don't use side-effecting
3775 operations in conditions.
3776
3777 (narrow_stack, scm_make_stack, scm_stack_id,
3778 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
3779
3780 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
3781 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
3782 more.
3783
3784 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
3785 signedness.
3786
3787 (scm_last_stack_frame): Remove bogus `;´.
3788
3789 * stacks.h (SCM_FRAMEP): Fix type check.
3790
3791 2001-06-25 Michael Livshin <mlivshin@bigfoot.com>
3792
3793 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
3794 c-tokenize.c when doing maintainer-clean.
3795
3796 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
3797
3798 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
3799 simplify.
3800
3801 * eval.c: all hash signs are in column 0.
3802
3803 * Makefile.am (guile_filter_doc_snarfage): build using
3804 c-tokenize.c, not filter-doc-snarfage.c.
3805 rearrange snarfing dependencies a bit.
3806
3807 * c-tokenize.lex: new file.
3808
3809 2001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
3810
3811 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
3812 scm_t_srcpropso_plist. See the big type renaming.
3813 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
3814 Thanks to Seth Alves!
3815
3816 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
3817 they aren't defined already.
3818
3819 2001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
3820
3821 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
3822 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
3823 problem.
3824
3825 * backtrace.c (display_expression, scm_set_print_params_x,
3826 display_application, display_frame, scm_backtrace), numbers.c
3827 (scm_istring2number), objects.c (scm_class_of,
3828 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
3829 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
3830
3831 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
3832 always positive.
3833
3834 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
3835 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
3836
3837 * objects.c (scm_class_of): Type fix.
3838
3839 (scm_mcache_lookup_cmethod): Improved comment, simplified,
3840 eliminated goto.
3841
3842 * pairs.h (scm_error_pair_access): The function can return if
3843 called recursively.
3844
3845 2001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
3846
3847 * init.c (scm_init_guile_1): Removed initialization of tag.c.
3848
3849 * gdbint.c, init.c: Removed inclusion of tag.h.
3850
3851 * tag.h, tag.c: Removed files.
3852
3853 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
3854
3855 2001-06-20 Gary Houston <ghouston@arglist.com>
3856
3857 * deprecation.c, extensions.c, rw.c: include string.h.
3858
3859 2001-06-19 Gary Houston <ghouston@arglist.com>
3860
3861 * filter-doc-snarfage.c (process): added ungetc in
3862 MULTILINE_COOKIE case since otherwise it fails when there's no
3863 space between the '(' and the quote of the following string
3864 (gcc 3.0).
3865
3866 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
3867
3868 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
3869
3870 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
3871
3872 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
3873 extension takes place.
3874 * strings.h (SCM_STRING_LENGTH): Likewise.
3875 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
3876
3877 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
3878 it.
3879
3880 * tags.h: Include <stdint.h> when we have it.
3881 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
3882 available. Else use "unsigned long".
3883 (scm_signed_bits_t): New.
3884
3885 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
3886 (SCM_INUM): Cast result to scm_signed_bits_t.
3887
3888 2001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
3889
3890 * mkstemp.c: Update path to #include file scmconfig.h.
3891 Thanks to Golubev I. N.
3892
3893 2001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
3894
3895 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
3896
3897 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\´ at the end of
3898 the macro definition.
3899
3900 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
3901 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
3902 instead of SCM_INST_TYPE.
3903
3904 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
3905 the object is a struct before accessing its struct flags.
3906
3907 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
3908
3909 2001-06-10 Gary Houston <ghouston@arglist.com>
3910
3911 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
3912 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
3913 work reliably anymore. try it from boot-9.scm instead.
3914
3915 2001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
3916
3917 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
3918 Thanks to Matthias Köppe!
3919
3920 2001-06-08 Michael Livshin <mlivshin@bigfoot.com>
3921
3922 * snarf.h, filter-doc-snarfage.c: more changes to cope with
3923 space-happy C preprocessors.
3924
3925 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
3926 inside cookies. thanks to Matthias Köppe!
3927
3928 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
3929
3930 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
3931 keywords. Fix gc protection.
3932
3933 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
3934 operations in macro calls.
3935
3936 * pairs.c (scm_error_pair_access): Avoid recursion.
3937
3938 Thanks to Matthias Koeppe for reporting the bugs that correspond
3939 to the following set of patches.
3940
3941 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
3942 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
3943 bitvector base address using SCM_BITVECTOR_BASE.
3944
3945 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
3946 unsigned long*.
3947
3948 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
3949
3950 * goops.c (SCM_CLASS_REDEF): Removed.
3951
3952 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
3953 SCM_<foo>_H.
3954
3955 Thanks to Matthias Koeppe for reporting the bugs that correspond
3956 to the following set of patches.
3957
3958 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
3959 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
3960 scm_sys_allocate_instance, clear_method_cache,
3961 scm_sys_invalidate_method_cache_x, scm_make,
3962 create_standard_classes, scm_make_port_classes, scm_make_class,
3963 scm_add_slot): Use SCM_SET_SLOT to set slot values.
3964
3965 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
3966
3967 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
3968
3969 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
3970 UNARY_ELTS_CODE): Remove bogus break statement.
3971
3972 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
3973 Don't access bit vectors elements as SCM objects.
3974
3975 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
3976 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
3977 Don't assign to an unpacked value.
3978
3979 2001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
3980
3981 * __scm.h (SCM_NORETURN): Moved here from error.h.
3982
3983 (SCM_UNUSED): New macro.
3984
3985 (SCM_DEBUG_PAIR_ACCESSES): New macro.
3986
3987 * backtrace.c (display_error_handler), continuations.c
3988 (continuation_print), debug.c (debugobj_print), dynwind.c
3989 (guards_print), environments.c (observer_print,
3990 core_environments_finalize, leaf_environment_cell,
3991 leaf_environment_print, eval_environment_print,
3992 eval_environment_observer, import_environment_define,
3993 import_environment_undefine, import_environment_print,
3994 import_environment_observer, export_environment_define,
3995 export_environment_undefine, export_environment_print,
3996 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
3997 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
3998 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
3999 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
4000 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
4001 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
4002 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
4003 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
4004 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
4005 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
4006 set_slot_value, test_slot_existence, scm_change_object_class,
4007 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
4008 default_setter), guardians.c (guardian_print, guardian_gc_init,
4009 guardian_zombify, whine_about_self_centered_zombies), guile.c
4010 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
4011 mallocs.c (malloc_print), numbers.c (scm_print_real,
4012 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
4013 end_input_default, scm_port_print, fill_input_void_port,
4014 write_void_port), root.c (root_print), smob.c (scm_mark0,
4015 scm_free0, scm_smob_print, scm_smob_apply_1_error,
4016 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
4017 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
4018 (scm_struct_free_0, scm_struct_free_standard,
4019 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
4020 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
4021 scm_handle_by_throw, scm_ithrow), weaks.c
4022 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
4023 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
4024 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
4025
4026 * error.h (SCM_NORETURN): Moved to __scm.h.
4027
4028 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
4029 Renamed <foo>H to SCM_<foo>_H.
4030
4031 * gc.c (debug_cells_gc_interval): New static variable.
4032
4033 (scm_assert_cell_valid): If selected by the user, perform
4034 additional garbage collections.
4035
4036 (scm_set_debug_cell_accesses_x): Extended to let the user specify
4037 if additional garbage collections are desired.
4038
4039 (mark_gc_async): If additional garbage collections are selected
4040 by the user, don't call the after-gc-hook. Instead require the
4041 user to run the hook manually.
4042
4043 * pairs.c (scm_error_pair_access): New function. Only compiled
4044 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
4045
4046 * pairs.h (SCM_VALIDATE_PAIR): New macro.
4047
4048 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
4049 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
4050 is a real pair object. (Glocs are also accepted, but that may
4051 change.) If not, abort with an error message.
4052
4053 2001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
4054
4055 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
4056
4057 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
4058 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
4059
4060 2001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
4061
4062 * extensions.c (scm_c_register_extension): Allow NULL as library
4063 name.
4064 (load_extension): Ignore NULL library names when comparing.
4065
4066 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
4067 non-pointers are being compared. Thanks to Alexander Klimov!
4068
4069 2001-06-04 Gary Houston <ghouston@arglist.com>
4070
4071 * rw.c (scm_write_string_partial): new procedure implementing
4072 write-string/partial in (ice-9 rw).
4073 * rw.h: declare scm_write_string_partial.
4074
4075 2001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
4076
4077 * keywords.c (keyword_print): Substract 1 from length of symbol
4078 name, accounting for the silly dash.
4079
4080 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
4081 Do not emit deprecation warning.
4082
4083 Added exception notice to all files.
4084
4085 * dynl.c: Include "deprecation.h".
4086
4087 2001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
4088
4089 * dynl.c (scm_register_module_xxx, scm_registered_modules,
4090 scm_clear_registered_modules): Deprecated.
4091
4092 2001-06-02 Rob Browning <rlb@cs.utexas.edu>
4093
4094 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
4095 guile-snarf-docs-texi.
4096
4097 * fports.c: HAVE_ST_BLKSIZE changed to
4098 HAVE_STRUCT_STAT_ST_BLKSIZE.
4099 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
4100 HAVE_STRUCT_STAT_ST_BLKSIZE.
4101
4102 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
4103 HAVE_STRUCT_STAT_ST_RDEV.
4104 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
4105 HAVE_STRUCT_STAT_ST_BLKSIZE.
4106 (scm_stat2scm): HAVE_ST_BLOCKS changed to
4107 HAVE_STRUCT_STAT_ST_BLOCKS.
4108
4109 2001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
4110
4111 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
4112 of scm_eval_x to allow module changes between the forms in the
4113 string. Set/restore module using scm_c_call_with_current_module.
4114
4115 * mkstemp.c: New file, slightly modified from libiberties
4116 mkstemps.c.
4117
4118 2001-05-31 Michael Livshin <mlivshin@bigfoot.com>
4119
4120 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
4121 filter-doc-snarfage.c: new files.
4122
4123 * Makefile.am: add stuff to [build,] use and distribute
4124 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
4125
4126 * guile-snarf.in: grok the new snarf output.
4127
4128 * snarf.h: make the output both texttools- and `read'-friendly.
4129
4130 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
4131 guile-snarf-docs. (should also deprecate, I guess. maybe not).
4132
4133 2001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
4134
4135 * print.c (scm_simple_format): Support "~~" and "~%". Signal
4136 error for unsupported format controls and for superflous
4137 arguments. Thanks to Daniel Skarda!
4138
4139 * print.h, print.c (scm_print_symbol_name): Factored out of
4140 scm_iprin1.
4141 (scm_iprin1): Call it.
4142
4143 * keywords.c (keyword_print): Use scm_print_symbol_name so that
4144 weird names are printed correctly.
4145
4146 * print.c (scm_print_symbol_name): Symbols whose name starts with
4147 `#' or `:' or ends with `:' are considered weird.
4148
4149 2001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4150
4151 * numbers.c (scm_difference, scm_divide): Clarified comments for -
4152 and /.
4153
4154 2001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4155
4156 * debug.h: Removed prototype for scm_eval_string.
4157
4158 2001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4159
4160 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
4161 (make-string 2000 #\!))' in an older version).
4162
4163 Change strncpy to memcpy to allow embedded NUL characters in
4164 symbol prefix.
4165
4166 2001-05-28 Michael Livshin <mlivshin@bigfoot.com>
4167
4168 * hooks.c (scm_create_hook): deprecated.
4169 (make_hook): deleted.
4170 (scm_make_hook): all the hook creation code is now here.
4171
4172 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
4173 a hook, make it permanent, and do a `scm_c_define' on it.
4174
4175 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
4176
4177 * socket.c (s_scm_inet_pton): fix docstring quoting.
4178 (s_scm_inet_ntop): ditto.
4179
4180 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
4181
4182 * hashtab.c (scm_internal_hash_fold): fix argument position in
4183 SCM_ASSERT.
4184
4185 * environments.c (s_scm_import_environment_set_imports_x): fix
4186 argument position in SCM_ASSERT.
4187
4188 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
4189 (s_scm_make_iloc): ditto.
4190
4191 2001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
4192
4193 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
4194
4195 * eval.c (promise_print): Read the promise's value as an object.
4196
4197 (SCM_CEVAL): Don't perform side-effecting operations in macro
4198 parameters.
4199
4200 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
4201 conditional expression.
4202
4203 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
4204 initializer.
4205
4206 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
4207 text, removed redundant computation of effective_length and fixed
4208 the overflow check.
4209
4210 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
4211 values.
4212
4213 (wrap_init): Don't use SCM_C[AD]R for non pairs.
4214
4215 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
4216
4217 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
4218 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
4219
4220 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
4221
4222 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
4223 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
4224 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
4225 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
4226
4227 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
4228
4229 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
4230
4231 * ramap.c (ramap_rp): Removed bogus `;´.
4232
4233 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
4234 problem.
4235
4236 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
4237 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
4238 Read SCM objects rather than scm_bits_t values.
4239
4240 * tags.h (SCM_VOIDP_TEST): Removed.
4241
4242 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
4243 value of 2 now corresponds to the former 1, the current 1
4244 corresponds to the former situation that SCM_VOIDP_TEST was
4245 defined.
4246
4247 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
4248 If this appears to be not ANSI compliant, we will change it to
4249 typedef struct scm_unused_struct { } * SCM;
4250 Thanks to Han-Wen Nienhuys for the suggestion.
4251
4252 * unif.c (scm_array_set_x): Fix typing problem, and use
4253 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
4254 dealing with uniform vectors.
4255
4256 2001-05-27 Michael Livshin <mlivshin@bigfoot.com>
4257
4258 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
4259 (scm_igc): mark from them, too (precisely, not conservatively!).
4260
4261 * root.h (scm_gc_registered_roots): new object in
4262 scm_sys_protects.
4263
4264 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
4265 `scm_protect_object'. shouldn't call it at all, though, it seems.
4266
4267 * gc.c (scm_[un]protect_object): deprecated.
4268 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
4269 (scm_gc_[un]register_root[s]): new.
4270
4271 * gc.h: add prototypes for scm_gc_[un]protect_object,
4272 scm_gc_[un]register_root[s].
4273
4274 2001-05-26 Michael Livshin <mlivshin@bigfoot.com>
4275
4276 revert the controversial part of the 2001-05-24 changes.
4277
4278 2001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
4279
4280 * modules.c (scm_env_module): Exported to Scheme.
4281
4282 * eval.c (scm_debug_opts): New option `show-file-name'.
4283
4284 * debug.h (SCM_SHOW_FILE_NAME): New.
4285
4286 * backtrace.c: Include "libguile/filesys.h".
4287 (sym_base, display_backtrace_get_file_line,
4288 display_backtrace_file, display_backtrace_file_and_line): New.
4289 (display_frame): Call display_backtrace_file_and_line if that is
4290 requested.
4291 (display_backtrace_body): Call scm_display_backtrace_file if
4292 requested.
4293
4294 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
4295 Prototypes removed since there's no definition for these
4296 functions.
4297
4298 2001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4299
4300 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
4301 Changed use of scm_array->scm_array_t and
4302 scm_array_dim->scm_array_dim_t to enable build with
4303 --disable-deprecated.
4304
4305 2001-05-24 Michael Livshin <mlivshin@bigfoot.com>
4306
4307 The purpose of this set of changes is to regularize Guile's usage
4308 of ANSI C integral types, with the following ideas in mind:
4309
4310 - SCM does not nesessarily have to be long.
4311 - long is not nesessarily enough to store pointers.
4312 - long is not nesessarily the same size as int.
4313
4314 The changes are incomplete and possibly buggy. Please test on
4315 something exotic.
4316
4317 * validate.h
4318 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
4319 new macros.
4320
4321 * unif.h: type renaming:
4322 scm_array -> scm_array_t
4323 scm_array_dim -> scm_array_dim_t
4324 the old names are deprecated, all in-Guile uses changed.
4325
4326 * tags.h (scm_ubits_t): new typedef, representing unsigned
4327 scm_bits_t.
4328
4329 * stacks.h: type renaming:
4330 scm_info_frame -> scm_info_frame_t
4331 scm_stack -> scm_stack_t
4332 the old names are deprecated, all in-Guile uses changed.
4333
4334 * srcprop.h: type renaming:
4335 scm_srcprops -> scm_srcprops_t
4336 scm_srcprops_chunk -> scm_srcprops_chunk_t
4337 the old names are deprecated, all in-Guile uses changed.
4338
4339 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
4340 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
4341 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
4342 vectors.c, vports.c, weaks.c:
4343 various int/size_t -> size_t/scm_bits_t changes.
4344
4345 * random.h: type renaming:
4346 scm_rstate -> scm_rstate_t
4347 scm_rng -> scm_rng_t
4348 scm_i_rstate -> scm_i_rstate_t
4349 the old names are deprecated, all in-Guile uses changed.
4350
4351 * procs.h: type renaming:
4352 scm_subr_entry -> scm_subr_entry_t
4353 the old name is deprecated, all in-Guile uses changed.
4354
4355 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
4356 type renaming:
4357 scm_option -> scm_option_t
4358 the old name is deprecated, all in-Guile uses changed.
4359
4360 * objects.c: various long -> scm_bits_t changes.
4361 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
4362
4363 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
4364 SCM_I_FIXNUM_BIT.
4365
4366 * num2integral.i.c: new file, multiply included by numbers.c, used
4367 to "templatize" the various integral <-> num conversion routines.
4368
4369 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
4370 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
4371 deprecated.
4372 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
4373 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
4374 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
4375 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
4376 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
4377 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
4378 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
4379 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
4380 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
4381 scm_num2size): new functions.
4382
4383 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
4384
4385 * load.c: change int -> size_t in various places (where the
4386 variable is used to store a string length).
4387 (search-path): call scm_done_free, not scm_done_malloc.
4388
4389 * list.c (scm_ilength): return a scm_bits_t, not long.
4390 some other {int,long} -> scm_bits_t changes.
4391
4392 * hashtab.c: various [u]int -> scm_bits_t changes.
4393 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
4394 (scm_ihashx): n: uint -> scm_bits_t
4395 use scm_bits2num instead of scm_ulong2num.
4396
4397 * gsubr.c: various int -> scm_bits_t changes.
4398
4399 * goops.[hc]: various {int,long} -> scm_bits_t changes.
4400
4401 * gh_data.c (gh_num2int): no loss of precision any more.
4402
4403 * gh.h (gh_str2scm): len: int -> size_t
4404 (gh_{get,set}_substr): start: int -> scm_bits_t,
4405 len: int -> size_t
4406 (gh_<num>2scm): n: int -> scm_bits_t
4407 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
4408 (gh_length): return scm_bits_t, not unsigned long.
4409
4410 * gc.[hc]: various small changes relating to many things stopping
4411 being long and starting being scm_[u]bits_t instead.
4412 scm_mallocated should no longer wrap around.
4413
4414 * fports.h: type renaming:
4415 scm_fport -> scm_fport_t
4416 the old name is deprecated, all in-Guile uses changed.
4417
4418 * fports.c (fport_fill_input): count: int -> scm_bits_t
4419 (fport_flush): init_size, remaining, count: int -> scm_bits_t
4420
4421 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
4422 those prototypes, as the functions they prototype don't exist.
4423
4424 * fports.c (default_buffer_size): int -> size_t
4425 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
4426 default_size: int -> size_t
4427 (scm_setvbuf): csize: int -> scm_bits_t
4428
4429 * fluids.c (n_fluids): int -> scm_bits_t
4430 (grow_fluids): old_length, i: int -> scm_bits_t
4431 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
4432 scm_bits_t
4433 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
4434
4435 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
4436 the new and shiny SCM_NUM2INT.
4437
4438 * extensions.c: extension -> extension_t (and made a typedef).
4439
4440 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
4441 there are no nasty surprises if/when the various deeply magic tag
4442 bits move somewhere else.
4443
4444 * eval.c: changed the locals used to store results of SCM_IFRAME,
4445 scm_ilength and such to be of type scm_bits_t (and not int/long).
4446 (iqq): depth, edepth: int -> scm_bits_t
4447 (scm_eval_stack): int -> scm_bits_t
4448 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
4449 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
4450 i: int -> scm_bits_t
4451
4452 * environments.c: changed the many calls to scm_ulong2num to
4453 scm_ubits2num.
4454 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
4455
4456 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
4457
4458 * debug.h: type renaming:
4459 scm_debug_info -> scm_debug_info_t
4460 scm_debug_frame -> scm_debug_frame_t
4461 the old names are deprecated, all in-Guile uses changed.
4462 (scm_debug_eframe_size): int -> scm_bits_t
4463
4464 * debug.c (scm_init_debug): use scm_c_define instead of the
4465 deprecated scm_define.
4466
4467 * continuations.h: type renaming:
4468 scm_contregs -> scm_contregs_t
4469 the old name is deprecated, all in-Guile uses changed.
4470 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
4471 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
4472
4473 * continuations.c (scm_make_continuation): change the type of
4474 stack_size from long to scm_bits_t.
4475
4476 * ports.h: type renaming:
4477 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
4478 scm_port -> scm_port_t
4479 scm_ptob_descriptor -> scm_ptob_descriptor_t
4480 the old names are deprecated, all in-Guile uses changed.
4481 (scm_port_t.entry): int -> scm_bits_t.
4482 (scm_port_t.line_number): int -> long.
4483 (scm_port_t.putback_buf_size): int -> size_t.
4484
4485 * __scm.h (long_long, ulong_long): deprecated (they pollute the
4486 global namespace and have little value beside that).
4487 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
4488 SCM handle).
4489 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
4490 exist (for size_t & ptrdiff_t).
4491 (scm_sizet): deprecated.
4492
4493 * Makefile.am (noinst_HEADERS): add num2integral.i.c
4494
4495 2001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
4496
4497 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
4498 SCM_VARIABLE_INIT since that it what it used to be.
4499
4500 * deprecation.c (scm_include_deprecated_features): Make docstring
4501 ANSIsh. Thanks to Matthias Köppe!
4502
4503 2001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
4504
4505 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
4506 needed for weak-key hashtables.
4507
4508 * procs.c (scm_make_subr_with_generic): Add missing last argument
4509 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
4510
4511 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
4512 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
4513
4514 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
4515
4516 2001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
4517
4518 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
4519 `duplicate_string'. Do not use an indirect cell, store symbol
4520 directly in collision list of hash table.
4521 (duplicate_string): Removed.
4522
4523 * init.c (scm_init_guile_1): Call scm_init_extensions.
4524
4525 * Makefile.am: Add "extensions.c" and related files in all the
4526 right places.
4527
4528 * extensions.h, extension.c: New files.
4529
4530 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
4531
4532 * modules.h (scm_system_module_env_p): Move out of deprecated
4533 section.
4534
4535 * rw.h (scm_init_rw): Added prototype.
4536
4537 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
4538 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
4539 New functions. They replace scm_make_gsubr and
4540 scm_make_gsubr_with_generic. The `make' variants only create the
4541 gsubr object, while the `define' variants also put it into the
4542 current module. Changed all callers.
4543 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
4544
4545 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
4546 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
4547 functions. They replace scm_make_subr, scm_make_subr_opt and
4548 scm_make_subr_with_generic. The `make' variants only create the
4549 subr object, while the `define' variants also put it into the
4550 current module. Changed all callers.
4551 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
4552 Deprecated.
4553
4554 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
4555 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
4556 the comments above.
4557
4558 2001-05-19 Neil Jerram <neil@ossau.uklinux.net>
4559
4560 * throw.c (scm_lazy_catch): Slight docstring clarification.
4561
4562 2001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
4563
4564 * throw.c: Lazy-catch handlers are no longer allowed to return.
4565 Fixed comments throughout.
4566 (scm_ithrow): Signal an error when a lazy-catch handler returns.
4567 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
4568 recognized as such.
4569
4570 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
4571 refered to s_scm_minor_version previously.
4572
4573 * modules.h, modules.c: Moved around a lot of code so that
4574 deprecated features appear at the bottom.
4575 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
4576 module_prefix, make_modules_in_var, beautify_user_module_x_var,
4577 scm_the_root_module, scm_make_module, scm_ensure_user_module,
4578 scm_load_scheme_module): Deprecated.
4579 (scm_system_module_env_p): Return SCM_BOOL_T directly for
4580 environments corresponding to the root module.
4581 (convert_module_name, scm_c_resolve_module,
4582 scm_c_call_with_current_module, scm_c_define_module,
4583 scm_c_use_module, scm_c_export): New.
4584 (the_root_module): New static variant of scm_the_root_module. Use
4585 it everywhere instead of scm_the_root_module.
4586
4587 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
4588 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
4589 (scm_c_with_fluid): New.
4590 (scm_with_fluids): Use scm_c_with_fluids instead of
4591 scm_internal_with_fluids.
4592
4593 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
4594 `scm_init_goops'. Do not explicitly create/switch modules.
4595 Return SCM_UNSPECIFIED.
4596 (scm_init_goops): Only register `%init-goops-builtins' procedure.
4597 (scm_load_goops): Use scm_c_resolve_module instead of
4598 scm_resolve_module.
4599
4600 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
4601 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
4602 `scm_init_rw' prior to loading the startup files.
4603
4604 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
4605 scm_init_rdelim. Do not explicitly create/switch modules.
4606 Return SCM_UNSPECIFIED.
4607 (scm_init_rdelim): Only register `%init-rdelim-builtins'
4608 procedure.
4609
4610 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
4611 explicitly create/switch modules. Return SCM_UNSPECIFIED.
4612 (scm_init_rw): Only register `%init-rw-builtins' procedure.
4613
4614 * script.c (scm_shell): Evaluate the compiled switches in the
4615 current module, not in the root module.
4616
4617 2001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
4618
4619 * fluids.c (scm_c_with_fluids): Rename from
4620 scm_internal_with_fluids.
4621 (scm_internal_with_fluids): Deprecated.
4622 (scm_c_with_fluid): New.
4623
4624 2001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
4625
4626 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
4627
4628 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
4629 accessed with SCM_C[AD]R.
4630
4631 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
4632
4633 2001-05-16 Rob Browning <rlb@cs.utexas.edu>
4634
4635 * version.c (s_scm_major_version): doc fixes.
4636 (s_scm_minor_version): doc fixes.
4637 (s_scm_minor_version): new function.
4638
4639 * version.h (scm_init_version): new function.
4640
4641 * versiondat.h.in: add GUILE_MICRO_VERSION.
4642
4643 2001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4644
4645 * deprecation.c (scm_init_deprecation): Renamed
4646 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
4647
4648 2001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
4649
4650 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
4651 dependent on cpp_cnvt.awk
4652
4653 2001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4654
4655 * script.c (scm_compile_shell_switches): New command line option
4656 `--use-srfi' for loading a list of SRFIs on startup.
4657 (scm_shell_usage): Added `--use-srfi' to help message.
4658
4659 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
4660
4661 Merged from mvo-vcell-cleanup-1-branch.
4662
4663 The concept of vcells has been removed from Guile. With it,
4664 explicit obarrays and associated operations are gone. Use
4665 hashtables instead of obarrays.
4666
4667 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
4668 result as variable instead of vcell. Glocs no longer point to a
4669 vcell but to a variable. Use scm_c_define instead of
4670 scm_sysintern and treat the result as a variable (which it is),
4671 not a vcell.
4672
4673 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
4674 SCM_DEFVARIABLEP): Deprecated.
4675 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
4676 (variable_print): Do not print name of variable.
4677 (variable_equalp): Compare values, not vcells.
4678 (anonymous_variable_sym): Removed.
4679 (make_vcell_variable): Removed.
4680 (make_variable): New, as replacement.
4681 (scm_make_variable, scm_make_undefined_variable): Do not take name
4682 hint parameter.
4683 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
4684 error in that case.
4685 (scm_builtin_variable): Deprecated.
4686
4687 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
4688 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
4689 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
4690 scm_sysintern, scm_sysintern0, scm_symbol_value0,
4691 scm_string_to_obarray_symbol, scm_intern_symbol,
4692 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
4693 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
4694 Deprecated and moved to "symbols-deprecated.c".
4695 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
4696 (scm_init_symbols): Call scm_init_symbols_deprecated.
4697 * symbols-deprecated.c: New file.
4698 * Makefile.am: Added symbols-deprecated.c and related files in all
4699 the right places.
4700
4701 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
4702 SCM_GLOBAL_VCELL_INIT): Deprecated.
4703 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
4704 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
4705
4706 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
4707 SCM_GLOC_SYM.
4708
4709 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
4710 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
4711 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
4712 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
4713 Changed according to the `throughout' comments.
4714
4715 * modules.h, modules.c (scm_module_system_booted_p): Changed type
4716 to `int'.
4717 (scm_module_type): Removed.
4718 (the_root_module): Renamed to the_root_module_var. Now points to
4719 a variable instead of a vcell. Updated all uses.
4720 (scm_the_root_module): Return SCM_BOOL_F when module systems
4721 hasn't been booted yet.
4722 (SCM_VALIDATE_STRUCT_TYPE): Removed.
4723 (scm_post_boot_init_modules): Made static.
4724 (scm_set_current_module): Call scm_post_boot_init_modules on first
4725 call.
4726 (make_modules_in, beautify_user_module_x, resolve_module,
4727 try_module_autoload, module_make_local_var_x): Tacked on "_var"
4728 suffix. Now point to variables instead of vcells. Updated all
4729 uses.
4730 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
4731 and return SCM_BOOL_F in that case.
4732 (scm_module_transformer): Likewise.
4733 (sym_module, scm_lookup_closure_module, scm_env_module): New.
4734 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
4735 (scm_eval_closure_lookup): Do not allow new definitions when
4736 `interface' flag is set.
4737 (scm_standard_interface_eval_closure): New.
4738 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
4739 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
4740 scm_c_lookup, scm_c_module_define, scm_c_define,
4741 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
4742 scm_modules_prehistory): New.
4743 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
4744 instead of scm_intern0.
4745
4746 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
4747 symbol.
4748
4749 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
4750 hashtable operations to maintain the keywords, not obarray ones.
4751
4752 * init.c (scm_load_startup_files): Do not call
4753 scm_post_boot_init_modules. This is done by
4754 scm_set_current_module now.
4755 (scm_init_guile_1): Call scm_modules_prehistory. Call
4756 scm_init_variable early on.
4757
4758 * goops.c (s_scm_sys_goops_loaded): Get
4759 var_compute_applicable_methods from scm_sym2var, not from a direct
4760 invocation of scm_goops_lookup_closure.
4761
4762 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
4763
4764 * gc.c: Added simple debugging hack to mark phase of GC: When
4765 activated, do not tail-call scm_gc_mark. This gives nice
4766 backtraces.
4767 (scm_unhash_name): Removed.
4768
4769 * feature.c (features): Renamed to features_var. Now points to a
4770 variable instead of a vcell. Updated all uses.
4771
4772 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
4773 `scm_current_module_lookup_closure' which will do the right thing
4774 when the module system hasn't been booted yet.
4775 (SCM_GLOC_SYM): Removed.
4776 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
4777 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
4778
4779 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
4780 instead of with vcells. Do not overwrite `var' with the result of
4781 the lookup, use the new `real_var' instead. Remove `var2' in
4782 exchange (which was only used with threads).
4783 (sym_three_question_marks): New.
4784 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
4785 `SCM_GLOC_SYM'.
4786 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
4787 (scm_m_atfop): Expect the function definition to be a variable
4788 instead of a vcell.
4789 (scm_macroexp): Do not use `unmemocar', explicitely remember the
4790 symbol instead.
4791 (scm_unmemocopy): Removed thoughts about anti-macro interface.
4792 (scm_eval_args): Use more explicit code in the gloc branch of the
4793 atrocious struct ambiguity test. The optimizer will sort this
4794 out.
4795 (scm_deval_args): Likewise.
4796 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
4797 remember the symbol instead. Added some comments where
4798 scm_tc3_cons_gloc really exclusively refers to structs.
4799 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
4800 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
4801 of scm_sysintern in general.
4802
4803 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
4804 explicit magic.
4805
4806 * debug.c (s_scm_make_gloc): Only allow proper variables, no
4807 pairs. Put the variable directly in the gloc.
4808 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
4809 (scm_init_debug): Use scm_c_define instead scm_sysintern.
4810
4811 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
4812
4813 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
4814 scm_the_last_stack_fluid_var. It now points to a variable instead
4815 of a vcell. Updated all uses.
4816 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
4817 instead of a vcell. Updated all uses.
4818
4819 * _scm.h: Include "variables.h" and "modules.h" since almost
4820 everybody needs them now.
4821
4822 * root.h (scm_symhash, scm_symhash_vars): Removed.
4823 * gc.c (scm_init_storage): Do not initialize them.
4824
4825 2001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4826
4827 * eval.c (scm_init_eval): Initialize scm_undefineds and
4828 scm_listofnull.
4829
4830 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
4831 like the SCM_NEWCELL macro counterparts.
4832
4833 (scm_init_storage, scm_init_gc): Moved initialization of
4834 scm_tc16_allocated from scm_init_gc to scm_init_storage.
4835
4836 (scm_init_storage): Moved initialization of scm_undefineds and
4837 scm_listofnull to eval.c, initializion of scm_nullstr to
4838 strings.c, initializion of scm_nullvect to vectors.c.
4839
4840 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
4841 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
4842
4843 * init.c (scm_init_guile_1): Reordered some initializations and
4844 added dependcy information comments.
4845
4846 * load.c (scm_init_load): Use scm_nullstr.
4847
4848 * strings.c (scm_init_strings): Initialize scm_nullstr.
4849
4850 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
4851
4852 2001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
4853
4854 * values.c (print_values): Print as a unreadable object, not as
4855 multiple lines. Thanks to Matthias Köppe!
4856
4857 2001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
4858
4859 * deprecation.c: Fixed copyright date.
4860
4861 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
4862 DEPRECATION_H to SCM_DEPRECATION_H.
4863
4864 2001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
4865
4866 * guile-doc-snarf.in: Update copyright.
4867 Fix relative path bug. Thanks to Sergey Poznyakoff.
4868
4869 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
4870
4871 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
4872 accept open ports. Thanks to Quetzalcoatl Bradley!
4873
4874 2001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4875
4876 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
4877 has 779 primitives on startup.
4878
4879 2001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
4880
4881 * eval.c (scm_i_eval): Copy expression before passing it to
4882 SCM_XEVAL. The copy operation was removed unintendedly during my
4883 change on 2001-03-25.
4884
4885 2001-05-09 Michael Livshin <mlivshin@bigfoot.com>
4886
4887 from Matthias Köppe (thanks!):
4888
4889 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
4890 portable.
4891
4892 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
4893 docstring.
4894
4895 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
4896
4897 * gc.c (scm_init_gc): Added FIXME comment.
4898
4899 * hooks.c: Since hooks don't have a name any more, it is not
4900 necessary to include objprop.h.
4901
4902 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
4903
4904 (symbol_name, scm_make_hook_with_name): Removed.
4905
4906 (scm_create_hook): Don't set the hook's name property.
4907
4908 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
4909
4910 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
4911
4912 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
4913
4914 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
4915 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
4916 FLOBUFLEN and define it unconditionally.
4917
4918 2001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
4919
4920 * gh_data.c (gh_lookup): Call gh_module_lookup with
4921 `scm_current_module ()', not `#f'.
4922 (gh_module_lookup): Expect a module instead of an obarray as first
4923 argument and do lookup in that module.
4924
4925 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
4926 arrays. The length of array is already determined differently and
4927 scm_uniform_vector_length does not work on arrays.
4928
4929 2001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
4930
4931 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
4932 as well. "SCM (*)(...)" does not work on RedHat 7.1.
4933
4934 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
4935 they are not used. Changed `wrong type' error into `wrong num
4936 args' error. Changed all callers.
4937
4938 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
4939 arguments are supplied.
4940
4941 2001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
4942
4943 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
4944 describe `regexp/notbol' and `regexp/noteol' execution flags.
4945
4946 * strop.c (scm_substring_move_x): Doc fix; nfc.
4947
4948 2001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
4949
4950 * objects.c, objects.h (scm_valid_object_procedure_p): New.
4951 (scm_set_object_procedure_x): Use it to check argument. Fix
4952 docstring.
4953
4954 * evalext.c (scm_definedp): Fix docstring.
4955
4956 2001-05-05 Gary Houston <ghouston@arglist.com>
4957
4958 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
4959 support.
4960
4961 2001-05-04 Neil Jerram <neil@ossau.uklinux.net>
4962
4963 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
4964 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
4965 Change R4RS references to R5RS.
4966
4967 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
4968 docstring source are correctly reproduced in the output (ii)
4969 we don't anymore get occasional trailing quotes. Also reorganized
4970 and commented the code a little.
4971
4972 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
4973 fixes.
4974
4975 2001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4976
4977 * strop.c (scm_string_split): New procedure.
4978
4979 * strop.h (scm_string_split): Added prototype.
4980
4981 2001-05-04 Gary Houston <ghouston@arglist.com>
4982
4983 * socket.c: define uint32_t if netdb.h doesn't. thanks to
4984 Dale P. Smith.
4985
4986 2001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
4987
4988 * rw.c: Include "modules.h" and "strports.h".
4989
4990 * net_db.h (scm_gethost): Added prototype.
4991
4992 * deprecation.h, deprecation.c: New.
4993 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
4994 (DOT_X_FILES): Added "deprecation.x".
4995 (modinclude_HEADERS): Added "deprecation.h".
4996
4997 * init.c: Include "deprecation.h".
4998 (scm_init_guile_1): Call scm_init_deprecation.
4999
5000 2001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
5001
5002 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
5003 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
5004 New.
5005
5006 2001-04-29 Gary Houston <ghouston@arglist.com>
5007
5008 * rw.c: new file, implementing C part of module (ice-9 rw).
5009 (scm_read_string_x_partial): moved from ioext.c
5010 (scm_init_rw): new proc.
5011 * rw.h: new file.
5012 init.c: include rw.h and call scm_init_rw.
5013 Makefile.am: include rw.c and rw.h.
5014
5015 2001-04-28 Rob Browning <rlb@cs.utexas.edu>
5016
5017 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
5018 know what's supposed to happen to it.
5019
5020 * list.h (scm_list_star): deprecation expired - removed.
5021
5022 * numbers.h (scm_dblproc): deprecation expired - removed.
5023 (SCM_UNEGFIXABLE): deprecation expired - removed.
5024 (SCM_FLOBUFLEN): deprecation expired - removed.
5025 (SCM_INEXP): deprecation expired - removed.
5026 (SCM_CPLXP): deprecation expired - removed.
5027 (SCM_REAL): deprecation expired - removed.
5028 (SCM_IMAG): deprecation expired - removed.
5029 (SCM_REALPART): deprecation expired - removed.
5030 (scm_makdbl): deprecation expired - removed.
5031 (SCM_SINGP): deprecation expired - removed.
5032 (SCM_NUM2DBL): deprecation expired - removed.
5033 (SCM_NO_BIGDIG): deprecation expired - removed.
5034
5035 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
5036 (scm_tc_dblr): deprecation expired - removed.
5037 (scm_tc_dblc): deprecation expired - removed.
5038 (scm_tc16_flo): deprecation expired - removed.
5039 (scm_tc_flo): deprecation expired - removed.
5040
5041 * tag.h (scm_tag): deprecation expired - removed.
5042
5043 * tag.c: (scm_tag): deprecation expired - removed.
5044
5045 * ioext.c: (scm_fseek): deprecation expired - removed.
5046
5047 * ioext.h (scm_fseek): deprecation expired - removed.
5048
5049 * gh_data.c (gh_int2scmb): deprecation expired - removed.
5050
5051 * gh.h (gh_int2scmb): deprecation expired - removed.
5052
5053 2001-04-28 Neil Jerram <neil@ossau.uklinux.net>
5054
5055 * stacks.c (scm_make_stack): Fix typo in docstring.
5056
5057 2001-04-27 Rob Browning <rlb@cs.utexas.edu>
5058
5059 * error.c (scm_sysmissing): deprecation expired - removed.
5060
5061 * error.h (scm_sysmissing): deprecation expired - removed.
5062
5063 * gc.c
5064 (scm_init_gc): gc-thunk deprecation expired - removed.
5065 (scm_gc_vcell): deprecation expired - removed.
5066 (gc_async_thunk): scm_gc_vcell related code removed.
5067
5068 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
5069
5070 * strings.h
5071 (SCM_NSTRINGP): deprecation expired - removed.
5072 (SCM_NRWSTRINGP): deprecation expired - removed.
5073
5074 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
5075
5076 * chars.h
5077 (SCM_ICHRP): deprecation expired - removed.
5078 (SCM_ICHR): deprecation expired - removed.
5079 (SCM_MAKICHR): deprecation expired - removed.
5080
5081 * ports.h
5082 (SCM_INPORTP): deprecation expired - removed.
5083 (SCM_OUTPORTP): deprecation expired - removed.
5084
5085 2001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
5086
5087 * modules.c (scm_module_type): New.
5088 (scm_post_boot_init_modules): Initialize from Scheme value.
5089 (the_module, scm_current_module, scm_init_modules): the_module is
5090 now a C only fluid.
5091 (scm_current_module): Export to Scheme.
5092 (scm_set_current_module): Do not call out to Scheme, do all the
5093 work in C. Export procedure to Scheme. Only accept modules, `#f'
5094 is no longer valid as the current module. Only set
5095 scm_top_level_lookup_closure_var and scm_system_transformer when
5096 they are not deprecated.
5097 (scm_module_transformer, scm_current_module_transformer): New.
5098
5099 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
5100 scm_current_module_transformer, scm_module_transformer): New.
5101
5102 * gh_data.c: Removed FIXME comment about gh_lookup returning
5103 SCM_UNDEFINED. That's the right thing to do.
5104
5105 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
5106 into the conditionally compiled sections.
5107 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
5108 scm_current_module_transformer instead of scm_system_transformer.
5109 * init.c (start_stack): Move initialization of
5110 scm_system_transformer to the deprecated section.
5111
5112 2001-04-22 Neil Jerram <neil@ossau.uklinux.net>
5113
5114 * throw.c (scm_throw): Correct docstring.
5115
5116 2001-04-22 Gary Houston <ghouston@arglist.com>
5117
5118 * socket.c: attempted to improve the docstrings slightly.
5119
5120 * net_db.c: remove bogus "close" declaration.
5121 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
5122 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
5123 moved to socket.c.
5124 * net_db.h: declarations moved too.
5125
5126 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
5127 long.
5128 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
5129 (VALIDATE_INET6): new macro.
5130 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
5131 inet-pton and inet-ntop.
5132 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
5133 (scm_addr_vector): use ipv6_net_to_num.
5134
5135 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5136
5137 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
5138 smob number explicitly. Use SCM_TC2SMOBNUM instead.
5139
5140 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
5141 when compiled in debug mode.
5142
5143 (scm_gc_sweep): Only call smob's free function if it is defined.
5144
5145 * print.c (scm_iprin1): No need to check for validity of smob
5146 type or existence of print function.
5147
5148 * smob.[ch] (scm_smobs): Made into a fixed size global array.
5149 Resizing will not work well with preemptive threading.
5150
5151 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
5152
5153 (scm_make_smob_type): Extracted initialization of smob
5154 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
5155 of the critical section.
5156
5157 (scm_smob_prehistory): Initialize all smob descriptors. By
5158 default, don't assign a smob free function: Most smob types don't
5159 need one.
5160
5161 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
5162
5163 2001-04-21 Gary Houston <ghouston@arglist.com>
5164
5165 * socket.c (FLIP_NET_HOST_128): new macro.
5166 (scm_fill_sockaddr): use new macro.
5167 (scm_addr_vector): completed IPv6 address support. added const
5168 to the address parameter.
5169
5170 2001-04-20 Gary Houston <ghouston@arglist.com>
5171
5172 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
5173 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
5174 is defined.
5175 (scm_addr_vector): use a switch instead of multiple if statements.
5176 Add support for IPv6 (incomplete) .
5177 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
5178
5179 2001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5180
5181 * struct.c (scm_free_structs): Only pairs may be accessed with
5182 SCM_C[AD]R.
5183
5184 2001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
5185
5186 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
5187
5188 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
5189 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
5190 parentheses in order to get the correct associativity.
5191
5192 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5193
5194 * unif.c (scm_array_to_list): Added missing handling of arrays of
5195 bytes. Thanks to Masao Uebayashi for the bug report.
5196
5197 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5198
5199 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
5200 consistently.
5201
5202 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5203
5204 * procs.h (SCM_CLOSURE_FORMALS): New macro.
5205
5206 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
5207 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
5208 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
5209 SCM_CLOSURE_FORMALS.
5210
5211 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
5212 (scm_i_procedure_arity): Prefer stronger predicates like
5213 SCM_NULLP or SCM_FALSEP over SCM_IMP.
5214
5215 * macros.c (macro_print): Extracted macro printing code from
5216 print.c and simplified it.
5217
5218 (scm_macro_type): Use SCM_MACRO_TYPE;
5219
5220 (scm_init_macros): Use macro_print for printing macros.
5221
5222 * print.c (scm_print_opts): Improved option documentation.
5223
5224 (scm_iprin1): Extracted printing of macros to macros.c.
5225 Simplified printing of ordinary closures.
5226
5227 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
5228 Martin Grabmueller for the bug report.
5229
5230 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5231
5232 This patch eliminates some further applications of SCM_C[AD]R to
5233 non pair cells.
5234
5235 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
5236 never been applied to real pairs.
5237
5238 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
5239
5240 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
5241
5242 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
5243 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
5244 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
5245
5246 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
5247 Added.
5248
5249 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
5250 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
5251
5252 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
5253 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
5254 SCM_SET{AND,OR}_CAR.
5255
5256 2001-04-17 Gary Houston <ghouston@arglist.com>
5257
5258 * some initial support for IPv6:
5259
5260 * socket.c (scm_fill_sockaddr): improve the argument validation.
5261 don't allocate memory until all args are checked. instead of
5262 unconditional memset of soka, try setting sin_len to 0 if
5263 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
5264 (scm_socket, scm_connect): extend docstrings for IPv6.
5265 (scm_init_socket): intern AF_INET6 and PF_INET6.
5266
5267 2001-04-17 Niibe Yutaka <gniibe@m17n.org>
5268
5269 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
5270 matches SCM_DEFER_INTS at the beginning of the function.
5271
5272 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
5273
5274 * gc.c (scm_igc): Unconditionally call
5275 SCM_CRITICAL_SECTION_START/END.
5276
5277 * fluids.c (next_fluid_num): Unconditionally call
5278 SCM_CRITICAL_SECTION_START/END.
5279 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
5280
5281 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
5282 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
5283 Removed.
5284
5285 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
5286 Defined as nothing for the case of !defined(USE_THREADS).
5287 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
5288 Removed.
5289 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
5290 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
5291 LINE.
5292 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
5293 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
5294 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
5295 SCM_CRITICAL_SECTION_START/END.
5296 (SCM_REALLOW_INTS: Bug fix. Don't call
5297 SCM_THREAD_SWITCHING_CODE.
5298 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
5299 SCM_THREAD_SWITCHING_CODE directly.
5300 (SCM_ENTER_A_SECTION): Unconditionally use
5301 SCM_CRITICAL_SECTION_START/END. (was:
5302 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
5303
5304 2001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5305
5306 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
5307 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
5308 allowed to explicitly set this macro via the CFLAGS variable
5309 during make.
5310
5311 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
5312 (SCM_THREAD_CRITICAL_SECTION_START,
5313 SCM_THREAD_CRITICAL_SECTION_END): Renamed
5314 SCM_THREAD_CRITICAL_SECTION_START/END to
5315 SCM_CRITICAL_SECTION_START/END.
5316
5317 2001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
5318
5319 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
5320 instead of bzero.
5321
5322 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
5323 (MISSING_BZERO_DECL): Remove the declaration.
5324
5325 Thanks to NIIBE Yutaka.
5326
5327 2001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
5328
5329 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
5330 goops module should be registered in order to work for an
5331 application which uses libguile statically linked.)
5332
5333 2001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5334
5335 * numbers.[ch] (scm_num2long, scm_num2long_long,
5336 scm_num2ulong_long, scm_num2ulong): Argument position is an
5337 unsigned integer.
5338
5339 * environments.c (eval_environment_folder,
5340 import_environment_folder), gh_data.c (gh_scm2longs,
5341 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
5342 for integers and pointers, respectively.
5343
5344 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
5345 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
5346 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
5347 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
5348
5349 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
5350 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
5351 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
5352 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
5353 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
5354 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
5355
5356 2001-04-09 Neil Jerram <neil@ossau.uklinux.net>
5357
5358 * strings.c (scm_read_only_string_p): Update docstring to reflect
5359 current (non-)usage of "read only" strings.
5360 (scm_make_shared_substring): Clarify docstring by changing
5361 "semantics" to "arguments".
5362
5363 2001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5364
5365 * hooks.c (scm_make_hook, scm_make_hook_with_name),
5366 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
5367 improvements.
5368
5369 2001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5370
5371 The following changes make the documentation more consistent.
5372
5373 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
5374 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
5375 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
5376 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
5377 ... @end lisp.
5378
5379 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
5380 (scm_array_dimensions, scm_make_shared_array),
5381 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
5382 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
5383 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
5384 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
5385 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
5386 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
5387 macros.c (scm_makmmacro), list.c (scm_append), environments.c
5388 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
5389 @example ... @end example to @lisp ... @end lisp.
5390
5391 * weaks.c (scm_weak_vector): Corrected docstring.
5392
5393 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
5394 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
5395 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
5396 (scm_hashx_set_x, scm_hashx_get_handle),
5397 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
5398 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
5399 vectors.c (scm_vector_fill_x), strings.c
5400 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
5401 objprop.c (scm_set_object_properties_x):
5402 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
5403 strports.c (scm_call_with_input_string), ports.c
5404 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
5405 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
5406 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
5407 (scm_make_weak_vector,scm_weak_vector_p),
5408 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
5409 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
5410 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
5411 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
5412 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
5413 Made parameter names match documentation by renaming parameters
5414 and/or fixing docstrings.
5415
5416 * numbers.c (scm_ash): Corrected Texinfo markup.
5417
5418 * strop.c (scm_string_index, scm_string_rindex),
5419 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
5420
5421 * vports.c (scm_make_soft_port), unif.c
5422 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
5423 (scm_dimensions_to_uniform_array, scm_transpose_array),
5424 (scm_array_in_bounds_p, scm_uniform_vector_ref),
5425 (scm_bit_count, scm_bit_position, scm_bit_count_star),
5426 (scm_array_to_list, scm_list_to_uniform_array),
5427 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
5428 (scm_open_input_string, scm_open_output_string),
5429 (scm_get_output_string), strop.c (scm_string_copy),
5430 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
5431 (scm_get_internal_real_time, scm_times),
5432 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
5433 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
5434 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
5435 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
5436 simpos.c (scm_system), random.c (scm_random_uniform),
5437 (scm_random_normal, scm_random_exp), ramap.c
5438 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
5439 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
5440 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
5441 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
5442 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
5443 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
5444 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
5445 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
5446 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
5447 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
5448 (scm_logand, scm_logior, scm_logxor, scm_lognot),
5449 (scm_integer_expt, scm_bit_extract, scm_logcount),
5450 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
5451 net_db.c (scm_inet_netof, scm_lnaof), modules.c
5452 (scm_interaction_environment), macros.c (scm_makacro),
5453 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
5454 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
5455 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
5456 (scm_fluid_ref), filesys.c (scm_open_fdes),
5457 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
5458 Docstring correction: `Returns' -> `Return'
5459
5460 * gc.c (scm_set_debug_cell_accesses_x):
5461 (s_scm_gc_set_debug_check_freelist_x):
5462 * fluids.c (scm_fluid_p): Added texinfo markup.
5463
5464 * error.c (scm_strerror): Made docstring more precise.
5465
5466 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
5467 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
5468 (scm_symbol_p, scm_symbol_to_string), strorder.c
5469 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
5470 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
5471 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
5472 (scm_string_ci_geq_p), strop.c (scm_string_copy),
5473 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
5474
5475 2001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5476
5477 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
5478 mode, as suggested by Michael Livshin.
5479
5480 2001-03-31 Michael Livshin <mlivshin@bigfoot.com>
5481
5482 * backtrace.c (display_backtrace_body): since the `print_state'
5483 variable is not used (instead its data field is used directly as
5484 `pstate'), protect it from the hungry compiler optimizations.
5485 thanks to Bill Schottstaedt for the report.
5486
5487 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5488
5489 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
5490 It is only defined and used if guile is compiled with
5491 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
5492 let cells with a free_cell type tag be visible outside of the
5493 garbage collector when in debug mode.
5494
5495 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
5496
5497 (scm_assert_cell_valid): Use a local static variable to avoid
5498 recursion.
5499
5500 (MARK): Only check for rogue cell pointers in debug mode. Use
5501 scm_cellp for this purpose and place all checks for rogue pointers
5502 into that function. Further, since due to conservative scanning
5503 we may encounter free cells during marking, don't use the standard
5504 cell type accessor macro to determine the cell type.
5505
5506 (scm_cellp): Check if the cell pointer actually points into a
5507 card header.
5508
5509 (scm_init_gc): Initalize scm_tc16_allocated.
5510
5511 * gc.h (GCH): Renamed to SCM_GC_H.
5512
5513 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
5514 might be unnecessary, but I feel better this way :-)
5515
5516 (SCM_GC_CELL_TYPE): New macro.
5517
5518 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
5519 in guile, and it is unlikely that they will be applied to real
5520 pairs anyway.
5521
5522 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
5523
5524 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
5525 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
5526
5527 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
5528 make sure that in debug mode no free cell will ever be visible
5529 outside of the garbage collector.
5530
5531 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5532
5533 * async.c (scm_asyncs_pending): Don't use != to compare SCM
5534 values.
5535
5536 * async.c (scm_system_async), variable.c (scm_make_variable,
5537 scm_make_undefined_variable): Use scm_cons to create a pair.
5538
5539 * debug.c (scm_reverse_lookup): Perform proper type checking.
5540 Remove suspicious use of SCM_SLOPPY_CONSP.
5541
5542 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
5543 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
5544 the corresponding optimization.
5545
5546 * eval.c (iqq): Use proper type check.
5547
5548 (scm_m_expand_body): Remove redundant type checks.
5549
5550 (promise_print): Don't access promise cells as pairs.
5551
5552 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
5553 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
5554 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
5555 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
5556 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
5557
5558 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
5559 (scm_iprin1): Use new macro predicate and accessors.
5560
5561 * eval.h (scm_tc16_macro): Removed declaration. It is declared
5562 in macros.h.
5563
5564 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
5565 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
5566 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
5567 SCM_VARIABLE_H. Even the macros that are used to inhibit
5568 including a header file twice should be in the SCM_ namespace.
5569
5570 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
5571 properties.c (scm_primitive_property_ref,
5572 scm_primitive_property_del_x): Prefer stronger predicates like
5573 SCM_NULLP or SCM_FALSEP over SCM_IMP.
5574
5575 * gc.c (MARK): Use proper macros to access procedure-with-setter
5576 cell elements and closure cell elements.
5577
5578 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
5579 access free cells as pairs.
5580
5581 (scm_unprotect_object): scm_hashq_get_handle returns #f if
5582 no hashtab entry is found.
5583
5584 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
5585 SCM_CLR_PORT_OPEN_FLAG.
5586
5587 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
5588 use SCM_SET_C[AD]R for uninitialized cells.
5589
5590 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
5591 If the hashtable has no slots, return #f instead of '(). This
5592 unifies the return value with most assoc-functions.
5593
5594 (scm_hash_fn_ref): Use proper type check.
5595
5596 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
5597 Removed references to non-existing functions from documentation.
5598
5599 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
5600 access keyword cell elements.
5601
5602 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
5603 macros.
5604
5605 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
5606
5607 * print.c (scm_iprlist): Added comment. Improved loop
5608 conditions.
5609
5610 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
5611 pairs.
5612
5613 * smob.c (scm_markcdr): Don't access smob cells as pairs.
5614
5615 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
5616
5617 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
5618 cells as pairs.
5619
5620 * variable.c (variable_print, variable_equalp, scm_variable_ref,
5621 scm_variable_set_x): Use proper macros to access variable cell
5622 elements.
5623
5624 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
5625
5626 * variable.h (SCM_VARVCELL): Don't access variable cells as
5627 pairs.
5628
5629 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
5630 added FIXME comment, removed register specifier.
5631
5632 2001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
5633
5634 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
5635 * init.c (scm_init_guile_1): Don't init goopscore module.
5636
5637 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
5638
5639 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
5640
5641 2001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5642
5643 * strop.c (scm_string_to_list): Fixed docstring markup.
5644 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
5645 (scm_string_downcase, scm_string_capitalize_x),
5646 (scm_string_capitalize): Rewrote and corrected docstrings.
5647 (scm_string_ci_to_symbol): Made docstring more explicit.
5648
5649 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
5650
5651 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
5652 eval.c can use it.
5653 (scm_call_with_values): Removed.
5654 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
5655 so that it can be exported.
5656 (scm_call_with_values): Removed.
5657
5658 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
5659 * eval.c: Include "libguile/values.h"
5660 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
5661 New.
5662 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
5663 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
5664 New delcarations to support above change.
5665
5666 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
5667 errors with last change.
5668
5669 2001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
5670
5671 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
5672 scm_i_eval): Moved the application of the system transformer from
5673 scm_i_eval to scm_primitive_eval.
5674
5675 2001-03-23 Neil Jerram <neil@ossau.uklinux.net>
5676
5677 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
5678
5679 * strop.c (scm_string_index): Fix docstring line break
5680 regression.
5681
5682 * list.c (scm_cons_star): Fix docstring typo.
5683
5684 2001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
5685
5686 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
5687 (big2str), ports.c (scm_drain_input), read.c (scm_read,
5688 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
5689 scm_make_string, scm_string_append), strports.c (st_resize_port,
5690 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
5691 scm_makstr with calls to scm_allocate_string.
5692
5693 * strings.[ch] (scm_allocate_string): New function.
5694
5695 * strings.[ch] (scm_makstr): Deprecated.
5696
5697 2001-03-18 Gary Houston <ghouston@arglist.com>
5698
5699 * posix.c (scm_tmpnam): check that return value from tmpnam is not
5700 NULL. rewrote the docstring.
5701 (scm_mkstemp): new procedure implementing "mkstemp!".
5702 * posix.h: declare scm_mkstemp.
5703
5704 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
5705 normally it would be found in netdb.h.
5706
5707 2001-03-17 Gary Houston <ghouston@arglist.com>
5708
5709 * sort.c (scm_sort): move sortvec variable to avoid a compiler
5710 warning when HAVE_ARRAYS is not defined. move len too.
5711
5712 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
5713 (EXTRA_DOT_X_FILES): let configure set the value.
5714 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
5715
5716 * gc.c (scm_must_malloc): changed the comment explaining when
5717 scm_must variants of malloc/free etc., should be used, based on
5718 explanation from Dirk Herrmann.
5719 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
5720 string with procedure name. use scm_must_malloc instead of malloc.
5721 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
5722 of malloc/free.
5723 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
5724 scm_ungetc): use scm_must variants of malloc/realloc/free.
5725 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
5726
5727 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5728
5729 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
5730 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
5731 scm_wrong_type_arg instead.
5732
5733 (SCM_WNA): Deprecated.
5734
5735 * error.[ch] (scm_wta): Deprecated.
5736
5737 * numbers.c (s_i_log): Minor comment fix.
5738
5739 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
5740 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
5741 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
5742 wrong-num-args or misc errors.
5743
5744 * unif.c (scm_make_shared_array, scm_transpose_array,
5745 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
5746 Validate the rest argument (note: this is only done when guile is
5747 built with SCM_DEBUG_REST_ARGUMENT=1)
5748
5749 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
5750 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
5751
5752 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
5753 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
5754
5755 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5756
5757 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
5758 instead of scm_wrong_num_args.
5759
5760 * coop-threads.c: Don't include libguile/strings.h. (Was only
5761 needed for former implementation of SCM_WRONG_NUM_ARGS.)
5762
5763 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
5764 wrong-num-args errors.
5765
5766 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5767
5768 * error.[ch] (scm_error_num_args_subr): New function.
5769
5770 2001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5771
5772 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
5773 (scm_length, scm_append, scm_reverse, scm_list_ref),
5774 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
5775 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
5776 (scm_delete1_x), gc.c (scm_map_free_list),
5777 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
5778 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
5779 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
5780 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
5781 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
5782 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
5783 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
5784
5785 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
5786 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
5787 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
5788 symbols.c (scm_symbol_interned_p), numbers.c
5789 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
5790 markup.
5791
5792 2001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
5793
5794 * snarf.h (SCM_CONST_LONG): Deprecated.
5795 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
5796
5797 2001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5798
5799 * numbers.c (scm_num2ulong): Check that a bignum is positive
5800 before looking at the magnitude. Correctly check for overflow
5801 during conversion.
5802 (scm_num2long_long): Likewise.
5803 (scm_num2ulong_long): New.
5804 (ULONG_LONG_MAX): Define if not already defined.
5805 * numbers.h: (scm_num2ulong_long): New prototype.
5806
5807 2001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5808
5809 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
5810
5811 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
5812 (SCM_OPOUTSTRPORTP): New predicate macros.
5813 (scm_open_input_string, scm_open_output_string),
5814 (scm_get_output_string): New prototypes.
5815
5816 * strports.c (scm_open_input_string, scm_open_output_string),
5817 (scm_get_output_string): New procedures (SRFI-6 compliant).
5818 Made scm_tc16_strport non-static.
5819
5820 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5821
5822 * macros.h (SCM_ASSYNT): Removed unused object argument from
5823 signature.
5824
5825 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
5826 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
5827 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
5828 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
5829 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
5830 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
5831 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
5832 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
5833 scm_m_atdispatch): Removed unused object argument from call to
5834 SCM_ASSYNT.
5835
5836 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5837
5838 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
5839 const int* to reflect that the input array of integers remains
5840 unchanged. Thanks to Brett Viren for the hint.
5841
5842 2001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5843
5844 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
5845 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
5846 in various places.
5847 (gh_scm2newstr, gh_symbol2newstr): Change call to
5848 scm_must_malloc() to malloc(), because user-free()able memory is
5849 allocated.
5850
5851 * gc.c: Added declaration of `scm_debug_check_freelist'.
5852
5853 2001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5854
5855 * ports.c (scm_port_mode): Changed `mode' array size to 4.
5856
5857 2001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
5858
5859 * strports.c (scm_object_to_string): New procedure.
5860 (scm_strprint_obj): Deprecated.
5861 * strports.h: Reflect the changes.
5862
5863 2001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5864
5865 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
5866
5867 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
5868 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
5869 SCM_ASSYNT to check for correct argument types. Either use some
5870 SCM_VALIDATE_* macro or an explicit test.
5871
5872 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
5873 misc-errors.
5874
5875 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
5876 instead of calling scm_wta.
5877
5878 2001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5879
5880 * load.c (scm_primitive_load, scm_primitive_load_path),
5881 (scm_sys_search_load_path): Corrected docstrings (file ->
5882 filename).
5883
5884 * eval.c (scm_force): Added texinfo markup to docstring.
5885 (scm_promise_p): Renamed parameter to `obj' to match docstring.
5886
5887 * debug-malloc.c: Reinserted #include <stdio.h>.
5888
5889 2001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
5890
5891 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
5892
5893 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
5894 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
5895 Use SCM_LISTn instead of scm_listify.
5896
5897 2001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
5898
5899 * _scm.h: Removed #include <errno.h>.
5900
5901 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
5902 errno variable (can be a macro on some systems, for example when
5903 using linux libc with threads).
5904
5905 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
5906 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
5907 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
5908 #include <errno.h> in these 20 out of 100 files.
5909
5910 2001-03-10 Gary Houston <ghouston@arglist.com>
5911
5912 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
5913 not already defined.
5914
5915 2001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
5916
5917 * coop.c: Inserted #include <stdio.h>.
5918
5919 * iselect.c: Reinserted #include <stdio.h>.
5920
5921 2001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
5922
5923 * posix.c: Replaced `#define' of __USE_XOPEN right before
5924 including unistd.h with a define of _GNU_SOURCE at the very top of
5925 the file.
5926
5927 2001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
5928
5929 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
5930 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
5931 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
5932 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
5933 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
5934 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
5935 print.c, procprop.c, procs.c, properties.c, ramap.c,
5936 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
5937 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
5938 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
5939 Remove #include <stdio.h>
5940 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
5941
5942 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
5943
5944 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5945
5946 * posix.c (scm_gethostname): Set initial name length to 256 for
5947 Solaris.
5948
5949 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5950
5951 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
5952 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
5953 (scm_sethostname, scm_gethostname): New prototypes.
5954
5955 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
5956 <sys/file.h>, if present.
5957 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
5958 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
5959 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
5960 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
5961 (scm_sethostname, scm_gethostname): New procedures.
5962
5963 2001-03-08 Neil Jerram <neil@ossau.uklinux.net>
5964
5965 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
5966 not optional (ii) "recommend" spelling correction.
5967
5968 2001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
5969
5970 * ramap.c (racp): Removed optimization which caused array copying
5971 to fail if the two arrays shared storage. Re-inserted the IVDEP
5972 macros removed in the change of 2000-03-09. (Don't really have a
5973 complete grasp of what they are for, but they seem to be necessary
5974 on Crays. This needs testing!) Thanks to Miroslav Silovic.
5975
5976 * hash.c (scm_string_hash): Don't downcase characters.
5977
5978 2001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
5979
5980 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
5981 size from 277 --> 1009.
5982
5983 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
5984 function.
5985
5986 * coop-threads.c: Fixed change of 2001-03-06.
5987
5988 * validate.h: Code formatting.
5989
5990 2001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
5991
5992 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
5993 (*.doc): Add dependency on guile-snarf.awk.in.
5994
5995 * guile-snarf.awk.in: Neglect spaces at the end of
5996 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
5997 middle of docstrings. (To avoid the problem with gcc-2.96.)
5998
5999 2001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
6000
6001 * coop-threads.c (scm_call_with_new_thread), load.c
6002 (scm_primitive_load, scm_sys_search_load_path), random.c
6003 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
6004 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
6005 (potentially) issue a scm-misc-error or wrong-num-args error
6006 message.
6007
6008 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
6009 about the expected type with the wrong-type-arg error message.
6010
6011 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
6012 a C level bug that can't be fixed from scheme anyway.
6013
6014 2001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6015
6016 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
6017 Duplicate bindings are OK in a let* since a let* is semantically
6018 equivalent to a nested set of let:s.
6019
6020 2001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6021
6022 * print.c (scm_print_options): Fixed texinfo in docstring.
6023
6024 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
6025 the underlying functions getservent, getprotoent or getnetent
6026 return NULL instead of signalling an error.
6027
6028 2001-03-04 Gary Houston <ghouston@arglist.com>
6029
6030 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
6031 taking an unexpectedly large filename for an AF_UNIX socket from
6032 bind/connect/sendto (thanks to Martin Grabmueller).
6033
6034 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
6035 former and adjusted the latter.
6036 (scm_socket, scm_socketpair): cosmetic changes.
6037 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
6038 size_t as socklen_t substitute. don't restrict args/return values
6039 to INUM: allow full range of int or size_t.
6040 (scm_fill_sockaddr): check arguments before allocating memory, to
6041 avoid leakage. use malloc, not scm_must_malloc.
6042 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
6043 substitute. free the sockaddr structure before throwing an error.
6044 (scm_init_add_buffer): procedure removed, together with its static
6045 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
6046 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
6047 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
6048 scm_sendto): use a local buffer instead of scm_addr_buffer.
6049 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
6050 not size_t.
6051 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
6052 call to detect whether recvfrom could be bothered to set the address.
6053 (scm_init_socket): don't call scm_init_addr_buffer.
6054
6055 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6056
6057 * debug.c (scm_procedure_source, scm_procedure_environment),
6058 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
6059 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
6060 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
6061 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
6062 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
6063 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
6064 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
6065 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
6066 scm_array_to_list, scm_array_prototype), validate.h
6067 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
6068 scm_misc_error or scm_wrong_type_arg instead.
6069
6070 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
6071
6072 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6073
6074 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
6075 (scm_sys_tag_body): Added.
6076
6077 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
6078
6079 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
6080 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
6081 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
6082 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
6083 options.c (scm_options), ports.c (scm_remove_from_port_table),
6084 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
6085 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
6086 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
6087 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
6088 instead.
6089
6090 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6091
6092 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
6093
6094 2001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
6095
6096 * eval.c (scm_s_duplicate_bindings): New error message.
6097 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
6098
6099 2001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
6100
6101 * eval.h (SCM_EVALIM2): New macro. Use it when a
6102 immediate, literal constant should be evaluated.
6103 * eval.c (scm_s_duplicate_formals): New error message string.
6104 (scm_c_improper_memq): New function.
6105 (scm_m_lambda): Check for duplicate arguments.
6106 (scm_ceval, scm_deval): When executing a body: only cons a new
6107 toplevel environment frame when it is different from the
6108 existing one; use EVALCAR instead of SIDEVAL so that we can properly
6109 check for empty combinations; use SCM_EVALIM2 for the same reason
6110 in the non-toplevel loop.
6111 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
6112 New labels with the meaning of their non-"nontoplevel" partners,
6113 but they are used when it is known that the body is not evaluated at
6114 top-level.
6115 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
6116 reporting for empty combinations.
6117
6118 2001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
6119
6120 * Remove dump facilities.
6121 * dump.c, dump.h: Removed.
6122 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
6123 * init.c: Remove #include "libguile/dump.h".
6124 (scm_init_guile_1): Remove scm_init_dump.
6125 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
6126 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
6127 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
6128 (scm_set_smob_dump, scm_set_smob_undump): Removed.
6129
6130 * keywords.c: Remove #include "libguile/dump.h".
6131 (keyword_dump, keyword_undump): Removed.
6132 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
6133
6134 2001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6135
6136 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
6137 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
6138 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
6139 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
6140 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
6141 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
6142 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
6143 to @code{} as the texinfo manual recommends, converted the
6144 examples to use a @lisp{}-environment.
6145
6146 * strports.c (scm_eval_string): Cleaned up the docstring.
6147
6148 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
6149 markup.
6150
6151 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
6152 (scm_number_to_string, scm_string_to_number, scm_number_p)
6153 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
6154 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
6155 (scm_ash): Added texinfo markup and removed obsolete @refill.
6156 (scm_gr_p): Corrected comment.
6157 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
6158 docstring) comments.
6159 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
6160 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
6161 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
6162 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
6163 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
6164 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
6165 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
6166 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
6167
6168 2001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6169
6170 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
6171 (Obviously nobody compiles with SCM_RECKLESS defined...)
6172
6173 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
6174
6175 2001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6176
6177 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
6178
6179 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
6180
6181 2001-02-24 Neil Jerram <neil@ossau.uklinux.net>
6182
6183 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
6184 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
6185 since use of `z' suggests that the arguments may be complex.
6186
6187 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
6188 typos.
6189
6190 2001-02-23 Neil Jerram <neil@ossau.uklinux.net>
6191
6192 * dump.c (scm_binary_write, scm_binary_read), eval.c
6193 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
6194 scm_guardian_greedy_p, scm_make_guardian), fports.c
6195 (scm_file_port_p): Minor docstring fixes.
6196
6197 2001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
6198
6199 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
6200
6201 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
6202 scm_i_eval.
6203 (make_class_from_template): Do not bother to set the current
6204 module around the call to DEFVAR, scm_eval takes care of that.
6205 (scm_init_goops): Make scm_module_goops and
6206 scm_goops_lookup_closure permanent objects.
6207
6208 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
6209 top level, create a fresh top-level environment for each
6210 expression instead of mutating the exisint frame. This is
6211 important when that frame is closed over.
6212
6213 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
6214 SCM_DIGSPERLONG instead of DIGSPERLONG.
6215
6216 2001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
6217
6218 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
6219 before applying arrow procedure in `cond' and before applying
6220 receiver procedure in call-with-current-continuation.
6221 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
6222 macro. The argument is expanded more than one time.
6223
6224 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
6225 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
6226
6227 2001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
6228
6229 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
6230 notice and license.
6231
6232 2001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6233
6234 * variable.c (scm_make_variable, scm_make_undefined_variable)
6235 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
6236 (scm_variable_bound_p), values.c (scm_values)
6237 (scm_call_with_values), unif.c (scm_bit_count)
6238 (scm_bit_set_star_x), symbols.c (scm_gentemp)
6239 (scm_gensym), strings.c (scm_string_p, scm_make_string)
6240 (scm_read_only_string_p, scm_string_length, scm_string_ref)
6241 (scm_string_set_x, scm_substring, scm_string_append), stime.c
6242 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
6243 (scm_copy_random_state, scm_random), print.c (scm_newline)
6244 (scm_write_char, scm_simple_format), debug-malloc.c
6245 (scm_malloc_stats), environments.c (scm_environment_p)
6246 (scm_environment_bound_p, scm_environment_ref)
6247 (scm_environment_fold, scm_environment_define)
6248 (scm_environment_undefine, scm_environment_set_x)
6249 (scm_environment_cell, scm_environment_observe)
6250 (scm_environment_observe_weak, scm_environment_unobserve)
6251 (scm_make_eval_environment, scm_eval_environment_p)
6252 (scm_eval_environment_set_local_x, scm_eval_environment_local)
6253 (scm_eval_environment_imported)
6254 (scm_eval_environment_set_imported_x, scm_make_import_environment)
6255 (scm_import_environment_p, scm_import_environment_imports)
6256 (scm_import_environment_set_imports_x, scm_make_export_environment)
6257 (scm_export_environment_p, scm_export_environment_private)
6258 (scm_export_environment_set_private_x)
6259 (scm_export_environment_signature)
6260 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
6261 Added texinfo markup.
6262
6263 * ports.c (scm_drain_input): Lowercased argument to @var.
6264 (scm_current_input_port, scm_current_output_port): Filled in
6265 missing explanation.
6266 (scm_current_load_port, scm_set_current_output_port)
6267 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
6268 Added texinfo markup.
6269
6270 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
6271 (scm_release_arbiter): Added texinfo markup to docstrings.
6272 Changed `Returns' to `Return'.
6273 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
6274
6275 2001-02-16 Neil Jerram <neil@ossau.uklinux.net>
6276
6277 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
6278 by doubling them to `@@'.
6279
6280 2001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6281
6282 * numbers.c (scm_lognot), random.c (scm_random,
6283 scm_random_normal, scm_random_solid_sphere_x,
6284 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
6285 scm_random_exp), dynwind.c
6286 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
6287
6288 * goops.c (scm_sys_initialize_object, scm_instance_p,
6289 scm_class_name, scm_class_precedence_list, scm_class_slots,
6290 scm_class_environment, scm_generic_function_name,
6291 scm_generic_function_methods, scm_method_generic_function,
6292 scm_method_specializers, scm_method_procedure, scm_make_unbound,
6293 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
6294 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
6295 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
6296 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
6297 scm_class_direct_supers, scm_class_direct_slots,
6298 scm_class_direct_subclasses, scm_class_direct_methods,
6299 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
6300 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
6301 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
6302 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
6303 scm_memoized_environment, scm_procedure_name,
6304 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
6305 objects.c
6306 (scm_class_of, scm_entity_p, scm_operator_p,
6307 scm_set_object_procedure_x, scm_object_procedure,
6308 scm_make_class_object), hooks.c (scm_make_hook_with_name,
6309 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
6310 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
6311 scm_hook_to_list), lang.c
6312 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
6313 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
6314 (scm_print_options, scm_port_with_print_state,
6315 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
6316 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
6317 scm_make_procedure_with_setter, scm_procedure), throw.c
6318 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
6319 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
6320 scm_stack_ref, scm_stack_length, scm_frame_p,
6321 scm_last_stack_frame, scm_frame_number, scm_frame_source,
6322 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
6323 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
6324 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
6325 (scm_dirname, scm_basename), dynwind.c
6326 (scm_wind_chain), read.c (scm_read_options, scm_read,
6327 scm_read_hash_extend), gc.c
6328 (scm_unhash_name), eval.c (scm_eval_options_interface,
6329 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
6330 (scm_display_error, scm_set_print_params_x,
6331 scm_display_application, scm_display_backtrace, scm_backtrace),
6332 async.c (scm_async, scm_system_async, scm_async_mark,
6333 scm_system_async_mark, scm_run_asyncs, scm_noop,
6334 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
6335 scm_mask_signals): Added docstrings.
6336
6337 2001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
6338
6339 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
6340 address of car/cdr. (Thanks to Dirk Herrmann)
6341 Use scm_sizet to obtain the length of strings.
6342 (Thanks to Matthias Koeppe)
6343
6344 2001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
6345
6346 * symbols.c (scm_mem2symbol): Put a empty statement after the
6347 next_symbol label. This is mandated by ANSI, appearantly.
6348
6349 2001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6350
6351 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
6352 sense to compile for a specific kernel version. Do not include
6353 <asm/signal.h> while defining __KERNEL__. This hack should no
6354 longer be needed and caused problems.
6355
6356 2001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
6357
6358 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
6359 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
6360 can not deal with immediates.
6361
6362 2001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
6363
6364 * list.c (scm_list_copy): Validate the first argument.
6365
6366 2001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
6367
6368 Fix evaluator so that top-level expressions are correctly
6369 evaluated with respect to the module system.
6370
6371 * modules.h. modules.c (scm_current_module_lookup_closure): New
6372 function.
6373
6374 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
6375 prototypes.
6376 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
6377 names to better reflect their meaning.
6378
6379 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
6380 evaluated at top-level and synronize lookup closure before
6381 executing every subform.
6382 (scm_primitve_eval_x, scm_primitive_eval): New functions.
6383 (scm_eval_x, scm_eval): Reimplement in terms of
6384 scm_primitive_eval_x and scm_primitive_eval, respectively.
6385
6386 2001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
6387
6388 * macros.c (scm_macro_name, scm_macro_transformer): Use
6389 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
6390 Thanks!
6391
6392 2001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
6393
6394 * dump.c (scm_store_bytes): Store data size before data.
6395 (scm_restore_bytes): Restore data size. Takes a pointer to size.
6396 * dump.h (scm_restore_bytes): Updated.
6397
6398 2001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
6399
6400 * dump.c: Use double cells for update schedule.
6401
6402 2001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
6403
6404 * ports.c (scm_unread_char): Take an optional argument.
6405
6406 2001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6407
6408 * modules.h (scm_selected_module, scm_current_module): Renamed
6409 scm_selected_module to scm_current_module to synchronize Scheme
6410 and C names.
6411 (scm_select_module, scm_set_current_module): Likewise. Changed
6412 all uses.
6413
6414 * ports.c (scm_port_for_each): Make a snapshot of the port table
6415 before iterating over it. The table might change while the user
6416 code is running. With the snapshot, the user can depend on the
6417 fact that each port that existed at the start of the iteration is
6418 encountered exactly once. (ice-9 popen) depends on this.
6419
6420 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
6421
6422 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
6423
6424 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
6425 range checking for the size parameter. Thanks to Martin
6426 Grabmueller for the hint.
6427
6428 (scm_makstr): Reordered string initialization to make interrupt
6429 deferring unnecessary.
6430
6431 * vectors.c (scm_make_vector): Fixed range checking.
6432
6433 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
6434
6435 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
6436
6437 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
6438 checking of the size parameter for type correctness and valid
6439 range. Thanks to Rob Browning for reporting the problem. Instead
6440 of deferring interrupts, scm_remember_upto_here_1 is used.
6441
6442 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
6443
6444 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
6445 (scm_dump_cell_update): Removed.
6446 (scm_dump_update): Renamed from scm_dump_object_update.
6447 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
6448 a pointer instead of returning a value.
6449 * keywords.c (keyword_undump): Updated.
6450
6451 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
6452
6453 * dump.c, dump.h: Modified a lot.
6454 (SCM_DUMP_COOKIE): Version 0.1
6455 (scm_dump_mark): Removed.
6456 (scm_restore_cell_object, scm_store_cell_object): New functions.
6457
6458 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
6459 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
6460 New slots: dump, undump.
6461 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
6462 Updated.
6463
6464 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
6465 (keyword_undump): Renamed from keyword_alloc.
6466 (scm_init_keywords): Set keyword_dump and keyword_undump.
6467
6468 2001-02-03 Michael Livshin <mlivshin@bigfoot.com>
6469
6470 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
6471 the deprecated SCM_DOUBLE_CELLP.
6472
6473 * tags.h (SCM_DOUBLE_CELLP): deprecated.
6474
6475 2001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
6476
6477 * dump.c, dump.h: New files.
6478 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
6479 * init.c: #include "libguile/dump.h".
6480 (scm_init_guile_1): Call scm_init_dump.
6481 * smob.h (scm_smob_descriptor): New slots: dump_mark,
6482 dump_dealloc, dump_store, undump_alloc, undump_restore,
6483 undump_init.
6484 * smob.c (scm_make_smob_type): Init the new slots.
6485 (scm_set_smob_dump, scm_set_smob_undump): New functions.
6486 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
6487
6488 * keywords.c: #include "libguile/dump.h".
6489 (keyword_dealloc, keyword_alloc): New functions.
6490 (scm_init_keywords): Set smob_dump and smob_undump.
6491
6492 2001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
6493
6494 * vectors.c (scm_c_make_vector): New function.
6495 * vectors.h (scm_c_make_vector): Declared.
6496 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
6497 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
6498 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
6499 (scm_make_method_cache, scm_i_vector2list,
6500 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
6501 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
6502 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
6503 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
6504 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
6505 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
6506 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
6507 (scm_vector, scm_make_vector): Use scm_c_make_vector.
6508
6509 * hashtab.c (scm_c_make_hash_table): New function.
6510 * hashtab.h (scm_c_make_hash_table): Declared.
6511 * environments.c (scm_make_leaf_environment,
6512 scm_make_eval_environment), gc.c (scm_init_storage),
6513 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
6514 Use scm_c_make_hash_table.
6515
6516 2001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6517
6518 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
6519
6520 2001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6521
6522 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
6523 end of docstring.
6524
6525 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
6526 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
6527 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
6528 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
6529 srcprop.c (scm_source_properties, scm_set_source_properties_x,
6530 scm_source_property, scm_set_source_property_x), sort.c
6531 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
6532 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
6533 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
6534 docstrings.
6535
6536 2001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6537
6538 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
6539 really get that arg.
6540
6541 2001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
6542
6543 * goops.c (s_scm_get_keyword): Bug fix.
6544
6545 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
6546
6547 The following patch was sent by Martin Grabmueller. It makes sure
6548 that in case of parameter errors the correct function name is
6549 shown, and that parameter types are only checked once.
6550
6551 * strop.c (string_copy, string_upcase_x, string_downcase_x,
6552 string_capitalize_x): New functions. Each one performs the core
6553 functionality of the corresponding scm_* function.
6554
6555 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
6556 scm_string_downcase_x, scm_string_downcase,
6557 scm_string_capitalize_x, scm_string_capitalize): Reduced to
6558 parameter checking wrappers of the above functions.
6559
6560 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
6561
6562 * continuations.c, dynl.c, keywords.c, load.c: Include
6563 strings.h. Thanks to Bill Schottstaedt for the bug report.
6564
6565 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6566
6567 * backtrace.c (display_header): Make sure that line and column
6568 information is shown independent of whether the port the code was
6569 read from had an associated filename. Thanks to Martin
6570 Grabmueller for providing this patch.
6571
6572 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6573
6574 * fports.[ch] (scm_file_port_p): New primitive.
6575
6576 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6577
6578 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
6579 These are now defined in fports.c, strports.c and vports.c.
6580
6581 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
6582 vports.c (scm_tc16_sfport): Made variables (were macros defined in
6583 tags.h).
6584
6585 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
6586 (scm_make_sfptob): Made static. These return a type code now.
6587
6588 fports.c (scm_init_fports), strports.c (scm_init_strports),
6589 vports.c (scm_init_vports): Create the corresponding port types.
6590
6591 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
6592 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
6593
6594 * init.c (scm_init_guile_1): Make sure strports are initialized
6595 before gdbint.
6596
6597 * ports.[ch] (scm_make_port_type): Changed the return type to
6598 scm_bits_t.
6599
6600 * ports.c (scm_ports_prehistory): Don't create any port types
6601 here.
6602
6603 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
6604 against scm_tc16_fport directly.
6605
6606 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6607
6608 * srcprop.c (scm_set_source_property_x): Fix to handle
6609 (set-source-property! <obj> 'copy <datum>) correctly.
6610
6611 2001-01-24 Gary Houston <ghouston@arglist.com>
6612
6613 * filesys.c (scm_link): docstring fix.
6614 * fports.h (scm_setfileno): obsolete declaration removed.
6615 * posix.c: bogus popen declaration removed.
6616
6617 * rdelim.c: new file, split from ioext.c.
6618 * rdelim.h: new file, split from ioext.h
6619 * Makefile.am: add rdelim.c and related files.
6620 * init.c: call scm_init_rdelim. include rdelim.h.
6621
6622 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6623
6624 This patch was sent by Martin Grabmueller and makes sure that
6625 parameter errors are reported correctly by the lexicographic
6626 ordering predicates.
6627
6628 * strorder.c (string_less_p, string_ci_less_p): New functions.
6629
6630 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
6631 functionality into string_less_p, string_ci_less_p respectively.
6632 The remaining code is just a wrapper to do the parameter
6633 checking.
6634
6635 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
6636 parameters and call string_less_p instead of scm_string_less_p.
6637
6638 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
6639 Check the parameters and call string_less_ci_p instead of
6640 scm_string_ci_less_p.
6641
6642 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6643
6644 This patch modifies scm_display_error to perform parameter
6645 checking. Thanks to Neil Jerram for the bug report.
6646
6647 * backtrace.[ch] (scm_i_display_error): New function.
6648
6649 * backtrace.c (scm_display_error): Added parameter check and
6650 extracted the core functionality into function
6651 scm_i_display_error.
6652
6653 * throw.c (handler_message): Call scm_i_display_error to display
6654 the error message.
6655
6656 2001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6657
6658 * eval.c (SCM_APPLY): Added # args check for application of
6659 procedures with arity 3. (Thanks to Anders Holst.)
6660
6661 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6662
6663 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
6664
6665 (SCM_OPDIRP): Deprecated.
6666
6667 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
6668 SCM_OPN.
6669
6670 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
6671 Instead, give an explicit error message in case the directory is
6672 closed.
6673
6674 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
6675 instead of SCM_OPENP and SCM_CLOSEDP.
6676
6677 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
6678
6679 2001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
6680
6681 * eval.c (inner_eval, scm_eval): Move all real functionality into
6682 inner_eval. Avoid to copy the expression twice by inlining some
6683 code from scm_i_eval.
6684
6685 2001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6686
6687 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
6688 now has to be the last clause, as required by R5RS. Thanks to
6689 Martin Grabmueller for the patch.
6690
6691 2001-01-18 Gary Houston <ghouston@arglist.com>
6692
6693 * ioext.c: further simplify scm_read_string_x_partial by defining
6694 a macro SCM_EBLOCK.
6695
6696 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6697
6698 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
6699
6700 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6701
6702 * __scm.h: Added comment about architecture and compiler
6703 properties that are required by guile.
6704
6705 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
6706 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
6707
6708 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
6709
6710 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
6711
6712 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
6713 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
6714
6715 2001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
6716
6717 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
6718 to the names in limits.h.
6719
6720 * numbers.c (abs_most_negative_fixnum): Added.
6721
6722 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
6723 fixnum-min) special case.
6724
6725 (scm_big_and): Fix for negative first parameter.
6726
6727 (scm_bit_extract): Fix for fixnum paramters.
6728 Thanks to Rob Browning for the bug report.
6729
6730 (scm_init_numbers): Initialize abs_most_negative_fixnum.
6731
6732 2001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
6733
6734 * symbols.c (scm_symbol_bound_p): Fixed comment.
6735 Thanks to Chris Cramer.
6736
6737 2001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
6738
6739 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
6740 Thanks to Bill Schottstaedt.
6741
6742 2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
6743
6744 from Matthias Köppe:
6745
6746 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
6747 casts its result, so doesn't yield an lvalue per ANSI C.
6748
6749 * goops.c (s_scm_sys_set_object_setter_x): use
6750 SCM_SET_ENTITY_SETTER.
6751 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
6752
6753 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
6754 its result, so doesn't yield an lvalue per ANSI C.
6755 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
6756 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
6757 SCM_GC_SET_CARD_FLAGS.
6758 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
6759
6760 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
6761
6762 2001-01-08 Gary Houston <ghouston@arglist.com>
6763
6764 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
6765 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
6766 socket.c (scm_recvfrom): use the new macro, plus minor docstring
6767 changes.
6768 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
6769 for fdes. if current input port is used, check that it's a file
6770 port.
6771
6772 2001-01-06 Gary Houston <ghouston@arglist.com>
6773
6774 * ioext.c (scm_read_string_x_partial): new procedure, implements
6775 read-string!/partial.
6776 * ports.c (scm_take_from_input_buffers): new procedure used by
6777 scm_read_string_x_partial.
6778 (scm_drain_input): use scm_take_from_input_buffers.
6779
6780 2001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
6781
6782 * validate.h (SCM_VALIDATE_NUMBER): New.
6783
6784 2001-01-03 Michael Livshin <mlivshin@bigfoot.com>
6785
6786 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
6787 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
6788 SET_DESTROYED): new defines/macros.
6789 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
6790 (add_to_live_list): takes a `guardian_t *' now, not SCM.
6791 (guardian_print): print more info.
6792 (guardian_apply): check if the guardian is destroyed, and throw an
6793 error if so. take one more optional argument `throw_p'.
6794 (scm_guard): depending on the value of `throw_p', return a boolean
6795 result.
6796 (scm_get_one_zombie): remove redundant property test.
6797 (guardian_t): represent the various (currently 3, I hope nothing
6798 more gets added) boolean fields as bit flags.
6799 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
6800 (scm_destroy_guardian_x): new procedure.
6801
6802 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
6803 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
6804
6805 2001-01-01 Gary Houston <ghouston@arglist.com>
6806
6807 * fports.c (fport_write): bugfix: handle short writes for
6808 unbuffered ports too. optimize the buffered case by minimizing
6809 the number of write/flush calls.
6810 (write_all): new helper procedure.
6811
6812 The ChangeLog continues in the file: "ChangeLog-2000"