1 2003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
3 * futures.c (mark_futures): Don't need to mark data of recycled
5 (scan_futures, cleanup_undead): Be smarter about marking
6 futures---avoid unnecessary passes through future lists.
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.
13 * threads.h, threads.c: Moved futures to their own file.
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.
20 * threads.c, threads.h (scm_i_create_thread): Renamed from
21 create_thread and made global.
23 * futures.c (scm_make_future): New procedure.
25 * eval.c: #include "libguile/futures.h".
27 * init.c: #include "futures.h"
28 (scm_init_guile_1): Call scm_init_futures.
30 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
32 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
34 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
37 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
39 2003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
41 * threads.c (create_thread): Don't unwind dynwind chain of parent
42 thread before creation. Just start the new thread with an empty
45 2003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
47 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
49 2003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
51 * threads.c (scm_timed_wait_condition_variable): Support timed
52 waiting also for simple condition variables.
54 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
55 of calling the procedure change-object-class.
57 2003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
59 * ramap.c (scm_ramapc): Typo in error message.
61 2003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
63 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
64 slots with instance allocation.
66 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
68 (scm_compute_applicable_methods): Use scm_generic_function_methods.
70 * goops.c (scm_generic_function_methods): Support extended
73 2002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
75 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
76 Thanks to Neil for pointing this out!
78 2002-12-29 Neil Jerram <neil@ossau.uklinux.net>
80 * lang.h: Remove declarations matching definitions removed from
83 2002-12-28 Neil Jerram <neil@ossau.uklinux.net>
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.
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
95 2002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
97 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
99 (EXTRA_DIST): Added version.h.in.
101 2002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
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!
111 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
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
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.
123 * threads.c (gc_section_mutex): Removed.
125 2002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
127 * threads.c (create_thread): Clear parent field in root state in
128 order not to unnecessarily remember dead threads.
130 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
131 (scm_trampoline_1, scm_trampoline_2): Use them.
133 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
135 Partial introduction of real plugin interface.
137 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
138 (EXTRA_DIST): Added threads-plugin.c.
140 * threads-plugin.h, threads-plugin.c: New files.
142 * threads.h: #include "libguile/threads-plugin.h".
144 * threads.c: #include "libguile/threads-plugin.c".
146 * pthread-threads.c: Temporarily remove debugging functions.
148 * threads.c, threads.h (scm_yield): Added back.
150 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
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.
157 * pthread-threads.c, pthread-threads.h: Improvements to debugging
160 2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
162 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
163 support for debugging mutex operations.
165 * threads.c (scm_thread): Removed filed joining_threads.
166 (thread_print): Print thread number as well as address of thread
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.
176 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
177 pthread "native" recursive mutex support.
179 2002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
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.
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.
191 * eval.c, eval.h (promise_free): New function.
192 (scm_force): Rewritten; Now thread-safe; Removed
193 SCM_DEFER/ALLOW_INTS.
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.
199 * pthread-threads.c: New file.
201 * threads.c: Conditionally #include "pthread-threads.c".
203 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
206 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
207 SCM_GLOBAL_REC_MUTEX): New macros.
209 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
210 macros---use mutexes instead.
212 * tags.h (SCM_IM_FUTURE): New tag.
214 * eval.c (scm_m_future): New primitive macro.
215 (SCM_CEVAL): Support futures.
216 (unmemocopy): Support unmemoization of futures.
218 * print.c (scm_isymnames): Name of future isym.
220 * version.c: Unmade some changes to my private copy that got
221 committed by mistake.
223 2002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
225 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
228 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
230 * gc.c (scm_gc_sweep): Call it here instead, which is a more
233 * threads.c (create_thread): Remember root object until the handle
234 of the new thread is on all_threads list.
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.
240 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
242 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
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
252 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
254 * threads.c (really_launch): Release heap (to prevent deadlock).
255 (create_thread): Release heap before locking thread admin mutex.
257 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
259 * threads.c (scm_i_thread_invalidate_freelists): New
262 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
264 * modules.c (scm_export): Inserted a return statement.
266 2002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
268 * modules.c (scm_export): new function
270 * gc-card.c: add a note about malloc()/free() overhead.
272 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
274 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
277 2002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
279 These changes remove scm_ints_disabled (which hasn't has any
280 effect in Guile for quite some time).
282 * async.c, error.h (scm_ints_disabled): Removed.
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.
289 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
291 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
294 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
296 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
297 Removed accidental #if 0 around these functions.
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.
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.
313 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
314 the three calls to scm_m_expand_body.
316 * gc.h: #include "libguile/pthread-threads.h";
317 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
319 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
322 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
325 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
327 * gc-freelist.c, threads.c (really_launch): Use
330 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
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.
341 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
343 * inline.h: #include "libguile/threads.h"
345 * pthread-threads.h: Macros now conform more closely to the
346 pthreads interface. Some of them now take a second argument.
348 * threads.c, threads.h: Many changes.
350 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
352 * Makefile.am (version.h): Changed $^ --> $< in rule for
355 2002-12-08 Rob Browning <rlb@defaultvalue.org>
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.
362 * version.c (scm_effective_version): new function, also add
365 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
366 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
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.
372 2002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
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.
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
386 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
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
393 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
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
402 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
403 SCM_SET_THREAD_LOCAL_DATA): Define here.
405 * threads.c: Merged with "coop-pthreads.c".
407 * null-threads.h: Implement pthread-like API as a set of macros.
409 * pthread-threads.h: New, implement pthread-like API by deferring
412 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
413 has been lost in the reorganization.
415 2002-12-01 Mikael Djurfeldt <mdj@linnaeus>
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
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
426 Applying the optimization to map and for-each increases efficiency
427 noticeably. For example, (map abs ls) is 8 times faster than
430 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
432 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
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.
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
445 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
448 2002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
450 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
452 2002-11-17 Mikael Djurfeldt <mdj@linnaeus>
454 * debug.c (scm_make_iloc): Added missing "return".
456 2002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
458 * strports.c (scm_eval_string_in_module): Validate second arg to
459 be a module. Thanks to Arno Peters!
461 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
463 * .cvsignore: remove goops.c
465 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
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
474 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
476 * eval.h (SCM_MAKE_ILOC): New macro.
478 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
479 the iloc bitpattern here.
481 2002-11-14 Mikael Djurfeldt <mdj@linnaeus>
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.
488 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
491 2002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
493 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
494 are defined in configure.in.
496 * threads.c: Removed SCM_API from function definitions. SCM_API
497 is only for declarations.
499 2002-11-07 Mikael Djurfeldt <mdj@linnaeus>
501 * coop-pthreads.h: Added support for thread specific data to the
502 generic C API for the coop-pthreads case.
504 * threads.c, threads.h (scm_cond_init): Undo unintentional API
506 (scm_cond_broadcast): Added missing function.
508 2002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
510 * coop.c (coop_next_runnable_thread): Removed, wich should have
511 happened when GUILE_ISELECT was hard-wired.
513 2002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
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.
522 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
523 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
525 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
526 Thanks to Bill Schottstaedt!
528 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
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
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.
541 2002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
543 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
544 start testing it now.
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
551 2002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
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
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
566 (scm_unmask_signals, decrease_block): Call scm_async_click after
567 block_asyncs becomes zero.
569 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
572 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
574 * root.c (root_mark): Mark them.
575 (make_root): Initialize them.
577 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
579 (scm_internal_select): Define one version for USE_COOP_THREADS and
580 one for USE_NULL_THREADS.
581 (scm_init_iselect): Likewise.
583 * inline.h (scm_cell, scm_double_cell): Also allow
584 USE_COPT_THREADS to not protect the slot initializers.
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
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
606 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
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.
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}.
635 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
636 (scm_threads_init): Create smobs here, using the appropriate
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
645 (scm_try_mutex, timeval_subtract,
646 scm_timed_wait_condition_variable,
647 scm_broadcast_condition_variable): New.
648 (scm_wait_condition_variable): Removed.
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
656 (coop_condition_variable_broadcast): New.
658 * coop-threads.c (scm_threads_init): Create smobs here, using the
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.
665 * coop.c (coop_new_mutex_init): Initialize level.
666 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
668 (coop_condition_variable_signal): Renamed to
669 coop_condition_variable_broadcast and reimplemented in terms of
671 (coop_condition_variable_broadcast): New.
673 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
675 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
677 2002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
679 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
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!
686 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
688 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
689 scm_definedp to scm_defined_p and deprecated scm_definedp.
691 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
693 * async.h, async.c (scm_system_async): Fixed deprecation to work
694 correctly when deprecated features are excluded.
696 2002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
698 * async.c (scm_system_async_mark_for_thread): Validate thread
701 * coop-threads.c (scm_i_thread_root): Do not validate argument.
703 * feature.c (scm_init_feature): Don't add 'threads' for
706 * inline.h (scm_cell, scm_double_cell): Also allow
707 USE_NULL_THREADS to not protect the slot initializers.
709 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
712 * Makefile.am (noinst_HEADERS): Added null-threads.c.
713 (modinclude_HEADERS): Added null-threads.h.
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.
720 * null-threads.c, null-threads.h: New files.
722 2002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
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.
728 2002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
730 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
731 substitution. Thanks to David Allouche!
733 2002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
735 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
736 !SCM_ENABLE_DEPRECATED.
738 2002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
740 * async.c (scm_system_async_mark_for_thread): Only call
741 scm_i_thread_root when USE_THREADS is defined. Use scm_root
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.
750 2002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
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.
756 2002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
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.
762 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
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.
781 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
782 Asyncs are enabled by default.
784 2002-10-09 Neil Jerram <neil@ossau.uklinux.net>
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.
790 2002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
792 * root.c (root_mark): Mark active_asyncs slot.
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
800 * scmsigs.c (scm_sigaction_for_thread): Likewise.
802 2002-10-04 Rob Browning <rlb@defaultvalue.org>
804 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
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,
810 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
812 (sysdep_dynl_init): switch to scm_lt_dlinit();
814 * Makefile.am (libguile_la_LIBADD): switch to use
817 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
819 2002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
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
827 (sys_deliver_signals): Removed.
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.
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.
841 * gc.c (scm_init_gc): Do not use scm_system_async.
843 * async.h (scm_asyncs_pending, scm_set_tick_rate,
844 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
846 (scm_i_queue_async_cell): New.
848 * __scm.h (scm_asyncs_pending_p): Removed.
849 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
850 scm_asyncs_pending_p.
852 * async.h (scm_system_async_mark_for_thread): New prototype.
854 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
856 * root.h (scm_root_state): Added new "active_asyncs" slot.
857 * root.c (scm_make_root): Initialize it to SCM_EOL.
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
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.
869 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
870 * threads.c (scm_current_thread, scm_all_threads): Register as
873 * dynl.c: Use scm_lt_ prefix for libltdl functions.
875 2002-09-29 Neil Jerram <neil@ossau.uklinux.net>
877 * script.c (scm_compile_shell_switches): Fix bad spelling of
878 `explicitly' in comment.
880 2002-09-28 Neil Jerram <neil@ossau.uklinux.net>
882 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
883 Refer to provided? in doc string rather than deprecated feature?.
885 2002-09-24 Gary Houston <ghouston@arglist.com>
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.
892 2002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
894 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
896 2002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
898 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
901 2002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
903 * inline.h: include stdio.h
905 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
907 2002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
909 * gc-segment.c (scm_i_make_initial_segment): check user settings
912 * gc-malloc.c (scm_gc_init_malloc): check user settings for
915 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
917 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
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.
923 * gc-freelist.c: include <stdio.h>
925 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
927 2002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
929 * vectors.h (SCM_VECTOR_REF): New.
931 * snarf.h (SCM_DEFINE_PUBLIC): New.
933 2002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
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.
939 2002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
941 * gc.h: remove DOUBLECELL card flags.
943 * gc-malloc.c (scm_calloc): try to use calloc() before calling
946 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
947 init loop; handle this from scm_init_card_freelist()
949 * gc-card.c (scm_init_card_freelist): init bit vector here.
951 * numbers.c (scm_make_real): prevent reordering of statements
952 num2float.i.c (FLOAT2NUM): idem
954 2002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
956 * eval.h: prepend libguile/ to include path
958 2002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
960 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
961 years. Thanks to Martin Grabmüller!
963 2002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
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
970 2002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
972 * gc_os_dep.c: When we have __libc_stack_end, use that directly
973 instead of the old tricks.
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.
979 2002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
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.
984 2002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
986 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
987 Bill Schottstaedt for the bug report
989 2002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
991 * print.c (scm_iprin1): Print primitives generics always as
992 "primitive-generic" even when they have no primitive methods yet.
994 2002-08-17 Gary Houston <ghouston@arglist.com>
996 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
999 2002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1001 * ports.c (scm_add_to_port_table): small bugfix.
1003 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
1006 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
1007 only use SCM_MIN_HEAP_SEG_SIZE.
1009 * ports.c (scm_add_to_port_table): add backwards compatibility
1012 * ports.h: use scm_i_ prefix for port table and port table size.
1014 2002-08-15 Mikael Djurfeldt <mdj@linnaeus>
1016 * vports.c (scm_make_soft_port): Initialize pt variable.
1018 2002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
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
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!
1029 2002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1031 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
1034 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
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.
1039 2002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1041 * gc.h: add scm_debug_cells_gc_interval to public interface
1043 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
1045 * gc.c (scm_i_expensive_validation_check): separate expensive
1046 validation checks from cheap ones.
1048 2002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1050 * read.c (scm_input_error): new function: give meaningful error
1051 messages, and throw read-error
1053 * gc-malloc.c (scm_calloc): add scm_calloc.
1055 2002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1057 * tags.h: remove GC bits documentation from the tags table.
1059 * read.c (INPUT_ERROR): Prepare for file:line:column error
1060 messages for errors in scm_lreadr() and friends.
1062 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1064 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
1066 (scm_gc_calloc): new function
1068 2002-08-04 Han-Wen <hanwen@cs.uu.nl>
1070 * ports.c (scm_new_port_table_entry): init port entry to 0
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.
1077 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
1078 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
1080 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
1083 * numbers.c (big2str): return "0" for 0 iso. ""
1085 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
1086 private-gc.h: new file
1088 * gc.c: completely revised and cleaned up the GC. It now uses lazy
1089 sweeping. More documentation in workbook/newgc.text
1091 2002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1093 * random.c (rstate_free): Return zero.
1095 2002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
1097 * environments.c (remove_key_from_alist): Removed.
1099 (obarray_remove): Simplified.
1101 2002-07-24 Stefan Jahn <stefan@lkcc.org>
1103 * continuations.h: ia64: Include <signal.h> before
1106 2002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1108 * modules.c (scm_sym2var): Don't compare SCM values with ==.
1110 2002-07-21 Han-Wen <hanwen@cs.uu.nl>
1112 * goops.c (scm_compute_applicable_methods): use
1113 scm_remember_upto_here_1 iso scm_remember_upto_here
1115 * macros.c: include deprecation.h
1117 * vectors.c (scm_vector_move_right_x): remove side effect in
1119 (scm_vector_move_left_x): idem.
1121 * net_db.c, posix.c, socket.c: variable naming: change ans to
1124 * sort.c (scm_merge_vector_x): accept vector as argument
1125 iso. SCM*. This is needed for full GC correctness.
1127 * gc.h: undo previous undocumented changes related to #ifdef
1130 2002-07-20 Han-Wen <hanwen@cs.uu.nl>
1132 * *.c: add space after commas everywhere.
1134 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
1135 Document cases where SCM_WRITABLE_VELTS() is used.
1137 * vectors.h (SCM_VELTS): prepare for write barrier, and let
1138 SCM_VELTS() return a const pointer
1139 (SCM_VECTOR_SET): add macro.
1141 2002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
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
1151 2002-07-13 Neil Jerram <neil@ossau.uklinux.net>
1153 * eval.c (unmemocopy): Fix for
1154 1001-local-eval-error-backtrace-segfaults (unmemoization crash
1155 with internal definitions and local-eval).
1157 2002-07-12 Gary Houston <ghouston@arglist.com>
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.
1165 * Makefile.am (libguile_la_SOURCES): move dynl.c from
1166 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
1168 * extensions.c (load_extension): check DYNAMIC_LINKING for
1170 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
1171 scm_init_dynamic_linking.
1173 2002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
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.
1179 2002-07-10 Gary Houston <ghouston@arglist.com>
1181 * eq.c: include <string.h>
1182 * dynl.c: docstring editing.
1184 2002-07-09 Gary Houston <ghouston@arglist.com>
1186 * dynl.c (scm_dynamic_call): docstring editing.
1188 2002-07-08 Rob Browning <rlb@defaultvalue.org>
1190 * gc_os_dep.c: HURD fixes.
1192 2002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
1194 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
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.
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.
1206 2002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
1214 2002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
1227 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
1228 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
1230 2002-06-30 Gary Houston <ghouston@arglist.com>
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.
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.
1246 2002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
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
1254 2002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
1256 * print.c (scm_simple_format): Print missing part of format before
1257 ~% control. Thanks to Daniel Skarda!
1259 2002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
1261 * mkstemp.c: Added exception notice to license statement.
1263 2002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
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
1269 From John W. Eaton <jwe@bevo.che.wisc.edu>
1271 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
1273 2002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
1275 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
1276 in addition to `i386'. Thanks to Dale P. Smith.
1278 2002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
1280 * eq.c (real_eqv): New.
1281 (scm_eqv_p): Use it when comparing reals and complexes.
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
1287 (scm_inexact_to_exact): Signal error when converting a NaN.
1289 2002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
1291 * posix.c (scm_putenv): Handle removing variables explicitely by
1296 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
1297 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
1299 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
1300 [SCO && ! HAVE_ISINF] (isinf): New function.
1301 (xisinf, xisnan): New functions.
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.
1315 Additional stuff by me:
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.
1324 2002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
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.
1331 2002-04-20 Gary Houston <ghouston@arglist.com>
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.
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
1343 2002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
1345 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
1348 2002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
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.
1356 2002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
1358 * guile-snarf: Install the trap for removing $cleanfile only when
1359 the value of $cleanfile is actually known.
1361 2002-04-10 Rob Browning <rlb@defaultvalue.org>
1363 * .cvsignore: add versiondat.h and *.c.clean.c.
1365 2002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
1367 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
1368 function, replaces macro SRCBRKP.
1370 (SRCBRKP): Deprecated.
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
1376 2002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1378 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
1379 CHECK_EXIT and removed all references to them.
1381 2002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
1383 * debug.h (scm_ready_p, debug_print): Removed declarations.
1385 * eval.c (EVALCELLCAR): Removed.
1387 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
1388 operation from condition.
1390 2002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
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.
1398 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
1400 2002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
1402 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
1403 and the corresponding goto statements. Removed redundant code.
1405 2002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
1411 2002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
1413 * eval.c (SIDEVAL): Removed.
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.
1421 2002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
1423 * guile-snarf.in: Remove "--compat=1.4" support.
1424 Add "-d" and "-D" support.
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'.
1431 2002-03-15 Neil Jerram <neil@ossau.uklinux.net>
1433 * hooks.h: Change scm_t_c_hookype_t everywhere to
1438 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
1440 * ports.c (scm_sys_make_void_port): Use `@file'.
1442 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
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.
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
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.
1459 2002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
1461 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
1463 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
1464 guile-snarf can remove trailing non-init code.
1466 * guile-snarf.in (modern_snarf): Remove everything following and
1467 including "^:^" from the output.
1469 2002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
1471 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
1473 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
1475 2002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
1477 * guile-snarf.in: Update copyright.
1478 Rewrite to internalize error handling.
1479 Add "--compat=1.4" handling.
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).
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.
1502 2002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
1508 2002-03-12 Neil Jerram <neil@ossau.uklinux.net>
1510 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
1511 rreadfds, rwritefds, rexceptfds): Made static.
1513 * gc.c (terminating), fports.c (terminating): Renamed
1516 2002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
1518 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
1519 potential overflow problems. Thanks to John W Eaton!
1521 * strop.c (string_capitalize_x): Treat characters as unsigned so
1522 that 8-bit chars work. Thanks to David Pirotte!
1524 2002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
1532 2002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
1544 * goops.h (SCM_INSTANCE_HASH): New macro.
1546 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
1548 2002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
1550 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
1551 "guile-snarf" moved back from `noinst_SCRIPTS'.
1553 2002-03-08 Neil Jerram <neil@ossau.uklinux.net>
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
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.
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).
1567 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
1574 2002-03-02 Stefan Jahn <stefan@lkcc.org>
1576 * convert.i.c: Fixed int <-> long conversions which would have
1577 failed if their sizes were different.
1579 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
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
1590 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
1599 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
1601 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
1602 explicit predicate in some places.
1604 (CHECK_EQVISH): Removed.
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.
1612 2002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
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.
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
1645 2002-02-27 Stefan Jahn <stefan@lkcc.org>
1647 * convert.i.c, convert.c: Better range checking.
1649 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
1651 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
1654 2002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
1656 * Makefile.am: Update path to pre-inst-guile automake frag.
1658 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1660 * gc.c (scm_gc_sweep): Make it compile even when deprecated
1661 features are excluded.
1663 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1665 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
1667 2002-02-25 Gary Houston <ghouston@arglist.com>
1669 * convert.c: include <string.h> for convert_i.c.
1671 2002-02-24 Rob Browning <rlb@defaultvalue.org>
1673 * .cvsignore: add stamp-h1.
1675 2002-02-21 Neil Jerram <neil@ossau.uklinux.net>
1677 * unif.c (scm_array_to_list): Correct name, which had been
1678 accidentally changed to scm_t_arrayo_list!
1680 2002-02-20 Mikael Djurfeldt <mdj@linnaeus>
1682 * gc.c (scm_gc_sweep): Print an error message when aborting due to
1683 underflowing scm_mallocated.
1685 2002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
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
1692 2002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
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.
1699 2002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
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.
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.
1718 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
1720 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
1721 messages while the GC is running.
1722 (scm_c_issue_deprecation_warning_fmt): New.
1724 * fports.c (scm_setvbuf): Reset read buffer to saved values when
1725 it is pointing to the putback buffer.
1727 2002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
1729 * gsubr.c (create_gsubr): On "too many args" error,
1730 also display arg count and name. Thanks to Bill Schottstaedt.
1732 2002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
1734 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
1736 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
1737 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
1738 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
1740 * guile-snarf-docs-texi.in: Bye bye.
1742 2002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1744 * symbols.c (scm_make_symbol): Fix typo in docstring.
1746 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
1747 scm_make_symbol): New prototypes.
1749 2002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
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.
1760 * print.c (scm_iprin1): Print uninterned symbols unreadably.
1762 2002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
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.
1768 2002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
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
1775 2002-01-31 Stefan Jahn <stefan@lkcc.org>
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.
1781 * Makefile.am: Setup rules for new `convert.*' files.
1783 2002-01-28 Stefan Jahn <stefan@lkcc.org>
1785 * symbols.c (scm_c_symbol2str): New function, replacement for
1786 `gh_scm2newsymbol()'.
1788 * strings.c (scm_c_substring2str): New function. Proper
1789 replacement for `gh_get_substr()'.
1791 * socket.c: Include `stdint.h' if available for the `uint32_t'
1794 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
1797 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
1799 2002-01-22 Neil Jerram <neil@ossau.uklinux.net>
1801 Other changes unrelated to Elisp...
1803 * eval.c (scm_m_if): Use s_if rather than repeating string literal
1805 (comments): Fix a few typos.
1806 (scm_for_each): Add parentheses around oddly unparenthesized
1807 if/while conditions.
1809 * read.c (scm_read_opts): Add full stop at end of doc for
1812 * script.c (scm_compile_shell_switches): Use scm_str2symbol
1813 instead of gh_symbol2scm.
1815 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
1816 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
1818 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
1819 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
1821 First batch of changes for Elisp support...
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.
1827 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
1828 conditionalize compilation and initialization of Elisp support
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.
1844 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
1847 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
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.
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
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.
1874 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
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
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.
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.
1892 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
1894 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
1896 * eval.c: Removed outdated references to "everr". Improved some
1899 (scm_deval_args, deval_args): Renamed scm_deval_args to
1900 deval_args, since it is not part of the interface.
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.
1906 * goops.h: Added local emacs variables.
1908 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
1910 * eval.[ch] (scm_deval_args): Made static.
1912 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
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.
1920 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
1922 * procs.h (SCM_CLOSURE_BODY): New Macro.
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
1931 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
1933 2001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
1935 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
1938 2001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
1940 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
1943 * continuations.c (scm_make_continuation): Do not retain the
1944 throw_value when the continuation is invoked.
1946 2001-12-08 Stefan Jahn <stefan@lkcc.org>
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
1953 2001-12-01 Neil Jerram <neil@ossau.uklinux.net>
1955 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
1958 2001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
1960 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
1961 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
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_*
1968 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
1970 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
1971 SCM_GC_CELL_* macros when accessing free cells.
1973 2001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
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.
1982 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
1983 !SCM_ENABLE_DEPRECATED.
1985 * async.c, async.h (scm_system_async_mark_from_signal_handler):
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.
1994 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
1995 scm_alloc_double_cell in their place.
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.
2003 gc.c (scm_tc16_allocated): Only define when including deprecated
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.
2011 * inline.c, inline.h: New files.
2012 * Makefile.am: Added them in all the right places.
2014 * _scm.h: Include "libguile/inline.h".
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.
2024 2001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
2026 * modules.c (scm_c_use_module): Adapt to changes to
2027 `process-use-modules'.
2029 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
2031 * numbers.c (scm_divide): Fix more division by zero errors.
2033 2001-11-21 Gary Houston <ghouston@arglist.com>
2035 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
2036 obsolete. autogen.sh says:
2037 invalid unused variable name: `OMIT_DEPENDENCIES'
2039 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
2041 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
2044 2001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
2046 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
2047 Thanks to Eric Gillespie, Jr!
2049 2001-11-21 Stefan Jahn <stefan@lkcc.org>
2051 * win32-socket.c (getservent, setservent, endservent,
2052 getprotoent, setprotoent, endprotoent): New functions.
2053 Appropriate replacements for M$-Windows.
2055 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
2056 these definitions for GUILE_DEBUG.
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.
2063 2001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
2065 * modules.c (scm_c_export): Do nothing when the first argument is
2066 already the terminating NULL. Thanks to Han-Wen Nienhuys!
2068 2001-11-20 Thien-Thi Nguyen <ttn@glug.org>
2070 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
2071 also include `buildstamp'.
2073 2001-11-18 Rob Browning <rlb@defaultvalue.org>
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
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.
2087 2001-11-18 Neil Jerram <neil@ossau.uklinux.net>
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.
2093 2001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
2095 * eval.c: Removed bogus comment about acros.
2097 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
2098 Minimize scope of local variable. Eliminate dependency on
2099 macro DEBUG_EXTENSIONS.
2101 (s_splicing): New error message string.
2103 (scm_m_body): Issue 'bad body' message rather than 'missing
2104 expression' message.
2106 (scm_m_quote): Eliminate unnecessary copying.
2108 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
2109 checking of the body to scm_m_body.
2111 (scm_m_do): Move comment to function header. Rename arg1 to
2112 binding. Made the code a bit easier to read.
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.
2122 (scm_m_delay): Added comment about the implementation of
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.
2129 (scm_m_letrec1): Removed. Part of the functionality is taken
2130 over by the new function 'transform_bindings'.
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
2137 (scm_m_letrec): Call 'transform_bindings'.
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
2146 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
2147 unnecessary consing. Eliminated unnecessary
2148 SCM_DEFER/ALLOW_INTS.
2150 (SCM_CEVAL): Un-obfuscated some loops.
2152 2001-11-16 Neil Jerram <neil@ossau.uklinux.net>
2154 * gc.h (scm_unhash_name): Old declaration removed.
2156 * eval.c (s_scm_eval): Change @var{primitive-eval} to
2157 @code{primitive-eval}.
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.
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.
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.
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.
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.
2188 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
2189 snarf-check-and-output-texi.
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.
2197 2001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
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
2203 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
2205 2001-11-13 Neil Jerram <neil@ossau.uklinux.net>
2207 * random.c (scm_random_solid_sphere_x,
2208 scm_random_hollow_sphere_x): Correct "shere" typos.
2210 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
2212 * version.c (scm_version): Update docstring to include
2215 2001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
2217 * modules.c (scm_c_export): Call va_end after collecting the
2220 * strop.h, strop.c (scm_substring_move_left_x,
2221 scm_substring_move_right_x): Removed.
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
2227 2001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
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
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
2241 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
2242 only -MIN_VALUE can still be negative of all negative numbers (in
2245 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
2247 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
2248 HAVE_LONG_LONG depending on whether their size is non-zero.
2250 2001-11-11 Thien-Thi Nguyen <ttn@glug.org>
2252 * strop.c (scm_string_null_p): Docfix; nfc.
2253 Thanks to Scott Lenser.
2255 2001-11-07 Neil Jerram <neil@ossau.uklinux.net>
2257 * extensions.c (scm_load_extension): Canonicalize docstring
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
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.
2277 * modules.c (scm_set_current_module): Add missing newline to
2280 2001-11-07 Stefan Jahn <stefan@lkcc.org>
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)'.
2287 * socket.c (scm_init_socket): Initialize `win32-socket' part
2288 here under M$-Windows.
2290 * numbers.h: Added missing declaration of
2291 `scm_sys_check_number_conversions()'.
2293 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
2294 and use in `(strerror)' and `(system-error)'.
2296 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
2297 `win32-socket.[ch]' to extra source and header files.
2299 2001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
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.
2306 2001-11-05 Stefan Jahn <stefan@lkcc.org>
2308 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
2310 2001-11-04 Stefan Jahn <stefan@lkcc.org>
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.
2316 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
2319 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
2320 import macros for external libraries (libcrypt, libqthreads,
2321 libreadline and libregex).
2323 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
2325 * posix.c (flock): Added support for flock() in M$-Windows.
2327 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
2330 * fports.c (getflags): Differentiate reading and writing pipes
2333 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
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
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.
2346 2001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
2348 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
2349 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
2351 2001-11-02 Mikael Djurfeldt <mdj@linnaeus>
2353 * print.c (scm_iprin1): Mark print state as revealed when
2354 dispatching to generic write or display.
2356 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
2358 2001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
2360 Support for native Win32. Thanks to Stefan Jahn!
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)'
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.
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,
2389 Prefixed each each exported symbol with SCM_API.
2391 * continuations.c: Added comment about the use of the extern
2392 declarations of {get,set}context() functions used in the ia64 port.
2394 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
2395 is meant to be a `unsigned long *'.
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
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()'.
2408 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
2410 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
2411 build on Win32. Disable preloaded symbols on Win2 platforms.
2413 * ioext.c, ports.c: Include `io.h' is possible.
2415 * mkstemp.c: Include `process.h' is possible.
2417 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
2419 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
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.
2426 * scmsigs.c: Made `usleep()' avalable on MinGW.
2428 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
2430 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
2432 * win32-uname.c: Include "win32-uname.h", not "uname.h".
2434 2001-10-28 Mikael Djurfeldt <mdj@linnaeus>
2436 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
2437 Don't apply scm_uniform_vector_length on arrays.
2439 2001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
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]?.
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.
2451 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
2452 comparison parameters.
2454 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
2455 !SCM_NULLP instead of SCM_NIMP.
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.
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.
2468 (scm_c_improper_memq): Made the comment somewhat clearer.
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.
2474 (scm_m_letstar): Added Comment. Renamed proc to bindings.
2475 Renamed arg1 to binding and minimized its scope. Eliminated
2476 unnecessary consing.
2478 (scm_m_do): Renamed proc to bindings. Minimized the scope of
2481 (build_binding_list): New static function.
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 :-).
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.
2493 2001-10-14 Gary Houston <ghouston@arglist.com>
2495 * version.c (scm_version): use sprintf instead of snprintf,
2496 for portability. thanks to Bill Schottstaedt.
2498 2001-10-14 Mikael Djurfeldt <mdj@linnaeus>
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.)
2505 2001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
2507 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
2508 PTRDIFF_MIN. Thanks to Ken Raeburn.
2510 2001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
2512 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
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
2518 * modules.c (module_variable): Pass over variables that exist but
2521 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
2523 * backtrace.c (display_backtrace_file_and_line): Only use
2524 scm_basename when POSIX support is compiled in. Thanks to Chris
2527 2001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
2536 (mem2complex): Fix erroneous double-negation. Now, numbers like
2537 1-i will be read correctly.
2539 2001-10-12 Mikael Djurfeldt <mdj@linnaeus>
2541 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
2543 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
2545 2001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
2547 * print.c (scm_print_state_vtable, print_state_pool):
2548 Initialize. These variables are now registered as gc roots.
2550 (scm_current_pstate): Update documentation.
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
2557 (make_print_state): The car of print_state_pool no longer holds
2558 the scm_print_state_vtable.
2560 (scm_current_pstate, scm_make_print_state, print_circref,
2561 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
2564 (scm_prin1): When building lists, prefer scm_list_<n> over
2567 (scm_iprlist): Removed a redundant SCM_IMP test.
2569 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
2571 2001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
2573 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
2575 (scm_memcons, scm_mem_to_proc): When building lists, prefer
2576 scm_list_<n> over scm_cons[2]?.
2578 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
2580 (scm_procedure_name): Use SCM_CADR instead of explicit form.
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.
2586 2001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
2588 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
2589 little bit - should even be somewhat more accurate now.
2591 2001-10-08 Rob Browning <rlb@defaultvalue.org>
2593 * gc.c: support ia64 register backing store.
2594 (SCM_MARK_BACKING_STORE): new macro.
2596 * continuations.h: support ia64 register backing store.
2597 (struct scm_t_contregs): add ia64 register backing store.
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.
2605 2001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
2611 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
2612 scm_t_bits instead of long.
2614 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
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.
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.
2627 * numbers.c: Define NO_PREPRO_MAGOC when including
2628 num2integral.c.i for `long long' and `signed long long'.
2630 2001-10-06 Mikael Djurfeldt <mdj@linnaeus>
2632 These changes fixes a race condition in the Guile coop - pthread
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.
2640 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
2646 (get_option_setting): New static function that computes an option
2647 setting as it was formerly done in the function scm_options.
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
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.
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
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.
2672 * options.[ch] (scm_t_option): Made type unsigned, name into a
2673 constant char* and val into a scm_t_bits type.
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
2679 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
2681 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
2682 testing an unsigned value for being >= 0.
2684 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
2686 * numbers.h: Removed old comment about using SCM_CAR to access
2689 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
2690 the return value is signed. Thanks to Brian Crowder for the bug
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.
2698 (SCM_MAKINUM, SCM_INUM): Use proper casting.
2700 2001-10-03 Gary Houston <ghouston@arglist.com>
2702 * continuations.h, unif.h: in the descriptions of the bit patterns
2703 of the heap cells, make bit 0 the least significant.
2705 2001-09-25 Thien-Thi Nguyen <ttn@glug.org>
2707 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
2708 Thanks to Golubev I. N.
2710 2001-09-25 Gary Houston <ghouston@arglist.com>
2712 * ports.c (scm_drain_input): extended the docstring. thanks to
2713 Alex Schroeder and Thien-Thi Nguyen.
2715 2001-09-23 Mikael Djurfeldt <mdj@linnaeus>
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.)
2721 * numbers.h: Added missing declarations.
2723 2001-09-22 Mikael Djurfeldt <mdj@linnaeus>
2725 * Makefile.am: Distribute num2float.i.c.
2727 * num2float.i.c: New file, multiply included by numbers.c, used
2728 to "templatize" the float <-> num conversion routines.
2730 * numbers.c: New functions: scm_num2float, scm_float2num,
2731 scm_num2double, scm_double2num.
2733 2001-09-21 Rob Browning <rlb@defaultvalue.org>
2735 * .cvsignore: really add version.h
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.
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.
2745 * error.c (scm_wta): coerce char* to intptr_t before int
2748 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
2751 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
2753 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
2755 * numbers.c (scm_integer_expt): Accept inexact integer in second
2756 argument. (Thanks to Bill Schottstaedt.)
2758 2001-09-20 Rob Browning <rlb@defaultvalue.org>
2760 * .cvsignore: add version.h
2762 * versiondat.h.in: removed (obsolete).
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.
2769 * version.h: renamed to version.h.in.
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.
2777 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
2779 * error.c, error.h: Made error keys globally accessible.
2780 Applications might want to test for these or use them in a direct
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.
2788 2001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
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!
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.)
2804 2001-09-15 Gary Houston <ghouston@arglist.com>
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
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.
2816 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
2818 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
2820 (TCONC_IN): Make sure that the cell word 0 is initialized last.
2822 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
2824 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
2826 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
2827 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
2829 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
2836 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
2843 2001-09-12 Martin Baulig <martin@home-of-linux.org>
2845 * strings.[ch] (scm_str2string): New function.
2847 2001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
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.
2854 2001-09-01 Michael Livshin <mlivshin@bigfoot.com>
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.
2860 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
2861 unsigned, ensure that it's positive. thanks to Martin Baulig!
2863 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
2865 * __scm.h: Added new section about compile time selectable
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):
2874 * deprecation.c (scm_include_deprecated_features): Simplified.
2876 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
2877 `SCM_IMP´ instead of `!SCM_CELLP´.
2879 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
2880 Extract side-effecting operations from macros.
2882 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
2883 scm_top_level_lookup_closure_var and scm_system_transformer.
2885 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
2887 (heap_segment): Use CELL_P instead of SCM_CELLP.
2889 * init.c (start_stack): Don't initialize
2890 scm_top_level_lookup_closure_var and scm_system_transformer.
2892 * modules.c (scm_set_current_module): Don't access
2893 scm_top_level_lookup_closure_var and scm_system_transformer.
2895 (scm_sym2var): Don't call scm_variable_set_name_hint.
2897 (scm_post_boot_init_modules): Removed deprecated initializations.
2899 * print.c (scm_ipruk): Don't access cell contents of non cells.
2901 * strings.c (scm_string_set_x): All strings are writable.
2903 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
2904 type. There is only one string type now.
2906 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
2908 * tags.h: Remove comments about two different string types.
2910 (SCM_CELLP, SCM_NCELLP): Deprecated.
2912 * variable.c (make_variable): Remove code variant for vcells.
2914 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
2915 SCM_VARIABLE_LOC): Remove code variant for vcells.
2917 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
2918 SCM_ENABLE_DEPRECATED with the logic reversed.
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):
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.
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
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
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>.
2978 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
2980 * Makefile.am: Remove references to symbols-deprecated.c.
2982 * symbols.c (scm_init_symbols): Don't initialize deprecated
2985 * symbols-deprecated.c: Removed.
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.
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.
3020 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
3021 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
3024 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
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
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>.
3055 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
3089 2001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
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.
3095 2001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
3097 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
3098 used; nfc. Thanks to Bill Schottstaedt.
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.
3104 2001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
3106 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
3108 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
3110 * dynwind.h (scm_swap_bindings): Declare.
3111 * dynwind.c (scm_swap_bindings): Make non-static.
3113 2001-08-25 Michael Livshin <mlivshin@bigfoot.com>
3115 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
3116 doing exactly nothing about them). thanks Neil!
3118 2001-08-18 Neil Jerram <neil@ossau.uklinux.net>
3120 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
3122 2001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
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.
3128 (map_free_list): Fix typo: Ref `f' correctly.
3130 Thanks to Chris Cramer.
3132 2001-08-15 Rob Browning <rlb@defaultvalue.org>
3134 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
3136 (libpath.h): change libguileversion to libguileinterface.
3138 2001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
3140 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
3141 ChangeLog-2000. Thanks to Daniel Skarda!
3143 2001-08-07 Michael Livshin <mlivshin@bigfoot.com>
3145 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
3146 do it from the Makefile.
3148 * Makefile.am: rearrange the snarfing slightly, so that .doc files
3149 are of a reasonable size.
3151 2001-08-02 Neil Jerram <neil@ossau.uklinux.net>
3153 * stacks.c (scm_make_stack): Improve docstring by explaining use
3156 2001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
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
3164 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
3166 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
3167 scm_istr2flo, scm_istring2number): Removed.
3169 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
3172 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
3173 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
3176 (scm_string_to_number): Use new number parser.
3178 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
3179 handles complex numbers.
3181 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
3184 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
3187 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
3189 (scm_i_mem2number): Added.
3191 (scm_exact_to_inexact): Changed signature.
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.
3197 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
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>.
3204 (scm_eval_body): Remove side effecting code from macro call.
3206 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
3209 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
3211 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
3213 2001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
3215 Removed vcell slot from structs.
3217 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
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
3223 (scm_init_struct): Remove vcell slot layout code from
3224 required_vtable_fields.
3226 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
3228 * goops.c (build_class_class_slots): Removed vcell slot
3231 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
3232 Removed vcell slot layout code.
3233 (scm_si_vcell): Removed.
3235 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
3237 "Glocs" have been removed.
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.
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.
3249 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
3250 tell glocs from structs.
3252 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
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
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.
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):
3269 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
3271 * dynwind.c (scm_swap_bindings): Likewise.
3272 (scm_dowinds): Updated to recognize lists of variables instead of
3275 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
3278 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
3281 2001-07-25 Gary Houston <ghouston@arglist.com>
3283 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
3284 docstrings to reflect the n-ary implementation.
3286 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
3288 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
3289 value of a variable, not the plain "return" statement.
3291 2001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
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
3298 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
3301 2001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
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.
3307 * tags.h (scm_tc7_variable): New.
3308 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
3309 * print.c (scm_iprin1): Likewise.
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
3317 (variable_equal_p): Removed.
3318 (make_variable): Construct a tc7 object instead of a smob.
3319 (scm_init_variable): Do not register smob.
3321 2001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
3323 * tags.h: Include inttypes.h when we have it.
3325 2001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
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.
3331 2001-07-22 Gary Houston <ghouston@arglist.com>
3333 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
3334 SCM_MAKINUM to convert regoff_t value to SCM.
3336 2001-07-21 Gary Houston <ghouston@arglist.com>
3338 * scmsigs.c: include sys/time.h for itimer stuff.
3340 2001-07-19 Rob Browning <rlb@defaultvalue.org>
3342 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
3344 * c-tokenize.lex: add option %nounput to quiet warning.
3345 Add prototype for yylex to quiet warning.
3347 * scmconfig.h.in: add flags for setitimer and getitimer.
3349 * scmsigs.h (scm_init_scmsigs): new prototype.
3350 (scm_init_scmsigs): new prototype.
3352 * scmsigs.c (s_scm_setitimer): new function.
3353 (s_scm_setitimer): new function.
3355 2001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
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.
3370 2001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
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.
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
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>.
3398 (scm_sys_prep_layout_x): Minimize variable scopes.
3400 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
3401 scm_sys_fast_slot_set_x): Fix signedness.
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.
3408 (scm_enable_primitive_generic_x): Add rest argument checking.
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.
3416 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
3419 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
3422 2001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
3424 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
3426 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
3428 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
3430 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
3432 2001-07-12 Michael Livshin <mlivshin@bigfoot.com>
3434 * strings.c (s_scm_string): fix arg position in assert.
3436 2001-07-11 Gary Houston <ghouston@arglist.com>
3438 * strports.c (st_write): use memcpy, not strncpy. thanks to
3441 2001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
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.
3463 2001-07-08 Rob Browning <rlb@defaultvalue.org>
3465 * .cvsignore: add stamp-h.in.
3467 2001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
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.
3473 2001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
3475 Some more compatibility patches for Windows.
3477 * posix.c (getlogin): getlogin() implementation for Windows.
3479 * backtrace.c, ioext.c: Include <stdio.h>.
3481 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
3484 * cpp_sig_symbols.in: Added SIGBREAK.
3486 2001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
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!
3492 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
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
3498 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
3500 * list.c (SCM_I_CONS): Make sure the cell type is initialized
3503 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
3504 init_heap_seg): Fixed signedness.
3506 (init_heap_seg): Replaced strange for-loop with a while loop.
3508 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
3510 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
3512 The following patch adds conservative marking for the elements of
3513 free or allocated cells.
3515 * gc.c (allocated_mark, heap_segment): New static functions.
3517 (which_seg): Deleted, since the functionality is now provided by
3518 function heap_segment.
3520 (map_free_list): Use heap_segment instead of which_seg.
3522 (MARK): If cell debugging is disabled, mark free cells
3525 (scm_mark_locations, scm_cellp): Extracted the search for the
3526 heap segment of a SCM value into function heap_segment.
3528 (scm_init_storage): Allocated cells must be marked
3531 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
3533 The following patch changes the representation of weak vectors to
3534 double cells instead of using an extension of the vector's
3537 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
3538 the result of SCM_WVECT_GC_CHAIN.
3540 (scm_gc_sweep): Weak vectors don't have extra fields any more.
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.
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.
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.
3555 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
3558 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
3559 using an entry of the double cell.
3561 2001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
3563 * stamp-h.in: bye bye
3565 2001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
3567 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
3570 * load.c, load.h (scm_c_primitive_load,
3571 scm_c_primitive_load_path): New.
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.
3578 2001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
3580 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
3583 2001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
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.
3591 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
3593 * strings.c: #include "libguile/deprecation.h".
3595 2001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
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(...)').
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).
3606 2001-06-26 Neil Jerram <neil@ossau.uklinux.net>
3608 * eval.h, eval.c (scm_call_4): New function.
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
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.
3618 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
3619 procedures not being #f.
3621 2001-06-27 Michael Livshin <mlivshin@bigfoot.com>
3623 * Makefile.am (c-tokenize.c): add rule to generate it.
3624 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
3626 filter-doc-snarfage.c: remove.
3628 2001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
3630 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
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.
3636 Thanks to Stefan Jahn for all necessary information, patches and
3639 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
3640 getpgrp, ttyname, primitive-fork and some header inclusion for
3643 * random.c: Define M_PI, if not predefined and use __int64 for
3644 LONG64 under Windows.
3646 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
3647 Windows and conditionalize some signal names.
3649 * socket.c (scm_getsockopt): Added missing comma.
3650 Include socket library header under Windows.
3652 * stime.c (CLKTCK): Add cast to int, to make it compile under
3655 * ports.c (truncate): New function, compiled only under Windows.
3657 * net_db.c: Do not declare errno under Windows.
3659 * iselect.h, inet_aton.c: Include socket library headers under
3662 * guile.c (inner_main): Under Windows, initialize socket library
3663 and initialize gdb_interface data structures.
3665 * gdb_interface.h: Under Windows, gdb_interface cannot be
3666 initialized statically. Initialize at runtime instead.
3668 * fports.c (write_all): ssize_t -> size_t.
3669 (fport_print): Conditionalize call to ttyname().
3670 (getflags): New function, compiled only under Windows.
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 /
3677 * backtrace.c: Include <io.h> under Windows.
3679 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
3681 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
3684 2001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
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".
3713 2001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
3719 * filesys.c (scm_stat): Clean up type dispatch.
3721 * filesys.c (scm_stat), ports.c (scm_input_port_p,
3722 scm_output_port_p): Get rid of redundant IM type check.
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.
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>.
3745 * strings.[ch] (scm_makfromstr): Deprecated.
3747 (scm_mem2string): New function, replaces scm_makfromstr.
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.
3753 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
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.
3763 2001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
3765 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
3768 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
3769 Rename <foo>H to SCM_<foo>_H.
3771 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
3772 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
3774 (narrow_stack): Make i unsigned. Don't use side-effecting
3775 operations in conditions.
3777 (narrow_stack, scm_make_stack, scm_stack_id,
3778 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
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
3784 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
3787 (scm_last_stack_frame): Remove bogus `;´.
3789 * stacks.h (SCM_FRAMEP): Fix type check.
3791 2001-06-25 Michael Livshin <mlivshin@bigfoot.com>
3793 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
3794 c-tokenize.c when doing maintainer-clean.
3796 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
3798 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
3801 * eval.c: all hash signs are in column 0.
3803 * Makefile.am (guile_filter_doc_snarfage): build using
3804 c-tokenize.c, not filter-doc-snarfage.c.
3805 rearrange snarfing dependencies a bit.
3807 * c-tokenize.lex: new file.
3809 2001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
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!
3816 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
3817 they aren't defined already.
3819 2001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
3821 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
3822 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
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>.
3831 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
3834 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
3835 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
3837 * objects.c (scm_class_of): Type fix.
3839 (scm_mcache_lookup_cmethod): Improved comment, simplified,
3842 * pairs.h (scm_error_pair_access): The function can return if
3845 2001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
3847 * init.c (scm_init_guile_1): Removed initialization of tag.c.
3849 * gdbint.c, init.c: Removed inclusion of tag.h.
3851 * tag.h, tag.c: Removed files.
3853 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
3855 2001-06-20 Gary Houston <ghouston@arglist.com>
3857 * deprecation.c, extensions.c, rw.c: include string.h.
3859 2001-06-19 Gary Houston <ghouston@arglist.com>
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
3866 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
3868 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
3870 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
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.
3877 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
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.
3885 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
3886 (SCM_INUM): Cast result to scm_signed_bits_t.
3888 2001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
3890 * mkstemp.c: Update path to #include file scmconfig.h.
3891 Thanks to Golubev I. N.
3893 2001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
3895 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
3897 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\´ at the end of
3898 the macro definition.
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.
3904 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
3905 the object is a struct before accessing its struct flags.
3907 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
3909 2001-06-10 Gary Houston <ghouston@arglist.com>
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.
3915 2001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
3917 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
3918 Thanks to Matthias Köppe!
3920 2001-06-08 Michael Livshin <mlivshin@bigfoot.com>
3922 * snarf.h, filter-doc-snarfage.c: more changes to cope with
3923 space-happy C preprocessors.
3925 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
3926 inside cookies. thanks to Matthias Köppe!
3928 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
3930 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
3931 keywords. Fix gc protection.
3933 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
3934 operations in macro calls.
3936 * pairs.c (scm_error_pair_access): Avoid recursion.
3938 Thanks to Matthias Koeppe for reporting the bugs that correspond
3939 to the following set of patches.
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.
3945 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
3948 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
3950 * goops.c (SCM_CLASS_REDEF): Removed.
3952 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
3955 Thanks to Matthias Koeppe for reporting the bugs that correspond
3956 to the following set of patches.
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.
3965 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
3967 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
3969 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
3970 UNARY_ELTS_CODE): Remove bogus break statement.
3972 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
3973 Don't access bit vectors elements as SCM objects.
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.
3979 2001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
3981 * __scm.h (SCM_NORETURN): Moved here from error.h.
3983 (SCM_UNUSED): New macro.
3985 (SCM_DEBUG_PAIR_ACCESSES): New macro.
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.
4026 * error.h (SCM_NORETURN): Moved to __scm.h.
4028 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
4029 Renamed <foo>H to SCM_<foo>_H.
4031 * gc.c (debug_cells_gc_interval): New static variable.
4033 (scm_assert_cell_valid): If selected by the user, perform
4034 additional garbage collections.
4036 (scm_set_debug_cell_accesses_x): Extended to let the user specify
4037 if additional garbage collections are desired.
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.
4043 * pairs.c (scm_error_pair_access): New function. Only compiled
4044 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
4046 * pairs.h (SCM_VALIDATE_PAIR): New macro.
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.
4053 2001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
4055 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
4057 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
4058 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
4060 2001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
4062 * extensions.c (scm_c_register_extension): Allow NULL as library
4064 (load_extension): Ignore NULL library names when comparing.
4066 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
4067 non-pointers are being compared. Thanks to Alexander Klimov!
4069 2001-06-04 Gary Houston <ghouston@arglist.com>
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.
4075 2001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
4077 * keywords.c (keyword_print): Substract 1 from length of symbol
4078 name, accounting for the silly dash.
4080 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
4081 Do not emit deprecation warning.
4083 Added exception notice to all files.
4085 * dynl.c: Include "deprecation.h".
4087 2001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
4089 * dynl.c (scm_register_module_xxx, scm_registered_modules,
4090 scm_clear_registered_modules): Deprecated.
4092 2001-06-02 Rob Browning <rlb@cs.utexas.edu>
4094 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
4095 guile-snarf-docs-texi.
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.
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.
4109 2001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
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.
4115 * mkstemp.c: New file, slightly modified from libiberties
4118 2001-05-31 Michael Livshin <mlivshin@bigfoot.com>
4120 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
4121 filter-doc-snarfage.c: new files.
4123 * Makefile.am: add stuff to [build,] use and distribute
4124 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
4126 * guile-snarf.in: grok the new snarf output.
4128 * snarf.h: make the output both texttools- and `read'-friendly.
4130 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
4131 guile-snarf-docs. (should also deprecate, I guess. maybe not).
4133 2001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
4135 * print.c (scm_simple_format): Support "~~" and "~%". Signal
4136 error for unsupported format controls and for superflous
4137 arguments. Thanks to Daniel Skarda!
4139 * print.h, print.c (scm_print_symbol_name): Factored out of
4141 (scm_iprin1): Call it.
4143 * keywords.c (keyword_print): Use scm_print_symbol_name so that
4144 weird names are printed correctly.
4146 * print.c (scm_print_symbol_name): Symbols whose name starts with
4147 `#' or `:' or ends with `:' are considered weird.
4149 2001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4151 * numbers.c (scm_difference, scm_divide): Clarified comments for -
4154 2001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4156 * debug.h: Removed prototype for scm_eval_string.
4158 2001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4160 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
4161 (make-string 2000 #\!))' in an older version).
4163 Change strncpy to memcpy to allow embedded NUL characters in
4166 2001-05-28 Michael Livshin <mlivshin@bigfoot.com>
4168 * hooks.c (scm_create_hook): deprecated.
4169 (make_hook): deleted.
4170 (scm_make_hook): all the hook creation code is now here.
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.
4175 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
4177 * socket.c (s_scm_inet_pton): fix docstring quoting.
4178 (s_scm_inet_ntop): ditto.
4180 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
4182 * hashtab.c (scm_internal_hash_fold): fix argument position in
4185 * environments.c (s_scm_import_environment_set_imports_x): fix
4186 argument position in SCM_ASSERT.
4188 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
4189 (s_scm_make_iloc): ditto.
4191 2001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
4193 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
4195 * eval.c (promise_print): Read the promise's value as an object.
4197 (SCM_CEVAL): Don't perform side-effecting operations in macro
4200 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
4201 conditional expression.
4203 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
4206 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
4207 text, removed redundant computation of effective_length and fixed
4210 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
4213 (wrap_init): Don't use SCM_C[AD]R for non pairs.
4215 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
4217 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
4218 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
4220 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
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.
4227 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
4229 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
4231 * ramap.c (ramap_rp): Removed bogus `;´.
4233 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
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.
4240 * tags.h (SCM_VOIDP_TEST): Removed.
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
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.
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.
4256 2001-05-27 Michael Livshin <mlivshin@bigfoot.com>
4258 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
4259 (scm_igc): mark from them, too (precisely, not conservatively!).
4261 * root.h (scm_gc_registered_roots): new object in
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.
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.
4271 * gc.h: add prototypes for scm_gc_[un]protect_object,
4272 scm_gc_[un]register_root[s].
4274 2001-05-26 Michael Livshin <mlivshin@bigfoot.com>
4276 revert the controversial part of the 2001-05-24 changes.
4278 2001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
4280 * modules.c (scm_env_module): Exported to Scheme.
4282 * eval.c (scm_debug_opts): New option `show-file-name'.
4284 * debug.h (SCM_SHOW_FILE_NAME): New.
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
4291 (display_backtrace_body): Call scm_display_backtrace_file if
4294 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
4295 Prototypes removed since there's no definition for these
4298 2001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
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.
4305 2001-05-24 Michael Livshin <mlivshin@bigfoot.com>
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:
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.
4314 The changes are incomplete and possibly buggy. Please test on
4318 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
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.
4326 * tags.h (scm_ubits_t): new typedef, representing unsigned
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.
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.
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.
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.
4351 * procs.h: type renaming:
4352 scm_subr_entry -> scm_subr_entry_t
4353 the old name is deprecated, all in-Guile uses changed.
4355 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
4357 scm_option -> scm_option_t
4358 the old name is deprecated, all in-Guile uses changed.
4360 * objects.c: various long -> scm_bits_t changes.
4361 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
4363 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
4366 * num2integral.i.c: new file, multiply included by numbers.c, used
4367 to "templatize" the various integral <-> num conversion routines.
4369 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
4370 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
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.
4383 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
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.
4389 * list.c (scm_ilength): return a scm_bits_t, not long.
4390 some other {int,long} -> scm_bits_t changes.
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.
4397 * gsubr.c: various int -> scm_bits_t changes.
4399 * goops.[hc]: various {int,long} -> scm_bits_t changes.
4401 * gh_data.c (gh_num2int): no loss of precision any more.
4403 * gh.h (gh_str2scm): len: int -> size_t
4404 (gh_{get,set}_substr): start: int -> scm_bits_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.
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.
4414 * fports.h: type renaming:
4415 scm_fport -> scm_fport_t
4416 the old name is deprecated, all in-Guile uses changed.
4418 * fports.c (fport_fill_input): count: int -> scm_bits_t
4419 (fport_flush): init_size, remaining, count: int -> scm_bits_t
4421 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
4422 those prototypes, as the functions they prototype don't exist.
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
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 ->
4433 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
4435 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
4436 the new and shiny SCM_NUM2INT.
4438 * extensions.c: extension -> extension_t (and made a typedef).
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.
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
4452 * environments.c: changed the many calls to scm_ulong2num to
4454 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
4456 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
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
4464 * debug.c (scm_init_debug): use scm_c_define instead of the
4465 deprecated scm_define.
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
4473 * continuations.c (scm_make_continuation): change the type of
4474 stack_size from long to scm_bits_t.
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.
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
4489 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
4490 exist (for size_t & ptrdiff_t).
4491 (scm_sizet): deprecated.
4493 * Makefile.am (noinst_HEADERS): add num2integral.i.c
4495 2001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
4497 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
4498 SCM_VARIABLE_INIT since that it what it used to be.
4500 * deprecation.c (scm_include_deprecated_features): Make docstring
4501 ANSIsh. Thanks to Matthias Köppe!
4503 2001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
4505 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
4506 needed for weak-key hashtables.
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.
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.
4514 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
4516 2001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
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.
4523 * init.c (scm_init_guile_1): Call scm_init_extensions.
4525 * Makefile.am: Add "extensions.c" and related files in all the
4528 * extensions.h, extension.c: New files.
4530 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
4532 * modules.h (scm_system_module_env_p): Move out of deprecated
4535 * rw.h (scm_init_rw): Added prototype.
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.
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):
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
4558 2001-05-19 Neil Jerram <neil@ossau.uklinux.net>
4560 * throw.c (scm_lazy_catch): Slight docstring clarification.
4562 2001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
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
4570 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
4571 refered to s_scm_minor_version previously.
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.
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.
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
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.
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'
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.
4614 * script.c (scm_shell): Evaluate the compiled switches in the
4615 current module, not in the root module.
4617 2001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
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.
4624 2001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
4626 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
4628 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
4629 accessed with SCM_C[AD]R.
4631 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
4633 2001-05-16 Rob Browning <rlb@cs.utexas.edu>
4635 * version.c (s_scm_major_version): doc fixes.
4636 (s_scm_minor_version): doc fixes.
4637 (s_scm_minor_version): new function.
4639 * version.h (scm_init_version): new function.
4641 * versiondat.h.in: add GUILE_MICRO_VERSION.
4643 2001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4645 * deprecation.c (scm_init_deprecation): Renamed
4646 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
4648 2001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
4650 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
4651 dependent on cpp_cnvt.awk
4653 2001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
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.
4659 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
4661 Merged from mvo-vcell-cleanup-1-branch.
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.
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),
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
4683 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
4685 (scm_builtin_variable): Deprecated.
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
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.
4706 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
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.
4715 * modules.h, modules.c (scm_module_system_booted_p): Changed type
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
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
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.
4746 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
4749 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
4750 hashtable operations to maintain the keywords, not obarray ones.
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.
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.
4762 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
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
4767 (scm_unhash_name): Removed.
4769 * feature.c (features): Renamed to features_var. Now points to a
4770 variable instead of a vcell. Updated all uses.
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.
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
4786 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
4787 (scm_m_atfop): Expect the function definition to be a variable
4789 (scm_macroexp): Do not use `unmemocar', explicitely remember the
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
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.
4803 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
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.
4811 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
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.
4819 * _scm.h: Include "variables.h" and "modules.h" since almost
4820 everybody needs them now.
4822 * root.h (scm_symhash, scm_symhash_vars): Removed.
4823 * gc.c (scm_init_storage): Do not initialize them.
4825 2001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
4827 * eval.c (scm_init_eval): Initialize scm_undefineds and
4830 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
4831 like the SCM_NEWCELL macro counterparts.
4833 (scm_init_storage, scm_init_gc): Moved initialization of
4834 scm_tc16_allocated from scm_init_gc to scm_init_storage.
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.
4840 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
4841 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
4843 * init.c (scm_init_guile_1): Reordered some initializations and
4844 added dependcy information comments.
4846 * load.c (scm_init_load): Use scm_nullstr.
4848 * strings.c (scm_init_strings): Initialize scm_nullstr.
4850 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
4852 2001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
4854 * values.c (print_values): Print as a unreadable object, not as
4855 multiple lines. Thanks to Matthias Köppe!
4857 2001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
4859 * deprecation.c: Fixed copyright date.
4861 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
4862 DEPRECATION_H to SCM_DEPRECATION_H.
4864 2001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
4866 * guile-doc-snarf.in: Update copyright.
4867 Fix relative path bug. Thanks to Sergey Poznyakoff.
4869 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
4871 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
4872 accept open ports. Thanks to Quetzalcoatl Bradley!
4874 2001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4876 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
4877 has 779 primitives on startup.
4879 2001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
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.
4885 2001-05-09 Michael Livshin <mlivshin@bigfoot.com>
4887 from Matthias Köppe (thanks!):
4889 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
4892 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
4895 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
4897 * gc.c (scm_init_gc): Added FIXME comment.
4899 * hooks.c: Since hooks don't have a name any more, it is not
4900 necessary to include objprop.h.
4902 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
4904 (symbol_name, scm_make_hook_with_name): Removed.
4906 (scm_create_hook): Don't set the hook's name property.
4908 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
4910 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
4912 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
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.
4918 2001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
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.
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.
4929 2001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
4931 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
4932 as well. "SCM (*)(...)" does not work on RedHat 7.1.
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.
4938 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
4939 arguments are supplied.
4941 2001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
4943 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
4944 describe `regexp/notbol' and `regexp/noteol' execution flags.
4946 * strop.c (scm_substring_move_x): Doc fix; nfc.
4948 2001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
4950 * objects.c, objects.h (scm_valid_object_procedure_p): New.
4951 (scm_set_object_procedure_x): Use it to check argument. Fix
4954 * evalext.c (scm_definedp): Fix docstring.
4956 2001-05-05 Gary Houston <ghouston@arglist.com>
4958 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
4961 2001-05-04 Neil Jerram <neil@ossau.uklinux.net>
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.
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.
4972 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
4975 2001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4977 * strop.c (scm_string_split): New procedure.
4979 * strop.h (scm_string_split): Added prototype.
4981 2001-05-04 Gary Houston <ghouston@arglist.com>
4983 * socket.c: define uint32_t if netdb.h doesn't. thanks to
4986 2001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
4988 * rw.c: Include "modules.h" and "strports.h".
4990 * net_db.h (scm_gethost): Added prototype.
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".
4997 * init.c: Include "deprecation.h".
4998 (scm_init_guile_1): Call scm_init_deprecation.
5000 2001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
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):
5006 2001-04-29 Gary Houston <ghouston@arglist.com>
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.
5012 init.c: include rw.h and call scm_init_rw.
5013 Makefile.am: include rw.c and rw.h.
5015 2001-04-28 Rob Browning <rlb@cs.utexas.edu>
5017 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
5018 know what's supposed to happen to it.
5020 * list.h (scm_list_star): deprecation expired - removed.
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.
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.
5041 * tag.h (scm_tag): deprecation expired - removed.
5043 * tag.c: (scm_tag): deprecation expired - removed.
5045 * ioext.c: (scm_fseek): deprecation expired - removed.
5047 * ioext.h (scm_fseek): deprecation expired - removed.
5049 * gh_data.c (gh_int2scmb): deprecation expired - removed.
5051 * gh.h (gh_int2scmb): deprecation expired - removed.
5053 2001-04-28 Neil Jerram <neil@ossau.uklinux.net>
5055 * stacks.c (scm_make_stack): Fix typo in docstring.
5057 2001-04-27 Rob Browning <rlb@cs.utexas.edu>
5059 * error.c (scm_sysmissing): deprecation expired - removed.
5061 * error.h (scm_sysmissing): deprecation expired - removed.
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.
5068 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
5071 (SCM_NSTRINGP): deprecation expired - removed.
5072 (SCM_NRWSTRINGP): deprecation expired - removed.
5074 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
5077 (SCM_ICHRP): deprecation expired - removed.
5078 (SCM_ICHR): deprecation expired - removed.
5079 (SCM_MAKICHR): deprecation expired - removed.
5082 (SCM_INPORTP): deprecation expired - removed.
5083 (SCM_OUTPORTP): deprecation expired - removed.
5085 2001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
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
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.
5099 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
5100 scm_current_module_transformer, scm_module_transformer): New.
5102 * gh_data.c: Removed FIXME comment about gh_lookup returning
5103 SCM_UNDEFINED. That's the right thing to do.
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.
5112 2001-04-22 Neil Jerram <neil@ossau.uklinux.net>
5114 * throw.c (scm_throw): Correct docstring.
5116 2001-04-22 Gary Houston <ghouston@arglist.com>
5118 * socket.c: attempted to improve the docstrings slightly.
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.):
5124 * net_db.h: declarations moved too.
5126 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
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.
5135 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5137 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
5138 smob number explicitly. Use SCM_TC2SMOBNUM instead.
5140 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
5141 when compiled in debug mode.
5143 (scm_gc_sweep): Only call smob's free function if it is defined.
5145 * print.c (scm_iprin1): No need to check for validity of smob
5146 type or existence of print function.
5148 * smob.[ch] (scm_smobs): Made into a fixed size global array.
5149 Resizing will not work well with preemptive threading.
5151 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
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.
5157 (scm_smob_prehistory): Initialize all smob descriptors. By
5158 default, don't assign a smob free function: Most smob types don't
5161 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
5163 2001-04-21 Gary Houston <ghouston@arglist.com>
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.
5170 2001-04-20 Gary Houston <ghouston@arglist.com>
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
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.
5179 2001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
5181 * struct.c (scm_free_structs): Only pairs may be accessed with
5184 2001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
5186 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
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.
5192 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5194 * unif.c (scm_array_to_list): Added missing handling of arrays of
5195 bytes. Thanks to Masao Uebayashi for the bug report.
5197 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5199 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
5202 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5204 * procs.h (SCM_CLOSURE_FORMALS): New macro.
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.
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.
5215 * macros.c (macro_print): Extracted macro printing code from
5216 print.c and simplified it.
5218 (scm_macro_type): Use SCM_MACRO_TYPE;
5220 (scm_init_macros): Use macro_print for printing macros.
5222 * print.c (scm_print_opts): Improved option documentation.
5224 (scm_iprin1): Extracted printing of macros to macros.c.
5225 Simplified printing of ordinary closures.
5227 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
5228 Martin Grabmueller for the bug report.
5230 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
5232 This patch eliminates some further applications of SCM_C[AD]R to
5235 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
5236 never been applied to real pairs.
5238 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
5240 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
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.
5246 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
5249 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
5250 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
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.
5256 2001-04-17 Gary Houston <ghouston@arglist.com>
5258 * some initial support for IPv6:
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.
5267 2001-04-17 Niibe Yutaka <gniibe@m17n.org>
5269 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
5270 matches SCM_DEFER_INTS at the beginning of the function.
5272 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
5274 * gc.c (scm_igc): Unconditionally call
5275 SCM_CRITICAL_SECTION_START/END.
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.
5281 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
5282 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
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):
5289 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
5290 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
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).
5304 2001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
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
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.
5317 2001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
5319 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
5322 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
5323 (MISSING_BZERO_DECL): Remove the declaration.
5325 Thanks to NIIBE Yutaka.
5327 2001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
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.)
5333 2001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
5335 * numbers.[ch] (scm_num2long, scm_num2long_long,
5336 scm_num2ulong_long, scm_num2ulong): Argument position is an
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.
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.
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.
5356 2001-04-09 Neil Jerram <neil@ossau.uklinux.net>
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".
5363 2001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5365 * hooks.c (scm_make_hook, scm_make_hook_with_name),
5366 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
5369 2001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5371 The following changes make the documentation more consistent.
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
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.
5391 * weaks.c (scm_weak_vector): Corrected docstring.
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.
5416 * numbers.c (scm_ash): Corrected Texinfo markup.
5418 * strop.c (scm_string_index, scm_string_rindex),
5419 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
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'
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.
5464 * error.c (scm_strerror): Made docstring more precise.
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.
5475 2001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
5477 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
5478 mode, as suggested by Michael Livshin.
5480 2001-03-31 Michael Livshin <mlivshin@bigfoot.com>
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.
5487 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
5495 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
5497 (scm_assert_cell_valid): Use a local static variable to avoid
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.
5506 (scm_cellp): Check if the cell pointer actually points into a
5509 (scm_init_gc): Initalize scm_tc16_allocated.
5511 * gc.h (GCH): Renamed to SCM_GC_H.
5513 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
5514 might be unnecessary, but I feel better this way :-)
5516 (SCM_GC_CELL_TYPE): New macro.
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
5522 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
5524 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
5525 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
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.
5531 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5533 * async.c (scm_asyncs_pending): Don't use != to compare SCM
5536 * async.c (scm_system_async), variable.c (scm_make_variable,
5537 scm_make_undefined_variable): Use scm_cons to create a pair.
5539 * debug.c (scm_reverse_lookup): Perform proper type checking.
5540 Remove suspicious use of SCM_SLOPPY_CONSP.
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.
5546 * eval.c (iqq): Use proper type check.
5548 (scm_m_expand_body): Remove redundant type checks.
5550 (promise_print): Don't access promise cells as pairs.
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
5558 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
5559 (scm_iprin1): Use new macro predicate and accessors.
5561 * eval.h (scm_tc16_macro): Removed declaration. It is declared
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.
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.
5575 * gc.c (MARK): Use proper macros to access procedure-with-setter
5576 cell elements and closure cell elements.
5578 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
5579 access free cells as pairs.
5581 (scm_unprotect_object): scm_hashq_get_handle returns #f if
5582 no hashtab entry is found.
5584 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
5585 SCM_CLR_PORT_OPEN_FLAG.
5587 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
5588 use SCM_SET_C[AD]R for uninitialized cells.
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.
5594 (scm_hash_fn_ref): Use proper type check.
5596 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
5597 Removed references to non-existing functions from documentation.
5599 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
5600 access keyword cell elements.
5602 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
5605 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
5607 * print.c (scm_iprlist): Added comment. Improved loop
5610 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
5613 * smob.c (scm_markcdr): Don't access smob cells as pairs.
5615 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
5617 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
5620 * variable.c (variable_print, variable_equalp, scm_variable_ref,
5621 scm_variable_set_x): Use proper macros to access variable cell
5624 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
5626 * variable.h (SCM_VARVCELL): Don't access variable cells as
5629 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
5630 added FIXME comment, removed register specifier.
5632 2001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
5634 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
5635 * init.c (scm_init_guile_1): Don't init goopscore module.
5637 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
5639 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
5641 2001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
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.
5649 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
5651 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
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.
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):
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.
5666 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
5667 errors with last change.
5669 2001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
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.
5675 2001-03-23 Neil Jerram <neil@ossau.uklinux.net>
5677 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
5679 * strop.c (scm_string_index): Fix docstring line break
5682 * list.c (scm_cons_star): Fix docstring typo.
5684 2001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
5693 * strings.[ch] (scm_allocate_string): New function.
5695 * strings.[ch] (scm_makstr): Deprecated.
5697 2001-03-18 Gary Houston <ghouston@arglist.com>
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.
5704 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
5705 normally it would be found in netdb.h.
5707 2001-03-17 Gary Houston <ghouston@arglist.com>
5709 * sort.c (scm_sort): move sortvec variable to avoid a compiler
5710 warning when HAVE_ARRAYS is not defined. move len too.
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.
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
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.
5727 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
5733 (SCM_WNA): Deprecated.
5735 * error.[ch] (scm_wta): Deprecated.
5737 * numbers.c (s_i_log): Minor comment fix.
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.
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)
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.
5752 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
5753 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
5755 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5757 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
5758 instead of scm_wrong_num_args.
5760 * coop-threads.c: Don't include libguile/strings.h. (Was only
5761 needed for former implementation of SCM_WRONG_NUM_ARGS.)
5763 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
5764 wrong-num-args errors.
5766 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5768 * error.[ch] (scm_error_num_args_subr): New function.
5770 2001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
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.
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
5792 2001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
5794 * snarf.h (SCM_CONST_LONG): Deprecated.
5795 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
5797 2001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
5799 * numbers.c (scm_num2ulong): Check that a bignum is positive
5800 before looking at the magnitude. Correctly check for overflow
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.
5807 2001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5809 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
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.
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.
5820 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5822 * macros.h (SCM_ASSYNT): Removed unused object argument from
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
5836 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
5842 2001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5844 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
5845 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
5847 (gh_scm2newstr, gh_symbol2newstr): Change call to
5848 scm_must_malloc() to malloc(), because user-free()able memory is
5851 * gc.c: Added declaration of `scm_debug_check_freelist'.
5853 2001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5855 * ports.c (scm_port_mode): Changed `mode' array size to 4.
5857 2001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
5859 * strports.c (scm_object_to_string): New procedure.
5860 (scm_strprint_obj): Deprecated.
5861 * strports.h: Reflect the changes.
5863 2001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
5865 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
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.
5872 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
5875 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
5876 instead of calling scm_wta.
5878 2001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5880 * load.c (scm_primitive_load, scm_primitive_load_path),
5881 (scm_sys_search_load_path): Corrected docstrings (file ->
5884 * eval.c (scm_force): Added texinfo markup to docstring.
5885 (scm_promise_p): Renamed parameter to `obj' to match docstring.
5887 * debug-malloc.c: Reinserted #include <stdio.h>.
5889 2001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
5891 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
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.
5897 2001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
5899 * _scm.h: Removed #include <errno.h>.
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).
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.
5910 2001-03-10 Gary Houston <ghouston@arglist.com>
5912 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
5913 not already defined.
5915 2001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
5917 * coop.c: Inserted #include <stdio.h>.
5919 * iselect.c: Reinserted #include <stdio.h>.
5921 2001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
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
5927 2001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
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>.
5942 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
5944 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5946 * posix.c (scm_gethostname): Set initial name length to 256 for
5949 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
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.
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.
5963 2001-03-08 Neil Jerram <neil@ossau.uklinux.net>
5965 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
5966 not optional (ii) "recommend" spelling correction.
5968 2001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
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.
5976 * hash.c (scm_string_hash): Don't downcase characters.
5978 2001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
5980 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
5981 size from 277 --> 1009.
5983 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
5986 * coop-threads.c: Fixed change of 2001-03-06.
5988 * validate.h: Code formatting.
5990 2001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
5992 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
5993 (*.doc): Add dependency on guile-snarf.awk.in.
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.)
5999 2001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
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
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.
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.
6014 2001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
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.
6020 2001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6022 * print.c (scm_print_options): Fixed texinfo in docstring.
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.
6028 2001-03-04 Gary Houston <ghouston@arglist.com>
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).
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,
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.
6055 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
6070 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
6072 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6074 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
6075 (scm_sys_tag_body): Added.
6077 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
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
6090 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6092 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
6094 2001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
6096 * eval.c (scm_s_duplicate_bindings): New error message.
6097 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
6099 2001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
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
6115 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
6116 reporting for empty combinations.
6118 2001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
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.
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.
6134 2001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
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.
6146 * strports.c (scm_eval_string): Cleaned up the docstring.
6148 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
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.
6168 2001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
6170 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
6171 (Obviously nobody compiles with SCM_RECKLESS defined...)
6173 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
6175 2001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6177 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
6179 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
6181 2001-02-24 Neil Jerram <neil@ossau.uklinux.net>
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.
6187 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
6190 2001-02-23 Neil Jerram <neil@ossau.uklinux.net>
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.
6197 2001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
6199 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
6201 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
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.
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.
6213 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
6214 SCM_DIGSPERLONG instead of DIGSPERLONG.
6216 2001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
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.
6224 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
6225 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
6227 2001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
6229 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
6232 2001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
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.
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.
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.
6275 2001-02-16 Neil Jerram <neil@ossau.uklinux.net>
6277 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
6278 by doubling them to `@@'.
6280 2001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
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.
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),
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.
6337 2001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
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)
6344 2001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
6346 * symbols.c (scm_mem2symbol): Put a empty statement after the
6347 next_symbol label. This is mandated by ANSI, appearantly.
6349 2001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
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.
6356 2001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
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.
6362 2001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
6364 * list.c (scm_list_copy): Validate the first argument.
6366 2001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
6368 Fix evaluator so that top-level expressions are correctly
6369 evaluated with respect to the module system.
6371 * modules.h. modules.c (scm_current_module_lookup_closure): New
6374 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
6376 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
6377 names to better reflect their meaning.
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.
6386 2001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
6388 * macros.c (scm_macro_name, scm_macro_transformer): Use
6389 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
6392 2001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
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.
6398 2001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
6400 * dump.c: Use double cells for update schedule.
6402 2001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
6404 * ports.c (scm_unread_char): Take an optional argument.
6406 2001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6408 * modules.h (scm_selected_module, scm_current_module): Renamed
6409 scm_selected_module to scm_current_module to synchronize Scheme
6411 (scm_select_module, scm_set_current_module): Likewise. Changed
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.
6420 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
6422 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
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.
6428 (scm_makstr): Reordered string initialization to make interrupt
6429 deferring unnecessary.
6431 * vectors.c (scm_make_vector): Fixed range checking.
6433 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
6435 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
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.
6442 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
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.
6451 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
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.
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):
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.
6468 2001-02-03 Michael Livshin <mlivshin@bigfoot.com>
6470 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
6471 the deprecated SCM_DOUBLE_CELLP.
6473 * tags.h (SCM_DOUBLE_CELLP): deprecated.
6475 2001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
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,
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.
6488 * keywords.c: #include "libguile/dump.h".
6489 (keyword_dealloc, keyword_alloc): New functions.
6490 (scm_init_keywords): Set smob_dump and smob_undump.
6492 2001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
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.
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.
6516 2001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6518 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
6520 2001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6522 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
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
6536 2001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6538 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
6539 really get that arg.
6541 2001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
6543 * goops.c (s_scm_get_keyword): Bug fix.
6545 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
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.
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.
6560 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
6562 * continuations.c, dynl.c, keywords.c, load.c: Include
6563 strings.h. Thanks to Bill Schottstaedt for the bug report.
6565 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
6572 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6574 * fports.[ch] (scm_file_port_p): New primitive.
6576 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
6581 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
6582 vports.c (scm_tc16_sfport): Made variables (were macros defined in
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.
6588 fports.c (scm_init_fports), strports.c (scm_init_strports),
6589 vports.c (scm_init_vports): Create the corresponding port types.
6591 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
6592 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
6594 * init.c (scm_init_guile_1): Make sure strports are initialized
6597 * ports.[ch] (scm_make_port_type): Changed the return type to
6600 * ports.c (scm_ports_prehistory): Don't create any port types
6603 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
6604 against scm_tc16_fport directly.
6606 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
6608 * srcprop.c (scm_set_source_property_x): Fix to handle
6609 (set-source-property! <obj> 'copy <datum>) correctly.
6611 2001-01-24 Gary Houston <ghouston@arglist.com>
6613 * filesys.c (scm_link): docstring fix.
6614 * fports.h (scm_setfileno): obsolete declaration removed.
6615 * posix.c: bogus popen declaration removed.
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.
6622 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6624 This patch was sent by Martin Grabmueller and makes sure that
6625 parameter errors are reported correctly by the lexicographic
6626 ordering predicates.
6628 * strorder.c (string_less_p, string_ci_less_p): New functions.
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
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.
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.
6642 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6644 This patch modifies scm_display_error to perform parameter
6645 checking. Thanks to Neil Jerram for the bug report.
6647 * backtrace.[ch] (scm_i_display_error): New function.
6649 * backtrace.c (scm_display_error): Added parameter check and
6650 extracted the core functionality into function
6651 scm_i_display_error.
6653 * throw.c (handler_message): Call scm_i_display_error to display
6656 2001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6658 * eval.c (SCM_APPLY): Added # args check for application of
6659 procedures with arity 3. (Thanks to Anders Holst.)
6661 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
6663 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
6665 (SCM_OPDIRP): Deprecated.
6667 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
6670 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
6671 Instead, give an explicit error message in case the directory is
6674 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
6675 instead of SCM_OPENP and SCM_CLOSEDP.
6677 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
6679 2001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
6685 2001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
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.
6691 2001-01-18 Gary Houston <ghouston@arglist.com>
6693 * ioext.c: further simplify scm_read_string_x_partial by defining
6696 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6698 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
6700 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
6702 * __scm.h: Added comment about architecture and compiler
6703 properties that are required by guile.
6705 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
6706 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
6708 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
6710 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
6712 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
6713 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
6715 2001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
6717 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
6718 to the names in limits.h.
6720 * numbers.c (abs_most_negative_fixnum): Added.
6722 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
6723 fixnum-min) special case.
6725 (scm_big_and): Fix for negative first parameter.
6727 (scm_bit_extract): Fix for fixnum paramters.
6728 Thanks to Rob Browning for the bug report.
6730 (scm_init_numbers): Initialize abs_most_negative_fixnum.
6732 2001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
6734 * symbols.c (scm_symbol_bound_p): Fixed comment.
6735 Thanks to Chris Cramer.
6737 2001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
6739 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
6740 Thanks to Bill Schottstaedt.
6742 2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
6744 from Matthias Köppe:
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.
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.
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.
6760 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
6762 2001-01-08 Gary Houston <ghouston@arglist.com>
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
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
6772 2001-01-06 Gary Houston <ghouston@arglist.com>
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.
6780 2001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
6782 * validate.h (SCM_VALIDATE_NUMBER): New.
6784 2001-01-03 Michael Livshin <mlivshin@bigfoot.com>
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
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.
6802 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
6803 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
6805 2001-01-01 Gary Houston <ghouston@arglist.com>
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.
6812 The ChangeLog continues in the file: "ChangeLog-2000"