*** empty log message ***
[bpt/guile.git] / libguile / ChangeLog
1 2000-07-24 Marius Vollmer <mvo@zagadka.ping.de>
2
3 * stime.c (scm_strftime): Recognize a return value of zero from
4 strftime as buffer overflow and take care to detect a valid zero
5 length result regardless. Thanks to David Barts!
6
7 2000-07-23 Marius Vollmer <mvo@zagadka.ping.de>
8
9 * alist.c (scm_assq_remove_x, scm_assv_remove_x,
10 scm_assoc_remove_x): Remove all cells whose key is eq, eqv, or
11 equal (respectively) to the argument key, not all cells that are
12 eq, eqv, or equal to the first cell with the argument key. Thanks
13 to Neil Jerram!
14
15 2000-07-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
16
17 * gc.h (SCM_FREE_CELL_CDR, SCM_SET_FREE_CELL_CDR), hooks.c
18 (make_hook), modules.c (OBARRAY, USES, BINDER): Pack and unpack
19 SCM values appropriately.
20
21 * modules.c (scm_standard_eval_closure): Don't pass an inum to
22 scm_makcclo, but rather a long value.
23
24 2000-07-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
25
26 read.c (scm_lreadrecparen), srcprop.c (scm_set_source_property_x):
27 SCM_SETCDR and SCM_WHASHSET macros don't deliver a return value.
28 Thanks to Han-Wen Nienhuys for the bug report.
29
30 2000-07-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
31
32 * root.[ch] (scm_call_catching_errors): Deprecated.
33
34 * root.c (scm_init_root): Initialize the root smob type using the
35 standard initialization functions.
36
37 2000-07-17 Marius Vollmer <mvo@zagadka.ping.de>
38
39 * eval.c (unmemocopy): Don't rely on V being a list of at least
40 one element. Thanks to Bill Schottstaedt!
41
42 2000-07-15 Michael Livshin <mlivshin@bigfoot.com>
43
44 * gc.c (scm_done_free): new.
45 expanded comments about scm_done_malloc.
46
47 * gc.h: added prototype for scm_done_free
48
49 2000-07-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
50
51 * gc.h (scm_take_stdin): Removed.
52
53 * gc.h (SCM_VALIDATE_CELL): Delegate cell checks to function
54 scm_assert_cell_valid to allow extensions to the checking
55 functionality without need to recompile everything.
56
57 * gc.[ch] (scm_assert_cell_valid, scm_set_debug_cell_accesses_x):
58 Added as conditionally compiled functions for the case that
59 SCM_DEBUG_CELL_ACCESSES is enabled.
60
61 * gc.c (debug_cells_p): Added to indicate whether compile-time
62 included cell access debugging is run-time enabled.
63
64 * gc.[ch] (scm_gc_running_p): Added to indicate that scm_igc is
65 being executed. Intended to be used instead of scm_gc_heap_lock
66 at most places.
67
68 * error.c (scm_error), gdbint.c (SCM_GC_P): Use scm_gc_running_p
69 instead of scm_gc_heap_lock.
70
71 * gc.c (scm_igc): Set scm_gc_running_p to true while running.
72
73 * gc.c (scm_mark_locations): Don't mark free cells.
74
75 * weaks.c (scm_scan_weak_vectors): Use SCM_FREE_CELL_P instead of
76 SCM_FREEP.
77
78 2000-07-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
79
80 * gc.c (scm_mark_locations): Minimized some variable scopes and
81 simplified the code a bit.
82
83 2000-07-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
84
85 * gc.h (SCM_SET_FREE_CELL_TYPE, SCM_SET_FREE_CELL_CDR,
86 SCM_FREE_CELL_P, SCM_FREE_CELL_CDR): Added since free cells
87 should not be accessed via SCM_C[AD]R. Further, using dedicated
88 macros to access free cells allows all other cell accessing macros
89 to treat acesses to free cells as errors, thus enabling better
90 error checks for cell accesses. SCM_FREE_CELL_P is supposed to
91 replace SCM_FREEP some time.
92
93 * gc.h (SCM_NEWCELL, SCM_NEWCELL2), gc.c (map_free_list,
94 free_list_length, scm_check_freelist, scm_debug_newcell,
95 scm_debug_newcell2, freelist_length, scm_gc_for_newcell,
96 scm_gc_mark, scm_gc_sweep, init_heap_seg): Only use the dedicated
97 cell accessors when accessing free cells.
98
99 2000-07-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
100
101 * gc.h (SCM_CELL_WORD, SCM_CELL_OBJECT): Treat the referenced
102 object as const in order to make the compiler warn about code like
103 SCM_CELL_WORD (x, n) = y. Instead, SCM_SET_CELL_WORD (x, n, y)
104 should be used.
105
106 (SCM_CELL_WORD_LOC, SCM_CARLOC, SCM_CDRLOC): Return the address
107 as an address to a non-const object, since these macros are used
108 to allow direct write access to objects.
109
110 2000-07-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
111
112 * hashtab.c (scm_hash_fn_create_handle_x): Signal an error if the
113 given hash table has no slots.
114
115 2000-07-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
116
117 * gc.c (policy_on_error): Added in order to allow alloc_some_heap
118 to react to malloc failures in a context dependent way.
119
120 (scm_check_freelist): No need to flush streams before abort().
121
122 (scm_gc_for_newcell): Try to allocate new memory in three phases:
123 grow heap if preferred, if still no memory available collect
124 garbage, if still no memory available grow heap.
125
126 (heap_segment_table_size): Added to always reflect the actual
127 size of the heap segment table, because scm_n_heap_segs may differ
128 from the heap segment table size.
129
130 (alloc_some_heap): In case of malloc failure, react according to
131 the new policy_on_error parameter (either return to caller or
132 abort immediately). Further, keep heap_segment_table_size up to
133 date.
134
135 (scm_init_storage): Initialize heap_segment_table_size.
136
137 2000-07-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
138
139 * gh.h: Don't include <stdio.h>. Thanks to Han-Wen Nienhuys for
140 the hint.
141
142 2000-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
143
144 * __scm.h (SCM_OUTOFRANGE, SCM_NALLOC, SCM_HUP_SIGNAL,
145 SCM_INT_SIGNAL, SCM_FPE_SIGNAL, SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL,
146 SCM_ALRM_SIGNAL, SCM_GC_SIGNAL, SCM_TICK_SIGNAL, SCM_SIG_ORD,
147 SCM_ORD_SIG, SCM_NUM_SIGS): Re-introduce these as deprecated
148 symbols.
149
150 * error.c (scm_wta): Re-introduce dispatching for SCM_OUTOFRANGE
151 and SCM_NALLOC, but as a deprecated feature.
152
153 2000-06-30 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
154
155 * debug.c: Added #include fluids.h.
156
157 * numbers.c (scm_gr_p, scm_leq_p, scm_geq_p): Turned into
158 primitive generics. (Thanks to Nicolas Neuss.)
159
160 2000-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
161
162 * gc.c (alloc_some_heap): Use scm_memory_error to indicate a
163 failed attempt to get additional memory from the system.
164
165 (scm_gc_for_newcell): Changed the control structure to make the
166 behaviour explicit for the case that gc is not able to free any
167 cells.
168
169 2000-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
170
171 * __scm.h (SCM_OUTOFRANGE): Removed.
172
173 * error.c (scm_wta): Removed sick dispatch code for range
174 errors. (More sick dispatches still to be removed.)
175
176 * hashtab.c (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x,
177 scm_hash_fn_remove_x): Eliminate redundant test for if unsigned
178 value is non-negative. Use scm_out_of_range to signal range
179 errors.
180
181 * hooks.c (make_hook), unif.c (scm_aind): Use scm_out_of_range to
182 signal range errors.
183
184 * list.c (scm_list_ref, scm_list_set_x, scm_list_cdr_set_x): Fix
185 error reporting (now uses original input parameter to report wrong
186 type argument errors). Use SCM_OUT_OF_RANGE to report range
187 errors and SCM_WRONG_TYPE_ARG to report type errors.
188
189 * strings.c (scm_substring): Make range checks for negative
190 values explicit (former behaviour relied on an implicit
191 conversion from signed to unsigned). Don't use SCM_ASSERT for
192 range checks.
193
194 * unif.c (scm_aind, scm_transpose_array, scm_bit_set_star_x,
195 scm_bit_count_star): Use scm_out_of_range to signal range
196 errors.
197
198 * unif.c (scm_transpose_array, scm_bit_position), vectors.c
199 (scm_vector_ref, scm_vector_set_x, scm_vector_move_left_x,
200 scm_vector_move_right_x): Use SCM_ASSERT_RANGE to check ranges.
201
202 2000-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
203
204 * validate.h (SCM_VALIDATE_INUM_MIN_COPY,
205 SCM_VALIDATE_INUM_MIN_DEF_COPY, SCM_VALIDATE_INUM_RANGE_COPY):
206 Perform all range checks based on the input value. The former way
207 of using the value that is assigned to the target variable fails
208 if the assignment to the target variable itself can change the
209 value because of type conversion.
210
211 (SCM_ASSERT_RANGE): Use scm_out_of_range to signal range errors.
212
213 2000-06-30 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
214
215 * gc.c (scm_gc_for_newcell): Behave gracefully also if scm_igc
216 doesn't yield any new cells. In theory this could happen if all
217 cells allocated with NEWCELL are either in use or conservatively
218 marked and all cluster spine cells are conservatively marked.
219 (Thanks to Dirk.)
220
221 2000-06-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
222
223 * __scm.h (SCM_NALLOC): Removed.
224
225 * error.c (scm_wta): Removed sick dispatch code for memory
226 errors. (More sick dispatches still to be removed.)
227
228 * numbers.c (scm_mkbig, scm_adjbig), ports.c (scm_make_port_type),
229 random.c (scm_i_copy_rstate, scm_c_make_rstate), smob.c
230 (scm_make_smob_type), srcprop.c (scm_make_srcprops), vectors.c
231 (scm_vector_set_length_x): Now using scm_memory_error to signal
232 memory errors.
233
234 2000-06-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
235
236 * __scm.h: Removed some commented code and fixed some comments.
237
238 (SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL, SCM_BUS_SIGNAL,
239 SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL, SCM_TICK_SIGNAL,
240 SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS): Removed.
241
242 * async.c: Removed some commented code.
243
244 2000-06-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
245
246 * gc.c (scm_gc_mark, scm_gc_sweep, scm_must_malloc,
247 scm_must_realloc, scm_must_free, alloc_some_heap): Use the
248 appropriate error signalling function.
249
250 2000-06-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
251
252 * root.h (scm_first_type): Removed.
253
254 2000-06-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
255
256 * gc.c (MIN_GC_YIELD): Removed.
257
258 2000-06-28 Michael Livshin <mlivshin@bigfoot.com>
259
260 * gc.c (scm_gc_for_newcell): don't try to do GC if it's blocked,
261 allocate instead.
262
263 2000-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
264
265 * async.c (scm_gc_async, scm_gc_vcell, scm_sys_gc_async_thunk):
266 Moved to gc.c.
267
268 (scm_init_async): Moved initialization for scm_gc_async and
269 scm_gc_vcell to gc.c. Moved initialization of scm_asyncs here
270 from gc.c.
271
272 * async.h (scm_gc_async): Not globally visible any more.
273
274 * gc.c (scm_gc_stats): Made callable even from within regions
275 where gc is blocked.
276
277 (scm_gc_end): Eliminate the hardcoding of the marking of the
278 scm_gc_async from the gc core.
279
280 (scm_init_storage): Don't initialize the scm_asyncs list here.
281 This is now done in asyncs.c.
282
283 (scm_gc_vcell): Moved here from async.c.
284
285 (gc_async): Renamed from scm_gc_async, moved here from async.c
286 and made static.
287
288 (gc_async_thunk): Renamed from scm_sys_gc_async_thunk and moved
289 here from async.c.
290
291 (mark_gc_async): New hook function for scm_after_gc_c_hook.
292
293 (scm_init_gc): Added initialization of scm_gc_vcell and
294 gc_async. Further, add mark_gc_async to scm_after_gc_c_hook.
295
296 * init.c (scm_boot_guile_1): scm_init_gc requires asyncs to be
297 initialized.
298
299 2000-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
300
301 * gc.c (scm_igc): Removed commented code that once was intended
302 to unprotect struct types with no instances.
303
304 * root.h (scm_type_obj_list): Removed.
305
306 2000-06-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
307
308 * async.c (scm_init_async): Switch to standard way of smob
309 initialization.
310
311 2000-06-21 Michael Livshin <mlivshin@bigfoot.com>
312
313 * guile-doc-snarf.in: use cut instead of sed, that's much much
314 faster. also, don't call basename more than needed. and, to gain
315 a couple of microseconds more, don't call cat needlessly. (thanks
316 to Brad Knotwell).
317
318 2000-06-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
319
320 * guile-snarf.awk.in, guile-snarf.in, snarf.h: Rename SCM__I to
321 SCM_SNARF_INIT_START, SCM__D to SCM_SNARF_DOC_START, SCM__S to
322 SCM_SNARF_DOCSTRING_START and SCM__E to SCM_SNARF_DOCSTRING_END.
323
324 2000-06-21 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
325
326 * eval.c, eval.h (scm_top_level_lookup_closure_var): Added.
327 #include "libguile/fluids.h".
328
329 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): New macro which replaces
330 SCM_CDR (scm_top_level_lookup_closure_var) everywhere.
331
332 * root.h (scm_top_level_lookup_closure_var,
333 scm_system_transformer): Removed. (It's no sense in having the
334 *variable* be a "fluid".)
335
336 * root.c (mark_root): Removed marking of
337 s->top_level_lookup_closure_var and s->system_transformer.
338
339 * modules.c (scm_selected_module): the_module is now a fluid.
340
341 2000-06-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
342
343 * gc.h, tags.h: Be kind to compilers which must see hash signs in
344 column 0. (Thanks to Ian Grant.)
345
346 * numbers.h: Put #ifdef HAVE_LONG_LONGS around declarations using
347 the long_long type. (Thanks to Bernard Urban.)
348
349 2000-06-20 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
350
351 * gc.c, gc.h (scm_default_init_heap_size_1,
352 scm_default_min_yield_1, scm_default_init_heap_size_2,
353 scm_default_min_yield_2, scm_default_max_segment_size): New global
354 variables. Can be customized by the application before booting
355 Guile. (We might want to be able to control these parameters
356 dynamically through the "options interface" in the future, but
357 note that that is additional functionality. Here we're giving
358 default values which the environment variables can override.)
359
360 * list.c (scm_cons_star): Updated comment.
361
362 * smob.h: Changed comments for scm_make_smob_type and
363 scm_make_smob_type_mfpe, warning that the latter might be
364 deprecated in a future release.
365
366 2000-06-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
367
368 * list.[ch] (scm_cons_star/cons*): Renamed from
369 scm_list_star/list*.
370
371 * list.[ch] (scm_list_star/list*): Provided as a deprecated alias
372 for scm_cons_star/cons*.
373
374 * gc.c (scm_protect_object): Updated comment.
375
376 * numbers.h (SCM_NEWREAL, SCM_NEWCOMPLEX): Removed.
377
378 * tags.h (SCM_UNPACK_CAR, SCM_NDOUBLE_CELLP): Removed.
379
380 2000-06-19 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
381
382 * init.c, init.h (scm_initialized_p): Renamed from `initialized'
383 and made global.
384
385 * gdbint.c (gdb_print): Print warning instead of calling scm_write
386 if Guile isn't yet initialized.
387
388 * print.c (scm_current_pstate, scm_make_print_state): Simplified
389 tests, using the assumption that Guile has been initialized.
390
391 Sun Jun 18 14:45:21 2000 Greg J. Badros <gjb@cs.washington.edu>
392
393 * print.c (s_scm_current_pstate): Do not segfault when the
394 print_state_pool is unitialized in `current-pstate', and better
395 verify its state before altering it in scm_make_print_state().
396
397 2000-06-18 Michael Livshin <mlivshin@bigfoot.com>
398
399 * scmsigs.c (s_scm_sigaction): guard the SIGIOT case with an
400 #ifdef -- it's missing on at least one platform. (thanks to
401 Jan Nieuwenhuizen).
402
403 2000-06-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
404
405 * list.c (list*): Added documentation from common-list.scm.
406
407 2000-06-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
408
409 * gc.c (scm_unprotect_object): The reference count is guaranteed
410 to be a positive number.
411
412 2000-06-15 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
413
414 * eval.c: Updated comment above scm_map.
415
416 2000-06-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
417
418 * gc.c (scm_protect_object): Avoid looking up the object handle
419 twice.
420 (scm_unprotect_object): Abort if scm_unprotect_object is called on
421 an unprotected object.
422
423 2000-06-14 Michael Livshin <mlivshin@bigfoot.com>
424
425 * gc.c (scm_unprotect_object): fix a nasty typo bug (thanks to
426 Dirk Herrmann).
427
428 2000-06-14 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
429
430 * socket.c (scm_getsockopt): Changed type for `optlen' from int to
431 size_t.
432 (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
433 Ditto for `tmp_size'.
434 (scm_addr_buffer_size): Changed type from int to size_t.
435
436 * random.c: #include <string.h>. (Needed by memcpy.)
437
438 * guile-snarf.awk.in: Replace the dot_doc_file arg with "-",
439 indicating stdin, instead of "" and don't reset ARGC. This is a
440 workaround for `nawk' in AIX 4.3 on RS6000 but, as far as I know,
441 it is correct, and perhaps even better.
442
443 2000-06-14 Gary Houston <ghouston@arglist.com>
444
445 * scmsigs.c (scm_init_scmsigs): if HAVE_SIGINTERRUPT is not
446 defined, add SA_RESTART to the sigaction flags correctly
447 (thanks to Dale P. Smith).
448
449 2000-06-13 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
450
451 * strings.c: #include <string.h>. (Thanks to Bill Schottstaedt.)
452
453 * net_db.c (scm_resolv_error): Only use macro NETDB_INTERNAL if
454 defined. It isn't on sgi irix 5.3. (Thanks to Bill Schottstaedt.)
455
456 * Makefile.am (.c.doc): Pipe output (the .x contents) to /dev/null.
457
458 2000-06-13 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
459
460 * fports.c (scm_setvbuf): Use `free' instead of `scm_must_free'
461 since read and write buffers are allocated by `malloc'.
462
463 * Makefile.am: Removed old test code.
464
465 * gh_test_c.c, gh_test_repl.c: Removed.
466
467 2000-06-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
468
469 * iselect.c (SCM_NLONGBITS): Add workaround for the Sun 4.2
470 compiler.
471
472 * inet_aton.c (inet_aton): Cast init value for `cp'.
473
474 * ramap.c (s_scm_array_fill_x): Cast `ve' properly in case
475 `scm_tc7_uvect'.
476
477 * symbols.c (scm_intern_obarray_soft,
478 scm_sysintern0_no_module_lookup): Cast `name' to unsigned char ptr
479 in calls to scm_strhash.
480
481 * strports.c (st_resize_port): Substituted SCM_UCHARS for
482 SCM_CHARS.
483 (st_write): Cast argument to strncpy to char ptr.
484 (scm_mkstrport): Substituted SCM_ROUCHARS for SCM_ROCHARS.
485 (scm_strport_to_string): Cast argument to scm_makfromstr to char
486 ptr.
487
488 * ports.c (scm_ungetc): Cast value to unsigned char ptr before
489 storing in putback_buf.
490 (scm_unread_string): Substituted SCM_ROCHARS for SCM_ROUCHARS.
491
492 * ioext.c (s_scm_read_line): Cast result of call to
493 scm_do_read_line to unsigned char ptr.
494
495 * gdbint.c (SEND_STRING): Cast argument to char pointer.
496
497 * fports.c (fport_flush): Declare `ptr' as unsigned char (was
498 char).
499
500 * Makefile.am (DOT_DOC_FILES): List doc-files explicitly. (We
501 shouldn't use Make rules which aren't supported by most Make
502 programs.)
503 (OMIT_DEPENDENCIES): Defined to "libguile.h ltdl.h". (We don't
504 want these dependencies recorded, since they would get bogus
505 relative paths; libguile.h is only used in gh.h and guile.c.)
506 (EXTRA_DOT_X_FILES, EXTRA_DOT_DOC_FILES): New variables.
507 (guile-procedures.txt): Depend on EXTRA_DOT_DOC_FILES.
508 (modinclude_HEADERS): Removed kw.h.
509
510 * guile-snarf.in: Change regexp "^SCM__I" --> "^ *SCM__I".
511 (The preprocessor might insert spaces before the identifier.)
512
513 * snarf.h (SCM_SNARF_HERE, SCM_SNARF_INIT, SCM_SNARF_DOCS):
514 Renamed from SCM_HERE, SCM_INIT, SCM_DOCS.
515
516 * smob.h (scm_smobfuns): Removed deprecated type.
517
518 * smob.c, smob.h (scm_newsmob): Removed deprecated function.
519 (Replaced by `scm_make_smob_type'.)
520
521 * keywords.c (scm_tc16_kw): Removed deprecated type.
522 (Replaced by scm_tc16_keyword.)
523
524 * kw.h: Removed deprecated header file.
525
526 * evalext.c (serial-map): Removed deprected alias for scm_map.
527 (Has been replaced by `map-in-order'.)
528
529 * ramap.c (serial-array-copy!, serial-array-map!): Removed
530 depracted aliases. (Replaced by `array-copy-in-order!' and
531 `array-map-in-order'.)
532
533 2000-06-11 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
534
535 * gc.h (SCM_VALIDATE_CELL): Rewritten.
536 (SCM_CELL_WORD, SCM_CELL_OBJECT, SCM_SET_CELL_WORD,
537 SCM_SET_CELL_OBJECT): Use new version of SCM_VALIDATE_CELL.
538 (Thanks to Han-Wen Nienhuys.)
539
540 2000-06-10 Michael Livshin <mlivshin@bigfoot.com>
541
542 * guile-doc-snarf.in: don't pipe the CPP output right into sed --
543 write it to the temp file first and check the CPP return code.
544 (I introduced this bug earlier, and this probably caused people
545 with non-GNU C preprocessors to get empty *.x files and not to
546 have the build fail right away...).
547
548 * scmsigs.c (s_scm_sigaction): guard the SIGSYS case with an ifdef
549 -- at least my libc5-based Linux system doesn't define SIGSYS.
550
551 2000-06-08 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
552
553 * snarf.h, guile-snarf.awk.in, guile-snarf.in: Replaced snarf
554 markers with identifiers (SCM__I, SCM__D, SCM__S, SCM__E).
555 (Thanks to Bernard Urban.)
556
557 2000-06-06 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
558
559 * modules.c (scm_system_module_env_p): Fixed detection of system
560 modules.
561
562 2000-06-06 Marius Vollmer <mvo@zagadka.ping.de>
563
564 * scmsigs.c (scm_sigaction): Silently ignore setting handlers for
565 `program error signals' because they can't currently be handled by
566 Scheme code.
567
568 2000-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
569
570 * procs.h (SCM_SET_SUBRF): Added.
571
572 * procs.c (scm_make_subr_opt): Don't assign to SCM_SUBRF, use
573 SCM_SET_SUBRF instead. Thanks to Bernard Urban for the bug
574 report.
575
576 2000-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
577
578 * gc.h (SCM_CARLOC, SCM_CDRLOC): Don't take the address of a SCM
579 value.
580
581 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x,
582 scm_merge_list_step): Don't take the address of SCM_CAR. Use
583 SCM_CARLOC instead. Thanks to Bernard Urban for the bug report.
584
585 2000-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
586
587 * boolean.h (SCM_TRUE_P): Removed, as people might use it as a
588 replacement for !SCM_FALSEP.
589
590 * backtrace.c (display_error_body), boolean.h (SCM_BOOLP), gc.c
591 (scm_unhash_name), gh_data.c (gh_module_lookup), load.c
592 (scm_primitive_load), print.c (scm_simple_format), procs.c
593 (scm_procedure_documentation), procs.h (SCM_TOP_LEVEL), ramap.c
594 (scm_array_fill_int), scmsigs.c (scm_sigaction), stacks.c
595 (narrow_stack, scm_make_stack, scm_stack_id), symbols.c
596 (scm_string_to_obarray_symbol), throw.c (scm_catch,
597 scm_lazy_catch, scm_ithrow), unif.c (scm_make_uve, scm_array_p,
598 scm_array_set_x, scm_bit_set_star_x, scm_bit_count_star),
599 validate.h (SCM_VALIDATE_BOOL_COPY, SCM_VALIDATE_PROC): Replace
600 uses of SCM_TRUE_P (x) with SCM_EQ_P (x, SCM_BOOL_T).
601
602 2000-06-04 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
603
604 * eval.c (scm_badformalsp): New static function.
605 (SCM_CEVAL): Check arguments for procedure-with-setter closures.
606 (Thanks to Keisuke Nishida.)
607
608 The major reason for Guile's slow loading speed has been the fact
609 that a chain of Scheme level procedures has been evaluated for
610 every top-level symbol lookup during the first pass through the
611 code.
612
613 The following is a kludge which I suggested four years ago, and
614 which I've repeatedly suggested since. Personally, I've never
615 been bothered by Guile's slow loading speed, so I thought I would
616 let someone else do it...
617
618 But since the new environments will be included first in
619 Guile-1.5, I thought it would make people happy to get the kludge
620 into 1.4.
621
622 * modules.c: Added #include "libguile/vectors.h";
623 Added #include "libguile/hashtab.h";
624 Added #include "libguile/struct.h";
625 Added #include "libguile/variable.h";
626 Capture Scheme level `module-make-local-var!' to be used in the
627 standard eval closure.
628 (scm_standard_eval_closure): New primitive.
629
630 * modules.h (scm_standard_eval_closure): Declare.
631
632 * eval.c (scm_lookupcar): Test for !SCM_CONSP (SCM_CAR (env))
633 instead of SCM_TRUE (scm_procedurep (SCM_CAR (env))).
634
635 * symbols.c (scm_sym2vcell): Bypass dispatch in the evaluator for
636 standard eval closures.
637
638 * variable.c: Code layout fixes.
639
640 2000-06-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
641
642 * Makefile.am: Added LIBS line to libpath which accidentally
643 disappeared in the change of 2000-06-01.
644 (Thanks to Dale P. Smith.)
645
646 2000-06-03 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
647
648 * scmsigs.c (scm_segfault): Removed. (Was probably added by
649 mistake since it is not mentioned in ChangeLog.)
650
651 * gc.h (SCM_VALIDATE_CELL): Cast result to (void) in order to
652 avoid compiler warnings in gcc. (Does this work for other
653 compilers?)
654
655 2000-06-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
656
657 * gc.h (SCM_VALIDATE_CELL): Don't "use" the value returned by
658 abort ().
659 (SCM_CARLOC, SCM_CDRLOC): Define directly instead of using
660 SCM_CELL_OBJECT_0 and SCM_CELL_OBJECT_1. It's not correct to take
661 the address of these expressions since they use SCM_VALIDATE_CELL.
662 (Thanks to Bernard Urban.)
663
664 * dynl.c: Changed #include <ltdl.h> --> #include
665 "libltdl/ltdl.h". (Thanks to Bill Schottstaedt.)
666
667 2000-06-01 Craig Brozefsky <craig@red-bean.com>
668
669 * Makefile.am: libguile_la_LDFLAGS gets -version-info args
670 from GUILE-VERSION definition of LIBGUILE version. Added to
671 libpath.h definitions for guileversion and libguileversion which
672 both get their values from GUILE-VERSION definition.
673
674 2000-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
675
676 * numbers.h (SCM_BIGP): Don't use SCM_SMOB_PREDICATE in header
677 file: Code using numbers should not be required to include
678 smob.h.
679
680 2000-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
681
682 * coop-threads.c.cygnus, coop-threads.h.cygnus, fsu-pthreads.h,
683 mit-pthreads.c, mit-pthreads.h: Deleted.
684
685 * Makefile.am (EXTRA_DIST), scmsigs.c, threads.[ch]: Drop
686 references to deleted files and fsu/mit thread support in
687 general.
688
689 2000-05-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
690
691 * hooks.c (symbol_name, scm_create_hook): Restored the original
692 behaviour of scm_create_hook. Changing it was bad as Carl
693 R. Witty has pointed out.
694
695 * gc.c (scm_init_gc): We can still rely on scm_create_hook to
696 protect the object.
697
698 2000-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
699
700 * gc.c (scm_init_gc): Protect scm_after_gc_hook, since this will
701 soon not be done by scm_create_hook any longer.
702
703 * hooks.c (make_hook, print_hook, scm_create_hook,
704 scm_make_hook_with_name, scm_make_hook), hooks.h (SCM_HOOK_NAME,
705 SCM_HOOK_PROCEDURES, SCM_SET_HOOK_PROCEDURES,
706 scm_make_hook_with_name), init.c (scm_boot_guile_1): Hooks no
707 longer have names. As an intermediate solution, the name
708 predicate is emulated via object properties, but use of this
709 feature is deprecated.
710
711 * hooks.h (scm_free_hook): Removed, as it is never defined.
712
713 2000-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
714
715 * numbers.[ch] (SCM_POSFIXABLE, SCM_NEGFIXABLE, SCM_FIXABLE):
716 Un-deprecated since otherwise user code can't determine whether a
717 number fits into an inum any longer. The names should be changed
718 some time, though.
719
720 * numbers.c (scm_big2inum): Eliminated use of SCM_UNEGFIXABLE.
721
722 * tags.h (SCM_UNPACK_CAR): Deprecated.
723
724 2000-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
725
726 * filesys.h (SCM_OPDIRP), fluids.h (SCM_FLUIDP, SCM_FLUID_NUM),
727 fports.h (SCM_OPFPORTP, SCM_OPINFPORTP, SCM_OPOUTFPORTP), hooks.h
728 (SCM_HOOK_ARITY), keywords.h (SCM_KEYWORDP, SCM_KEYWORDSYM),
729 numbers.h (SCM_NUMP, SCM_BIGSIGN, SCM_BDIGITS, SCM_NUMDIGS):
730 Replace SCM_UNPACK_CAR appropriately. Don't access cells via
731 SCM_{SET}?C[AD]R unless they are known to be cons cells.
732
733 * gc.c (scm_heap_seg_data_t, scm_mark_locations, scm_cellp,
734 init_heap_seg): Remove unused struct member variable 'valid'.
735
736 2000-05-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
737
738 * fports.c (fport_write), ports.c (scm_markstream, scm_port_mode,
739 scm_print_port_mode), ports.h (SCM_OPPORTP, SCM_OPINPORTP,
740 SCM_OPOUTPORTP, SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP),
741 procs.h (SCM_CLOSCAR), unif.h (SCM_ARRAY_NDIM, SCM_ARRAY_CONTP),
742 variable.h (SCM_VARIABLEP): Replace SCM_UNPACK_CAR
743 appropriately.
744
745 2000-05-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
746
747 * gc.c (free_list_length), hash.c (scm_hasher), macros.c
748 (scm_macro_type), objects.c (scm_class_of), options.c
749 (scm_options), print.c (scm_iprin1), strports.c (st_seek), throw.c
750 (SCM_LAZY_CATCH_P): Replace SCM_UNPACK_CAR appropriately.
751
752 2000-05-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
753
754 * eval.c (scm_macroexp, SCM_CEVAL, scm_force), tags.h: Replace
755 SCM_UNPACK_CAR with SCM_CELL_TYPE or SCM_CELL_WORD_0.
756
757 * eval.c (scm_force): Add documentation.
758
759 * eval.c (scm_force, scm_cons_source): Don't access cells via
760 SCM_{SET}?C[AD]R unless they are known to be cons cells.
761
762 2000-05-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
763
764 * strings.h (SCM_NSTRINGP, SCM_NRWSTRINGP), tags.h
765 (SCM_NDOUBLE_CELLP), vectors.h (SCM_NVECTORP): Deprecated.
766
767 * gc.c (scm_igc), gc.h (SCM_PTR_MASK, SCM_PTR_LT): Removed #ifdef
768 nosve #endif conditionally compiled code.
769
770 2000-05-23 Michael Livshin <mlivshin@bigfoot.com>
771
772 * gc.c (scm_heap_seg_data_t): fixed comment for the `span' member.
773
774 2000-05-22 Michael Livshin <mlivshin@bigfoot.com>
775
776 * guile-doc-snarf.in: put the preprocessed file through sed to
777 trim all lines to 1024 chars. I hope it doesn't break anybody's
778 sed. we'll see. (note: this is lossy trimming, i.e. the spill
779 isn't wrapped around but actually chopped off. this seemed to me
780 safe because the current snarfer doesn't understand multi-line
781 cookies anyway. in the long term, it would be nice not to depend
782 on AWK for anything.)
783
784 * gc.h (SCM_[SET_]CELL_{WORD,OBJECT}, SCM_VALIDATE_CELL): reverted
785 the previous change to this macros, after deciding to torture the
786 snarfer instead.
787
788 2000-05-21 Michael Livshin <mlivshin@bigfoot.com>
789
790 * gc.h (SCM_[SET_]CELL_{WORD,OBJECT}, SCM_VALIDATE_CELL): brought
791 the yucky, ugly and nasty conditional compilation back. sorry,
792 but it was either that or requiring GAWK to build Guile.
793 (lots of places): removed the code that implemented the old GC
794 scheme.
795
796 * init.c (scm_boot_guile_1): removed the code conditioned on
797 !GUILE_NEW_GC_SCHEME.
798
799 * __scm.h: (GUILE_NEW_GC_SCHEME): removed.
800
801 * gc.c (scm_protect_object, scm_unprotect_object): change the
802 implementation to more efficient (at least in the time complexity
803 sense). the calls should now also be thread-safe -- I suspect
804 that people expect them to be. (thanks to Han-Wen Nienhuys)
805 (lots of places): removed the code that implemented the old GC
806 scheme.
807
808 * hashtab.c (scm_hash_fn_create_handle_x): add missing
809 SCM_REALLOW_INTS before return. I really wonder about the
810 possible interactions between hashtables, threads & GC. it
811 doesn't look healthy at all.
812
813 2000-05-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
814
815 * unif.c (scm_bit_count): Fixed the parameter checks. Thanks to
816 Dale P. Smith.
817
818 2000-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
819
820 * __scm.h (SCM_DEBUG_CELL_ACCESSES), gc.h (SCM_): Added as a new
821 debug option to verify all accesses to cells actually access
822 objects on the heap.
823
824 * gc.h (SCM_VALIDATE_CELL): Added. Only performs validation if
825 SCM_DEBUG_CELL_ACCESSES is set to 1.
826
827 (SCM_CELL_WORD, SCM_CELL_OBJECT, SCM_SET_CELL_WORD,
828 SCM_SET_CELL_OBJECT): Use SCM_VALIDATE_CELL to check every cell
829 that is accessed.
830
831 2000-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
832
833 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs,
834 gh_scm2floats, gh_scm2doubles): Change !SCM_NIMP to SCM_IMP.
835
836 * gc.c (scm_cellp): Fixed and simplified.
837
838 * throw.c (JBJMPBUF, SETJBJMPBUF, SCM_JBDFRAME, SCM_SETJBDFRAME,
839 make_jmpbuf, scm_init_throw): Now using double cells to represent
840 jump buffers when using debug extensions.
841
842 (freejb): Removed.
843
844 2000-05-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
845
846 * gh.h gh_data.c gh_funcs.c (gh_new_procedure*, gh_chars2byvect,
847 gh_shorts2svect, gh_longs2ivect, gh_ulongs2uvect, gh_floats2fvect,
848 gh_doubles2dvect, gh_doubles2scm, gh_define, gh_lookup,
849 gh_module_lookup): Accept const pointers as parameters.
850
851 * gh.h gh_data.c (gh_int2scmb): Deprecated.
852
853 2000-05-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
854
855 * __scm.h (SCM_DEBUG_REST_ARGUMENT): Renamed from
856 SCM_DEBUG_REST_ARGUMENTS in order to clarify that we don't test
857 the actual arguments in the list, but rather the rest argument as
858 a list of arguments.
859
860 * validate.h (SCM_VALIDATE_REST_ARGUMENT): Added.
861
862 * async.c (scm_noop), eval.c (scm_map, scm_for_each), list.c
863 (scm_list_star, scm_append, scm_append_x), ports.c
864 (scm_close_all_ports_except), ramap.c (scm_array_map_x,
865 scm_array_for_each), regex-posix.c (scm_make_regexp), stacks.c
866 (scm_make_stack), strings.c (scm_string_append), struct.c
867 (scm_make_struct, scm_make_vtable_vtable): Validate rest arguments.
868
869 * dynl.c (DYNL_GLOBAL, sysdep_dynl_link, kw_global, sym_global,
870 scm_dynamic_link, scm_init_dynamic_linking), dynl.h
871 (scm_dynamic_link): Removed possibility to pass flags to
872 scm_dynamic_link, as it had no effect anyway.
873
874 * filesys.c (scm_fcntl): Made single optional rest argument into
875 a standard optional argument.
876
877 * hooks.c (scm_run_hook): A list of rest arguments is never
878 SCM_UNBNDP.
879
880 * list.c (scm_append, scm_append_x), stacks.c (scm_make_stack),
881 strings.c (scm_string_append): Don't perform half-hearted checks
882 to see whether the rest argument forms a proper list any more, use
883 SCM_VALIDATE_REST_ARGUMENTS instead.
884
885 * ports.c (scm_close_all_ports_except): Accept empty list of rest
886 arguments.
887
888 * posix.c (scm_convert_exec_args), print.c (scm_simple_format):
889 Simplify verification of rest argument.
890
891 * stacks.c (scm_make_stack), stacks.h (scm_make_stack), throw.c
892 (ss_handler, handler_message): Make first mandatory rest argument
893 of scm_make_stack into a standard mandatory argument.
894
895 * unif.c (scm_transpose_array, scm_enclose_array,
896 scm_array_in_bounds_p), unif.h (scm_transpose_array,
897 scm_enclose_array, scm_array_in_bounds_p): Make first mandatory
898 rest argument into a standard mandatory argument.
899
900 2000-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
901
902 * __scm.h: Added SCM_DEBUG as default debug option. (Thanks to
903 Keisuke Nishida for the suggestion.) Added debug option
904 SCM_DEBUG_REST_ARGUMENTS.
905
906 * eval.c (scm_map, scm_for_each): Make sure all lists have the
907 same length. Also, removed redundant parameter checks.
908
909 2000-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
910
911 * Makefile.am: Let 'make clean' remove *.x and *.doc files.
912
913 * __scm.h: Improved explanation of giving options to make.
914
915 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS), tags.h
916 (SCM_STRICT_TYPING, SCM_DEBUG_TYPING_STRICTNESS): Renamed
917 SCM_STRICT_TYPING to SCM_DEBUG_TYPING_STRICTNESS and moved the
918 corresponding declaration and comment to __scm.h.
919
920 * _scm.h (errno), gc.h (SCM_CELLPTR, SCM_PTR_LT), numbers.c
921 (scm_remainder, scm_modulo), numbers.h (SCM_SRS, SCM_MAKINUM,
922 SCM_INUM): Removed conditionally compiled code for Turbo C.
923
924 * gdbint.c (gdb_maybe_valid_type_p): Eliminated call to scm_tag.
925 That check can be assumed to be redundant except for very rare
926 conditions that actually indicate broken heap data.
927
928 2000-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
929
930 * numbers.c (scm_logcount, scm_integer_length): Reordered
931 dispatch sequence.
932
933 2000-05-15 Gary Houston <ghouston@arglist.com>
934
935 * stime.c (scm_strftime): don't reset TZ if zone is an empty
936 string. append a "0" to the zone for TZ.
937
938 2000-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
939
940 * numbers.c (scm_logbit_p, scm_bit_extract): Reordered dispatch
941 sequence.
942
943 (scm_bit_extract): Fixed handling of bignums.
944
945 2000-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
946
947 * async.c (scm_sys_gc_async_thunk), chars.h (SCM_ICHRP, SCM_ICHR,
948 SCM_MAKICHR), continuations.h (SCM_SETJMPBUF), error.c
949 (scm_sysmissing), error.h (scm_sysmissing), evalext.c
950 ('serial-map), ioext.c (scm_fseek), ioext.h (scm_fseek),
951 keywords.c (scm_tc16_kw, scm_init_keywords), ports.h (SCM_CRDY,
952 SCM_INPORTP, SCM_OUTPORTP), ramap.c ('serial-array-copy!,
953 'serial-array-map!), smob.c (scm_newsmob), smob.h (scm_smobfuns,
954 scm_newsmob), tag.c (scm_tag), tag.h (scm_tag), tags.h
955 (scm_tc16_flo, scm_tc_flo, scm_tc_dblr, scm_tc_dblc): Wrapped
956 deprecated code between #if (SCM_DEBUG_DEPRECATED == 0) #endif.
957
958 * fports.c (scm_fport_buffer_add), ports.c (scm_input_port_p,
959 scm_output_port_p), print.c (scm_get_print_state), validate.h
960 (SCM_VALIDATE_CHAR): Replace use of deprecated macros
961 SCM_INPORTP, SCM_OUTPORTP, SCM_ICHRP by SCM_INPUT_PORT_P,
962 SCM_OUTPUT_PORT_P, SCM_CHARP, respectively.
963
964 2000-05-14 Gary Houston <ghouston@arglist.com>
965
966 * stime.c (scm_strftime): if HAVE_TM_ZONE is not defined, hack the
967 TZ environment variable so that the %Z format returns the zone
968 from the input vector instead of the system default.
969
970 from Keisuke Nishida:
971 * fports.c (scm_setvbuf): minor docstring fix.
972 * ports.h (scm_generic_fgets): obsolete prototype deleted.
973
974 2000-05-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
975
976 * __scm.h: Added new section for debugging options.
977
978 (SCM_DEBUG_DEPRECATED): If 1, no deprecated code is included to
979 help developers to get rid of references to deprecated code.
980
981 * numbers.[ch] (SCM_POSFIXABLE, SCM_NEGFIXABLE, SCM_UNEGFIXABLE,
982 SCM_FIXABLE, SCM_FLOBUFLEN): These macros are no longer provided
983 as part of the interface and are marked as deprecated in the
984 header file.
985
986 * numbers.c (scm_make_real, scm_make_complex): Inlined the
987 corresponding macros SCM_NEWREAL and SCM_NEWCOMPLEX,
988 respectively.
989
990 * numbers.h (SCM_NEWREAL, SCM_NEWCOMPLEX, SCM_INEXP, SCM_CPLXP,
991 SCM_REAL, SCM_IMAG, SCM_REALPART, scm_makdbl, SCM_SINGP,
992 SCM_NO_BIGDIG, SCM_NUM2DBL, scm_dblproc): Deprecated.
993
994 2000-05-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
995
996 * gc.h (scm_cell, SCM_CELL_WORD, SCM_CELL_OBJECT,
997 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT): Scheme cells now consist
998 of two scm_bits_t values instead of two SCM values, because it is
999 legal for cell entries to hold values that are not scheme objects.
1000
1001 (SCM_SETAND_CAR, SCM_SETAND_CDR, SCM_SETOR_CAR, SCM_SETOR_CDR):
1002 Use SCM_SETC[AD]R to modify contents of pairs.
1003
1004 2000-05-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
1005
1006 * numbers.c (IS_INF, isfinite): Added FIXME comment.
1007
1008 (scm_abs, scm_magnitude): Make these two independent of each
1009 other. scm_abs now reports an error if given a complex argument.
1010
1011 (scm_istr2flo, scm_integer_p). Use SCM_REAL_VALUE instead of
1012 SCM_REALPART if the object is known to be real.
1013
1014 (scm_init_numbers): No need to use SCM_NEWREAL macro for speed
1015 here.
1016
1017 * numbers.h (SCM_SINGP): Set to 0 instead of SCM_BOOL_F.
1018
1019 2000-05-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
1020
1021 * eq.c (scm_eqv_p): Separate handling of real and complex
1022 values. Remove #ifdef SCM_BIGDIG #endif test.
1023
1024 * eval.c (SCM_CEVAL, SCM_APPLY), gh_data.c (gh_scm2floats,
1025 gh_scm2doubles), hash.c (scm_hasher), ramap.c (scm_array_fill_int,
1026 ramap_rp, scm_array_map_x), random.c (vector_scale,
1027 vector_sum_squares), unif.c (scm_make_uve, scm_array_p,
1028 scm_array_set_x): Use SCM_REAL_VALUE instead of SCM_REALPART if
1029 the object is known to be real. Use SCM_COMPLEXP instead of
1030 deprecated SCM_CPLXP. Use SCM_INEXACTP instead of deprecated
1031 SCM_INEXP.
1032
1033 2000-05-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
1034
1035 * numbers.c: No need to include unif.h.
1036
1037 (IS_INF): Returned to old test for now: x == x + 1 will not work
1038 for large numbers due to rounding errors.
1039 Thanks to Kalle Olavi Niemitalo.
1040
1041 2000-05-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
1042
1043 * numbers.c (scm_divbigdig): Removed outdated comment.
1044
1045 (scm_number_to_string, scm_string_to_number, scm_number_p,
1046 scm_real_p, scm_integer_p, scm_inexact_p, scm_gr_p, scm_leq_p,
1047 scm_geq_p, scm_make_rectangular, scm_make_polar,
1048 scm_inexact_to_exact): Added comments.
1049
1050 (add1, scm_init_numbers): Removed add1.
1051
1052 2000-05-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
1053
1054 * numbers.c (IS_INF): The new test is x == x + 1. The old test
1055 x == x/2 did not work for zero values. Thanks to Han-Wen Nienhuys
1056 and Ivan Toshkov.
1057
1058 (scm_number_to_string, scm_sum, scm_difference, scm_two_doubles,
1059 scm_num2long, scm_num2long_long, scm_num2ulong): Reordered
1060 dispatch sequence.
1061
1062 2000-05-09 Marius Vollmer <mvo@zagadka.ping.de>
1063
1064 * scmsigs.c (take_signal): Execute SCM_ASYNC_TICK for SIGSEGV,
1065 SIGILL and SIGBUS signals. These signals are not continuable and
1066 must be handled for real right away.
1067
1068 2000-05-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
1069
1070 * numbers.c (scm_zero_p, scm_positive_p, scm_negative_p,
1071 scm_real_part, scm_imag_part, scm_magnitude,
1072 scm_inexact_to_exact): Reordered dispatch sequence.
1073
1074 2000-05-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
1075
1076 * feature.c: No need to include "libguile/smob.h"
1077
1078 (scm_loc_features, features, scm_add_feature, scm_init_feature):
1079 Removed variable 'scm_loc_features' as a pointer to the SCM value
1080 holding the features list. Using variable 'features' instead,
1081 which holds the interned pair. Thus, SCM_SETCDR can be used
1082 instead of pointer trickery.
1083
1084 2000-05-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
1085
1086 * alist.c (scm_acons): Use SCM{_SET}?_CELL_OBJECT as long as a
1087 cell is not known to be a valid pair.
1088
1089 2000-05-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
1090
1091 * eval.c (ASRTSYNTAX, scm_m_body, scm_m_letrec1): Removed
1092 ASRTSYNTAX. Using SCM_ASSYNT instead.
1093
1094 (scm_m_body): Don't create a redundant cons cell.
1095
1096 (scm_m_do): Removed redundant test 'bodycheck'.
1097
1098 (bodycheck): Removed.
1099
1100 * stacks.c (stack_depth, read_frame, read_frames): Removed
1101 redundant calculation of size, minimized some variable scopes.
1102
1103 2000-05-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
1104
1105 * pairs.c (scm_cons, scm_cons2): Use SCM{_SET}?_CELL_OBJECT as
1106 long as a cell is not known to be a valid pair.
1107
1108 (scm_pair_p): Eliminated redundant SCM_IMP test.
1109
1110 2000-05-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
1111
1112 * eval.c (scm_m_body, scm_macroexp, unmemocopy, scm_eval_args,
1113 scm_deval_args): Eliminated redundant SCM_IMP tests.
1114
1115 * hashtab.c (scm_ihashx, scm_sloppy_assx, scm_delx_x), weaks.c
1116 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
1117 scm_make_doubly_weak_hash_table): Fixed critical sections.
1118 Thanks to Keisuke Nishida.
1119
1120 2000-05-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
1121
1122 * numbers.c (scm_logand, scm_logior, scm_logxor, scm_logtest):
1123 Fixed some goto-related initialization bugs (introduced by me).
1124
1125 2000-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
1126
1127 * numbers.h (SCM_INUM0): Uses SCM_MAKINUM instead of SCM_PACK.
1128
1129 * dynl.c (dynl_obj, DYNL_OBJ, get_dynl_obj): Removed.
1130
1131 (DYNL_FILENAME, DYNL_HANDLE): Use SCM_CELL... macros instead of
1132 pointer trickery.
1133
1134 (SET_DYNL_HANDLE): Added.
1135
1136 (scm_dynamic_object_p): Simplified.
1137
1138 (scm_dynamic_unlink, scm_dynamic_func): Changed comment. Deliver
1139 better error message when accessing unlinked dynamic objects.
1140 Eliminated call to get_dynl_obj.
1141
1142 2000-05-03 Marius Vollmer <mvo@zagadka.ping.de>
1143
1144 * scmsigs.c (orig_handlers) [!HAVE_SIGACTION]: Fix declaration to
1145 be an array of function pointers instead of being a pointer to an
1146 array returning function. Thanks to Kalle Olavi Niemitalo!
1147
1148 2000-05-03 Dirk Herrmann <D.Herrmann@tu-bs.de>
1149
1150 * numbers.c (scm_divbigbig, scm_divbigint), numbers.h
1151 (scm_divbigbig, scm_divbigint): Don't return zero any more to
1152 indicate that a division has a remainder, return SCM_UNDEFINED
1153 instead. It is improbable that anyone actually used these
1154 functions outside of numbers.c. For this reason and due to the
1155 change in behaviour the functions are static now. Thus, if
1156 surprisingly there are users of these functions they will at least
1157 get alarmed.
1158
1159 * numbers.c: Removed #ifdef SCM_BIGDIG #endif in those functions,
1160 that already have a clean dispatch order. Note: SCM_BIGDIG is
1161 always defined.
1162
1163 * numbers.c (scm_inexact_p): Simplified.
1164
1165 * numbers.c (scm_num_eq_p, scm_less_p, scm_max, scm_min,
1166 scm_product, scm_num2dbl, scm_angle): Reordered dispatch
1167 sequence, thereby fixing some comparisons of SCM values with
1168 integer constants.
1169
1170 * numbers.c (scm_divide): Division by zero of inums leads to an
1171 error now. (Formerly, an infinite number was returned.)
1172
1173 Respect the fact, that scm_divbigbig does now return SCM_UNDEFINED
1174 if a division has a remainder.
1175
1176 2000-05-02 Gary Houston <ghouston@arglist.com>
1177
1178 * Makefile.am (INCLUDES): add ${INCLTDL} (thanks to Tim Mooney).
1179
1180 2000-05-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
1181
1182 * numbers.c (scm_logtest, scm_division): Reordered dispatch
1183 sequence, thereby fixing some comparisons of SCM values with
1184 integer constants.
1185
1186 * numbers.h (scm_makdbl): Mark as deprecated at the point of
1187 declaration.
1188
1189 * eval.c (SCM_CEVAL, SCM_APPLY), gh_data.c (gh_double2scm,
1190 gh_doubles2scm), numbers.c (scm_istr2flo, scm_max, scm_min,
1191 scm_sum, scm_difference, scm_product, scm_divide, scm_sys_expt,
1192 scm_sys_atan2, scm_make_rectangular, scm_make_polar,
1193 scm_real_part, scm_imag_part, scm_magnitude, scm_angle,
1194 scm_long2num, scm_long_long2num, scm_ulong2num), ramap.c
1195 (ramap_rp, scm_array_map_x), random.c (scm_random,
1196 scm_random_uniform, scm_random_normal_vector_x, scm_random_exp),
1197 struct.c (scm_struct_ref), unif.c (scm_array_to_list): Replace
1198 call to scm_makdbl with a call to scm_make_real or
1199 scm_make_complex, depending on whether the imaginary part is known
1200 to be zero.
1201
1202 2000-05-01 Gary Houston <ghouston@arglist.com>
1203
1204 * scmsigs.c: fix the definition of orig_handlers for the case
1205 that HAVE_SIGACTION is not defined (thanks to
1206 Kalle Olavi Niemitalo).
1207
1208 * Makefile.am: remove include_HEADERS (was libguile.h)
1209 libguile.h: moved to top level directory.
1210
1211 2000-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
1212
1213 * numbers.c (SCM_SWAP): Moved to the top of the file to allow for
1214 a wider use.
1215
1216 * numbers.c (scm_modulo, scm_gcd, scm_lcm, scm_logand, scm_logior,
1217 scm_logxor): Reordered dispatch sequence, thereby fixing some
1218 comparisons of SCM values with integer constants.
1219
1220 * number.c (scm_logtest): Removed some redundant SCM_{N}?IMP
1221 tests.
1222
1223 2000-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
1224
1225 * numbers.c (scm_quotient, scm_remainder): Removed code that was
1226 conditionally compiled based on BADIVSGNS. BADIVSGNS does not
1227 occur anywhere else throughout guile.
1228
1229 * numbers.c (scm_quotient): Fixed parameter number in error
1230 message.
1231
1232 * numbers.c (scm_remainder): Reordered dispatch sequence.
1233
1234 2000-04-25 Gary Houston <ghouston@arglist.com>
1235
1236 * posix.c (scm_execlp): docstring fix (thanks to Martin
1237 Grabmueller).
1238
1239 2000-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1240
1241 * eval.c (undef_object): Made into a local static variable
1242 (suggested by Jost Boekemeier).
1243
1244 2000-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1245
1246 * pairs.c (cxrs, scm_init_pairs): Simplify initialization of
1247 c[ad]+r functions.
1248
1249 * procs.c (scm_init_iprocs), procs.h (scm_subr, scm_iproc,
1250 scm_dsubr, scm_init_iprocs): Removed.
1251
1252 * procs.h (SCM_SUBRF, SCM_DSUBRF): Access the cell words
1253 directly instead of casting a cell to a C struct.
1254
1255 2000-04-22 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1256
1257 Better modularization of GC extensions through new C level GC
1258 hooks:
1259
1260 * weaks.c (scm_weaks_prehistory): New function: Add
1261 scm_weak_vector_gc_init to scm_before_mark_c_hook; Add
1262 scm_mark_weak_vector_spines to scm_before_sweep_c_hook.
1263 (scm_scan_weak_vectors): New function; added to
1264 scm_after_sweep_c_hook.
1265
1266 * weaks.h (scm_weak_vectors, scm_weaks_prehistory): Added
1267 declarations.
1268
1269 * guardians.h (scm_guardian_gc_init, scm_guardian_zombify): Are
1270 now static.
1271
1272 * guardians.c (scm_guardian_gc_init): Turned into a hook function
1273 and added to scm_before_mark_c_hook.
1274 (scm_guardian_zombify): Turned into a hook function and added to
1275 scm_before_sweep_c_hook.
1276
1277 * async.c (scm_sys_gc_async_thunk): Run after-gc-hook.
1278 Added #include "libguile/gc.h".
1279
1280 * gc.h: Added #include "libguile/hooks.h".
1281
1282 * gc.c: Removed #include "libguile/guardians.h".
1283 (scm_before_gc_c_hook, scm_before_mark_c_hook,
1284 scm_before_sweep_c_hook, scm_after_sweep_c_hook,
1285 scm_after_gc_c_hook): New C level hooks.
1286 (scm_after_gc_hook): New Scheme level hook.
1287 (scm_gc_sweep): Moved scanning of weak vectors to weaks.c.
1288 (scm_igc): Moved initialization of scm_weak_vectors and the call
1289 to scm_guardian_gc_init to respective module.
1290 (scm_mark_weak_vector_spines): Moved to weaks.c;
1291 Call to scm_guardian_zombify moved to guardians.c;
1292 Run scm_before_gc_c_hook, scm_before_sweep_c_hook,
1293 scm_after_gc_c_hook at appropriate places.
1294 (scm_init_gc): Initialize scm_after_gc_hook.
1295
1296 * hooks.c, hooks.h (scm_make_hook_with_name): Removed deprecated
1297 function.
1298
1299 * init.c (scm_boot_guile_1): Added `scm_init_hooks'.
1300
1301 * Makefile.am: Added hooks.c, hooks.h, hooks.x.
1302
1303 * feature.c, feature.h: Broke out hook code into separate files.
1304
1305 * hooks.c, hooks.h: New files.
1306
1307 * *.*: Change includes so that they always use the "prefixes"
1308 libguile/, qt/, guile-readline/, or libltdl/.
1309 (Thanks to Tim Mooney.)
1310
1311 * Makefile.am (INCLUDES): Removed THREAD_CPPFLAGS and INCLTDL.
1312 (DEFS): Added. automake adds -I options to DEFS, and we don't
1313 want that.
1314 Removed all -I options except for the root source directory and
1315 the root build directory.
1316
1317 * numbers.c (scm_odd_p, scm_even_p): Use SCM_WRONG_TYPE_ARG
1318 instead of SCM_ASSERT (0, ...). (Some compilers will complain
1319 about control reaching end of function otherwise, and, besides,
1320 the new code is not less clear.)
1321
1322 * gc.c (scm_must_malloc, scm_must_realloc, scm_must_free): Added
1323 calls to malloc debugging functions.
1324
1325 * init.c (scm_boot_guile_1): Added calls to debug-malloc init
1326 functions.
1327
1328 * Makefile.am: Added debug-malloc.c, debug-malloc.h,
1329 debug-malloc.x.
1330
1331 * debug-malloc.c, debug-malloc.h: New files.
1332
1333 2000-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
1334
1335 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p): Added
1336 documentation strings.
1337
1338 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p, scm_abs,
1339 scm_quotient): Reordered dispatch sequence to first handle
1340 immediates, second handle bignums and finally handle generic
1341 functions respectively signal wrong type arguments. Hopefully
1342 this will allow for easier separation when goops is integrated.
1343
1344 2000-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
1345
1346 * gc.c (which_seg): Use SCM2PTR to convert a non immediate SCM
1347 variable into a pointer to a heap cell.
1348
1349 * gc.c (scm_mark_locations, scm_cellp, init_heap_seg,
1350 scm_unhash_name): Remove redundant cast to SCM_CELLPTR.
1351
1352 2000-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
1353
1354 * print.c (scm_iprin1): Don't assign zero to SCM values, use
1355 SCM_UNDEFINED instead.
1356
1357 * weaks.c (scm_make_weak_vector): Fix assignment of zero to a
1358 vector element. (Still to be improved)
1359
1360 2000-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
1361
1362 * eval.c (undef_cell): Removed, replaced by:
1363
1364 (undef_object): Added to replace undef_cell.
1365
1366 (scm_lookupcar, scm_lookupcar1): Use undef_object.
1367
1368 * eval.c (scm_lookupcar, scm_lookupcar1, scm_m_atfop,
1369 scm_m_atbind, CHECK_EQVISH, SCM_CEVAL), procs.h (SCM_SETCODE):
1370 Don't perform arithmetic operations with SCM values.
1371
1372 * eval.c (scm_lookupcar, scm_lookupcar1, scm_m_atfop,
1373 scm_m_atbind, scm_eval_args, scm_deval_args, SCM_CEVAL): Use
1374 symbolic names for the tc3 type codes.
1375
1376 * eval.c (scm_m_define, SCM_CEVAL, SCM_APPLY): Remove redundant
1377 cast to SCM.
1378
1379 * eval.c (scm_eval_args, scm_deval_args, SCM_CEVAL): Made the
1380 access of the struct vcell element explicit.
1381
1382 2000-04-19 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1383
1384 * struct.c (scm_struct_free_light, scm_struct_free_standard,
1385 scm_struct_free_entity): Use `scm_must_free' instead of `free'.
1386
1387 * procs.c (scm_make_subr_opt): Tell scm_must_realloc that we're
1388 realloc:ing scm_subr_table ("what" instead of "who").
1389
1390 * numbers.c (scm_adjbig): Ditto.
1391
1392 Tue Apr 18 08:22:41 2000 Greg J. Badros <gjb@cs.washington.edu>
1393
1394 * validate.h: Do not cast to (unsigned) in SCM_VALIDATE_INUM_RANGE
1395 when testing high-end of the range. Mikael Djurfeldt noticed this
1396 anomaly -- thanks Mikael!
1397
1398 2000-04-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1399
1400 * unif.c (l2ra): Don't eliminate the call to scm_array_set_x
1401 itself, as was done in the previous 'patch'. (Thanks to Radey
1402 Shouman)
1403
1404 2000-04-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1405
1406 * options.c (scm_options), read.c (recsexpr): Remove redundant
1407 SCM_IMP test.
1408
1409 * print.c (scm_iprin1): Made the access of the struct vcell
1410 element explicit.
1411
1412 * print.h (SCM_PRINT_CLOSURE): Added call to SCM_PACK.
1413
1414 * ramap.c (scm_ra_eqp, ra_compare), unif.c
1415 (scm_uniform_vector_ref, scm_cvref, rapr1): Separated accesses to
1416 unsigned long and signed long arrays and clarified the way the
1417 access is performed.
1418
1419 * ramap.c (scm_array_map_x, raeql), read.c (scm_lreadr), stacks.c
1420 (narrow_stack), unif.c (scm_cvref, scm_uniform_array_read_x,
1421 scm_raprin1): Use SCM_EQ_P to compare SCM values.
1422
1423 * strings.c (scm_makstr): Treat the msymbol slots as a field of
1424 scm_bits_t values.
1425
1426 * struct.h (SCM_SET_VTABLE_DESTRUCTOR): Treat the struct data as
1427 a field of scm_bits_t values.
1428
1429 * unif.c (l2ra): Don't test result of scm_array_set_x against
1430 zero: It is always SCM_UNSPECIFIED.
1431
1432 2000-04-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1433
1434 * script.c (scm_compile_shell_switches): Also enable
1435 record-positions when given the --debug option. (Thanks to Diego
1436 Dainese.)
1437
1438 2000-04-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1439
1440 * print.c (ENTER_NESTED_DATA, print_circref, scm_iprlist):
1441 Compare SCM's with SCM_EQ_P.
1442
1443 * print.c (scm_make_print_state), srcprop.c
1444 (scm_source_properties): Use valid scheme object to initialize
1445 SCM variable.
1446
1447 * print.c (scm_iprin1): Remove redundant calls to SCM_UNPACK.
1448
1449 2000-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
1450
1451 * struct.c (scm_alloc_struct, scm_struct_free_0,
1452 scm_struct_free_light, scm_struct_free_standard,
1453 scm_struct_free_entity, scm_make_struct, scm_make_vtable_vtable),
1454 struct.h (scm_struct_free_t, scm_alloc_struct, scm_struct_free_0,
1455 scm_struct_free_light, scm_struct_free_standard,
1456 scm_struct_free_entity): Struct data regions (and thus also
1457 vtable data regions) are now C arrays of scm_bits_t elements.
1458
1459 * gc.c (scm_gc_mark, scm_gc_sweep, scm_unhash_name): Made the
1460 mixup of glocs and structs explicit.
1461
1462 * gc.c (scm_unprotect_object): Compare SCM's with SCM_EQ_P.
1463
1464 2000-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
1465
1466 * eval.c (scm_unmemocar): Use macros to test for gloc cell.
1467 Minimize scope of variable 'ir'.
1468
1469 * eval.h (SCM_IFRAME, SCM_IDIST), weaks.h (SCM_IS_WHVEC_ANY):
1470 Added missing call to SCM_UNPACK.
1471
1472 2000-04-17 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1473
1474 * validate.h (SCM_VALIDATE_INUM_RANGE_COPY,
1475 SCM_VALIDATE_NUMBER_COPY): New macros.
1476
1477 2000-04-16 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1478
1479 * script.c (scm_compile_shell_switches): Added --debug option.
1480
1481 2000-04-16 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1482
1483 * vectors.c (scm_vector_set_x): Return SCM_UNSPECIFIED (as
1484 specified by R5RS).
1485
1486 2000-04-15 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1487
1488 * ports.h (SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P): New macros.
1489 (SCM_INPORTP, SCM_OUTPORTP): Marked as deprecated.
1490
1491 * validate.h (SCM_VALIDATE_INPUT_PORT, SCM_VALIDATE_OUTPUT_PORT):
1492 New macros.
1493 Cleanup of code layout.
1494
1495 * ports.c, ports.h (close-input-port, close-output-port): New R5RS
1496 procedures.
1497
1498 2000-04-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
1499
1500 * continuations.c (scm_make_cont, scm_dynthrow): Completely
1501 separated implementations for defined (CHEAP_CONTINUATIONS) and
1502 !defined (CHEAP_CONTINUATIONS). Also, now using memcpy for stack
1503 copying.
1504
1505 * continuations.c (grow_stack): Renamed from grow_throw.
1506
1507 * continuations.c (copy_stack_and_call): New static function.
1508
1509 * continuations.c (scm_dynthrow): Simplified and made static.
1510
1511 * continuations.h (scm_dynthrow): Made static.
1512
1513 2000-04-13 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1514
1515 * unif.c, unif.h (shared-array-root, shared-array-offset,
1516 shared-array-increments): New primitives.
1517
1518 2000-04-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
1519
1520 * gc.c (scm_gc_sweep): Simplify the computation of freed memory
1521 size for msymbols.
1522
1523 * symbols.h (SCM_SLOTS, SCM_SYMBOL_FUNC, SCM_SYMBOL_PROPS,
1524 SCM_SYMBOL_HASH): The msymbol slots are now a field of scm_bits_t
1525 values.
1526
1527 * symbols.h (SCM_SET_SYMBOL_FUNC, SCM_SET_SYMBOL_PROPS): New
1528 macros.
1529
1530 symbols.c (scm_intern_obarray_soft, msymbolize, scm_symbol_fset_x,
1531 scm_symbol_pset_x): Use them.
1532
1533 * symbols.c (scm_symbol_hash): Unpack to access SCM raw data.
1534
1535 2000-04-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
1536
1537 * ports.c (scm_port_print): The port data is read as raw data.
1538
1539 * ports.h (SCM_TC2PTOBNUM, SCM_PTOBNUM): Fix SCM/scm_bits_t
1540 mismatch.
1541
1542 2000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
1543
1544 * eval.c (SCM_CEVAL), objects.c (scm_mcache_lookup_cmethod,
1545 scm_make_subclass_object), objects.h (SCM_CLASS_FLAGS,
1546 SCM_ENTITY_PROCEDURE, SCM_ENTITY_SETTER), struct.c
1547 (scm_struct_init, scm_struct_vtable_p, scm_make_struct,
1548 scm_struct_ref, scm_struct_set_x), struct.h (SCM_STRUCT_DATA):
1549 The struct data is now an array of scm_bits_t variables.
1550
1551 * objects.h (SCM_SET_ENTITY_PROCEDURE): New macro.
1552
1553 objects.c (scm_set_object_procedure_x): Use it.
1554
1555 * struct.c (scm_struct_init): Unused variable 'data' removed.
1556
1557 (scm_struct_vtable_p): Redundant SCM_IMP tests removed.
1558
1559 2000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
1560
1561 * objects.h (SCM_OBJ_CLASS_FLAGS, SCM_OBJ_CLASS_REDEF), struct.h
1562 (SCM_STRUCT_VTABLE_DATA, SCM_STRUCT_LAYOUT, SCM_STRUCT_VTABLE,
1563 SCM_STRUCT_PRINTER): The struct vtable data is now an array of
1564 scm_bits_t variables.
1565
1566 * struct.h (SCM_SET_STRUCT_LAYOUT): New macro.
1567
1568 struct.c (scm_make_vtable_vtable): Use it.
1569
1570 2000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
1571
1572 * symbols.c (scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
1573 scm_intern_obarray_soft, scm_sysintern0,
1574 scm_string_to_obarray_symbol, scm_intern_symbol,
1575 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
1576 scm_symbol_bound_p, scm_symbol_set_x): Don't use C operators to
1577 compare SCM values.
1578
1579 2000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
1580
1581 * numbers.c (scm_quotient, scm_modulo): Reordered to handle the
1582 case of immediate numbers parameters first. Also, only use
1583 decoded numbers for numerical comparison.
1584
1585 2000-04-10 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1586
1587 * objects.h: Don't redeclare scm_call_generic_0 and
1588 scm_apply_generic. (Thanks to Tal Tversky.)
1589
1590 2000-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
1591
1592 * hash.c (scm_hasher): Use symbolic names for the tc3 constants.
1593 Unpack SCM value to use it as a switch parameter. Don't cast SCM
1594 values to int values.
1595
1596 2000-04-10 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1597
1598 * coop.c (mother): Handled EINTR (the wait has been interrupted by
1599 a signal).
1600
1601 2000-04-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
1602
1603 * __scm.h (SCM_WTA_DISPATCH_[012n]): To test whether a SCM value
1604 contains a raw zero value it has to be unpacked.
1605
1606 * debug.c (with_traps_inner, scm_with_traps): Passing SCM values
1607 via void * requires unpacking / packing.
1608
1609 * stacks.h (SCM_STACKP): Remove unnecessary SCM_NIMP test and use
1610 SCM_EQ_P to compare SCM values.
1611
1612 * stacks.h (SCM_FRAME_VOID_P, SCM_FRAME_REAL_P, SCM_FRAME_PROC_P,
1613 SCM_FRAME_EVAL_ARGS_P, SCM_FRAME_OVERFLOW_P): Remove unnecessary
1614 call to SCM_UNPACK.
1615
1616 * tags.h (SCM_NECONSP): Define in terms of SCM_ECONSP
1617
1618 * tags.h (SCM_ECONSP): Clarify the test for glocs. This is still
1619 quite ugly.
1620
1621 2000-04-05 Michael Livshin <mlivshin@bigfoot.com>
1622
1623 * async.[ch]: unexpose low-level async access macros (thanks to
1624 Dirk Herrmann).
1625
1626 * validate.h: move async validation macros to async.c (nobody else
1627 needs them anyway), and rename them.
1628
1629 2000-04-04 Michael Livshin <mlivshin@bigfoot.com>
1630
1631 * async.h: kill the scm_async_t struct. having a heap cell
1632 pretending to be a C struct is not helthy, and is not needed here
1633 anyway, as asyncs happily fit in one heap cell.
1634
1635 * async.c: reflect the fact that asyncs are now represented by
1636 single heap cell each.
1637
1638 2000-04-04 Gary Houston <ghouston@arglist.com>
1639
1640 * error.c (scm_syserror): save errno before doing anything else,
1641 since it's used in two expressions and may get mutated (thanks to
1642 Dirk Herrmann).
1643
1644 2000-04-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
1645
1646 * debug.c (scm_procedure_source, scm_procedure_environment),
1647 gsubr.c (scm_make_gsubr_with_generic, scm_gsubr_apply), procs.c
1648 (scm_procedure, scm_setter): Return valid scheme value as dummy.
1649
1650 * filesys.c (scm_readdir, scm_rewinddir, scm_closedir,
1651 scm_dir_print, scm_dir_free), numbers.h (SCM_COMPLEX_REAL,
1652 SCM_COMPLEX_IMAG), regex-posix.h (SCM_RGX), throw.c (JBJMPBUF,
1653 SETJBJMPBUF, JBJMPBUF, SETJBJMPBUF, freejb, print_lazy_catch,
1654 scm_ithrow), unif.c (scm_uniform_vector_ref, scm_cvref,
1655 scm_array_set_x, rapr1), unif.h (SCM_ARRAY_V, SCM_ARRAY_BASE),
1656 vectors.h (SCM_VELTS, SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS): Use
1657 SCM_{SET_}?CELL_WORD* to access cell entries with raw data.
1658
1659 * filesys.c (scm_closedir), numbers.c (scm_addbig), numbers.h
1660 (SCM_SETNUMDIGS), throw.c (JBACTIVE, SCM_JBDFRAME,
1661 SCM_SETJBDFRAME): Read and modify data bits in cell entry #0 using
1662 SCM_{SET_}?CELL_WORD_0.
1663
1664 * filesys.c (fill_select_type, retrieve_select_type, scm_select),
1665 numbers.c (scm_gcd, scm_lcm, scm_integer_expt, scm_zero_p,
1666 scm_product, scm_divide), posix.c (scm_getgrgid), ramap.c
1667 (scm_array_fill_int, racp), throw.c (scm_catch, scm_lazy_catch,
1668 scm_ithrow), unif.c (scm_make_uve, scm_array_p,
1669 scm_transpose_array, scm_array_set_x, scm_bit_set_star_x,
1670 scm_bit_count_star, l2ra), variable.c (prin_var,
1671 scm_make_variable, scm_make_undefined_variable,
1672 scm_builtin_variable), vectors.c (scm_vector_set_length_x),
1673 vports.c (sf_flush, sf_close): Don't use C operators to compare
1674 SCM values.
1675
1676 * numbers.c (scm_odd_p, scm_even_p), variable.c (prin_var): Must
1677 unpack SCM values to access their raw contents.
1678
1679 * numbers.c (big2str): Eliminate unnecessary casts to SCM.
1680
1681 * numbers.h (SCM_NEWREAL), regex-posix.h (SCM_RGXP), vports.c
1682 (scm_make_soft_port): Use SCM_{SET_}?CELL_TYPE to access the cell
1683 type information.
1684
1685 * throw.c (printjb): Eliminated unnecessary unpack.
1686
1687 * variable.c (make_vcell_variable): Smob data is of type
1688 scm_bits_t.
1689
1690 2000-04-04 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1691
1692 * print.c: Removed promise to rewrite printer code before next
1693 release. :)
1694
1695 2000-04-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1696
1697 * iselect.c (add_fd_sets): Insert empty statement after label.
1698 (Thanks to Tim Mooney.)
1699
1700 2000-04-03 Michael Livshin <mlivshin@bigfoot.com>
1701
1702 * guardians.c (scm_guardian_zombify): mark all zombies in a
1703 separate loop after processing all the currently known live
1704 guardians, so as to not introduce order dependencies (thanks to
1705 Gary Houston). note that the order problems are still there if
1706 some guardians are themselves zombies, but that's a sick case that
1707 I'm not going to worry about.
1708 also, make another outer loop to process zombified
1709 guardians (which are uncovered while marking zombies).
1710
1711 2000-04-03 Dirk Herrmann <D.Herrmann@tu-bs.de>
1712
1713 * evalext.c (scm_definedp, scm_m_undefine), gc.c
1714 (scm_mark_weak_vector_spines, scm_gc_sweep), hashtab.c
1715 (scm_hashq_ref, scm_hashv_ref, scm_hash_ref, scm_hashx_ref),
1716 keywords.c (scm_make_keyword_from_dash_symbol), lang.c
1717 (scm_nil_eq), lang.h (SCM_NILP, SCM_NIL2EOL), load.c
1718 (scm_primitive_load), modules.c (scm_module_full_name), objects.c
1719 (scm_class_of, scm_mcache_lookup_cmethod, scm_make_class_object),
1720 ports.c (scm_close_all_ports_except), ports.h (SCM_EOF_OBJECT_P),
1721 print.c (scm_iprin1, scm_prin1, scm_iprlist, scm_simple_format),
1722 print.h (SCM_PRINT_STATE_P), procprop.c (scm_i_procedure_arity,
1723 scm_stand_in_scm_proc, scm_procedure_property,
1724 scm_set_procedure_property_x), procs.c
1725 (scm_procedure_documentation), read.c (scm_lreadr, scm_lreadparen,
1726 scm_lreadrecparen, scm_read_hash_extend), script.c
1727 (scm_compile_shell_switches), srcprop.c (scm_source_property,
1728 scm_set_source_property_x), srcprop.h (SCM_WHASHFOUNDP), stacks.c
1729 (read_frame, NEXT_FRAME, read_frames, narrow_stack,
1730 scm_make_stack, scm_stack_id), strop.c (scm_i_index,
1731 scm_string_index, scm_string_rindex), struct.c (scm_struct_init),
1732 validate.h (SCM_VALIDATE_BOOL_COPY, SCM_VALIDATE_INUM_DEF,
1733 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_PROC,
1734 SCM_VALIDATE_ARRAY): Don't use C operators to compare SCM values.
1735
1736 * feature.c (make_hook), keywords.c
1737 (scm_make_keyword_from_dash_symbol), macros.c (scm_makacro,
1738 scm_makmacro, scm_makmmacro), print.c (scm_iprin1,
1739 scm_printer_apply, scm_port_with_print_state): Smob data is of type
1740 scm_bits_t.
1741
1742 * feature.c (print_hook), gc.c (scm_object_address), hash.c
1743 (scm_ihashq, scm_ihashv), print.c (scm_iprin1, scm_ipruk), smob.c
1744 (freeprint), struct.c (scm_print_struct): Must unpack
1745 SCM values to access their raw contents.
1746
1747 * fluids.c (apply_thunk, scm_with_fluids), hashtab.c (fold_proc,
1748 scm_hash_fold), load.c (load, scm_primitive_load): Passing SCM
1749 values via void * requires unpacking / packing.
1750
1751 * fports.c (scm_fport_buffer_add, scm_setvbuf), procs.h
1752 (SCM_SUBRNUM, SCM_SET_SUBRNUM), srcprop.h (SRCPROPBRK, SRCBRKP):
1753 Read and modify data bits in cell entry #0 using
1754 SCM_{SET_}?CELL_WORD_0.
1755
1756 * fports.c (scm_fdes_to_port), gc.c (scm_gc_for_newcell,
1757 scm_gc_sweep, init_heap_seg), init.c (start_stack), ports.c
1758 (scm_void_port), procs.c (scm_make_subr_opt,
1759 scm_make_procedure_with_setter), root.c (scm_internal_cwdr),
1760 smob.c (scm_make_smob), strports.c (scm_mkstrport): Use
1761 SCM_SET_CELL_TYPE to write the cell type information.
1762
1763 * gc.c (scm_gc_mark): Use SCM_CELL_OBJECT* to access SCM values
1764 from cells that are no scheme pairs.
1765
1766 * gc.c (scm_gc_sweep), mallocs.c (prinmalloc), mallocs.h
1767 (SCM_MALLOCDATA, SCM_SETMALLOCDATA), print.c (scm_ipruk), random.h
1768 (SCM_RSTATE), root.h (SCM_ROOT_STATE), smob.c (scm_smob_free),
1769 srcprop.c (freesrcprops), srcprop.h (SRCPROPPOS, SRCPROPFNAME,
1770 SRCPROPCOPY, SRCPROPPLIST), struct.c (scm_make_struct,
1771 scm_make_vtable_vtable): Use SCM_{SET_}?CELL_WORD* to access cell
1772 entries with raw data.
1773
1774 * gc.c (scm_init_storage), sort.c (applyless), strop.c
1775 (scm_string_to_list): Eliminate unnecessary casts to SCM.
1776
1777 * mallocs.c (scm_malloc_obj): Store result of malloc as raw
1778 data.
1779
1780 * ports.c (scm_close_all_ports_except): Duplicate documentation
1781 text removed.
1782
1783 * print.c (scm_iprin1): Use SCM_ITAG3.
1784
1785 * procs.h (SCM_SET_SUBRNUM): Fix shift direction.
1786
1787 * snarf.h (SCM_GPROC, SCM_GPROC1, SCM_SYMBOL, SCM_GLOBAL_SYMBOL,
1788 SCM_KEYWORD, SCM_GLOBAL_KEYWORD, SCM_VCELL, SCM_GLOBAL_VCELL,
1789 SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT): Don't initialize globals
1790 and static variables at their point of declaration, but rather in
1791 the init function.
1792
1793 * tags.h (SCM_PACK): Automatically cast to scm_bits_t.
1794
1795 2000-04-02 Gary Houston <ghouston@arglist.com>
1796
1797 * guardians.c (TCONC_IN, scm_make_guardian): set the CDR of the
1798 empty tconc pair to SCM_EOL instead of SCM_BOOL_F, avoiding the
1799 use of an improper list (which breaks g_print. g_print isn't
1800 used).
1801 guardians.c: Added more comments and modified the make-guardian
1802 docstring. Reordered a few procedures.
1803
1804 2000-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
1805
1806 * eval.c (scm_lookupcar1, scm_lookupcar, scm_m_case, scm_m_cond,
1807 scm_m_lambda, iqq, scm_m_define, scm_m_expand_body, unmemocopy,
1808 SCM_CEVAL), procs.h (SCM_TOP_LEVEL): Don't use C operators to
1809 compare SCM values.
1810
1811 (scm_makprom): Smob data is of type scm_bits_t.
1812
1813 2000-03-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
1814
1815 * backtrace.c (display_error_body), debug.c (scm_procedure_source,
1816 scm_reverse_lookup), dynl.c (scm_dynamic_link): Don't use C
1817 operators to compare SCM values.
1818
1819 * debug.c (scm_make_debugobj), debug.h (SCM_DEBUGOBJ_FRAME,
1820 SCM_SET_DEBUGOBJ_FRAME): Update SCM_{SET_}?DEBUGOBJ_FRAME to
1821 access raw cell data with SCM_{SET_}?CELL_WORD_1.
1822
1823 * debug.c (scm_make_debugobj): Don't use SCM_SETCAR to set types.
1824
1825 * debug.c (scm_make_memoized), dynl.c (scm_dynamic_link): Smob
1826 data is of type scm_bits_t.
1827
1828 2000-03-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
1829
1830 * gdbint.c (gdb_maybe_valid_type_p), guardians.c (TCONC_EMPTYP,
1831 scm_guardian_zombify): Use SCM_EQ_P to compare SCM values.
1832
1833 * guardians.c (GUARDIAN): Use SCM_CELL_WORD_1 for raw data.
1834
1835 2000-03-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
1836
1837 * ports.h (scm_port): Change type of stream member to scm_bits_t.
1838
1839 * gdbint.c (unmark_port, remark_port), ports.c (scm_markstream),
1840 strports.c (st_resize_port, scm_mkstrport), vports (sf_flush,
1841 sf_write, sf_fill_input, sf_close, scm_make_soft_port): Since
1842 streams are now of type scm_bits_t, SCM streams have to be
1843 unpacked/packed.
1844
1845 * ports.h (SCM_SETPTAB_ENTRY, SCM_SETSTREAM): Cast input to
1846 scm_bits_t.
1847
1848 2000-03-31 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1849
1850 * coop-defs.h (struct coop_t): Added `sto'-field again because of
1851 binary compatibility---let's remove it next time we alter some
1852 major structure.
1853
1854 * coop.c (coop_quitting_p, coop_cond_create, coop_mutex_create,
1855 coop_mother, coop_child): New variables.
1856 (mother): New function.
1857 (coop_create): New thread spawning mechanism which uses a "mother
1858 thread". The "dummy" pthreads aren't healthy enough to give birth
1859 to new threads since Linux threads thinks they are asleep.
1860
1861 * coop-defs.h (struct coop_t): Removed dummy_mutex.
1862
1863 * coop-defs.h, coop-threads.c (struct coop_t): Eliminate
1864 `sto'-field when GUILE_PTHREAD_COMPAT is enabled.
1865
1866 2000-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
1867
1868 * arbiters.c (scm_make_arbiter), async.c (scm_async), dynwind.c
1869 (scm_internal_dynamic_wind): Smob data is always of type
1870 scm_bits_t.
1871
1872 * arbiters.c (SCM_ARB_LOCKED, SCM_LOCK_ARB, SCM_UNLOCK_ARB):
1873 Access the locking information in cell entry 0 with
1874 SCM_{SET_}?CELL_WORD_0 instead of SCM_*CAR.
1875
1876 * async.c (scm_run_asyncs): Use SCM_NULLP to test for the empty
1877 list.
1878
1879 * dynwind.c (scm_dowinds): Use SCM_EQ_P to compare SCM values.
1880
1881 * ports.h (SCM_PTAB_ENTRY, SCM_SETPTAB_ENTRY): Access the ptab
1882 entry data using SCM_{SET_}?CELL_WORD_1 instead of SCM_{SET}?CDR.
1883
1884 2000-03-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
1885
1886 * alist.c (scm_sloppy_assq, scm_assq), eq.c (scm_eq_p, scm_eqv_p,
1887 scm_equal_p), list.c (scm_ilength, scm_last_pair, scm_reverse,
1888 scm_sloppy_memq, scm_delq_x, scm_delq1_x), tags.h (SCM_UNBNDP):
1889 Don't use C operators == and != to compare SCM values, use
1890 SCM_EQ_P instead.
1891
1892 * boolean.c (scm_boolean_p): Use SCM_BOOLP to determine whether a
1893 SCM value is equal to #t or #f.
1894
1895 * eq.c (scm_eqv_p, scm_equal_p): Don't use SCM_CAR to access the
1896 cell type entry of non immediate objects of unknown type. Use
1897 SCM_CELL_TYPE instead.
1898
1899 * gh_data.c (gh_scm2bool, gh_module_lookup), list.c
1900 (scm_sloppy_memv, scm_sloppy_member, scm_delv_x, scm_delete_x,
1901 scm_delv1_x, scm_delete1_x), scmsigs.c (scm_sigaction): Use
1902 SCM_FALSEP and SCM_TRUE_P to compare SCM values against #f and
1903 #t.
1904
1905 * list.c (scm_listify): Use SCM_UNBNDP to test for an unbound
1906 scheme value.
1907
1908 2000-03-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1909
1910 * coop-threads.c (scm_call_with_new_thread, scm_spawn_thread,
1911 scm_make_mutex, scm_make_condition_variable): Cast data to
1912 scm_bits_t in SCM_SET_CELL_WORD and SCM_NEWSMOB macros.
1913
1914 * coop.c (coop_create): Set `specific' field, not `data' to NULL.
1915
1916 2000-03-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
1917
1918 * smob.h (SCM_NEWSMOB, SCM_NEWSMOB2, SCM_NEWSMOB3, SCM_SMOB_DATA,
1919 SCM_SET_SMOB_DATA, SCM_TC2SMOBNUM, SCM_SMOBNUM): To access smob
1920 data, use SCM_{SET_}?CELL_TYPE or SCM_{SET_}?WORD_[1-3].
1921
1922 Note that this implies that smob data has always to be passed as
1923 values of type scm_bits_t.
1924
1925 2000-03-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1926
1927 * threads.c (scm_init_threads): Pass 0 size to scm_make_smob_type
1928 for scm_tc16_thread. As the current COOP threads are written, GC
1929 is not supposed to manage storage for threads.
1930
1931 * error.c (scm_error): Don't try to throw an error if
1932 scm_gc_heap_lock is true.
1933
1934 * coop.c (coop_finish): New function. Called at exit.
1935 (coop_aborthelp): Free thread structures when threads die.
1936 Finished LinuxThreads compatibility support => COOP threads now
1937 mesh with LinuxThreads.
1938
1939 * coop-threads.c (scm_call_with_new_thread, scm_spawn_thread):
1940 Changed SETCDR --> SET_CELL_WORD_1.
1941
1942 * coop-threads.c (scheme_launch_thread): Set word 1 of handle to 0
1943 when thread dies.
1944
1945 2000-03-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
1946
1947 * boolean.h (SCM_TRUE_P): New macro.
1948
1949 * boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP), pairs.h
1950 (SCM_NULLP, SCM_NNULLP): Use SCM_EQ_P to compare SCM values.
1951
1952 2000-03-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
1953
1954 * continuations.h (SCM_CONTREGS, SCM_SET_CONTREGS): New macros to
1955 access continuation data.
1956
1957 (SCM_SETJMPBUF): Deprecated. Use SCM_SET_CONTREGS instead.
1958
1959 (SCM_JMPBUF, SCM_DYNENV, SCM_THROW_VALUE, SCM_BASE, SCM_SEQ,
1960 SCM_DFRAME): Use SCM_CONTREGS instead of SCM_CHARS to access
1961 continuation data.
1962
1963 * continuations.c (scm_make_cont), init.c (start_stack),
1964 root.c (scm_internal_cwdr): Use SCM_SET_CONTREGS instead of
1965 SCM_SETJMPBUF.
1966
1967 2000-03-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
1968
1969 * symbols.h (SCM_LENGTH, SCM_SETLENGTH): Access the length field
1970 of strings and symbols by using SCM_{SET_}?CELL_WORD_0.
1971
1972 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS): Use SCM_{SET_}?CELL_WORD_1
1973 to access the char * field of strings and symbols.
1974
1975 2000-03-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
1976
1977 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Use SCM_SET_CELL_TYPE to set
1978 the type entry of a new cell. Added a comment about things to
1979 remember when updating the list of free cells.
1980
1981 (SCM_FREEP, SCM_MARKEDP): Use SCM_CELL_TYPE to access the type
1982 entry of a cell.
1983
1984 2000-03-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
1985
1986 * pairs.h (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): Use
1987 SCM_CELL_OBJECT and SCM_SET_CELL_OBJECT. This change implies that
1988 with strict type checking enabled these macros will only work if
1989 given valid SCM parameters.
1990
1991 (SCM_GCCDR): Moved to tags.h.
1992
1993 * tags.h (SCM_GCCDR): Moved here from pairs.h.
1994
1995 2000-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
1996
1997 * tags.h (SCM2PTR, PTR2SCM): Moved to gc.h.
1998
1999 * pairs.h (scm_cell, SCM_CELLPTR, SCM_CELL_WORD*, SCM_CELL_OBJECT*,
2000 SCM_SET_CELL_WORD*, SCM_SET_CELL_OBJECT*, SCM_CELL_TYPE,
2001 SCM_SET_CELL_TYPE, SCM_PTR_LT, SCM_PTR_MASK, SCM_PTR_GT,
2002 SCM_PTR_LE, SCM_PTR_GE, SCM_CELL_WORD_LOC, SCM_NEWCELL,
2003 SCM_NEWCELL2): Moved to gc.h.
2004
2005 (SCM_CARLOC, SCM_CDRLOC, SCM_SETAND_CAR, SCM_SETAND_CDR,
2006 SCM_SETOR_CAR, SCM_SETOR_CDR): Moved to gc.h. These names should
2007 be changed, though, since the macros are not only pair related.
2008
2009 (SCMPTR): Deleted.
2010
2011 * gc.h (SCM2PTR, PTR2SCM, scm_cell, SCM_CELLPTR, SCM_CELL_WORD*,
2012 SCM_CELL_OBJECT*, SCM_SET_CELL_WORD*, SCM_SET_CELL_OBJECT*,
2013 SCM_CELL_TYPE, SCM_SET_CELL_TYPE, SCM_PTR_LT, SCM_PTR_MASK,
2014 SCM_PTR_GT, SCM_PTR_LE, SCM_PTR_GE, SCM_CELL_WORD_LOC,
2015 SCM_NEWCELL, SCM_NEWCELL2, SCM_CARLOC, SCM_CDRLOC, SCM_SETAND_CAR,
2016 SCM_SETAND_CDR, SCM_SETOR_CAR, SCM_SETOR_CDR): Moved here from
2017 tags.h and pairs.h.
2018
2019 2000-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
2020
2021 * tags.h (SCM_STRICT_TYPING): New macro that, if defined,
2022 activates strict compile time type checking for variables of
2023 type SCM.
2024 (SCM, SCM_PACK, SCM_UNPACK): Define according to whether
2025 SCM_STRICT_TYPING or SCM_VOIDP_TEST are defined.
2026 (SCM_EQ_P): Defined as a macro equivalent for eq?.
2027
2028 2000-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
2029
2030 * tags.h (SCM_POINTERS_MUNGED): Removed.
2031
2032 * gc.c (scm_gc_sweep, init_heap_seg): Removed use of
2033 SCM_POINTERS_MUNGED, thus fixing some illegal casts to SCM.
2034
2035 2000-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
2036
2037 * pairs.h (SCM_CELL_OBJECT, SCM_CELL_OBJECT_[0-3],
2038 SCM_SET_CELL_OBJECT, SCM_SET_CELL_OBJECT_[0-3], SCM_CELL_TYPE,
2039 SCM_SET_CELL_TYPE): Added a set of low level macros for accessing
2040 cell entries.
2041 (SCM_CELL_WORD_[0-3]): Renamed from the SCM_CELL_WORD[0-3].
2042
2043 * procs.h, procs.c: Instead of SCM_{SET_}?CELL_WORD[12], use the
2044 newly introduced SCM_{SET_}?CELL_OBJECT_[12] macros.
2045
2046 2000-03-23 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2047
2048 * tags.h: Disabled definition of SCM_VOIDP_TEST.
2049
2050 Defining SCM as void * introduces problems which haven't been
2051 handled yet. Developers who work with these issues can enable it
2052 in their working copies.
2053
2054 Disabling this definition exposes a set of newly introduced and
2055 older misuses of types which causes warning messages during
2056 compilation. We'll fix this successively.
2057
2058 * gc.c (scm_mark_locations): Changed * (SCM **) X --> * (SCM *) X
2059 in order to obtain a value of type SCM.
2060 (scm_cellp): Updated with new changes to scm_mark_locations.
2061
2062 * continuations.h (SCM_SETJMPBUF): Cast second arg into SCM.
2063
2064 * continuations.c (scm_make_cont): Removed cast of size_t into
2065 long.
2066
2067 * symbols.h (SCM_SETCHARS): Cast second arg into SCM.
2068
2069 2000-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
2070
2071 * numbers.h (SCM_SETNUMDIGS): Use SCM_BIGSIZEFIELD macro for
2072 shifting, not constant. Thanks to Dale P. Smith.
2073
2074 * numbers.c (scm_sum, scm_difference): Don't test a SCM value
2075 for being less than zero. Decode it to a C value first. Again,
2076 thank you Dale.
2077
2078 2000-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
2079
2080 * numbers.h, ramap.c, struct.h, vectors.h: Don't use SCM2PTR for
2081 non scheme values. If raw data is stored in SCM variables, it has
2082 to be accessed using SCM_UNPACK until a better solution is found.
2083
2084 2000-03-22 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2085
2086 * tags.h (SCM_ECONSP, SCM_NECONSP): More corrections of
2087 pointer-arithmetic induced by the SCM_PACK/UNPACK change.
2088
2089 * print.c (scm_iprin1): SCM_PACK/UNPACK corrections.
2090
2091 * gc.c (scm_gc_sweep): SCM_PACK/UNPACK corrections.
2092
2093 * eval.c (SCM_CEVAL, scm_unmemocar): SCM_PACK/UNPACK corrections.
2094
2095 * dynwind.c (scm_swap_bindings): SCM_PACK/UNPACK corrections.
2096
2097 * async.c, __scm.h: Removed lots of the old async click logic. It
2098 is possible to reinsert it by defining GUILE_OLD_ASYNC_CLICK in
2099 __scm.h. Let's try this out and dump the old code after the
2100 threads reorganization.
2101 (set-tick-rate, set-switch-rate): Conditionally removed.
2102
2103 2000-03-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2104
2105 * gc.c (scm_gc_mark): Bugfix 1: The recent SCM_PACK/UNPACK change
2106 made SCM values into pointers. This turned an arithmetic
2107 computation of the address of the vcell into a pointer-arithmetic
2108 one, thereby screwing up marking of structs.
2109 Bugfix 2: Removed incompletely introduced loop variable `j' used
2110 when protecting the tail array of a struct.
2111
2112 2000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
2113
2114 * struct.h (SCM_STRUCT_DATA): Don't cast SCM values to pointers.
2115
2116 2000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
2117
2118 * symbols.h, symbols.c (scm_strhash): Declare the string
2119 parameter as constant, since it is not modified.
2120
2121 * symbols.c (scm_intern_obarray_soft,
2122 scm_sysintern0_no_module_lookup): Can now pass constant strings
2123 to scm_strhash without need for casting.
2124
2125 2000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
2126
2127 * vectors.h (SCM_VELTS, SCM_VELTS_AS_STACKITEMS): Don't cast SCM
2128 values to pointers. Use SCM2PTR instead.
2129
2130 2000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
2131
2132 * async.c (scm_set_tick_rate, scm_set_switch_rate): Don't unpack
2133 results of SCM_INUM.
2134
2135 2000-03-21 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2136
2137 * init.c (scm_boot_guile_1): Renamed GUILE_GC_TRIGGER_1 -->
2138 GUILE_MIN_YIELD_1, GUILE_GC_TRIGGER_2 --> GUILE_MIN_YIELD_2.
2139 GUILE_MIN_YIELD_X now take *positive* fractions of heap size.
2140
2141 * gc.c, gc.h (SCM_MIN_YIELD_1, SCM_MIN_YIELD_2,
2142 min_yield_fraction, min_yield, adjust_min_yield): Renamed from
2143 SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2, gc_trigger_fraction,
2144 gc_trigger, adjust_gc_trigger.
2145
2146 * gc.c (alloc_some_heap): Further improvement of minimal heap size
2147 prediction.
2148 (SCM_MAX): New macro.
2149 (scm_freelist_t): New field: collected_1. Previous amount of
2150 collected cells.
2151 (gc_sweep_freelist_finish): Trigger based on two last values of
2152 freelist->collected to avoid unnecessary allocation due to
2153 temporary peaks.
2154 (SCM_INIT_HEAP_SIZE_1, SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2):
2155 Adjusted to 45000 cells, 40% and 40%. Gives quick startup
2156 without extra heap allocation.
2157
2158 2000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
2159
2160 * numbers.h (SCM_MAKINUM): The parameter to SCM_MAKINUM should
2161 already be a C value. No need to unpack it.
2162
2163 * numbers.c (scm_long_long2num): Cast the parameter to scm_bits_t
2164 if we know it fits into an inum.
2165
2166 * ramap.c (ramap_rp): An scm_tc7_[ui]vect object does point to a
2167 field of long values. In contrast, SCM_VELTS accesses a field of
2168 SCM values.
2169
2170 2000-03-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2171
2172 * gc.c (scm_gc_stats): Inserted explanation of local_scm_mtrigger
2173 etc.
2174 (scm_gc_yield_1): New variable: Holds previous yield. Used to
2175 make better judgements.
2176 (gc_sweep_freelist_finish): Inserted explanation of use of
2177 gc_trigger.
2178
2179 * print.h, stacks.h, options.c, options.h: Changed C++
2180 commentaries to C.
2181
2182 2000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
2183
2184 * tags.h (SCM2PTR, PTR2SCM): Use SCM_PACK / SCM_UNPACK correctly.
2185
2186 * numbers.h (SCM_INUMP, SCM_MAKINUM, SCM_INUM0, SCM_COMPLEX_REAL,
2187 SCM_COMPLEX_IMAG, SCM_NUMP, SCM_BDIGITS): Use SCM_PACK /
2188 SCM_UNPACK / SCM2PTR correctly.
2189
2190 2000-03-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2191
2192 * gc.c (adjust_gc_trigger): Improved documentation.
2193 (alloc_some_heap): Since gc_trigger is used against
2194 freelist->collected, this is the value which should be used to
2195 predict minimum growth.
2196
2197 2000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
2198
2199 * eval.h: Fix mixup of packed/unpacked SCM values. (Thanks
2200 Thien-Thi Nguyen for the patch.)
2201
2202 2000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
2203
2204 * numbers.c (scm_ash): Fixed typing problems with the second
2205 parameter and added some documentation. (Thanks Thien-Thi Nguyen
2206 for indicating the problem.)
2207
2208 2000-03-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2209
2210 * gc.c, gc.h (scm_gc_yield): New variable.
2211 (adjust_gc_trigger): Use scm_gc_yield.
2212 (alloc_some_heap): Use scm_gc_yield instead of
2213 scm_gc_cells_collected.
2214
2215 * coop-threads.c: Addd #include "root.h", #include "strings.h".
2216
2217 * debug.c: Added #include "root.h". (Thanks to Thien-Thi Nguyen.)
2218
2219 * gc.c (scm_gc_for_newcell, adjust_gc_trigger): Improved GC
2220 trigger adjustmeant: Take yield (freed cells) for all freelists
2221 into account.
2222 (SCM_INIT_HEAP_SIZE_1, SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2): Tuned
2223 to 50000 cell heap with 45% trigger.
2224 (scm_gc_cells_collected): Reintroduced.
2225 (SCM_HEAP_SIZE): New macro.
2226 (scm_gc_sweep): Reintroduced correct computation of
2227 scm_cells_allocated.
2228 (scm_freelist_t): Corrected commentary for field `cluster_size':
2229 Clustersize counts objects, not cells; New member
2230 `clusters_allocated'.
2231
2232 2000-03-19 Michael Livshin <mlivshin@bigfoot.com>
2233
2234 * *.[hc]: add Emacs magic at the end of file, to ensure GNU
2235 indentation style.
2236
2237 2000-03-19 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2238
2239 * threads.h: Added #include "libguile/throw.h". (Thanks to
2240 Thien-Thi Nguyen.)
2241
2242 2000-03-18 Michael Livshin <mlivshin@bigfoot.com>
2243
2244 * tags.h: (SCM_DOUBLE_CELLP, SCM_NDOUBLE_CELLP): new macros (bad
2245 names, anyone got any better ones?)
2246
2247 * gc.h: (typedef struct scm_freelist_t) remove from here.
2248
2249 * gc.c: (CELL_UP, CELL_DN) made these macros take additional
2250 parameter (the span).
2251 (CLUSTER_SIZE_IN_BYTES, ALIGNMENT_SLACK) new macros.
2252 (typedef struct scm_freelist_t) moved here from gc.h, it had no
2253 business being externally visible.
2254 (typedef struct scm_heap_seg_data_t) renamed from
2255 scm_heap_seg_data, to be style-compliant.
2256 (scm_mark_locations) if the possible pointer points to a
2257 double-cell, check that it's properly aligned.
2258 (init_heap_seg) align double-cells properly, work with the
2259 assumption that the segment size divides cleanly by cluster size.
2260 (round_to_cluster_size) new function.
2261 (alloc_some_heap, make_initial_segment) use round_to_cluster_size
2262 to satisfy the new init_heap_seg invariant.
2263
2264 2000-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2265
2266 * _scm.h: Don't include async.h everywhere...
2267
2268 * eq.c eval.c iselect.c: ... only include it here.
2269
2270 2000-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2271
2272 * _scm.h: Don't include root.h everywhere...
2273
2274 * async.c continuations.c eq.c eval.c evalext.c feature.c gc.c
2275 gdbint.c gsubr.c ioext.c keywords.c lang.c load.c macros.c
2276 numbers.c objprop.c ports.c print.c procprop.c ramap.c read.c
2277 srcprop.c stackchk.c stacks.c strports.c symbols.c unif.c
2278 variable.c vectors.c vports.c: ... only include it here.
2279
2280 2000-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
2281
2282 * _scm.h: Don't include strings.h everywhere...
2283
2284 * backtrace.c dynl.c error.c feature.c filesys.c fports.c gc.c
2285 gdbint.c ioext.c load.c net_db.c numbers.c objects.c options.c
2286 ports.c posix.c print.c procs.c random.c read.c regex-posix.c
2287 simpos.c socket.c stacks.c stime.c strop.c strports.c struct.c
2288 symbols.c unif.c vectors.c version.c vports.c: ... only include it
2289 here.
2290
2291 2000-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
2292
2293 * _scm.h: Don't include ports.h everywhere...
2294
2295 * arbiters.c backtrace.c debug.c dynl.c dynwind.c eval.c feature.c
2296 fluids.c gc.c gdbint.c guardians.c hash.c keywords.c mallocs.c
2297 numbers.c objects.c print.c read.c root.c smob.c srcprop.c
2298 stackchk.c strports.c struct.c throw.c variable.c: ... only
2299 include it here.
2300
2301 2000-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
2302
2303 * _scm.h: Don't include vectors.h everywhere...
2304
2305 * eq.c eval.c filesys.c gc.c gsubr.c guardians.c hash.c hashtab.c
2306 keywords.c net_db.c numbers.c objects.c posix.c print.c procprop.c
2307 procs.c ramap.c random.c read.c scmsigs.c socket.c sort.c stime.c
2308 strports.c symbols.c unif.c vports.c weaks.c: ... only include it
2309 here.
2310
2311 2000-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
2312
2313 * genio.h: removed. (Only content was '/* delete me */'.)
2314
2315 * Makefile.am arbiters.c backtrace.c debug.c dynl.c dynwind.c
2316 error.c filesys.c fluids.c gc.c gsubr.c guardians.c keywords.c
2317 libguile.h mallocs.c numbers.c print.c random.c read.c root.c
2318 srcprop.c stackchk.c struct.c threads.c throw.c variable.c:
2319 Removed reference to genio.h
2320
2321 2000-03-17 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2322
2323 * gc.c, gc.h: Cleanup of the change of 2000-03-15.
2324 Cluster sizes are now independent of GC trigger values.
2325 GUILE_GC_TRIGGER_n can now specify a relative trigger value:
2326 A negative integer gives fraction of total heap size in percent.
2327 (SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2): Default values set to -40.
2328
2329 * init.c (scm_boot_guile_1): Introduced new variable
2330 GUILE_MAX_SEGMENT_SIZE; New environment variable names:
2331 GUILE_INIT_SEGMENT_SIZE_1, GUILE_GC_TRIGGER_1,
2332 GUILE_INIT_SEGMENT_SIZE_2, GUILE_GC_TRIGGER_2
2333
2334 2000-03-16 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2335
2336 * __scm.h (GC_FREE_SEGMENTS): Disable this until we have made
2337 freeing of segment work with the new GC scheme. (Thanks to
2338 Michael Livshin.) Oops, also happened to make GUILE_NEW_GC_SCHEME
2339 the default, but I'll let this change stay in CVS Guile since this
2340 code is not expected to contain serious bugs.
2341
2342 2000-03-16 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2343
2344 * gc.c, gc.h (scm_map_free_list): Define also if GUILE_DEBUG is
2345 defined.
2346 (scm_free_list_length): New procedure (GUILE_DEBUG).
2347 Fixed a small but serious bug introduced by the previous change.
2348
2349 * gc.c (scm_gc_sweep): Moved variable n_objects to inner sweep
2350 loop and declare as register.
2351
2352 * gc.c (scm_gc_sweep): Sigh... forgot to clear private freelists
2353 after GC.
2354
2355 Wed Mar 15 08:27:04 2000 Greg J. Badros <gjb@cs.washington.edu>
2356
2357 * fluids.c: Docstring patch from Keisuke Nishida. Some
2358 reindentation, too, and a couple formals renamed. Should
2359 fluid-set! return UNSPECIFIED instead of a value?
2360
2361 Wed Mar 15 08:24:58 2000 Greg J. Badros <gjb@cs.washington.edu>
2362
2363 * Makefile.am: Separate out DOT_X_FILES and DOT_DOC_FILES, and
2364 generate the latter from the concrete listing of the former. Then
2365 make guile-procedures.txt depend on DOT_DOC_FILES instead of
2366 *.doc, so that rebuilding it works.
2367
2368 Wed Mar 15 08:12:14 2000 Greg J. Badros <gjb@cs.washington.edu>
2369
2370 * libguile.h: Include libguile/validate.h. Thanks Keisuke Nishida!
2371
2372 * guile-snarf.awk.in: Replace docstring line-ending \n" and \n\n"
2373 with nothing and \n, respectively. Thanks Keisuke Nishida for
2374 noticing this problem.
2375
2376 2000-03-15 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2377
2378 * __scm.h (GUILE_NEW_GC_SCHEME): Define this if you want to test a
2379 new way of allocating heap. It makes Guile fast, but still
2380 contains bugs.
2381
2382 * gc.c, gc.h, pairs.h, init.c: Implementation of a new way of
2383 allocating heap. The basic idea is to trigger GC every Nth
2384 allocated cell and grow heap when free list runs out. The scheme
2385 has been extended so that GC isn't triggered until all remaining
2386 cells are used. The implementation is also prepared for
2387 development in the direction of POSIX threads.
2388
2389 * gc.c (SCM_EXPHEAP): In order to grow by a factor of 1.5,
2390 SCM_EXPHEAP should return half of the heap size.
2391
2392 2000-03-14 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2393
2394 The following change to init.c is only enabled if Guile was
2395 configured with --enable-guile-debug.
2396
2397 * init.c (scm_i_getenv_int): New function.
2398 (scm_boot_guile_1): Use the environment variables
2399 GUILE_INIT_HEAP_SIZE, GUILE_INIT_HEAP_SIZE2 to select heap size if
2400 they exist. (This may be replaced by a Scheme level mechanism in
2401 the future.)
2402
2403 * objprop.c (s_scm_set_object_property_x): Use scm_assq instead of
2404 scm_assoc. (Thanks to Keisuke Nishida.)
2405
2406 2000-03-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2407
2408 * eval.c, lang.c, lang.h (scm_lisp_nil, scm_lisp_t): Renamed from
2409 scm_nil, scm_t. (Thanks to Keisuke Nishida.)
2410
2411 2000-03-14 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2412
2413 * init.c (scm_boot_guile_1): Use same initial segment size for
2414 1-word and 2-word segments. Having the smaller size causes Guile
2415 to GC too often. Obviously something needs to be done to allow
2416 for a smaller 2-word segment without this to happen. (The amount
2417 of heap for each type should be automatically adapted to the
2418 application somehow.)
2419
2420 [Almost all of these changes should be documented in the NEWS
2421 file.]
2422
2423 * gc.h (scm_freelist_t): New type.
2424
2425 * pairs.h (SCM_NEWCELL, SCM_NEWCELL2): Use new style freelists.
2426
2427 * gc.c (SCM_INIT_HEAP_SIZE): Changed from 32768 --> 40000 so that
2428 all of Guile basics fits into one segment and there suitable room
2429 for work.
2430 (SCM_EXPHEAP): Now takes an argument. Grow by a factor of 1.5
2431 instead of 2.
2432 (scm_freelist, scm_freelist2): Now of type scm_freelist_t.
2433 Freelists now contains information about object span, cells
2434 collected and amount of cells in heap segments belonging to the
2435 list.
2436 (scm_heap_size, scm_gc_cells_collected): Removed.
2437
2438 * init.c (scm_boot_guile_1): Make 2-word segment 8K (512 cells).
2439
2440 * Makefile.am (libguile_la_LDFLAGS): Bumped library version
2441 number.
2442
2443 * __scm.h eq.c, eval.c, gc.c, gc.h, gh_data, hash.c, numbers.c,
2444 numbers.h, objects.c, ramap.c, random.c, unif.c, unif.h: Extensive
2445 rewrite of handling of real and complex numbers.
2446 (SCM_FLOATS, SCM_SINGLES): These #ifdef conditionals have been
2447 removed along with the support for floats. (Float vectors are
2448 still supported.)
2449
2450 * tags.h (scm_tcs_bignums): Removed.
2451 (scm_tc16_bigpos, scm_tc16_bigneg): Replaced by scm_tc16_big.
2452 Use SCM_BIGSIGN(x) to test for sign!
2453 (scm_tc16_big): The new bignum type.
2454 (SCM_REAL_PART, SCM_IMAG_PART): Removed.
2455
2456 * numbers.h (SCM_BIGSIGN): Sign moved to bit 16.
2457 (scm_makdbl): Deprecated.
2458 (SCM_NEWREAL, SCM_NEWCOMPLEX): New macros.
2459 (SCM_SINGP): Deprecated.
2460 (SCM_FLO): Removed.
2461 (SCM_INEXP, SCM_CPLXP): Deprecated.
2462 (SCM_INEXACTP, SCM_COMPLEXP): New macros.
2463 (SCM_COMPLEX_REAL, SCM_COMPLEX_IMAG): Renamed from
2464 SCM_REAL, SCM_IMAG (and now only valid for complex numbers).
2465 (SCM_REAL, SCM_IMAG): New, *deprecated*, selectors which work both
2466 for doubles and complex numbers.
2467 (SCM_REAL_VALUE): New selector for doubles.
2468 (scm_double_t, scm_complex_t): New types.
2469 (scm_dbl): Removed.
2470
2471 * numbers.c (scm_floprint, scm_floequal): Removed.
2472 (scm_print_real, scm_print_complex, scm_real_equalp,
2473 scm_complex_equalp): New functions.
2474
2475 * unif.c (scm_makflo): Removed.
2476
2477 * smob.h (SCM_SMOB_PREDICATE): New macro.
2478 (SCM_NEWSMOB2, SCM_RETURN_NEWSMOB2, SCM_NEWSMOB3,
2479 SCM_RETURN_NEWSMOB3): New macros.
2480
2481 1999-11-21 Michael Livshin <mlivshin@bigfoot.com>
2482
2483 The following changes implement primitive support for double cells
2484 (i.e. four-word cells) and change the representation of some
2485 things to multi-cells instead of cons+malloc. (Applied and
2486 modified by mdj.)
2487
2488 * pairs.h (SCM_NEWCELL2): double-cell variants of SCM_NEWCELL.
2489 (SCM_CELL_WORD, SCM_CELL_WORDLOC, SCM_SET_CELL_WORD): primitive
2490 multi-cell access macros (used by the ones below).
2491 (SCM_CELL_WORD[0-3], SCM_SET_CELL_WORD[0-3]): multi-cell access
2492 macros.
2493
2494 * gc.c (scm_freelist2): multi-cell freelists.
2495 (inner_map_free_list): map_free_list, parameterized on ncells.
2496 "nn cells in segment mm" was misleading for ncells > 1; changed to
2497 "objects". still print cells too, though.
2498 (scm_map_free_list): rewritten using inner_map_free_list.
2499 (scm_check_freelist): get freelist as parameter, since now we have
2500 more than one.
2501 (scm_debug_newcell2): multi-cell variants of
2502 scm_debug_newcell.
2503 (scm_gc_for_newcell): take ncells and freelist pointer as
2504 parameters.
2505 (scm_gc_mark): add case for tc7_pws (procedures with setters are
2506 now double cells).
2507 (scm_gc_sweep): don't free the float data, since it's not malloced
2508 anymore.
2509 (init_heap_seg): didn't understand what n_new_objects stood for,
2510 so changed to n_new_cells.
2511 (make_initial_segment): new function, makes an initial segment
2512 according to given ncells.
2513 (scm_init_storage): call make_initial_segment, for ncells={1,2,3}.
2514
2515 * numbers.c (scm_makdbl): no malloc'ing needed, so the
2516 {DEFER,ALLOW}_INTS thing removed.
2517
2518 * numbers.h (struct scm_dbl): changed to represent a double cell,
2519 with the number in the second half.
2520
2521 * dynwind.c: changed the wind-guards representation to double
2522 cell.
2523
2524 * procs.c, procs.h: changed the procedure-with-setter representation
2525 to double cell.
2526
2527 * async.c, async.h: made async representation a double cell.
2528
2529 * dynl.c: made dynamic_obj representation a double cell.
2530
2531 2000-03-13 Gary Houston <ghouston@arglist.com>
2532
2533 * ports.c (flush_void_port): renamed to flush_port_default.
2534 (end_input_void_port): renamed to end_input_default.
2535
2536 * init.c (scm_standard_stream_to_port): create a void port instead
2537 of opening /dev/null if the standard file descriptors are bad.
2538 advantages: no portability problems, doesn't waste a file descriptor,
2539 simplifies the code (thanks to Marius for the idea).
2540
2541 * vports.c (s_scm_make_soft_port): call scm_port_non_buffer.
2542
2543 * void ports: make reading from a void port give EOF instead of
2544 segv:
2545 * ports.c (s_scm_sys_make_void_port): modified docstring.
2546 (fill_input_void_port): new proc.
2547 (scm_init_ports): set up fill_input_void_port.
2548 * ports.c (scm_port_non_buffer): new proc.
2549 (scm_void_port): call scm_port_non_buffer.
2550
2551 * fports.c (scm_setvbuf): docstring: remove the fcntl documentation
2552 which was incorrectly appended.
2553
2554 2000-03-13 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2555
2556 * guile-doc-snarf.in: Don't use absolute path for `sed'. (Note
2557 that we can't use autoconf for this. Autoconf itself relies on
2558 the existence of `sed' somewhere on your path.) (Thanks to Dirk
2559 Herrman.)
2560
2561 2000-03-13 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2562
2563 * Makefile.am (libguile_la_SOURCES): Moved iselect.c here from
2564 EXTRA_libguile_la_SOURCES.
2565
2566 * iselect.h: Always declare scm_internal_select.
2567
2568 * iselect.c (scm_internal_select): Added SCM_ASYNC_TICK at the
2569 end. Also let scm_internal_select be a real function also when
2570 not using threads.
2571
2572 * __scm.h (SCM_TICK): Oops! Forgot to put SCM_ASYNC_TICK here...
2573
2574 2000-03-13 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2575
2576 * __scm.h (SCM_ALLOW_INTS, SCM_REALLOW_INTS): Removed call to
2577 SCM_ASYNC_TICK. (This is a preparation for POSIX threads support,
2578 and kind of an experiment: Will this cause problems?)
2579
2580 Sun Mar 12 13:26:30 2000 Greg J. Badros <gjb@cs.washington.edu>
2581
2582 * Makefile.am: Added *.doc to DISTCLEANFILES.
2583
2584 2000-03-12 Gary Houston <ghouston@arglist.com>
2585
2586 * fports.c (scm_fdes_to_port): call fcntl F_GETFL to test that
2587 the fdes is valid before doing anything else. check that
2588 the file descriptor supports the modes required.
2589 (scm_fport_buffer_add): don't throw an error if fstat doesn't
2590 work: just use the default buffer size.
2591
2592 * throw.c: change an outdated comment about scm_internal_catch
2593 BODY: it doesn't take a jumpbuf arg.
2594
2595 * init.c (scm_standard_stream_to_port): install a handler in case
2596 scm_fdes_to_port throws an error. don't check here whether the
2597 file descriptor is valid, since scm_fdes_to_port will do that.
2598 set the revealed count depending on whether the port got the
2599 standard file descriptor.
2600 (stream_body_data): new type.
2601 (stream_body, stream_handler): new procs.
2602
2603 2000-03-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2604
2605 * stacks.c, stacks.h, struct.c, tags.h, unif.c (scm_bits_t):
2606 Renamed from SCMWORD.
2607
2608 * tags.h (SCM_NCELLP): Removed (SCMWORD).
2609
2610 * arbiters.c (SCM_ARB_LOCKED): Use SCM_UNPACK_CAR.
2611
2612 * async.c, boolean.h, debug.c, dynl.c, dynwind.c, eval.c, eval.h,
2613 feature.h, filesys.h, fluids.h, fports.c, fports.h, gc.c, gc.h,
2614 hash.c, keywords.h, macros.c, numbers.c, numbers.h, objects.c,
2615 objects.h, options.c, pairs.h, ports.c, ports.h, print.c,
2616 procs.h, ramap.c, read.c, smob.c, smob.h, srcprop.h, stacks.c,
2617 stacks.h, strports.c, struct.c, struct.h, tag.c, tags.h,
2618 throw.c, unif.c, unif.h, variable.h, vectors.h, weaks.c,
2619 weaks.h (SCM_PACK, SCM_UNPACK, SCM_UNPACK_CAR): Renamed from
2620 SCM_ASSCM, SCM_ASWORD, SCM_CARW).
2621
2622 * numbers.h (SCM_SRS, SCM_INUM): Corrected SCM_ASSCM/ASWORD fixes.
2623
2624 * alist.c, eval.c, net_db.c, posix.c, print.c, snarf.h, struct.c,
2625 tags.h: Fixed copyright notices.
2626
2627 * struct.c, coop-threads.c: SCM_ASSCM/ASWORD fixes.
2628
2629 2000-03-12 Marius Vollmer <mvo@zagadka.ping.de>
2630
2631 * init.c (scm_standard_stream_to_port): Check whether the file
2632 descriptor is valid and substitute "/dev/null" when not.
2633
2634 2000-03-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2635
2636 * coop-defs.h (struct timespec): Conditionally defined.
2637
2638 * coop.c (coop_condition_variable_timed_wait_mutex): Use ETIMEDOUT
2639 instead of ETIME.
2640
2641 * readline.c (match_paren): Bugfix: First arg to select is not
2642 number of descriptors but the number of the highest descriptor +
2643 1.
2644
2645 This is a preliminary attempt at a cleanup of the threads support
2646 code. It moves things to better places, makes arguments more
2647 consistent with the POSIX API (which is used in GNOME's glib), and
2648 adds new functionality.
2649
2650 * readline.c (scm_init_readline): Added new arg to scm_init_mutex.
2651
2652 * coop-defs.h (scm_mutex_trylock): New macro: alias for
2653 coop_mutex_trylock.
2654 (scm_cond_init): Changed definition to
2655 coop_new_condition_variable_init.
2656
2657 * coop.c: #include <errno.h>
2658 (coop_timeout_qinsert): Moved here from iselect.c
2659 (coop_new_mutex_init, coop_new_condition_variable_init): New
2660 functions. The strange names are temporary. Use scm_mutex_init
2661 and scm_cond_init instead.
2662 (coop_mutex_trylock): New function. Uses errno.h:EBUSY. errno.h
2663 is ANSI C, but should we check for individual error codes in
2664 configure.in?
2665 (coop_condition_variable_timed_wait_mutex): New function.
2666 (coop_key_create, coop_setspecific, coop_getspecific,
2667 coop_key_delete): New functions.
2668
2669 * iselect.c (coop_timout_qinsert): Moved to coop.c
2670
2671 2000-03-11 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2672
2673 * pairs.h (SCM_SETAND_CAR, SCM_SETAND_CDR, SCM_SETOR_CAR,
2674 SCM_SETOR_CDR): Corrected SCM_ASSCM/WORD fixes.
2675
2676 * tags.h (SCM_VOIDP_TEST): Renamed from VOIDP_TEST.
2677 Layout cleanups.
2678
2679 * objects.h (SCM_CLASS_FLAGS, SCM_OBJ_CLASS_FLAGS,
2680 SCM_SET_CLASS_INSTANCE_SIZE), struct.h (SCM_STRUCT_VTABLE_DATA),
2681 proc.h (SCM_CLOSCAR): SCM_ASSCM/WORD fixes.
2682
2683 * eval.c (scm_lookupcar1): Inserted SCM_ASWORD in expressions
2684 dealing with ilocs.
2685
2686 2000-03-11 Dale P. Smith <dpsm@en.com>, applied by Greg J. Badros, <gjb@cs.washington.edu>
2687
2688 * numbers.c (scm_copy_big_dec, scm_copy_smaller, scm_big_ior,
2689 scm_big_xor, scm_big_and, scm_big_test): Added new lowlevel bignum
2690 logical functions from SCM.
2691
2692 (logand, logior, logxor, logtest, logbit?): Extended scheme
2693 logical functions to use bignums from SCM.
2694
2695 (lognot): Removed call to `SCM_VALIDATE_INUM' that prevented
2696 lognot from using bignums.
2697
2698 Thu Mar 9 11:33:25 2000 Greg J. Badros <gjb@cs.washington.edu>
2699
2700 * vectors.h (SCM_VELTS_AS_STACKITEMS): Added this macro to help in
2701 eliminating some warnings.
2702
2703 * unif.c, strports.c, print.c, options.c: Fix some warnings on
2704 mis-use of SCM/long
2705
2706 * gc.c, gc.h: Added scm_return_first_int(), and added comment re:
2707 what the scm_return_first* functions do.
2708
2709 2000-03-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>, applied by Greg J. Badros, <gjb@cs.washington.edu>
2710
2711 * libguile/*.[ch]: make a distinction between SCM as a generic
2712 name for a Scheme object (now a void*), and SCM as 32 bit word for
2713 storing tags and immediates (now a long int). Introduced
2714 SCM_ASWORD and SCM_ASSCM for conversion. Fixed various dubious
2715 code in the process: arbiter.c (use macros), unif.c (scm_array_p),
2716
2717 Wed Mar 8 10:15:59 2000 Greg J. Badros <gjb@cs.washington.edu>
2718
2719 * numbers.c: Use SCM_VALIDATE_LONG_COPY, and longs, not ints, in
2720 various logXXX primitives. Thanks Eric Moore!
2721
2722 Tue Mar 7 08:05:22 2000 Greg J. Badros <gjb@cs.washington.edu>
2723
2724 * run-test, remaining-docs-needed: Added these scripts. The
2725 second one is only temporary until the docstring additions are
2726 complete. run-test may best live on, but is here mostly for
2727 convenience and awareness for now.
2728
2729 * hash.c: Docs, minor cleanup patch from Dirk Herrman.
2730
2731 Thu Mar 2 16:06:58 2000 Greg J. Badros <gjb@cs.washington.edu>
2732
2733 * error.h, error.c: Added `scm_wrong_type_arg_msg' to support
2734 displaying the expected type. Use SCM_LISTn in a couple places
2735 instead of scm_cons-ing by hand.
2736
2737 * __scm.h: Added SCM_ASSERT_TYPE macro.
2738
2739 * validate.h, scm_validate.h: Added the former, as a renamed
2740 version of the latter with SCM_ASSERT_TYPE used in
2741 SCM_MAKE_VALIDATE (instead of just SCM_ASSERT)
2742
2743 * Makefile.am: Rename scm_validate.h to validate.h.
2744
2745 * *.c, *.h: Include validate.h, not scm_validate.h (old name's
2746 prefix was superfluous).
2747
2748 Thu Mar 2 15:33:12 2000 Greg J. Badros <gjb@cs.washington.edu>
2749
2750 * hashtab.c: Improved documentation for lots of functions. Added
2751 handwritten docs for `hash-fold'.
2752
2753 Thu Mar 2 15:13:25 2000 Greg J. Badros <gjb@cs.washington.edu>
2754
2755 * list.c: Added hand-written docs for `del{q,v,ete}1!'.
2756
2757 Thu Mar 2 12:38:30 2000 Greg J. Badros <gjb@cs.washington.edu>
2758
2759 * list.c: Moved append docs to append! Thanks Dirk Hermann. Also,
2760 added append docs from R4RS.
2761
2762 * strings.c: Docstring typo fix, + eliminate unneeded IMP tests.
2763 Thanks Dirk Hermann!
2764
2765 * chars.h: Provide SCM_CHARP, SCM_CHAR, SCM_MAKE_CHAR and
2766 deprecate SCM_ICHRP, SCM_ICHR, SCM_MAKICHR. Thanks Dirk Hermann!
2767
2768 * *.h, *.c: Use SCM_CHARP, SCM_CHAR, SCM_MAKE_CHAR throughout.
2769 Drop use of SCM_P for function prototypes... assume an ANSI C
2770 compiler. Thanks Dirk Hermann!
2771
2772 Sat Feb 19 12:20:12 2000 Greg J. Badros <gjb@cs.washington.edu>
2773
2774 * ports.c: Made `set-port-column!' and `set-port-line!' each
2775 return SCM_UNSPECIFIED instead of a (not-scheme-object) integer
2776 that caused a seg fault. Also fixed `set-port-column!'s
2777 docstring. Thanks Han-Wen Nienhuys for finding the bug!
2778
2779 Sun Feb 13 19:11:42 2000 Greg J. Badros <gjb@cs.washington.edu>
2780
2781 * arbiters.c, eq.c, gc.c, guardians.c, list.c, ports.c, print.c,
2782 regex-posix.c, scmsigs.c, stime.c, strings.c, variable.c, stime.c,
2783 strings.c, variable.c: Added lots of documentation, cleaned up
2784 some existing documentation. Occasionally changed formal params
2785 to match docs. Also folded an #ifdef into the inners of a
2786 primitive instead of having two copies of the primitive
2787 (`get-internal-real-time', from stime.c)
2788
2789 Sun Feb 13 18:12:19 2000 Greg J. Badros <gjb@cs.washington.edu>
2790
2791 * ports.c: Added docs for primitives missing them. Written by
2792 hand.
2793
2794 Sun Feb 13 09:40:36 2000 Greg J. Badros <gjb@cs.washington.edu>
2795
2796 * guile-doc-snarf.in: Use ${AWK} -f guile-func-name-check, not
2797 just execing guile-func-name-check. Thanks Michael Livshin!
2798
2799 Thu Feb 10 11:43:23 2000 Greg J. Badros <gjb@cs.washington.edu>
2800
2801 * guile-snarf.awk.in: Tweak to work with Sun/HP awk, removed some
2802 dead code. Patch from Michael Livshin.
2803
2804 * guile-doc-snarf.in: Tweak to work with Sun/HP sh. Patch from
2805 Michael Livshin.
2806
2807 2000-02-09 Gary Houston <ghouston@arglist.com>
2808
2809 * init.c (scm_init_standard_ports): when stdout is a tty, make the
2810 current-output-port unbuffered by default. this is less confusing
2811 for interactive use. it was line-buffered because of a
2812 performance problem with unbuffered ports, but I think it will be
2813 OK now.
2814
2815 2000-02-08 Gary Houston <ghouston@arglist.com>
2816
2817 * __scm.h: don't define long_long or ulong_long if HAVE_LONG_LONGS
2818 is not defined.
2819
2820 * stime.c (scm_localtime, scm_mktime): if neither HAVE_TM_ZONE nor
2821 HAVE_TZNAME are defined, use an empty string instead of giving two
2822 spurious compile-time errors.
2823
2824 Tue Feb 8 13:57:46 2000 Greg J. Badros <gjb@cs.washington.edu>
2825
2826 * ports.c: Doc patches from Richard Kim. Pasted from MIT Scheme.
2827 Thanks Richard!
2828
2829 Mon Feb 7 09:07:31 2000 Greg J. Badros <gjb@cs.washington.edu>
2830
2831 * macros.c: Doc patches from Richard Kim. Pasted from scm.texi.
2832
2833 Sun Feb 6 20:26:21 2000 Greg J. Badros <gjb@cs.washington.edu>
2834
2835 * pairs.c: Doc patches from Richard Kim. Pasted from MIT Scheme
2836 (which is GNU GPL'd).
2837
2838 2000-01-31 Gary Houston <ghouston@arglist.com>
2839
2840 * strings.h: don't use SCM_P. don't include <string.h>.
2841 * error.c, gh_data.c, ports.c, script.c, strop.c: include <string.h>.
2842
2843 * strings.c (scm_string_ref): make the 2nd argument compulsory.
2844 previously it defaulted to zero for no good reason that I can see.
2845 use a local variable for SCM_INUM (k). replace
2846 SCM_VALIDATE_INUM_DEF with SCM_VALIDATE_INUM_COPY.
2847
2848 (scm_makfromstr): cosmetic changes.
2849
2850 (scm_string): Accept only chars in the list, not strings, for
2851 conformance to R5RS (particularly for list->string, which is
2852 supposed to be the inverse of string->list.) remove
2853 SCM_DEFER_INTS/SCM_ALLOW_INTS, which is unnecessary since
2854 scm_makstr handles the cell allocation. when reporting wrong-type
2855 arg, don't report the position as 1.
2856
2857 * posix.c (scm_init_posix): intern PIPE_BUF if it's defined.
2858
2859 2000-01-29 Gary Houston <ghouston@arglist.com>
2860
2861 * posix.c (scm_pipe): rewrote the docstring.
2862
2863 * filesys.c (scm_select, retrieve_select_type, get_element,
2864 fill_select_type, set_element): modified so that Scheme
2865 "select" tests port buffers for the ability to provide input
2866 or accept output. Previously only the underlying file descriptors
2867 were checked. Rewrote the docstring.
2868
2869 Thu Jan 27 10:14:25 2000 Greg J. Badros <gjb@cs.washington.edu>
2870
2871 * vectors.c, symbols.c, strorder.c: Documentation cut and pasted
2872 from Gregg Reynolds. Thanks Gregg!
2873
2874 Thu Jan 27 09:59:38 2000 Greg J. Badros <gjb@cs.washington.edu>
2875
2876 * strop.c (scm_i_index): Obfuscated commented-out SCM_DEFINE by
2877 adding "x" prefix to the line so that guile-func-name-check
2878 doesn't complain unnecessarily.
2879
2880 Wed Jan 26 17:33:52 2000 Greg J. Badros <gjb@cs.washington.edu>
2881
2882 * throw.c: Factor out an #ifdef/#else/#endif choice more finely
2883 for maintainability.
2884
2885 * strop.c: Documentation added by Gregg A. Reynolds. Pasted in
2886 from qdocs, RnRs.
2887
2888 Wed Jan 26 10:02:11 2000 Greg J. Badros <gjb@cs.washington.edu>
2889
2890 * tag.c: Added doc for `tag', but mark as deprecated since Mikael
2891 suggests removing tag.c altogether (and using a new `class-of'
2892 instead).
2893
2894 * strings.c: Added documentation from Gregg A. Reynolds. Edited
2895 a bit by me to use FOO instead of @var{foo} and to have the
2896 summary come before preconditions on input. Also dropped trailing
2897 (rnrs) note.
2898
2899 * gsubr.c: Do not use SCM_DEFINE for `gsubr-apply'. Register the
2900 function with scm_make_subr_opt w/ last arg of 0 so it is not
2901 visible at the Scheme level. Mikael says that this is the right
2902 thing because the first arg to the proc is the guts of a compiled
2903 closure and shouldn't be exposed to the Scheme level.
2904
2905 Tue Jan 25 17:15:47 2000 Greg J. Badros <gjb@cs.washington.edu>
2906
2907 * sort.c: typo in comment fixed.
2908
2909 * keywords.c: Added documentation.
2910
2911 * guardians.c: Added documentation (could be better).
2912
2913 * gc.c: Added docs for gc-set-debug-check-freelist.
2914
2915 * eq.c: Added docs for eq?, eqv? equal? abridged from R4RS.
2916
2917 * boolean.c: Added docs for `not', `boolean?' (by hand).
2918
2919 Tue Jan 25 13:28:56 2000 Greg J. Badros <gjb@cs.washington.edu>
2920
2921 * random.c: Added documentation, from SLIB page:
2922 http://angela.ctrl-c.liu.se/~calle/scheme/slib_toc.html
2923
2924 Mon Jan 24 17:50:20 2000 Greg J. Badros <gjb@cs.washington.edu>
2925
2926 * variable.c, version.c: Added documentation, written by hand
2927 since I could not find anything already written that was
2928 relevant.
2929
2930 2000-01-23 Gary Houston <ghouston@arglist.com>
2931
2932 * filesys.c (scm_chown): omit port/fdes support if HAVE_FCHOWN is
2933 not defined (thanks to Richard Y. Kim).
2934
2935 Thu Jan 20 13:00:38 2000 Greg J. Badros <gjb@cs.washington.edu>
2936
2937 * Makefile.in: Removed, this is auto-generated.
2938
2939 Thu Jan 20 11:33:47 2000 Dirk Hermann <dirk@ida.ing.tu-bs.de> --applied 01/20/00 gjb
2940
2941 * list.c: Put some variable initialization code at the point of
2942 declaration; Added a comment for list*; Formatting changes.
2943
2944 * load.c: use SCM_NNULLP to make sure the end of a list is not
2945 reached yet.
2946
2947 2000-01-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2948
2949 * backtrace.c (scm_display_error_message): Bugfix: Don't use
2950 result of scm_list_p as C boolean.
2951 (scm_display_error_message, scm_set_print_params_x): Use new
2952 validation macros. (Thanks to Dirk Herrmann.)
2953
2954 * net_db.c (scm_resolv_error): Cast result from hstrerror.
2955
2956 * strports.c (st_end_input): Inserted parenthesis to get operator
2957 grouping correct.
2958
2959 * list.h (scm_init_list): Removed SCM_P around prototypes.
2960
2961 * fports.c, list.c, numbers.c, ports.c, stime.c, symbols.c,
2962 filesys.c, posix.c: Converted docstrings to ANSI C format and
2963 escaped " occurring inside string literals.
2964
2965 Tue Jan 18 13:21:08 2000 Mikael Djurfeldt <mdj@r11n07-s.pdc.kth.se>
2966
2967 * posix.c (scm_mknod): Escape " occuring inside docstring.
2968
2969 2000-01-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2970
2971 * alist.c, chars.c, debug.c, dynl.c, dynwind.c, error.c, eval.c,
2972 evalext.c, filesys.c, gc.c, hash.c, hashtab.c, ioext.c,
2973 keywords.c, list.c, load.c, macros.c, net_db.c, numbers.c,
2974 objprop.c, ports.c, posix.c, print.c, procprop.c, procs.c,
2975 ramap.c, regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c,
2976 stacks.c, stime.c, strings.c, strop.c, strports.c, struct.c,
2977 symbols.c, throw.c, unif.c, vectors.c, version.c, vports.c,
2978 weaks.c: Converted docstrings to ANSI C format.
2979
2980 * filesys.c (scm_chmod), simpos.c (scm_system), version
2981 (scm_version), vports (scm_make_soft_port): Escape " occuring
2982 inside docstring.
2983
2984 Mon Jan 17 11:41:22 2000 Greg J. Badros <gjb@cs.washington.edu>
2985
2986 * scm_validate.h: Added SCM_VALIDATE_ULONG_COPY,
2987 SCM_VALIDATE_LONG_COPY
2988
2989 * numbers.c: Use SCM_VALIDATE_ULONG_COPY, instead of
2990 SCM_VALIDATE_INUM_COPY to let bigger numbers be used. Rename a
2991 couple of formal arguments (and fix their uses) to make arguments
2992 match the documentation.
2993
2994 2000-01-14 <mstachow@alum.mit.edu>
2995
2996 * Makefile.am: Augment path when running guile-doc-snarf so
2997 guile-func-name-check is found.
2998
2999 Fri Jan 14 09:34:55 2000 Greg J. Badros <gjb@cs.washington.edu>
3000
3001 * scm_validate.h (SCM_NUM2LONG_DEF): Fix this macro to just use
3002 def, not SCM_MAKINUM(def); thanks Janis Bzerins!
3003
3004 Wed Jan 12 00:06:53 2000 Greg J. Badros <gjb@cs.washington.edu>
3005
3006 * net_db.c (s_scm_inet_makeaddr): Use SCM_NUM2ULONG since that's
3007 the way guile-1.3.4 worked, but #if 0 out the version using
3008 SCM_VALIDATE_INUM_COPY for stricter testing.
3009
3010 Tue Jan 11 18:24:18 2000 Greg J. Badros <gjb@cs.washington.edu>
3011
3012 * guile-doc-snarf.in: Use new $fullfilename for running
3013 guile-func-name-check, and put "$fullfilename" and "$filename" in
3014 quotes at uses to make sure re-splitting on whitespace does not
3015 occur (so filenames w/ embedded whitespace would work okay, though
3016 I sure hope we never have to deal with that! :-) ). Thanks to
3017 Mikael for pointing out the source_dir != build_dir was broken.
3018
3019 Tue Jan 11 17:42:40 2000 Greg J. Badros <gjb@cs.washington.edu>
3020
3021 * scm_validate.h: Added SCM_NUM2LONG_DEF macro. Make
3022 SCM_OUT_OF_RANGE use SCM_MAKINUM, not scm_long2num. Added
3023 SCM_COERCE_ROSTRING macro. Added SCM_VALIDATE_NONEMPTYLIST
3024 macro. Fix SCM_VALIDATE_STRINGORSUBSTR macro to not use SLOPPY
3025 variants.
3026
3027 * ports.c (scm_port_closed_p): Validate that the arg is a PORT,
3028 then return whether it's an open port (was validating that it was
3029 an open port -- this was a bug I introduced back in December, but
3030 my careful reading of diffs caught it).
3031
3032 * numbers.c: Recombine the two conditional-compilation paths for
3033 all the log* primitives -- they were split based on #ifndef
3034 scm_long2num; factored out a SCM_LOGOP_RETURN macro, and fixed
3035 some bugs and inconsistencies in the two sets of implementations.
3036 (scm_lognot) Fixed *atrocious* re-use of a SCM as an integer!
3037
3038 * ioext.c: Use SCM_ASSERT_RANGE in a couple places, and
3039 SCM_VALIDATE_INUM_COPY once where it should've been used.
3040
3041 * fluids.c (scm_internal_with_fluids): Use
3042 SCM_VALIDATE_LIST_COPYLEN.
3043
3044 * filesys.c: Use SCM_NUM2LONG instead of SCM_VALIDATE_INUM_COPY;
3045 this is questionable as it relaxes type safety, but other changes
3046 were useful and all SCM_NUM2LONG's should probably be
3047 revisited. Use SCM_OUT_OF_RANGE, SCM_WRONG_TYPE_ARG.
3048
3049 * evalext.c: line-break change on 1 line.
3050
3051 * eval.c (nconc2last): Takes a non-empty list as its first
3052 argument, not just a list.
3053
3054 * dynl.c: Use new SCM_COERCE_ROSTRING macro.
3055
3056 Tue Jan 11 15:44:23 2000 Greg J. Badros <gjb@cs.washington.edu>
3057
3058 * dynl.c, feature.c, filesys.c, fports.c, list.c, load.c,
3059 net_db.c, sort.c, stacks.c, unif.c: Use SCM_WTA, SCM_MISC_ERROR
3060 where possible.
3061
3062 * symbols.c (scm_sysintern0): Fixed the function name in a
3063 scm_misc_error invocation.
3064
3065 * print.c (scm_simple_format): Do not need SCM_COERCE_SUBSTR, and
3066 use scm_return_first to ward off latent GC bug that Mikael caught.
3067
3068 * async.c: Use SCM_VALIDATE_ASYNC_COPY one place where it wasn't
3069 used before but should've been.
3070
3071 2000-01-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3072
3073 * snarf.h (SCM_PROC1): Replaced SCM (*) (...) with
3074 SCM_FUNC_CAST_ARBITRARY_ARGS.
3075
3076 Tue Jan 11 13:44:07 2000 Greg J. Badros <gjb@cs.washington.edu>
3077
3078 * guile-func-name-check.in: Added this script to statically check
3079 #define FUNC_NAME, #undef FUNC_NAME in the source.
3080
3081 * sort.c, posix.c: Fix #undef FUNC_NAME lines to not have trailing
3082 redundant comment, semicolon; caught by new guile-func-name-check
3083 script.
3084
3085 * debug.c: Fix mistaken #define FUNC_NAME for scm_make_iloc.
3086 Caught by new guile-func-name-check-script.
3087
3088 * Makefile.am: Added guile-func-name-check to bin_SCRIPTS
3089
3090 * ramap.c: Fix #if 0'd out code to be syntactically acceptable to
3091 guile-func-name-check.
3092
3093 * guile-doc-snarf.in: Run guile-func-name-check on the file before
3094 doing the snarf.
3095
3096 Tue Jan 11 11:31:10 2000 Greg J. Badros <gjb@cs.washington.edu>
3097
3098 * fports.c, ports.c, ports.h, strports.c, vports.c: Make write
3099 port function take const void*, not void*.
3100
3101 Tue Jan 11 11:18:07 2000 Greg J. Badros <gjb@cs.washington.edu>
3102
3103 * scm_validate.h, chars.c, ports.c, print.c, read.c, strings.c,
3104 strop.c: Use SCM_VALIDATE_ICHR, SCM_VALIDATE_ICHR_COPY instead of
3105 SCM_VALIDATE_CHAR, SCM_VALIDATE_CHAR_COPY. Change made for
3106 consistency with the other macros dealing with immediate
3107 characters. (Similar to INT -> INUM change a week or so ago).
3108
3109 Tue Jan 11 10:41:46 2000 Greg J. Badros <gjb@cs.washington.edu>
3110
3111 * dynl.c, error.c, eval.c, feature.c, filesys.c, fports.c, list.c, load.c,
3112 net_db.c, read.c, socket.c: Update error messages to use ~A for
3113 %s, ~S for %S to work with new `simple-format' format and be
3114 standardized better.
3115
3116 * print.h, print.c (scm_simple_format): Added `simple-format'
3117 primitive. It's the old scm_display_error, with ARGS now a rest
3118 parameter, and the destination first instead of last (and a couple
3119 new capabilities inspired by `format' -- #t as destination means
3120 current-output-port, #f means return the formatted text as a
3121 string.
3122
3123 * gh.h, gh_data.c, ports.h, ports.c: Added some missing const specifications.
3124
3125 * backtrace.c (scm_display_error_message): Rewrote to use
3126 scm_simple_format() procedure.
3127
3128 * __scm.h: Added commented-out #define of GUILE_DEBUG_FREELIST
3129
3130 2000-01-09 Marius Vollmer <mvo@zagadka.ping.de>
3131
3132 Finally applied the libltdl patch from Thomas Tanner, with slight
3133 modifications.
3134
3135 * DYNAMIC-LINKING: Removed because it is obsolete.
3136 * dynl.c: Use ANSI prototypes.
3137 (sysdep_dynl_link): Use lt_dlopenext instead of lt_dlopen.
3138 * scmconfig.h.in: Do not change, as it is automatically generated.
3139
3140 1999-07-25 Thomas Tanner <tanner@ffii.org>
3141
3142 * dynl-dl.c, dynl-dld.c, dynl-shl.c, dynl-vms.c: deleted
3143 (obsolete)
3144 * Makefile.am: likewise, add INCLTDL (libltdl headers) to
3145 INCLUDES, set dlpreopened files in LDFLAGS, link libguile
3146 against libltdl
3147 * dynl.c: use libltdl if DYNAMIC_LINKING is enabled,
3148 * guile.c: register preloaded modules
3149 * scmconfig.h.in: remove obsolete symbols
3150
3151 2000-01-09 Gary Houston <ghouston@arglist.com>
3152
3153 * These changes should make it unnecessary to call tzset from
3154 Scheme after modifying the TZ environment variable, even if the
3155 system date facilities cache the value.
3156 * stime.c (setzone, scm_localtime): added comments.
3157 (tzset): don't define a noop tzset macro if HAVE_TZSET not defined.
3158 (setzone): don't call tzset.
3159 (restorezone): call tzset only if HAVE_TZSET is defined.
3160 (scm_tzset): don't define if HAVE_TZSET not defined. Change the
3161 doc string to indicate that this procedure isn't likely to do
3162 anything useful.
3163 (scm_localtime, scm_strftime, scm_mktime): call tzset if
3164 LOCALTIME_CACHE is defined.
3165
3166 2000-01-09 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3167
3168 * posix.c (scm_sync): Return SCM_UNSPECIFIED.
3169
3170 2000-01-09 Gary Houston <ghouston@arglist.com>
3171
3172 * eval.c: define scm_unbound_variable_key ('unbound-variable).
3173 scm_lookupcar1: throw an error with key 'unbound-variable instead
3174 of 'misc-error when an unbound variable is encountered.
3175
3176 * filesys.c (scm_mkdir, scm_rmdir, scm_getcwd, scm_select,
3177 scm_symlink, scm_readlink, scm_lstat),
3178 posix.c (scm_setpgid, scm_setsid, scm_ctermid, scm_tcgetpgrp,
3179 scm_tcsetpgrp, scm_uname, scm_setlocale, scm_mknod, scm_nice,
3180 scm_sync),
3181 simpos.c (scm_system),
3182 stime.c (scm_times, scm_strptime):
3183 move the HAVE_XXX feature tests out of the procedure bodies.
3184 don't use SCM_SYSMISSING.
3185 scm_validate.h (SCM_SYSMISSING): removed.
3186 error.h, error.c (scm_sysmissing): comment that this is deprecated.
3187 see ChangeLog entry for 1999-12-28.
3188
3189 Sat Jan 8 19:52:04 2000 Greg J. Badros <gjb@cs.washington.edu>
3190
3191 * scm_validate.h (SCM_VALIDATE_BOOL_COPY): Fix typo.
3192
3193 Sat Jan 8 17:06:46 2000 Greg J. Badros <gjb@cs.washington.edu>
3194
3195 * backtrace.c: Fix spelling typo in a comment.
3196
3197 * snarf.h: Use new SCM_DOCS macro to encapsulate the non SCM_INIT
3198 text. Reformatted some of the expansions.
3199
3200 Fri Jan 7 15:50:46 2000 Greg J. Badros <gjb@cs.washington.edu>
3201
3202 * scm_validate.h (SCM_OUT_OF_RANGE): Use scm_out_of_range_pos to
3203 report the position of the argument.
3204
3205 * error.h, error.c (scm_out_of_range_pos): Added this function to
3206 take extra "pos" argument, the position number of the errant
3207 argument.
3208
3209 * debug.c: Use SCM_OUT_OF_RANGE instead of scm_out_of_range.
3210
3211 * snarf.h: Use SCM_HERE and SCM_INIT as names, not SCM_NOTSNARF
3212 and SCM_SNARFING. Also put the %%% in the SCM_INIT since Mikael
3213 prefers that and I'm reasonably indifferent.
3214
3215 Fri Jan 7 15:03:32 2000 Greg J. Badros <gjb@cs.washington.edu>
3216
3217 * snarf.h: Factor out differences between C++ and non-C++ into
3218 SCM_FUNC_CAST_ARBITRARY_ARGS macro. Modify all the snarf macro
3219 definitions to use SCM_NOTSNARF and SCM_SNARFING macros (like
3220 Mikael's macros, below, but changed names and SCM_SNARFING no
3221 longer expands to include %%% -- that must appear in the argument
3222 so that the token appears at the call-site as a reminder).
3223
3224 2000-01-07 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3225
3226 * snarf.h (SCM_INSITU, SCM_INIT): New snarf macros for use in user
3227 snarf macro definitions.
3228
3229 2000-01-06 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3230
3231 * chars.c (scm_integer_to_char): Use Greg's nice
3232 SCM_VALIDATE_INUM_RANGE macro for argument checking for closer
3233 adherence to R5RS.
3234
3235 Thu Jan 6 11:48:49 2000 Greg J. Badros <gjb@cs.washington.edu>
3236
3237 * *.c, snarf.h: Replace GUILE_PROC1 with SCM_DEFINE1 throughout.
3238
3239 Thu Jan 6 11:22:53 2000 Greg J. Badros <gjb@cs.washington.edu>
3240
3241 * Makefile.am (ETAGS_ARGS): Switch to SCM_DEFINE, SCM_DEFINE1
3242 instead of GUILE_PROC.
3243
3244 Thu Jan 6 11:21:49 2000 Greg J. Badros <gjb@cs.washington.edu>
3245
3246 * alist.c: Do not report mismatch errors on some uses of `tmp' (do
3247 this by using SCM_ARG2 instead of `2' in the SCM_VALIDATE_CONS
3248 macro call.
3249
3250 Thu Jan 6 09:54:33 2000 Dirk Herrmann <dirk@ida.ing.tu-bs.de> --gjb applied
3251
3252 * scm_validate.h: Remove some redundant NIMP tests.
3253
3254 * alist.c: minimize scope of the tmp variables, and initialize
3255 them when declared. The strange SCM_NIMP tests are replaced by
3256 SCM_CONSP tests that more closely reflect the intended semantics.
3257 However, we don't get a performance penalty here, because the
3258 SCM_CONSP test was performed by the ALISTCELL test anyway. * The
3259 extremely ugly use of ASRTGO macros was removed: The calls to
3260 ASRTGO were not encapsulated by "#ifndef SCM_RECKLESS", but got a
3261 label parameter that only exists when SCM_RECKLESS is not defined.
3262 This works, because ASRTGO itself is defined in a way that it only
3263 makes use of the label parameter if SCM_RECKLESS is not defined
3264 (shudder!). Does guile make at all use of the possibility to
3265 define SCM_RECKLESS? * Codesize is likely to be reduced, since
3266 instead of two calls to SCM_ASSERT performed by the ALISTCELL test
3267 we now only get one test.
3268
3269 * list.c: Use SCM_NNULLP, not SCM_NIMP as appropriate. Also use
3270 SCM_NULLP instead of SCM_IMP. Drop use of "register" keyword on
3271 some variables in `list?'. Fix `reverse' and `reverse!'
3272 primitives to handle improper lists better.
3273
3274 Wed Jan 5 11:24:53 2000 Greg J. Badros <gjb@cs.washington.edu>
3275
3276 * *.[ch]: Whitespace changes -- added space after SCM_VALIDATE_*
3277 macros and SCM_DEFINE macros to match GNU coding standards.
3278
3279 Wed Jan 5 11:04:24 2000 Greg J. Badros <gjb@cs.washington.edu>
3280
3281 * *.[ch]: Replace GUILE_PROC w/ SCM_DEFINE.
3282
3283 Wed Jan 5 10:59:06 2000 Greg J. Badros <gjb@cs.washington.edu>
3284
3285 * *.[ch]: Replace SCM_VALIDATE_INT w/ SCM_VALIDATE_INUM for
3286 better consistency with the names of other SCM_VALIDATE_ macros
3287 and better conformance to guile naming policy.
3288
3289 Wed Jan 5 10:50:39 2000 Greg J. Badros <gjb@cs.washington.edu>
3290
3291 * ports.c (s_scm_close_all_ports_except): Use SCM_ARG1 in a
3292 SCM_VALIDATE instead of 1 to avoid a check on the argument (since
3293 it's not the actual name of the formal).
3294
3295 * guile-snarf.awk.in: Do argument/number mismatch checking and
3296 print warnings in an Emacs compile-mode parseable format.
3297
3298 * struct.c: Use SCM_ASSERT_RANGE instead of SCM_ASSERT w/
3299 SCM_OUTOFRANGE as 3rd argument.
3300
3301 * random.c: Fix argument/number mismatch (that I introduced :-( ).
3302
3303 * __scm.h: Do not #define SCM_ARG* when snarfing;
3304 lets us distinguish between 1 and SCM_ARG1 when snarfing as only
3305 the former (using the number) requires the argument to match the
3306 formal in the current argument snarfing check.
3307
3308 * snarf.h: Give new definition of SCM_ASSERT when in
3309 snarfing mode to output a lexically-identifiable sequence that the
3310 guile-snarf.awk script uses to verify argument/position matching.
3311
3312 * ramap.c: Remove extraneous #undef FUNC_NAME.
3313
3314 Wed Jan 5 08:36:38 2000 Greg J. Badros <gjb@cs.washington.edu>
3315
3316 * guile-doc-snarf.awk.in: Removed -- guile-snarf.awk.in is the
3317 current version of the same functionality; it writes the .x output
3318 to stdout instead of directly into the file.
3319
3320 Wed Jan 5 08:15:04 2000 Greg J. Badros <gjb@cs.washington.edu>
3321
3322 * unif.c, symbols.c, strings.c, stacks.c, random.c, print.c,
3323 posix.c: Eliminated a bunch of SCM_NIMP(..)s that are now
3324 redundant with the safer macros. Patch from Dirk Hermann applied
3325 by hand. Thanks Dirk!
3326
3327 * scm_validate.h: Added SCM_VALIDATE_VECTOR_OR_DVECTOR for some
3328 uses in random.c.
3329
3330 * ramap.c: whitespace change.
3331
3332 Tue Jan 4 14:21:35 2000 Greg J. Badros <gjb@cs.washington.edu>
3333
3334 * options.c, objects.c, keywords.c, gc.c: Some redundant SCM_NIMP
3335 removals from Dirk Hermann.
3336
3337 * alist.c: Rename formals to match the parameter names in the
3338 documentation, updates to documentation. Thanks Dirk Hermann!
3339
3340 2000-01-04 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3341
3342 * eval.c (SCM_CEVAL): Reverse order of
3343 scm_stack_checking_enabled_p and SCM_STACK_OVERFLOW_P
3344 (Thanks to Brad Knotwell.)
3345
3346 Mon Jan 3 08:30:02 2000 Greg Harvey <Greg.Harvey@thezone.net> (applied --01/03/00 gjb)
3347
3348 * gc.c (scm_debug_newcell): Added SCM_SETCAR of the newly
3349 allocated cell.
3350
3351 * pairs.h: Added a comment about the need for the SCM_SETCAR in
3352 SCM_NEWCELL macro.
3353
3354 Mon Jan 3 08:25:19 2000 Greg J. Badros <gjb@cs.washington.edu>
3355
3356 * dynl-vms.c, debug.c, coop-threads.c, backtrace.c, eval.c: More
3357 SCM_NIMP tests that were redundant are now eliminated. Patches
3358 from Dirk Hermann applied by hand.
3359
3360 The ChangeLog continues in the file: "ChangeLog-1996-1999"