* Makefile.am (scmconfig.h): new target -- generate file from
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
ea5c9285
MD
12003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2
b4a1358c
MD
3 This fixes a serious GC bug, introduced during the latest
4 reorganization of the GC, which disabled freeing of structs and
5 GOOPS objects:
6
7 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
8 SCM_EOL.
53af8255
MD
9 (scm_struct_prehistory): Move scm_free_structs to
10 scm_before_mark_c_hook.
ea5c9285 11
b4a1358c
MD
12 * gc-card.c (sweep_card): Check that we haven't swept structs on
13 this card before. That can happen if scm_i_sweep_all_segments has
14 been called from some other place than scm_igc.
15
c35738c1
MD
162003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
17
231a4ea8
MD
18 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
19 (since hash tables now adapt their size).
20
21 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
22 (current number of prehistory bindings; hashtable code will select
23 a prime which is greater than this value).
24
25 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
26 (current number of initial symbols).
27
28 * properties.c (scm_init_properties): Don't specify size of
29 scm_properties_whash.
30
31 * objprop.c (scm_init_objprop): Don't specify size of
32 scm_object_whash.
33
34 * keywords.c (scm_init_keywords): Don't specify a hash table size.
35
c35738c1
MD
36 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
37
38 The following changes introduce the use of resizable hash tables
39 throughout Guile. It also renames the old *-hash-table* functions
40 to *-alist-vector* and places them, together with the rest of the
41 weak vector support, in the module (ice-9 weak-vector). We should
42 probably introduce a new, better, API for weak references, for
43 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
44 look like and are used like ordinary pairs.)
45
46 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
47 leaf_environment_fold, obarray_remove_all): Use hashtable
48 accessors.
49
50 * gc.c (scm_init_storage): Moved hook initialization to
51 scm_storage_prehistory.
52 (scm_storage_prehistory): New function.
53 (scm_igc): Added commentary about placement of
54 scm_after_sweep_c_hook.
55
56 * gc-mark.c (scm_mark_all): Use hashtable accessors.
57 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
58 SCM_WVECT_WEAK_VALUE_P.
59
60 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
61 functions.
62 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
63 Removed.
64 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
65 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
66
67 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
68 calls to scm_storage_prehistory and scm_hashtab_prehistory.
69
70 * modules.c (module-reverse-lookup): Use hashtable accessors.
71
72 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
73
74 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
75 scm_make_weak_value_alist_vector,
76 scm_make_doubly_weak_alist_vector): New functions.
77
78 * weaks.c (scm_init_weaks_builtins): New function.
79
80 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
81 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
82 SCM_WVECT_NOSCAN_P): New macros.
83
84 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
85 and SCM_WVECT_WEAK_VALUE_P.
86
87 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
88 allocate_weak_vector and exported.
89
0a4c1355
MD
902003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
91
92 * hashtab.c: Undid thread safety. (We decided that it's better to
93 let the user explicitly protect the tables (or not) according what
94 is suitable for the application.)
95
87ca11ff
MD
962003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
97
98 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
99 thread safe and handle resizing tables.
100 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
101 SCM_DEFER/ALLOW_INTS.
102
f59a096e
MD
1032003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
104
105 * hashtab.c (scm_vector_to_hash_table,
106 scm_c_make_resizing_hash_table, scm_make_hash_table): New
107 functions.
108 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
109 safe and handle resizing tables.
110
111 * weaks.c (scm_make_weak_key_hash_table,
112 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
113 Size argument made optional. Return resizable table if not
114 specified.
115
4b612c5b
MD
1162003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
117
118 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
119 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
120
b3d7f6df
MD
1212003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
122
123 * debug.c (scm_procedure_source): Handle all objects for which
124 procedure? is #t. (Thanks to Bill Schottstaedt.)
125
756414cf
MD
1262003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
127
361d631f
MD
128 * futures.c (mark_futures): Don't need to mark data of recycled
129 futures.
130 (scan_futures, cleanup_undead): Be smarter about marking
131 futures---avoid unnecessary passes through future lists.
132
756414cf
MD
133 * futures.h, futures.c: New files; Introduced recycling of
134 futures. For fine-grained threading this lifts performance to
135 another level. We can now use parallelization in inner loops of
136 Guile programs without impossible overhead.
137
138 * threads.h, threads.c: Moved futures to their own file.
139
140 * Makefile.am (libguile_la_SOURCES): Added futures.c.
141 (DOT_X_FILES): Added futures.x.
142 (DOT_DOC_FILES): Added futures.doc.
143 (modinclude_HEADERS): Added futures.h.
144
145 * threads.c, threads.h (scm_i_create_thread): Renamed from
146 create_thread and made global.
147
148 * futures.c (scm_make_future): New procedure.
149
150 * eval.c: #include "libguile/futures.h".
151
152 * init.c: #include "futures.h"
153 (scm_init_guile_1): Call scm_init_futures.
154
155 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
156
157 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
158
159 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
160 functions.
161
162 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
163
b4debead
MD
1642003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
165
166 * threads.c (create_thread): Don't unwind dynwind chain of parent
167 thread before creation. Just start the new thread with an empty
168 dynwind chain.
169
93f26b7b
MD
1702003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
171
172 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
173
38d8927c
MD
1742003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
175
41c96c32
MD
176 * threads.c (scm_timed_wait_condition_variable): Support timed
177 waiting also for simple condition variables.
178
38d8927c
MD
179 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
180 of calling the procedure change-object-class.
181
9cf5d9b7
MD
1822003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
183
184 * ramap.c (scm_ramapc): Typo in error message.
185
bbf8d523
MD
1862003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
187
b46fae00
MD
188 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
189 slots with instance allocation.
190
bbf8d523
MD
191 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
192 class.
193 (scm_compute_applicable_methods): Use scm_generic_function_methods.
194
195 * goops.c (scm_generic_function_methods): Support extended
196 generic functions.
197
ebf9b47c
MD
1982002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
199
200 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 201 Thanks to Neil for pointing this out!
ebf9b47c 202
14a9ba3f
NJ
2032002-12-29 Neil Jerram <neil@ossau.uklinux.net>
204
205 * lang.h: Remove declarations matching definitions removed from
206 lang.c (just below).
207
c6a040a8
NJ
2082002-12-28 Neil Jerram <neil@ossau.uklinux.net>
209
6054d805
NJ
210 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
211 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
212 and already commented out.
213
c6a040a8
NJ
214 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
215 scm_lreadparen): Support reading vectors with Elisp syntax if
216 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
217 is not currently defined, and there isn't even a configure switch
218 to enable it yet.)
219
3742c12f
MV
2202002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
221
222 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
223 builds work.
224 (EXTRA_DIST): Added version.h.in.
225
fb50ef08
MD
2262002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
227
228 This change makes it possible for one thread to do lazy sweeping
229 while other threads are running. Now only the mark phase need to
230 have all threads asleep. We should look further into this issue.
231 Presently, I've put the locking of scm_i_sweep_mutex at
232 "conservative" places due to my current lack of knowledge about
233 the garbage collector. Please feel free to restrict these regions
234 further to allow for maximal parallelism!
235
236 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
237
238 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
239 scm_gc_register_collectable_memory): Substitute locking of
240 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
241 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
242 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
243 the single-thread section (which now only contains the mark
244 phase).
245 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
246 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
247
248 * threads.c (gc_section_mutex): Removed.
249
9ed24633
MD
2502002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
251
0d48aca5
MD
252 * threads.c (create_thread): Clear parent field in root state in
253 order not to unnecessarily remember dead threads.
254
9ed24633
MD
255 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
256 (scm_trampoline_1, scm_trampoline_2): Use them.
257
29717c89
MD
2582002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
259
260 Partial introduction of real plugin interface.
261
262 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
263 (EXTRA_DIST): Added threads-plugin.c.
264
265 * threads-plugin.h, threads-plugin.c: New files.
266
267 * threads.h: #include "libguile/threads-plugin.h".
268
269 * threads.c: #include "libguile/threads-plugin.c".
270
271 * pthread-threads.c: Temporarily remove debugging functions.
272
273 * threads.c, threads.h (scm_yield): Added back.
274
e29e0b09
MD
2752002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
276
277 * threads.c (really_launch): Detach before unlocking
278 thread_admin_mutex in order not to risk being joined.
279 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
280 thread_admin_mutex locked during GC.
281
282 * pthread-threads.c, pthread-threads.h: Improvements to debugging
283 functions.
284
0b6843b1 2852002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 286
6da2dfc4
MD
287 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
288 support for debugging mutex operations.
289
1b92fb6b
MD
290 * threads.c (scm_thread): Removed filed joining_threads.
291 (thread_print): Print thread number as well as address of thread
292 structure.
0b6843b1
MD
293 (scm_join_thread): Bugfix.
294 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
295 scm_timed_wait_condition_variable, scm_signal_condition_variable,
296 scm_broadcast_condition_variable): Use the low-level API.
297 (scm_all_threads): Return copy of thread list (to prevent
298 unintended destruction).
299 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 300
93cd4dcd
MD
301 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
302 pthread "native" recursive mutex support.
303
2ff4f181
MD
3042002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
305
28d52ebb
MD
306 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
307 Simply lock a thread C API recursive mutex.
308 (SCM_NONREC_CRITICAL_SECTION_START,
309 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
310 SCM_REC_CRITICAL_SECTION_END): Removed.
311
312 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
313 direct calls to scm_rec_mutex_lock / unlock around the three calls
314 to scm_m_expand_body.
315
316 * eval.c, eval.h (promise_free): New function.
317 (scm_force): Rewritten; Now thread-safe; Removed
318 SCM_DEFER/ALLOW_INTS.
319
320 * pthread-threads.h: Added partially implemented plugin interface
321 for recursive mutexes. These are, for now, only intended to be
322 used internally within the Guile implementation.
323
324 * pthread-threads.c: New file.
325
326 * threads.c: Conditionally #include "pthread-threads.c".
327
328 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
329 thread-safe;
330
331 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
332 SCM_GLOBAL_REC_MUTEX): New macros.
333
334 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
335 macros---use mutexes instead.
336
337 * tags.h (SCM_IM_FUTURE): New tag.
338
339 * eval.c (scm_m_future): New primitive macro.
340 (SCM_CEVAL): Support futures.
341 (unmemocopy): Support unmemoization of futures.
342
343 * print.c (scm_isymnames): Name of future isym.
344
2ff4f181
MD
345 * version.c: Unmade some changes to my private copy that got
346 committed by mistake.
347
392d2833
MD
3482002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
349
e200ddee
MD
350 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
351 2002-12-10.
352
392d2833
MD
353 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
354
355 * gc.c (scm_gc_sweep): Call it here instead, which is a more
356 logical place.
357
358 * threads.c (create_thread): Remember root object until the handle
359 of the new thread is on all_threads list.
360
361 * root.c (scm_make_root): Moved copying of fluids until after
362 creation of root handle so that the fluids are GC protected. Also
363 removed the critical section.
364
c4c52ebe
MD
3652002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
366
960c408c
MD
367 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
368
3cdde9d6 369 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 370 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
371 (scm_realloc): Serialize call to realloc
372 (scm_calloc): Same for calloc.
373 Thanks to Wolfgang Jaehrling!
374 (Now we have to make sure all calls to malloc/realloc are made
375 through scm_malloc.)
376
960c408c
MD
377 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
378
c4c52ebe
MD
379 * threads.c (really_launch): Release heap (to prevent deadlock).
380 (create_thread): Release heap before locking thread admin mutex.
381
b0dc3d71
MD
3822002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
383
384 * threads.c (scm_i_thread_invalidate_freelists): New
385 function.
386
387 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
388
389 * modules.c (scm_export): Inserted a return statement.
390
06e80f59
HWN
3912002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
392
393 * modules.c (scm_export): new function
394
395 * gc-card.c: add a note about malloc()/free() overhead.
396
a12611c3
MD
3972002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
398
399 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
400 in srcdir.
401
c7fabadf
MD
4022002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
403
404 These changes remove scm_ints_disabled (which hasn't has any
405 effect in Guile for quite some time).
406
407 * async.c, error.h (scm_ints_disabled): Removed.
408
409 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
410 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
411 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
412 (old_ints): Removed.
413
414 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
415 critical section.
416 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
417 SCM_ALLOW_INTS.
418
9bc4701c
MD
4192002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
420
52340b65
MD
421 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
422 Removed accidental #if 0 around these functions.
423
9bc4701c
MD
424 These changes are the start of support for preemptive
425 multithreading. Marius and I have agreed that I commit this code
426 into the repository although it isn't thoroughly tested and surely
427 introduces many bugs. The bugs should only be exposed when using
428 threads, though. Signalling and error handling for threads is
429 very likely broken. Work on making the implementation cleaner and
430 more efficient is needed.
431
432 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
433 (SCM_NONREC_CRITICAL_SECTION_START,
434 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
435 SCM_REC_CRITICAL_SECTION_END): New macros.
436 (SCM_CRITICAL_SECTION_START/END): Defined here.
437
438 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
439 the three calls to scm_m_expand_body.
440
441 * gc.h: #include "libguile/pthread-threads.h";
442 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
443
444 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
445 scm_t_key;
446
447 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
448 access.
449
450 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
451
452 * gc-freelist.c, threads.c (really_launch): Use
453 SCM_FREELIST_CREATE.
454
455 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
456
457 * gc.c (scm_i_expensive_validation_check, scm_gc,
458 scm_gc_for_newcell): Put threads to sleep before doing GC-related
459 heap administration so that those pieces of code are executed
460 single-threaded. We might consider rewriting these code sections
461 in terms of a "call_gc_code_singly_threaded" construct instead of
462 calling the pair of scm_i_thread_put_to_sleep () and
463 scm_i_thread_wake_up (). Also, we would want to have as many of
464 these sections eleminated.
465
466 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
467
468 * inline.h: #include "libguile/threads.h"
469
470 * pthread-threads.h: Macros now conform more closely to the
471 pthreads interface. Some of them now take a second argument.
472
473 * threads.c, threads.h: Many changes.
474
4752002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
476
477 * Makefile.am (version.h): Changed $^ --> $< in rule for
478 version.h.
479
b2cbe8d8
RB
4802002-12-08 Rob Browning <rlb@defaultvalue.org>
481
482 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
483 (SCM_MINOR_VERSION): use @--@ substitution now.
484 (SCM_MICRO_VERSION): use @--@ substitution now.
485 (scm_effective_version): new function prototype.
486
487 * version.c (scm_effective_version): new function, also add
488 effective-version.
489
490 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
491 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
492 SCM_LIBRARY_DIR.
493 (version.h): generate this here rather than configure.in. This
494 approach tracks source edits better (i.e. more immediately).
495 Might be worth considering for other .in files too.
496
5441c65c
MV
4972002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
498
499 Reorganized thread package selection. A thread package now only
500 implements a small set of pthread like functions and Guile
501 implements the rest on top of that. Guile's implementation is
502 what the "coop-pthreads" package has been previously. Support for
503 "coop" threads has been removed until I get time to add it again.
504
505 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
506 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
507 null-threads.c, coop-pthreads.c.
508 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
509 pthread-threads.h.
510
511 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
512
513 * threads.h: Do not include "libguile/coop-defs.h". Include
514 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
515 (previously deprecated) C level thread API prototypes. They are
516 now in the thread package specific headers, "null-threads.h" and
517 "pthread-threads.h".
518 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
519 New.
520 (scm_threads_init): Removed.
521 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
522 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
523 SCM_I_THREAD_SWITCH_COUNT): Define here.
524 (scm_single_thread_p): Removed.
525 (scm_call_with_new_thread): Take two args directly instead of list
526 of two args.
527 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
528 SCM_SET_THREAD_LOCAL_DATA): Define here.
529
530 * threads.c: Merged with "coop-pthreads.c".
531
532 * null-threads.h: Implement pthread-like API as a set of macros.
533
534 * pthread-threads.h: New, implement pthread-like API by deferring
535 to pthread itself.
536
537 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
538 has been lost in the reorganization.
539
504d99c5
MD
5402002-12-01 Mikael Djurfeldt <mdj@linnaeus>
541
542 The following change makes it possible to move procedure
543 application dispatch outside inner loops. The motivation was
544 clean implementation of efficient replacements of R5RS primitives
545 in SRFI-1.
546
547 The semantics is clear: scm_trampoline_N returns an optimized
548 version of scm_call_N (or NULL if the procedure isn't applicable
549 on N args).
550
551 Applying the optimization to map and for-each increases efficiency
552 noticeably. For example, (map abs ls) is 8 times faster than
553 before.
554
555 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
556
557 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
558
559 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
560 (map, for-each): Handle also application on two args as a special
561 case; Use trampolines.
562
563 Other changes:
564
565 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
566 (subr2oless): Removed.
567 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
568 vector GC protected.
569
570 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
571 scm_out_of_range.
572
63dd3413
DH
5732002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
574
575 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
576
4ba5f279
MD
5772002-11-17 Mikael Djurfeldt <mdj@linnaeus>
578
579 * debug.c (scm_make_iloc): Added missing "return".
580
56ae231f
MV
5812002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
582
583 * strports.c (scm_eval_string_in_module): Validate second arg to
584 be a module. Thanks to Arno Peters!
585
80b28865
DH
5862002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
587
588 * .cvsignore: remove goops.c
589
c88b1456
DH
5902002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
591
592 * modules.c (scm_env_top_level, scm_lookup_closure_module,
593 module_variable, scm_module_lookup_closure,
594 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
595 scm_system_module_env_p): Don't compare SCM values with C
596 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
597 over SCM_NFALSEP.
598
a8a19efc
DH
5992002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
600
601 * eval.h (SCM_MAKE_ILOC): New macro.
602
603 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
604 the iloc bitpattern here.
605
76734914
MD
6062002-11-14 Mikael Djurfeldt <mdj@linnaeus>
607
608 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
609 part of the API, otherwise it's difficult to write Guile
610 extensions using non-blocking I/O => moved #include
611 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
612
613 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
614 s_unlock_mutex.
615
8b5b4a75
MV
6162002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
617
618 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
619 are defined in configure.in.
620
621 * threads.c: Removed SCM_API from function definitions. SCM_API
622 is only for declarations.
623
e5a83084
MD
6242002-11-07 Mikael Djurfeldt <mdj@linnaeus>
625
9be8bb45
MD
626 * coop-pthreads.h: Added support for thread specific data to the
627 generic C API for the coop-pthreads case.
628
e5a83084
MD
629 * threads.c, threads.h (scm_cond_init): Undo unintentional API
630 change.
6c214b62 631 (scm_cond_broadcast): Added missing function.
e5a83084 632
7edf178e
MV
6332002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
634
635 * coop.c (coop_next_runnable_thread): Removed, wich should have
636 happened when GUILE_ISELECT was hard-wired.
637
7f5b1b77
MV
6382002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
639
7caa1b07
MV
640 * Makefile.am (libguile_la_SOURCES): Added threads.c
641 (DOT_DOC_FILES): Added threads.doc.
642 (DOT_X_FILES): Added threads.x.
643 (EXTRA_libguile_la_SOURCES): Removed threads.c.
644 (noinst_HEADERS): Added coop-pthreads.c.
645 (modinclude_HEADERS): Added coop-pthreads.h.
646
647 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
648 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
649
bb11cbf4
MV
650 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
651 Thanks to Bill Schottstaedt!
652
1d4cbbed
MV
653 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
654
7f5b1b77
MV
655 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
656 SCM_COPT_THREADS is defined.
657 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
658 is defined.
659
660 * coop-pthreads.c: Some harmless renamings of internal stuff.
661 (create_thread): New, generalized version of
662 scm_call_with_new_thread.
663 (scm_call_with_new_thread): Use it.
664 (scm_spawn_thread): New, use create_thread.
665
d52f53b1
MV
6662002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
667
668 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
669 start testing it now.
670
671 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
672 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
673 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
674 is defined.
675
30f920c3
MV
6762002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
677
678 * scmsigs.c (signal_cell_handlers, install_handler_data,
679 scm_delq_spine_x, really_install_handler, install_handler): New
680 scheme for triggering signal handlers, to simplify take_signal.
681 (take_signal): Simplified, to avoid race conditions.
682 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
683 hasn't exited yet.
684
685 * async.c (scm_async_click): Reset pending_asyncs, handle
686 signal_asyncs. Don't set cdr of a non-signal async to #f.
687 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
688 always. Set pending_asyncs.
689 (scm_system_async_mark_for_thread): Check that thread has not
690 exited.
691 (scm_unmask_signals, decrease_block): Call scm_async_click after
692 block_asyncs becomes zero.
693
694 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
695 active_asyncs.
696
697 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
698 fields.
699 * root.c (root_mark): Mark them.
700 (make_root): Initialize them.
701
702 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
703 USE_COOP_THREADS.
704 (scm_internal_select): Define one version for USE_COOP_THREADS and
705 one for USE_NULL_THREADS.
706 (scm_init_iselect): Likewise.
707
708 * inline.h (scm_cell, scm_double_cell): Also allow
709 USE_COPT_THREADS to not protect the slot initializers.
710
711 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
712 because threads need to be initialized before the stack, but
713 gsubrs such as scm_timed_condition_variable_wait can only be
714 created later.
715
716 * threads.h: Include "coop-pthreads.h" when requested.
717 (scm_threads_make_mutex, scm_threads_lock_mutex,
718 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
719 not implemented anyway.
720 (scm_init_thread_procs, scm_try_mutex,
721 scm_timed_condition_variable_wait,
722 scm_broadcast_condition_variable, scm_c_thread_exited_p,
723 scm_thread_exited_p): New prototypes.
724 (struct timespec): Define if not already defined.
725 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
726 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
727 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
728 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
729 deprecated.
730
731 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
732 requested.
733 (scm_thread_exited_p): New.
734 (scm_try_mutex, scm_broadcast_condition_variable): Newly
735 registered procedures.
736 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
737 Use the latter as the procedure for "wait-condition-variable",
738 thus offering a optional timeout parameter to Scheme.
739 (scm_wait_condition_variable): Implement in terms of
740 scm_timed_wait_condition_variable.
741 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
742 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
743 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
744 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
745 scm_make_mutex, etc, and deprecate.
746 (scm_init_threads): Do not create smobs, leave this to
747 scm_threads_init. Do not include "threads.x" file.
748 (scm_init_thread_procs): New, include "threads.x" here.
749
750 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
751 scm_null_mutex_lock, scm_null_mutex_unlock,
752 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
753 scm_null_condvar_wait, scm_null_condvar_signal,
754 scm_null_condvar_destroy): Removed.
755 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
756 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
757 scm_cond_destory): Do not define, they are now deprecated and
758 handled by threads.{h,c}.
759
760 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
761 (scm_threads_init): Create smobs here, using the appropriate
762 sizes.
763 (block): Removed, now unused.
764 (scm_c_thread_exited_p): New.
765 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
766 scm_null_mutex_destroy, scm_null_condvar_init,
767 scm_null_condvar_wait, scm_null_condvar_signal,
768 scm_null_condvar_destroy): Removed and updated users to do their
769 task directly.
770 (scm_try_mutex, timeval_subtract,
771 scm_timed_wait_condition_variable,
772 scm_broadcast_condition_variable): New.
773 (scm_wait_condition_variable): Removed.
774
775 * coop-defs.h (coop_m): Added 'level' field.
776 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
777 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
778 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
779 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
780 define.
781 (coop_condition_variable_broadcast): New.
782
783 * coop-threads.c (scm_threads_init): Create smobs here, using the
784 appropriate sizes.
785 (scm_c_thread_exited_p, scm_try_mutex,
786 scm_timed_wait_condition_variable,
787 scm_broadcast_condition_variable): New.
788 (scm_wait_condition_variable): Removed.
789
790 * coop.c (coop_new_mutex_init): Initialize level.
791 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
792 level.
793 (coop_condition_variable_signal): Renamed to
794 coop_condition_variable_broadcast and reimplemented in terms of
795 that. Thus...
796 (coop_condition_variable_broadcast): New.
797
798 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
799
800 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
801
087ed40d
MV
8022002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
803
65a23095
MV
804 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
805 of system headers.
806
087ed40d
MV
807 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
808 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 809 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 810
5ec1d2c8
DH
8112002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
812
813 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
814 scm_definedp to scm_defined_p and deprecated scm_definedp.
815
100ae50d
DH
8162002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
817
818 * async.h, async.c (scm_system_async): Fixed deprecation to work
819 correctly when deprecated features are excluded.
820
2794cb50
MV
8212002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
822
823 * async.c (scm_system_async_mark_for_thread): Validate thread
824 argument.
825
826 * coop-threads.c (scm_i_thread_root): Do not validate argument.
827
828 * feature.c (scm_init_feature): Don't add 'threads' for
829 USE_NULL_THREADS.
830
831 * inline.h (scm_cell, scm_double_cell): Also allow
832 USE_NULL_THREADS to not protect the slot initializers.
833
834 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
835 "USE_THREAD".
836
837 * Makefile.am (noinst_HEADERS): Added null-threads.c.
838 (modinclude_HEADERS): Added null-threads.h.
839
840 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
841 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
842 (scm_init_threads): Use generic type names scm_t_mutex and
843 scm_t_cond instead of coop_m and coop_c.
844
845 * null-threads.c, null-threads.h: New files.
846
ff810d7a
MV
8472002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
848
849 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
850 This is to support makes that know about "$<" only in pattern
851 rules, like Sun's make.
852
a90bdb73
MV
8532002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
854
855 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
856 substitution. Thanks to David Allouche!
857
e71a8bf2
DH
8582002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
859
860 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
861 !SCM_ENABLE_DEPRECATED.
862
41f77ff5
MV
8632002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
864
504d99c5 865 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
866 scm_i_thread_root when USE_THREADS is defined. Use scm_root
867 otherwise.
868
869 * scmsigs.c (take_signal): Only call scm_i_thread_root when
870 USE_THREADS is defined. Use scm_root otherwise.
871 (scm_sigaction_for_thread): Ignore THREAD argument when
872 USE_THREADS is not defined. Also, move THREAD argument defaulting
873 out of HAVE_SIGACTION section, which was a bug.
874
6d16b125
MV
8752002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
876
877 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
878 signal_handlers, not the closure that is used as the async.
879 The closure is stored in signal_handler_cells, as previously.
880
acfa1f52
MV
8812002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
882
883 * root.h (scm_root_state): Added 'block_async' slot.
884 (scm_active_asyncs): Removed abbrev.
885 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
886
887 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
888 abbrev.
889
890 * async.h (scm_call_with_blocked_asyncs,
891 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
892 scm_c_call_with_unblocked_asyncs): New prototypes.
893 (scm_mask_signals, scm_unmask_signals): Deprecated.
894 (scm_mask_ints): Turned into a macro.
895 * async.c (scm_mask_ints): Removed.
896 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
897 this should not be necessary.
898 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
899 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
900 deprecation warning and check for errornous use. Set block_asyncs
901 instead of scm_mask_ints.
902 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
903 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
904 scm_c_call_with_unblocked_asyncs): New.
905
906 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
907 Asyncs are enabled by default.
908
34010f56
NJ
9092002-10-09 Neil Jerram <neil@ossau.uklinux.net>
910
911 * vports.c (scm_make_soft_port): Allow vector argument to carry a
912 6th element: an input waiting thunk.
913 (sf_input_waiting): New.
914
9310d6f2
MV
9152002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
916
917 * root.c (root_mark): Mark active_asyncs slot.
918
919 * async.c (scm_async_click): Set the cdr of a executed handler
920 cell to SCM_BOOL_F, not SCM_EOL.
921 (scm_i_queue_async_cell): Queue the cell at the end of the list,
922 and only if the handler procedure is not already present.
923 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
924 with SCM_BOOL_F.
925 * scmsigs.c (scm_sigaction_for_thread): Likewise.
926
ac48c719
RB
9272002-10-04 Rob Browning <rlb@defaultvalue.org>
928
1360a142
RB
929 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
930
931 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
932 scm_lt_dlopenext, and scm_lt_dlerror.
933 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
934 and scm_lt_dlerror.
935 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
936 and scm_lt_dlerror.
937 (sysdep_dynl_init): switch to scm_lt_dlinit();
938
939 * Makefile.am (libguile_la_LIBADD): switch to use
940 libguile-ltdl.la.
941
504d99c5 942 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 943
497092c9
MV
9442002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
945
946 * scmsigs.h (scm_sigaction_for_thread): New prototype.
947 * scmsigs.c (got_signal): Removed.
948 (signal_handler_cells, signal_handler_threads): New.
949 (take_signal): Queue the cell of the signal for the specified
950 thread. Reset the signal handler on systems that don't have
951 sigaction.
952 (sys_deliver_signals): Removed.
953 (close_1): New.
954 (scm_sigaction_for_thread): Renamed from scm_sigaction and
955 extended to also set the thread of a signal and allocate a cell
956 for it. Keep the Scheme name "sigaction". Check that signum is
957 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
958 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
959 (scm_init_scmsigs): Allocate signal_handler_cells and
960 signal_handler_threads vectors.
961
962 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
963 that system asnycs and user asyncs are separated. Reimplemented
964 system asyncs to work per-thread.
965
966 * gc.c (scm_init_gc): Do not use scm_system_async.
967
968 * async.h (scm_asyncs_pending, scm_set_tick_rate,
969 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
970 Removed prototypes.
971 (scm_i_queue_async_cell): New.
972
973 * __scm.h (scm_asyncs_pending_p): Removed.
974 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
975 scm_asyncs_pending_p.
976
977 * async.h (scm_system_async_mark_for_thread): New prototype.
978
979 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
980
981 * root.h (scm_root_state): Added new "active_asyncs" slot.
982 * root.c (scm_make_root): Initialize it to SCM_EOL.
983
984 * coop-defs.h (coop_t): Added new "handle" slot.
985 * coop-threads.c (all_threads, scm_current_thread,
986 scm_all_threads, scm_i_thread_root): New.
987 (scm_threads_init): Add main thread to all_threads.
988 (scheme_launch_thread): Remove thread from all_threads when it
989 terminates.
990 (scm_call_with_new_thread): Initialize handle slot of coop_t
991 structure and add new thread to all_threads.
992 (scm_spawn_thread): Likewise.
993
994 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
995 * threads.c (scm_current_thread, scm_all_threads): Register as
996 primitives.
997
998 * dynl.c: Use scm_lt_ prefix for libltdl functions.
999
480fa28d
NJ
10002002-09-29 Neil Jerram <neil@ossau.uklinux.net>
1001
1002 * script.c (scm_compile_shell_switches): Fix bad spelling of
1003 `explicitly' in comment.
1004
10052002-09-28 Neil Jerram <neil@ossau.uklinux.net>
1006
1007 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
1008 Refer to provided? in doc string rather than deprecated feature?.
1009
3553e1d1
GH
10102002-09-24 Gary Houston <ghouston@arglist.com>
1011
1012 * inline.h (scm_double_cell): prevent reordering of statements
1013 with any following code (for GCC 3 strict-aliasing).
1014 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
1015 the earlier version of the reordering prevention.
1016
4ad0814a
HWN
10172002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1018
1019 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
1020
e88e4f2e
HWN
10212002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1022
1023 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
1024 protection.
1025
1e71eafb
HWN
10262002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1027
1028 * inline.h: include stdio.h
1029
1030 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
1031
61ef9c1f
HWN
10322002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1033
dac04e9f
HWN
1034 * gc-segment.c (scm_i_make_initial_segment): check user settings
1035 for sanity.
1036
1037 * gc-malloc.c (scm_gc_init_malloc): check user settings for
1038 sanity.
dac04e9f
HWN
1039
1040 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
1041
ffd72400
HWN
1042 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
1043
1044 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
1045 these won't ever wrap around with high memory usage. Thanks to
1046 Sven Hartrumpf for finding this.
ffd72400 1047
5bd4a949
HWN
1048 * gc-freelist.c: include <stdio.h>
1049
61ef9c1f
HWN
1050 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
1051
ffd0ef3b
MV
10522002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
1053
a27e3d14
MV
1054 * vectors.h (SCM_VECTOR_REF): New.
1055
ffd0ef3b
MV
1056 * snarf.h (SCM_DEFINE_PUBLIC): New.
1057
f8a1712b
MV
10582002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
1059
1060 * socket.c (scm_addr_vector): Added size of address to arguments.
1061 Use it to avoid accessing a non-existent path in a sockaddr_un.
1062 Changed all callers.
1063
7200a36b
HWN
10642002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1065
1383773b
HWN
1066 * gc.h: remove DOUBLECELL card flags.
1067
1068 * gc-malloc.c (scm_calloc): try to use calloc() before calling
1069 scm_realloc().
1070
1071 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
1072 init loop; handle this from scm_init_card_freelist()
1073
1074 * gc-card.c (scm_init_card_freelist): init bit vector here.
1075
7200a36b 1076 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 1077 num2float.i.c (FLOAT2NUM): idem
7200a36b 1078
9981de3a
HWN
10792002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1080
1081 * eval.h: prepend libguile/ to include path
1082
19647556
MV
10832002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
1084
1085 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
1086