3fa5ceda2f8833a17585b9fc09b890f46d832919
[bpt/guile.git] / libguile / ChangeLog
1 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
2
3 This patch modifies scm_display_error to perform parameter
4 checking. Thanks to Neil Jerram for the bug report.
5
6 * backtrace.[ch] (scm_i_display_error): New function.
7
8 * backtrace.c (scm_display_error): Added parameter check and
9 extracted the core functionality into function
10 scm_i_display_error.
11
12 * throw.c (handler_message): Call scm_i_display_error to display
13 the error message.
14
15 2001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
16
17 * eval.c (SCM_APPLY): Added # args check for application of
18 procedures with arity 3. (Thanks to Anders Holst.)
19
20 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
21
22 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
23
24 (SCM_OPDIRP): Deprecated.
25
26 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
27 SCM_OPN.
28
29 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
30 Instead, give an explicit error message in case the directory is
31 closed.
32
33 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
34 instead of SCM_OPENP and SCM_CLOSEDP.
35
36 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
37
38 2001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
39
40 * eval.c (inner_eval, scm_eval): Move all real functionality into
41 inner_eval. Avoid to copy the expression twice by inlining some
42 code from scm_i_eval.
43
44 2001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
45
46 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
47 now has to be the last clause, as required by R5RS. Thanks to
48 Martin Grabmueller for the patch.
49
50 2001-01-18 Gary Houston <ghouston@arglist.com>
51
52 * ioext.c: further simplify scm_read_string_x_partial by defining
53 a macro SCM_EBLOCK.
54
55 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
56
57 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
58
59 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
60
61 * __scm.h: Added comment about architecture and compiler
62 properties that are required by guile.
63
64 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
65 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
66
67 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
68
69 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
70
71 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
72 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
73
74 2001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
75
76 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
77 to the names in limits.h.
78
79 * numbers.c (abs_most_negative_fixnum): Added.
80
81 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
82 fixnum-min) special case.
83
84 (scm_big_and): Fix for negative first parameter.
85
86 (scm_bit_extract): Fix for fixnum paramters.
87 Thanks to Rob Browning for the bug report.
88
89 (scm_init_numbers): Initialize abs_most_negative_fixnum.
90
91 2001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
92
93 * symbols.c (scm_symbol_bound_p): Fixed comment.
94 Thanks to Chris Cramer.
95
96 2001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
97
98 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
99 Thanks to Bill Schottstaedt.
100
101 2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
102
103 from Matthias Köppe:
104
105 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
106 casts its result, so doesn't yield an lvalue per ANSI C.
107
108 * goops.c (s_scm_sys_set_object_setter_x): use
109 SCM_SET_ENTITY_SETTER.
110 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
111
112 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
113 its result, so doesn't yield an lvalue per ANSI C.
114 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
115 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
116 SCM_GC_SET_CARD_FLAGS.
117 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
118
119 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
120
121 2001-01-08 Gary Houston <ghouston@arglist.com>
122
123 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
124 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
125 socket.c (scm_recvfrom): use the new macro, plus minor docstring
126 changes.
127 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
128 for fdes. if current input port is used, check that it's a file
129 port.
130
131 2001-01-06 Gary Houston <ghouston@arglist.com>
132
133 * ioext.c (scm_read_string_x_partial): new procedure, implements
134 read-string!/partial.
135 * ports.c (scm_take_from_input_buffers): new procedure used by
136 scm_read_string_x_partial.
137 (scm_drain_input): use scm_take_from_input_buffers.
138
139 2001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
140
141 * validate.h (SCM_VALIDATE_NUMBER): New.
142
143 2001-01-03 Michael Livshin <mlivshin@bigfoot.com>
144
145 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
146 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
147 SET_DESTROYED): new defines/macros.
148 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
149 (add_to_live_list): takes a `guardian_t *' now, not SCM.
150 (guardian_print): print more info.
151 (guardian_apply): check if the guardian is destroyed, and throw an
152 error if so. take one more optional argument `throw_p'.
153 (scm_guard): depending on the value of `throw_p', return a boolean
154 result.
155 (scm_get_one_zombie): remove redundant property test.
156 (guardian_t): represent the various (currently 3, I hope nothing
157 more gets added) boolean fields as bit flags.
158 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
159 (scm_destroy_guardian_x): new procedure.
160
161 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
162 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
163
164 2001-01-01 Gary Houston <ghouston@arglist.com>
165
166 * fports.c (fport_write): bugfix: handle short writes for
167 unbuffered ports too. optimize the buffered case by minimizing
168 the number of write/flush calls.
169 (write_all): new helper procedure.
170
171 2000-12-30 Michael Livshin <mlivshin@bigfoot.com>
172
173 * guardians.c (guardian_print): for sharing guardians, print that
174 they are sharing.
175 (scm_guard, scm_get_one_zombie): place the critical section
176 barriers more correctly.
177
178 * weaks.c (scm_scan_weak_vectors): move the calculation of the
179 `weak_keys' and `weak_values' flags out of the inner loop.
180
181 2000-12-29 Michael Livshin <mlivshin@bigfoot.com>
182
183 * guardians.c: (greedily_guarded_prop): deleted.
184 (greedily_guarded_whash): new variable. a doubly-weak hash table
185 used to keep the "greedily guarded" object property. the previous
186 implementation (via primitive object properties) was incorrect due
187 to its only-the-key-is-weak semantics.
188 (scm_guard, get_one_zombie, scm_init_guardians): use/init
189 `greedily_guarded_whash'.
190
191 2000-12-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
192
193 * eval.c (check_map_args), gh_data.c (gh_set_substr,
194 gh_scm2newstr, gh_get_substr, gh_symbol2newstr), print.c
195 (scm_iprin1): Use scm_remember_upto_here_1 instead of
196 scm_remember.
197
198 * gc.[ch] (scm_remember_upto_here_1, scm_remember_upto_here_2,
199 scm_remember_upto_here): New functions.
200
201 (scm_remember): Deprecated.
202
203 2000-12-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
204
205 * continuations.c (scm_make_continuation): Make variable cont
206 volatile to let the compiler know that it won't be clobbered by
207 longjmp. (It wouldn't be anyway, but for some reason the compiler
208 is not able to see that.)
209
210 2000-12-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
211
212 This patch re-introduces the unused member "properties" of
213 struct scm_subr_entry as requested by Mikael Djurfeldt.
214
215 * procs.h (scm_subr_entry): Re-introduced member "properties".
216
217 (SCM_SUBR_PROPS): Un-deprecated.
218
219 * procs.c (scm_make_subr_opt, scm_mark_subr_table): Struct
220 scm_subr_entry has a member "properties" again.
221
222 2000-12-28 Michael Livshin <mlivshin@bigfoot.com>
223
224 * guardians.c (mark_dependencies_in_tconc): new function.
225 (mark_dependencies): bug fix. mark the dependencies of the known
226 zombies, too. duh.
227
228 2000-12-24 Michael Livshin <mlivshin@bigfoot.com>
229
230 * gc.c: (scm_gc_mark_dependencies): use SCM_EQ_P for SCMs, not
231 '=='. also, return after calling `scm_gc_mark'.
232
233 2000-12-24 Michael Livshin <mlivshin@bigfoot.com>
234
235 * gc.c: (scm_gc_mark_dependencies): new function. like
236 `scm_gc_mark', but doesn't mark the argument itself. defined
237 using an arrangement similar to that in eval.c: `scm_gc_mark' and
238 `scm_gc_mark_dependencies' are derived from the same "template"
239 by ugly preprocessor magic.
240
241 * gc.h: added prototype for `scm_gc_mark_dependencies'.
242
243 * init.c (scm_init_guile_1): call the renamed
244 `scm_init_guardians'.
245
246 * guardians.h: changed prototypes for `scm_make_guardian' and
247 `scm_init_guardians'.
248
249 * guardians.c (guardian_t): added new fields `greedy_p' and
250 `listed_p'.
251 (GUARDIAN_P): predicate that says whether its argument is a
252 guardian.
253 (GUARDIAN_GREEDY_P, GUARDIAN_LISTED_P): new predicates.
254 (greedy_guardians, sharing_guardians): new variables. hold the
255 greedy and sharing live guardian lists, respectively.
256 (first_live_guardian, current_link_field): removed.
257 (greedily_guarded_prop): new variable. holds the "is greedily
258 guarded" object property.
259 (self_centered_zombies): new variable. stores guarded objects
260 that are parts of cycles.
261 (add_to_live_list): new function, introduced to decouple marking a
262 guardian and adding it to the live list.
263 (guardian_mark): call `add_to_live_list'.
264 (guardian_print): print whether the guardian is greedy or not.
265 also change "live" and "zombie" to "reachable" and "unreachable"
266 respectively, to be less confusing.
267 (scm_guard): if the guardian is greedy, test whether the object is
268 already greedily marked. throw an error if so.
269 (scm_get_one_zombie): if the guardian is greedy, remove the
270 "greedily guarded" property from the object.
271 (scm_make_guardian): add a new optional boolean argument which
272 says whether the guardian is greedy or sharing.
273 (guardian_gc_init): init the new live lists.
274 (mark_dependencies): new function.
275 (mark_and_zombify): new function.
276 (guardian_zombify): reworked to support the new guardian
277 semantics. move some logic to `mark_dependencies' and
278 `mark_and_zombify'.
279 (whine_about_self_centered_zombies): new function. installed in
280 the `after-gc-hook' to complain about guarded objects which are
281 parts of cycles.
282 (scm_init_guardians): init the new stuff. renamed from
283 `scm_init_guardian'.
284
285 2000-12-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
286
287 * procs.h (scm_subr_entry): Removed unused struct member
288 "properties".
289
290 (SCM_SUBR_PROPS): Deprecated.
291
292 * procs.c (scm_make_subr_opt, scm_mark_subr_table): Struct
293 scm_subr_entry does not have a member "properties" any more.
294
295 2000-12-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
296
297 * procs.h (scm_subr_entry): Removed unused struct member
298 "documentation".
299
300 (SCM_SUBR_DOC): Deprecated.
301
302 * procs.c (scm_make_subr_opt): Eliminate use of scm_intern0 in
303 favor of scm_str2symbol. Similarly, prefer scm_sysintern over
304 scm_sysintern0.
305
306 (scm_make_subr_opt, scm_mark_subr_table): Struct scm_subr_entry
307 does not have a member "documentation" any more.
308
309 2000-12-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
310
311 * eval.c (restore_environment): Make sure that changes to the
312 current environment will take effect when re-entering the dynamic
313 scope.
314
315 2000-12-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
316
317 * goops.h (SCM_PUREGENERICP): Include the SCM_STRUCTP test.
318
319 * goops.c (scm_sys_invalidate_method_cache_x, scm_m_atdispatch,
320 scm_pure_generic_p): The SCM_STRUCTP test is implied.
321
322 2000-12-20 Gary Houston <ghouston@arglist.com>
323
324 * continuations.c (continuation_apply): subtract the length of
325 continuation->dynenv, not the dynenv itself. I broke it last
326 time I changed this file. thanks to Bernard Urban.
327
328 2000-12-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
329
330 * goops.c (remove_duplicate_slots, maplist,
331 scm_sys_initialize_object, scm_sys_prep_layout_x,
332 scm_sys_inherit_magic_x, scm_instance_p,
333 scm_sys_set_object_setter_x, scm_sys_invalidate_method_cache_x,
334 scm_compute_applicable_methods, scm_m_atdispatch,
335 scm_pure_generic_p): Remove redundant SCM_N?IMP tests.
336
337 2000-12-16 Keisuke Nishida <kxn30@po.cwru.edu>
338
339 * validate.h (SCM_WRONG_NUM_ARGS): New macro.
340 * goops.h: #include "libguile/validate.h"
341 (SCM_CLASSP, SCM_GENERICP, SCM_METHODP): Moved from goops.c with
342 prefix "SCM_".
343 (SCM_VALIDATE_INSTANCE, SCM_VALIDATE_ACCESSOR, SCM_VALIDATE_CLASS,
344 SCM_VALIDATE_GENERIC, SCM_VALIDATE_METHOD): New macros.
345 * goops.c (CLASSP, GENERICP, METHODP): Moved to goops.h with
346 prefix "SCM_".
347 (scm_sys_compute_slots, scm_sys_initialize_object,
348 scm_sys_prep_layout_x, s_sys_inherit_magic_x, scm_instance_p,
349 scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
350 scm_class_direct_subclasses, scm_class_direct_methods,
351 scm_class_precedence_list, scm_class_slots, scm_class_environment,
352 scm_generic_function_name, scm_generic_function_methods,
353 scm_method_generic_function, scm_method_specializers,
354 scm_method_procedure, scm_accessor_method_slot_definition,
355 scm_make_unbound, scm_unbound_p, scm_assert_bound,
356 scm_at_assert_bound_ref, scm_sys_fast_slot_ref,
357 scm_sys_fast_slot_set_x, scm_slot_ref_using_class,
358 scm_slot_set_using_class_x, scm_slot_bound_using_class_p,
359 scm_slot_exists_using_class_p, scm_slot_ref, scm_slot_set_x,
360 scm_slot_bound_p, scm_slots_exists_p, scm_sys_allocate_instance,
361 scm_sys_set_object_setter_x, scm_sys_modify_instance,
362 scm_sys_modify_class, scm_sys_invalidate_class,
363 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
364 scm_enable_primitive_generic_x, scm_primitive_generic_generic,
365 scm_make, scm_find_method, scm_sys_method_more_specific_p,
366 scm_pure_generic_p, scm_sys_goops_loaded): Replaced SCM_PROC by
367 SCM_DEFINE. Use validate macros defined above.
368 (scm_assert_bound, scm_at_assert_bound_ref, scm_sys_goops_loaded):
369 Declared as static functions.
370 (s_class_of, scm_class_of): Replaced SCM_PROC by SCM_DEFINE
371 in object.c.
372 * object.c (scm_class_of): Use SCM_DEFINE.
373
374 2000-12-16 Keisuke Nishida <kxn30@po.cwru.edu>
375
376 * symbols.h (scm_symbols_prehistory): Added prototype.
377
378 2000-12-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
379
380 * environments.[ch] (scm_system_environment): New variable, will
381 replace scm_symhash soon. We may decide for a better name and
382 also to split this up into a set of environments later.
383
384 (scm_environments_prehistory): Initialize scm_system_environment.
385
386 * init.c (scm_init_guile_1): scm_environments_prehistory requires
387 storage to be initialized.
388
389 2000-12-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
390
391 * eval.c (change_environment, inner_eval, restore_environment):
392 New functions.
393
394 (scm_eval): Bring the global variable that holds the current
395 environment up to date when entering or leaving the scope of the
396 evaluated code. Thanks to Matthias Koeppe for the bug report.
397
398 2000-12-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
399
400 * numbers.c (scm_init_numbers): Re-introduced bindings for
401 most-positive-fixnum and most-negative-fixnum as requested by
402 Mikael Djurfeldt.
403
404 2000-12-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
405
406 The variable scm_symbols is made static within symbols.c and
407 renamed to symbols. The initialization of the symbols hash table
408 is done in function scm_symbols_prehistory.
409
410 * gc.c (scm_init_storage): Don't initialize scm_symbols. Don't
411 define most-positive-fixnum, most-negative-fixnum and
412 bignum-radix.
413
414 * init.c (scm_init_guile_1): Call scm_symbols_prehistory.
415
416 * root.h (scm_symbols): Not in scm_sys_protects any more.
417
418 * symbols.c (symbols): Renamed from scm_symbols and made static.
419
420 (scm_mem2symbol): scm_symbols is renamed to symbols.
421
422 * symbols.[ch] (scm_symbols_prehistory): Added.
423
424 2000-12-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
425
426 * gc.c (scm_init_storage), root.h (scm_weak_symhash, scm_symbols):
427 Removed the former scm_weak_symhash hash table. Added scm_symbols
428 hash table.
429
430 * stacks.c (get_applybody): scm_sym2vcell may return #f.
431
432 * symbols.c (scm_mem2symbol): This function is now responsible
433 for creating symbol objects and storing them in the global
434 scm_symbols hash table.
435
436 (scm_str2symbol): Rewritten in terms of scm_mem2symbol.
437
438 (scm_sym2vcell): For system bindings, there is now only one
439 obarray - scm_symhash. If scm_sym2vcell is called to look up a
440 symbol that can't be found and shall not be created, #f is
441 returned. Most callers of scm_sym2vcell have expected this
442 behaviour anyway.
443
444 (scm_intern_obarray_soft): Removed reference to scm_weak_symhash
445 from comment.
446
447 (scm_intern_obarray_soft, scm_sysintern0_no_module_lookup): These
448 functions are not responsible for symbol creation any more, only
449 for creation of bindings.
450
451 (scm_symbol_value0): Don't use scm_intern_obarray_soft to create
452 a symbol object.
453
454 (scm_symbol_interned_p): scm_weak_symhash is removed.
455
456 * symbols.[ch] (scm_builtin_weak_bindings): Removed. There are
457 no weak bindings any more.
458
459 2000-12-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
460
461 * hooks.c (scm_create_hook), script.c
462 (scm_compile_shell_switches), snarf.h (SCM_VCELL,
463 SCM_GLOBAL_VCELL, SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT): Create
464 a binding in one go (instead of first creating a vcell and then
465 setting its cdr).
466
467 2000-12-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
468
469 * hash.[ch] (scm_string_hash), symbols.[ch] (scm_string_hash):
470 Moved function scm_string_hash to hash.c.
471
472 2000-12-11 Marius Vollmer <mvo@zagadka.ping.de>
473
474 * gc_os_dep.c (scm_get_stack_base) [MSWIN32]: Added detection of
475 page size on the w32 architecture. Updated from Boehms gc5.2.
476 Thanks to Lars J. Aas!
477
478 2000-12-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
479
480 * debug.c (scm_sym_procname, scm_sym_dots, scm_sym_source,
481 scm_init_debug), eval.c (scm_sym_dot, scm_sym_arrow, scm_sym_else,
482 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
483 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace,
484 scm_init_eval), gsubr.c (scm_sym_name, scm_init_gsubr), srcprop.c
485 (scm_sym_filename, scm_sym_copy, scm_sym_line, scm_sym_column,
486 scm_sym_breakpoint), variable.c (anonymous_variable_sym):
487 Initialize symbols by using SCM_(GLOBAL_)?SYMBOL.
488
489 * gc.c (scm_i_getenv_int): Moved here from init.c.
490
491 * gc.[ch] (scm_init_storage): Read gc configuration environment
492 variables here, not in init.c.
493
494 * init.c (scm_i_getenv_int): Moved to gc.c.
495
496 (scm_init_guile_1): Move configuration code to scm_init_storage.
497 Make sure procprops get initialized early.
498
499 * keywords.c (scm_c_make_keyword): Report amount of memory freed
500 by scm_must_free. Use scm_str2symbol instead of scm_sysintern0.
501
502 * options.c (scm_init_opts): Use scm_str2symbol instead of
503 scm_sysintern0.
504
505 2000-12-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
506
507 * threads.h (SCM_MUTEXP): Typo: removed extra parenthesis.
508
509 2000-12-08 Keisuke Nishida <kxn30@po.cwru.edu>
510
511 * tags.h (SCM_TYP16_PREDICATE): New macro.
512 * arbiters.c (scm_tc16_arbiter): Typed as scm_bits_t.
513 (arbiter_print): Renamed from prinarb.
514 (scm_init_arbiters): Don't use scm_make_smob_type_mfpe.
515 * async.c (tc16_async): Typed as scm_bits_t.
516 (SCM_ASYNCP): Use SCM_TYP16_PREDICATE.
517 (async_mark): Renamed from mark_async.
518 (scm_init_async): Updated.
519 * continuations.h (SCM_CONTINUATIONP): Use SCM_TYP16_PREDICATE.
520 * debug.c (scm_tc16_memoized, scm_tc16_debugobj): Typed as scm_bits_t.
521 (memoized_print): Renamed from prinmemoized.
522 (debugobj_print): Renamed from prindebugobj.
523 (scm_init_debug): Don't use scm_make_smob_type_mfpe.
524 * debug.h (scm_tc16_memoized, scm_tc16_debugobj): Typed as scm_bits_t.
525 (SCM_DEBUGOBJP, SCM_MEMOIZEDP): Use SCM_TYP16_PREDICATE.
526 * dynl.c (scm_tc16_dynamic_obj): Typed as scm_bits_t.
527 (dynl_obj_mark): Renamed from mark_dynl_obj.
528 (dynl_obj_print): Renamed from print_dynl_obj.
529 (scm_dynamic_object_p): Use SCM_TYP16_PREDICATE.
530 (scm_init_dynamic_linking): Updated.
531 * dynwind.c (SCM_GUARDSP): Use SCM_TYP16_PREDICATE.
532 (tc16_guards): Typed as scm_bits_t.
533 (guards_print): Renamed from printguards.
534 (scm_init_dynwind): Don't use scm_make_smob_type_mfpe.
535 * environments.c (scm_tc16_environment, scm_tc16_observer):
536 Typed as scm_bits_t.
537 (environment_mark, environment_free, environment_print,
538 observer_mark, observer_print, leaf_environment_mark,
539 leaf_environment_free, leaf_environment_print,
540 eval_environment_mark, eval_environment_free,
541 eval_environment_print, import_environment_mark,
542 import_environment_free, import_environment_print,
543 export_environment_mark, export_environment_free,
544 export_environment_print): Renamed from mark_environment,
545 free_environment, print_environment, mark_observer,
546 print_observer, mark_leaf_environment, free_leaf_environment,
547 print_leaf_environment, mark_eval_environment,
548 free_eval_environment, print_eval_environment,
549 mark_import_environment, free_import_environment,
550 print_import_environment, mark_export_environment,
551 free_export_environment, and print_export_environment, respectively.
552 (free_observer): Removed.
553 (leaf_environment_funcs, eval_environment_funcs,
554 import_environment_funcs, export_environment_funcs,
555 scm_environments_prehistory): Updated.
556 * environments.h (scm_tc16_environment, scm_tc16_observer):
557 Typed as scm_bits_t.
558 * eval.c (scm_tc16_promise): Typed as scm_bits_t.
559 (promise_print): Renamed from prinprom.
560 (scm_promise_p): Use SCM_TYP16_PREDICATE.
561 (scm_init_eval): Updated.
562 * eval.h (scm_tc16_promise): Typed as scm_bits_t.
563 * filesys.c (scm_tc16_dir): Typed as scm_bits_t.
564 (scm_init_filesys): Don't use scm_make_smob_type_mfpe.
565 * filesys.h (scm_tc16_dir): Typed as scm_bits_t.
566 * fluids.c (scm_tc16_fluid): Typed as scm_bits_t.
567 (fluid_print): Renamed from print_fluid.
568 (scm_init_fluids): Don't use scm_make_smob_type_mfpe.
569 * fluids.h (scm_tc16_fluid): Typed as scm_bits_t.
570 * fports.c (fport_print): Renamed from prinfport.
571 (scm_make_fptob): Updated.
572 * guardians.c (tc16_guardian): Typed as scm_bits_t.
573 * hooks.c (scm_tc16_hook): Typed as scm_bits_t.
574 (hook_print): Renamed from print_hook.
575 (scm_init_hooks): Updated.
576 * hooks.h (scm_tc16_hook): Typed as scm_bits_t.
577 (SCM_HOOKP): Use SCM_TYP16_PREDICATE.
578 * keywords.c (scm_tc16_keyword): Typed as scm_bits_t.
579 (keyword_print): Renamed from prin_keyword.
580 (scm_init_keywords): Don't use scm_make_smob_type_mfpe.
581 * keywords.h (scm_tc16_keyword): Typed as scm_bits_t.
582 * macros.c (scm_tc16_macro): Typed as scm_bits_t.
583 (scm_macro_p, scm_macro_type): Use SCM_TYP16_PREDICATE.
584 (scm_init_macros): Don't use scm_make_smob_type_mfpe.
585 * macros.h (scm_tc16_macro): Typed as scm_bits_t.
586 * mallocs.c (scm_tc16_malloc): Typed as scm_bits_t.
587 (malloc_free): Renamed from fmalloc.
588 (malloc_print): Renamed from prinmalloc.
589 (scm_init_mallocs): Don't use scm_make_smob_type_mfpe.
590 * mallocs.h (scm_tc16_malloc): Typed as scm_bits_t.
591 * modules.h (SCM_EVAL_CLOSURE_P): Use SCM_TYP16_PREDICATE.
592 (scm_tc16_eval_closure): Renamed from scm_eval_closure_tag.
593 (scm_standard_eval_closure, scm_init_modules): Updated.
594 * ports.c (scm_tc16_void_port): Typed as scm_bits_t.
595 * print.c (scm_tc16_port_with_ps): Typed as scm_bits_t.
596 (port_with_ps_print): Renamed from print_port_with_ps.
597 (scm_init_print): Updated.
598 * print.h (scm_tc16_port_with_ps): Typed as scm_bits_t.
599 (SCM_PORT_WITH_PS_P): Use SCM_TYP16_PREDICATE.
600 * random.c (scm_tc16_rstate): Typed as scm_bits_t.
601 (rstate_free): Renamed from free_rstate.
602 (scm_init_random): Don't use scm_make_smob_type_mfpe.
603 * random.h (scm_tc16_rstate): Typed as scm_bits_t.
604 (SCM_RSTATEP): Use SCM_TYP16_PREDICATE.
605 * regex-posix.c (scm_tc16_regex): Typed as scm_bits_t.
606 (regex_free): Renamed from free_regex.
607 (scm_init_regex_posix): Don't use scm_make_smob_type_mfpe.
608 * regex-posix.h (scm_tc16_regex): Typed as scm_bits_t.
609 * root.c (scm_tc16_root): Typed as scm_bits_t.
610 (root_mark): Renamed from mark_root.
611 (root_print): Renamed from print_root.
612 (scm_init_root): Updated.
613 * root.h (scm_tc16_root): Typed as scm_bits_t.
614 (SCM_ROOTP): Use SCM_TYP16_PREDICATE.
615 * smob.c (free_print): Renamed from freeprint.
616 (scm_smob_prehistory): Don't use scm_make_smob_type_mfpe.
617 * smob.h (SCM_SMOB_PREDICATE): Use SCM_TYP16_PREDICATE.
618 * srcprop.c (scm_tc16_srcprops): Typed as scm_bits_t.
619 (srcprops_mark): Renamed from marksrcprops.
620 (srcprops_free): Renamed from freesrcprops.
621 (srcprops_print): Renamed from prinsrcprops.
622 (scm_init_srcprop): Don't use scm_make_smob_type_mfpe.
623 * srcprop.h (scm_tc16_srcprops): Typed as scm_bits_t.
624 (SRCPROPSP): Use SCM_TYP16_PREDICATE.
625 * threads.c (scm_tc16_thread, scm_tc16_mutex, scm_tc16_condvar):
626 Typed as scm_bits_t.
627 * threads.h (scm_tc16_thread, scm_tc16_mutex, scm_tc16_condvar):
628 Typed as scm_bits_t.
629 (SCM_THREADP, SCM_MUTEXP, SCM_CONDVARP): Use SCM_TYP16_PREDICATE.
630 * throw.c (tc16_jmpbuffer): Renamed from scm_tc16_jmpbuffer.
631 (make_jmpbuf): Updated.
632 (tc16_lazy_catch): Typed as scm_bits_t.
633 (SCM_JMPBUFP, SCM_LAZY_CATCH_P): Use SCM_TYP16_PREDICATE.
634 (jmpbuffer_print): Renamed from printjb.
635 (lazy_catch_print): Renamed from print_lazy_catch.
636 (scm_init_throw): Don't use scm_make_smob_type_mfpe.
637 * unif.c (scm_tc16_array): Typed as scm_bits_t.
638 (array_mark): Renamed from markra.
639 (array_free): Renamed from freera.
640 (scm_init_unif): Don't use scm_make_smob_type_mfpe.
641 * unif.h (scm_tc16_array): Typed as scm_bits_t.
642 (SCM_ARRAYP): Use SCM_TYP16_PREDICATE.
643 * validate.h (SCM_VALIDATE_SMOB): Use SCM_TYP16_PREDICATE.
644 * variable.c (scm_tc16_variable): Typed as scm_bits_t.
645 (variable_print): Renamed from prin_var.
646 (variable_equalp): Renamed from var_equal.
647 (scm_markvar): Removed.
648 (scm_init_variable): Don't use scm_make_smob_type_mfpe.
649 * variable.h (scm_tc16_variable): Typed as scm_bits_t.
650
651 2000-12-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
652
653 * feature.c (scm_add_feature), gh_data.c (gh_symbol2scm), goops.c
654 (scm_sys_prep_layout_x, scm_make_class, scm_add_slot,
655 scm_init_goops), load.c (init_build_info), print.c
656 (scm_init_print), read.c (scm_lreadr), snarf.h (SCM_SYMBOL,
657 SCM_GLOBAL_SYMBOL), stacks.c (scm_init_stacks), struct.c
658 (scm_make_struct_layout), symbols.c (scm_sysintern0,
659 scm_string_to_symbol, scm_gensym), throw.c
660 (scm_handle_by_message): Use scm_mem2symbol or scm_str2symbol
661 instead of scm_intern_* to create a symbol object.
662
663 * goops.c (Intern): Removed.
664
665 (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4, build_class_class_slots,
666 create_basic_classes, scm_class_name, scm_class_direct_supers,
667 scm_class_direct_slots, scm_class_direct_subclasses,
668 scm_class_direct_methods, scm_class_precedence_list,
669 scm_class_slots, scm_class_environment,
670 scm_generic_function_methods, scm_method_generic_function,
671 scm_method_specializers, scm_method_procedure,
672 scm_accessor_method_slot_definition, purgatory, scm_make,
673 make_stdcls, create_standard_classes, make_class_from_template,
674 scm_make_class): Replaced calls to Intern with calls to
675 scm_str2symbol.
676
677 * ramap.c (init_raprocs): Use scm_symbol_binding instead of
678 scm_intern.
679
680 * symbols.c (scm_sym2vcell): Add a bogus return to avoid compiler
681 warnings.
682
683 * unif.c (scm_array_prototype): Fix prototype return value for
684 svects and llvects.
685
686 2000-12-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
687
688 * symbols.[ch] (scm_mem2symbol, scm_str2symbol): New functions.
689 These shall replace all those calls to scm_intern... which are
690 only required to create a scheme symbol from a C string or a field
691 of chars.
692
693 2000-12-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
694
695 * environments.c (DEFAULT_OBARRAY_SIZE), gc.c
696 (DEFAULT_SYMHASH_SIZE): Added to locally determine arbitrary
697 default values for obarrays, thus removing the dependency from
698 scm_symhash_dim.
699
700 * environments.c (scm_make_leaf_environment,
701 scm_make_eval_environment), gc.c (scm_init_storage): Don't use
702 scm_symhash_dim.
703
704 * symbols.c (NUM_HASH_BUCKETS), symbols.[ch] (scm_symhash_dim):
705 Removed.
706
707 * symbols.c (scm_sym2vcell, scm_sysintern0_no_module_lookup):
708 Eliminate a redundant SCM_IMP test.
709
710 (scm_sym2vcell, scm_sysintern0_no_module_lookup):
711 Don't assume a fixed obarray size any more.
712
713 2000-12-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
714
715 * gc.c (scm_init_gc): gc_async is already protected from gc,
716 namely via scm_asyncs. Thanks to Keisuke Nishida for pointing
717 this out.
718
719 2000-12-07 Keisuke Nishida <kxn30@po.cwru.edu>
720
721 * smob.h (scm_smob_apply_0, scm_smob_apply_1, scm_smob_apply_2,
722 scm_smob_apply_3): Removed declarations.
723 (scm_set_smob_apply): Takes unsigned integers.
724 (scm_make_smob_type_mfpe, scm_set_smob_mfpe): Deprecated.
725 * smob.c (scm_smob_apply_0_000, scm_smob_apply_1_010,
726 scm_smob_apply_2_020): Removed.
727 (scm_set_smob_apply): Takes unsigned integers + some optimization.
728 (Thanks to Dirk Herrmann)
729 (scm_make_smob_type_mfpe, scm_set_smob_mfpe): Deprecated.
730
731 2000-12-07 Keisuke Nishida <kxn30@po.cwru.edu>
732
733 * smob.h (SCM_SMOB_APPLICABLE_P, SCM_SMOB_APPLY_0,
734 SCM_SMOB_APPLY_1, SCM_SMOB_APPLY_2, SCM_SMOB_APPLY_3): New macros.
735 * eval.c (SCM_CEVAL, SCM_APPLY): Use macros above.
736 * procprop.c (scm_i_procedure_arity): Ditto.
737 * smob.c (scm_make_smob_type): Initialize gsubr_type.
738
739 2000-12-06 Keisuke Nishida <kxn30@po.cwru.edu>
740
741 * smob.h (scm_smob_descriptor): New fields `apply_0', `apply_1',
742 `apply_2', and `apply_3'.
743 * smob.c (scm_make_smob_type): Init new fields.
744 (SCM_SMOB_APPLY0, SCM_SMOB_APPLY1, SCM_SMOB_APPLY2, SCM_SMOB_APPLY3):
745 New macros.
746 (scm_smob_apply_0_000, scm_smob_apply_0_010, scm_smob_apply_0_020,
747 scm_smob_apply_0_030, scm_smob_apply_0_001, scm_smob_apply_0_011,
748 scm_smob_apply_0_021, scm_smob_apply_0_error,
749 scm_smob_apply_1_010, scm_smob_apply_1_020, scm_smob_apply_1_030,
750 scm_smob_apply_1_001, scm_smob_apply_1_011, scm_smob_apply_1_021,
751 scm_smob_apply_1_error,
752 scm_smob_apply_2_020, scm_smob_apply_2_030, scm_smob_apply_2_001,
753 scm_smob_apply_2_011, scm_smob_apply_2_021, scm_smob_apply_2_error,
754 scm_smob_apply_3_030, scm_smob_apply_3_001, scm_smob_apply_3_011,
755 scm_smob_apply_3_021, scm_smob_apply_3_error): New functions.
756 (scm_set_smob_apply): Set new fields to the above functions.
757 (scm_smob_apply_0, scm_smob_apply_1, scm_smob_apply_2,
758 scm_smob_apply_3): Removed.
759 * eval.c (SCM_CEVAL, SCM_APPLY): Rewrote smob calls.
760
761 2000-12-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
762
763 * gc.c (scm_init_gc): gc_async must be protected from gc. I
764 wonder why we never ran into problems up to now...
765
766 2000-12-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
767
768 * gc.c (scm_init_gc): Don't create a binding for %gc-thunk.
769
770 2000-12-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
771
772 * gsubr.c: No need to include vector.h.
773
774 (scm_gsubr_apply): Use SCM_GSUBR_MAX instead of hard-coded value.
775 Added FUNC_NAME wrapping. Improved (temporarily?) disabled
776 debugging code. Replaced SCM_IMP with SCM_NULLP. Eliminated call
777 to ASRTGO.
778
779 (scm_init_gsubr): Eliminated outdated comment.
780
781 2000-12-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
782
783 * async.c (SCM_ASYNCP): Use SCM_TYP16 instead of SCM_GCTYP16.
784
785 * eval.c (scm_m_vref, scm_m_vset, scm_m_define, SCM_CEVAL,
786 SCM_APPLY, scm_copy_tree): Remove commented code.
787
788 (SCM_CEVAL, SCM_APPLY): Remove #ifdef CCLO conditionals. Without
789 CCLO being defined, guile would not compile at all anyway.
790
791 * gc.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
792 SCM_GCCDR): Deprecated.
793
794 * gdbint.c (unmark_port, remark_port, gdb_read), procs.c
795 (scm_mark_subr_table): Use SCM_(SET|CLR)?GCMARK(P)? instead of
796 SCM_(SET|CLR)?GC8MARK(P)?.
797
798 * gh_data.c (gh_scm2char): Remove bogus ';'.
799
800 * tags.h: Removed comment about GCTYP16 macro.
801
802 * weaks.c (scm_mark_weak_vector_spines): Use SCM_CDR instead of
803 SCM_GCCDR.
804
805 2000-12-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
806
807 * print.c (scm_iprin1): Use scm_tc3_* codes instead of hardcoded
808 values. Added comment about tc3 codes that may appear in
809 immediates. Got rid of one goto command.
810
811 2000-12-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
812
813 * dynl.c (sysdep_dynl_link): Improved error reporting.
814
815 * guardians.c: Changed the representation from a compiled closure
816 to an applicable smob.
817
818 (guard1, CCLO_G): Removed.
819
820 (guard, g_mark, g_print, scm_tc16_guardian, scm_guardian_gc_init,
821 scm_guardian_zombify): Renamed to guardian_apply, guardian_mark,
822 guardian_print, tc16_guardian, guardian_gc_init and
823 guardian_zombify, respectively.
824
825 (guardian_free): Added, fixes a memory leak.
826
827 (guardian_print): Don't use sprintf hack.
828
829 (guardian_apply, scm_guard, scm_get_one_zombie,
830 scm_make_guardian): Don't use a compiled closure.
831
832 (guardian_zombify): Prefer !SCM_NULLP over SCM_NIMP. No need to
833 use SCM_GCCDR any more. Simplified loop condition.
834
835 (scm_init_guardian): Don't use scm_make_smob_type_mfpe for smob
836 initialization. Initialize applicable smob.
837
838 2000-12-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
839
840 * chars.c (scm_char_eq_p): Minor cleanup/optimization.
841
842 * gc.c (scm_gc_mark): Don't use SCM_VELTS for CCLOs.
843
844 * procprop.c (scm_i_procedure_arity): Separate handling of smobs
845 and CCLOs.
846
847 2000-12-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
848
849 * tags.h (scm_tc_free_cell, scm_tc16_big, scm_tc16_real,
850 scm_tc16_complex): Eliminate hard-coded value of scm_tc7_smob.
851
852 2000-12-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
853
854 * list.[ch] (scm_c_memq): Added as a fast C level alternative for
855 scm_memq for the case that the list parameter is known to be a
856 proper list.
857
858 * goops.c (filter_cpl, remove_duplicate_slots, applicablep),
859 goops.h (SCM_SUBCLASSP): Use scm_c_memq if we are sure that we
860 pass proper lists.
861
862 2000-12-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
863
864 * goops.c (scm_sys_compute_slots, scm_i_get_keyword,
865 scm_get_keyword, scm_slot_ref_using_class,
866 scm_slot_set_using_class_x): Update the code to match guile's
867 current style (e. g. using SCM_DEFINE, adding comments, removing
868 unnecessary SCM_NIMP tests etc.).
869
870 2000-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
871
872 Thanks to Julian Satchell for the bug report:
873
874 * coop-threads.c (scm_join_thread): Check whether a thread is
875 finished before trying to join it.
876
877 * coop.c (coop_aborthelp, coop_join): When a thread finishes, its
878 stack base is not set to NULL any more.
879
880 2000-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
881
882 * strop.c (scm_i_index): Removed outdated comment.
883
884 2000-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
885
886 * struct.c (scm_struct_ref, scm_struct_set_x), symbols.c
887 (scm_intern_obarray_soft), symbols.h (SCM_ROUCHARS): Eliminate
888 use of SCM_SYMBOL_UCHARS by using chars instead of unsigned
889 chars.
890
891 (SCM_SYMBOL_UCHARS): Removed.
892
893 2000-11-26 Gary Houston <ghouston@arglist.com>
894
895 * reimplementation of values, call-with-values as primitives:
896
897 * values.c, values.h: new files. use a struct to contain multiple
898 values, similar to the previous Scheme-level implementation.
899 * Makefile.am: add values.c, values.h, values.x.
900 * continuations.c (continuation_apply): support R5RS multiple value
901 continuations.
902 * init.c: call scm_init_values.
903 * struct.h: define SCM_SET_STRUCT_PRINTER.
904
905 2000-11-25 Gary Houston <ghouston@arglist.com>
906
907 * use an applicable SMOB to represent continuations, instead of a
908 custom tc7 type. This will make it easier to support R5RS
909 multiple value continuations, without the use of a Scheme-level
910 wrapper.
911
912 * continuations.c (scm_tc16_continuation, continuation_mark,
913 continuation_free, continuation_print, continuation_apply):
914 new SMOB support.
915 (scm_make_continuation): new procedure, replaces scm_make_cont
916 with a different interface.
917 (copy_stack_and_call, scm_dynthrow, scm_init_continuations): rewritten.
918 (CHEAP_CONTINUATIONS): removed non-working code completely.
919 (scm_call_continuation): removed.
920 * continuations.h (struct scm_contregs): add num_stack_items and
921 stack fields. previously stack was stored following this struct:
922 use a tail array instead.
923 (SCM_CONTINUATIONP): new macro.
924 (SCM_CONTINUATION_LENGTH, SCM_SET_CONTINUATION_LENGTH):
925 rewritten.
926 (SCM_SET_CONTREGS): removed.
927 * tags.h: removed scm_tc7_contin (was tag 61).
928 * debug.c, gc.c, hash.c, print.c, procprop.c, procs.c:
929 removed scm_tc7_contin support.
930 * eval.c: use scm_make_continuation instead of scm_make_cont.
931 don't set jump buffers here. remove scm_tc7_contin support.
932 * init.c, root.c: create SMOB continuation for rootcont instead
933 of scm_tc7_contin. call scm_init_continuations before
934 scm_init_root.
935 * root.c: remove support for static jmpbuf. It's not used by
936 default and I broke it. create SMOB continuation for rootcont.
937 * stacks.c: use SCM_CONTINUATIONP.
938
939 2000-11-24 Matthias Koeppe <mkoeppe@mail.math.uni-magdeburg.de>
940
941 * goops.c (filter_cpl, remove_duplicate_slots), goops.h
942 (SCM_SUBCLASSP): Fix previous change: In contrast to
943 scm_sloppy_memq the function scm_memq returns #f if the
944 object was not contained in the list.
945
946 2000-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
947
948 * goops.c: Include validate.h.
949
950 (DEFVAR, scm_add_method): Don't use deprecated scm_eval2.
951
952 (scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x,
953 scm_m_atdispatch): Provide FUNC_NAME definition. Don't use
954 deprecated SCM_OUTOFRANGE macro.
955
956 (scm_sloppy_num2ulong, scm_sys_logand): Removed. Guile's logand
957 function now provides the desired behaviour.
958
959 * goops.c (filter_cpl, remove_duplicate_slots), goops.h
960 (SCM_SUBCLASSP): Don't use deprecated scm_sloppy_memq.
961
962 2000-11-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
963
964 * symbols.h (SCM_LENGTH_MAX): Deprecated.
965
966 * unif.c (scm_make_uve): Use SCM_BITVECTOR_MAX_LENGTH and
967 SCM_UVECTOR_MAX_LENGTH instead of SCM_LENGTH_MAX. Postpone length
968 checks for strings and vectors to their constructors. Eliminate
969 redundant SCM_IMP test.
970
971 (scm_dimensions_to_uniform_array): Postpone length checks to
972 scm_make_uve.
973
974 * unif.h (SCM_BITVECTOR_MAX_LENGTH, SCM_UVECTOR_MAX_LENGTH):
975 Added.
976
977 2000-11-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
978
979 * gh_data.c (makvect), numbers.c (scm_mkbig, scm_adjbig),
980 strings.c (scm_makstr, scm_take_str), symbols.c
981 (scm_intern_obarray_soft, scm_sysintern0_no_module_lookup), unif.c
982 (scm_make_uve), vectors.c (scm_make_vector): Use appropriate
983 SCM_SET_<type>_(CHARS|BASE) macro instead of SCM_SETCHARS.
984
985 * numbers.h (SCM_SET_BIGNUM_BASE), strings.h
986 (SCM_SET_STRING_CHARS), symbols.h (SCM_SET_SYMBOL_CHARS), unif.h
987 (SCM_SET_UVECTOR_BASE, SCM_SET_BITVECTOR_BASE), vectors.h
988 (SCM_SET_VECTOR_BASE): Added.
989
990 * symbols.c (SCM_SETCHARS): Deprecated.
991
992 2000-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
993
994 * gc.c (scm_gc_sweep), unif.c (scm_make_uve): Don't allocate or
995 free memory for empty bitvectors.
996
997 * gh_data.c (makvect), strings.c (scm_makstr, scm_take_str),
998 symbols.c (scm_intern_obarray_soft,
999 scm_sysintern0_no_module_lookup), unif.c (scm_make_uve): Use
1000 appropriate SCM_SET_<type>_LENGTH macro instead of SCM_SETLENGTH.
1001
1002 * strings.h (SCM_SET_STRING_LENGTH), symbols.h
1003 (SCM_SET_SYMBOL_LENGTH), unif.h (SCM_SET_UVECTOR_LENGTH,
1004 SCM_SET_BITVECTOR_LENGTH): Added.
1005
1006 * symbols.h (SCM_SETLENGTH): Deprecated.
1007
1008 2000-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
1009
1010 * continuations.c (scm_make_cont): Use
1011 SCM_SET_CONTINUATION_LENGTH instead of SCM_SETLENGTH.
1012
1013 * continuations.h (SCM_SET_CONTINUATION_LENGTH): Added.
1014
1015 2000-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
1016
1017 * vectors.c (scm_make_vector), weaks.c (scm_make_weak_vector):
1018 Use SCM_SET_VECTOR_LENGTH instead of SCM_SETLENGTH.
1019
1020 * vectors.h (SCM_SET_VECTOR_LENGTH): Added.
1021
1022 2000-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
1023
1024 * dynl.c (scm_make_argv_from_stringlist), filesys.c (scm_dirname,
1025 scm_basename), gh_data.c (gh_scm2newstr, gh_get_substr), hash.c
1026 (scm_hasher), load.c (scm_parse_path, scm_search_path,
1027 scm_primitive_load_path), numbers.c (scm_string_to_number),
1028 ports.c (scm_unread_string), posix.c (scm_convert_exec_args,
1029 environ_list_to_c, scm_putenv), print.c (scm_iprin1,
1030 scm_simple_format), random.c (scm_seed_to_random_state), socket.c
1031 (scm_fill_sockaddr, scm_send, scm_sendto), strings.c
1032 (scm_string_ref, scm_substring, scm_string_append), strings.h
1033 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (scm_i_index,
1034 scm_string_to_list, scm_string_copy), strorder.c
1035 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p,
1036 scm_string_ci_less_p), strports.c (scm_mkstrport), struct.c
1037 (scm_make_struct_layout), symbols.c (scm_string_to_symbol,
1038 scm_string_to_obarray_symbol, scm_gensym, scm_gentemp): Replace
1039 calls to SCM_ROU?CHARS with the corresponding call to
1040 SCM_STRING_U?CHARS.
1041
1042 * symbols.h (SCM_ROCHARS, SCM_ROUCHARS): Deprecated.
1043
1044 2000-11-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1045
1046 * ports.c: Include eval.h.
1047
1048 * strings.c (scm_string_set_x), strings.h (SCM_RWSTRINGP),
1049 validate.h (SCM_VALIDATE_RWSTRING): Deprecate SCM_RWSTRINGP and
1050 SCM_VALIDATE_RWSTRING.
1051
1052 * strings.h (SCM_STRING_UCHARS, SCM_STRING_CHARS): Handle strings
1053 and substrings uniformly. However, substring handling is
1054 deprecated.
1055
1056 (SCM_RWSTRINGP): Deprecated.
1057
1058 2000-11-18 Gary Houston <ghouston@arglist.com>
1059
1060 * Makefile.am (.c.x): don't prefix ".:" to $PATH when running
1061 guile-doc-snarf. it doesn't seem to do anything useful, but would
1062 fail if $PATH contained whitespace. Thanks to Lars J. Aas.
1063
1064 2000-11-17 Marius Vollmer <mvo@zagadka.ping.de>
1065
1066 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
1067 continuations.c, debug-malloc.c, debug.c, dynl.c, dynwind.c,
1068 environments.c, eq.c, error.c, eval.c, evalext.c, feature.c,
1069 filesys.c, fluids.c, fports.c, gc.c, goops.c, guardians.c, hash.c,
1070 hashtab.c, hooks.c, ioext.c, iselect.c, keywords.c, lang.c,
1071 list.c, load.c, macros.c, modules.c, net_db.c, numbers.c,
1072 objects.c, objprop.c, options.c, pairs.c, ports.c, posix.c,
1073 print.c, procprop.c, procs.c, properties.c, ramap.c, random.c,
1074 read.c, regex-posix.c, root.c, scmsigs.c, script.c, simpos.c,
1075 socket.c, sort.c, srcprop.c, stackchk.c, stacks.c, stime.c,
1076 strings.c, strop.c, strorder.c, strports.c, struct.c, symbols.c,
1077 tag.c, threads.c, throw.c, unif.c, variable.c, vectors.c,
1078 version.c, vports.c, weaks.c: Makes sure the snarfer output
1079 inclusion is disabled when the snarfer is run on the file. Thanks
1080 to Lars J. Aas!
1081
1082 * Makefile.am: Install guile-procedures.txt in version-specific
1083 directory to enable multiple installed guile versions. Suggested
1084 by Karl M. Hegbloom <karlheg@debian.org, patch by Matthias Koeppe.
1085
1086 2000-11-13 Gary Houston <ghouston@arglist.com>
1087
1088 * fports.c: include gc.h.
1089 (fport_flush, fport_close): silently ignore I/O errors when
1090 closing a port during gc. it's better than aborting in scm_error.
1091
1092 * throw.c (scm_handle_by_message): remove obsolete comment.
1093
1094 2000-11-12 Gary Houston <ghouston@arglist.com>
1095
1096 * fports.c (scm_open_file): fix the 'b' option. Thanks
1097 to George Caswell.
1098
1099 2000-11-09 Gary Houston <ghouston@arglist.com>
1100
1101 * ports.c, ports.h (scm_close_all_ports_except): deprecated.
1102 use port-for-each. Updated its docstring.
1103
1104 2000-11-07 Gary Houston <ghouston@arglist.com>
1105
1106 * ports.c (scm_port_for_each): new proc. implements port-for-each,
1107 which applies a procedure to each port in the port table.
1108 ports.h: declare scm_port_for_each.
1109
1110 * ioext.c (scm_dup2): new proc. implements "dup2" which is a simple
1111 wrapper for the dup2 system call (unlike dup->fdes or
1112 primitive-move->fdes).
1113 * ioext.h: declare scm_dup2.
1114
1115 * filesys.c (scm_close_fdes): new proc. implements "close-fdes"
1116 which is a simple wrapper for close system call (unlike scm_close).
1117 * filesys.h: declare for scm_close_fdes.
1118
1119 2000-11-06 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
1120
1121 * eval.c (SCM_IM_DISPATCH), objects.c (scm_mcache_lookup_cmethod):
1122 Count n_specialized + 1 turns before letting a match through.
1123
1124 * goops.c (scm_sys_invalidate_method_cache_x): Don't convert
1125 scm_si_n_specialized from fixnum and don't take absolute value.
1126 (Thanks to Lars J. Aas.)
1127
1128 2000-11-04 Gary Houston <ghouston@arglist.com>
1129
1130 * ports.c (scm_port_p): new function, implements "port?" which
1131 is mentioned in R5RS.
1132 * ports.h: declare scm_port_p.
1133
1134 2000-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
1135
1136 * backtrace.c (display_expression, display_error_body), fports.c
1137 (prinfport), print.c (scm_iprin1): Test for symbols and strings
1138 explicitly instead of using SCM_ROSTRINGP.
1139
1140 * backtrace.c (scm_display_error_message): Don't pass a symbol to
1141 scm_simple_format. Prefer high-level output functions.
1142
1143 (display_error_body): When displaying procedure names, give
1144 preference to the name passed as a parameter. Only if none is
1145 given extract a name from the stack information.
1146
1147 * fports.c (scm_fdes_to_port, prinfport), gc.c (scm_gc_mark),
1148 ports.c (scm_port_filename, scm_set_port_filename_x): Use
1149 SCM_(SET_)?FILENAME.
1150
1151 * gh_data.c (gh_set_substr, gh_scm2newstr, gh_get_substr,
1152 gh_symbol2newstr): Use scm_remember instead of a pair of calls to
1153 scm_protect/unprotect_object.
1154
1155 * goops.c (make_struct_class), objects.c (scm_class_of): Struct
1156 table names are symbols.
1157
1158 * ports.h (SCM_SET_FILENAME): Added.
1159
1160 * print.c (scm_iprin1): Don't use scm_puts to write symbols or
1161 strings in order to treat substrings right. Reposition call to
1162 scm_remember after the last use of object's data.
1163
1164 (scm_simple_format): Treat messages that are substrings right.
1165
1166 * symbols.h (SCM_ROSTRINGP): Deprecated.
1167
1168 2000-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
1169
1170 * environments.c (obarray_replace, obarray_retrieve,
1171 obarray_remove): Don't use '==' to compare SCM objects.
1172
1173 * posix.c (scm_getgroups): Don't create a redundant string.
1174
1175 2000-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
1176
1177 * symbols.c (scm_sym2vcell, scm_sym2ovcell_soft,
1178 scm_intern_symbol, scm_unintern_symbol): Symbol objects already
1179 hold their hash values, no need to recompute them.
1180
1181 (scm_intern_obarray_soft): Speed up search for a matching symbol
1182 by comparing the hash values first.
1183
1184 2000-10-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
1185
1186 * unif.c (scm_make_uve, scm_dimensions_to_uniform_array): Don't
1187 allow vectors longer than SCM_LENGTH_MAX. This removes the
1188 SCM_HUGE_LENGTH trick, i. e. storing a vector length greater than
1189 SCM_LENGTH_MAX at the beginning of the vector's memory. Since not
1190 all of guile's code was implemented to be aware of this trick, it
1191 is unlikely that it was used anyway. We can implement such a
1192 feature more cleanly by using double cells for uniform vector
1193 types.
1194
1195 (scm_shap2ra): Replace SCM_IMP and SCM_NIMP tests by more
1196 straightforward predicates.
1197
1198 (scm_dimensions_to_uniform_array): Require that for dimensions
1199 given as lower-bound/upper-bound pairs the upper-bound is never
1200 less than the lower bound.
1201
1202 2000-10-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
1203
1204 * dynl.c (scm_dynamic_link, scm_dynamic_func, scm_dynamic_call,
1205 scm_dynamic_args_call), filesys.c (scm_chown, scm_chmod,
1206 scm_open_fdes, scm_stat, scm_link, scm_rename, scm_delete_file,
1207 scm_mkdir, scm_rmdir, scm_opendir, scm_chdir, scm_symlink,
1208 scm_readlink, scm_lstat, scm_copy_file), fports.c (scm_open_file),
1209 ioext.c (scm_read_delimited_x, scm_fdopen), load.c
1210 (scm_primitive_load, scm_parse_path, scm_search_path,
1211 scm_sys_search_load_path, scm_primitive_load_path), net_db.c
1212 (scm_inet_aton, scm_gethost, scm_getnet, scm_getproto,
1213 scm_getserv), numbers.c (scm_string_to_number), ports.c
1214 (scm_truncate_file, scm_sys_make_void_port), posix.c
1215 (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
1216 environ_list_to_c, scm_execle, scm_utime, scm_access,
1217 scm_setlocale, scm_mknod), regex-posix.c (scm_make_regexp),
1218 simpos.c (scm_system, scm_getenv), socket.c (scm_fill_sockaddr,
1219 scm_send, scm_sendto), stime.c (scm_strftime, scm_strptime),
1220 strop.c (scm_i_index, scm_string_null_p, scm_string_to_list),
1221 strports.c (scm_mkstrport), symbols.c
1222 (scm_string_to_obarray_symbol), vports.c (scm_make_soft_port):
1223 Don't accept symbols as input parameters. Use SCM_STRING_LENGTH
1224 instead of SCM_ROLENGTH.
1225
1226 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
1227 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
1228 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
1229 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
1230 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
1231 (scm_fdopen), net_db.c (scm_inet_aton, scm_gethost, scm_getnet,
1232 scm_getproto, scm_getserv), ports.c (scm_truncate_file,
1233 scm_sys_make_void_port), posix.c (scm_getpwuid, scm_getgrgid,
1234 scm_execl, scm_execlp, scm_execle, scm_utime, scm_access,
1235 scm_setlocale, scm_mknod), regex-posix.c (scm_make_regexp,
1236 scm_regexp_exec), simpos.c (scm_system, scm_getenv), stime.c
1237 (setzone, scm_strftime, scm_strptime), vports.c
1238 (scm_make_soft_port): Use SCM_STRING_COERCE_0TERMINATION_X to
1239 make sure the characters of a string are followed by a \0.
1240 Further, use SCM_STRING_CHARS instead of SCM_ROCHARS on the
1241 resulting string.
1242
1243 * dynl.c (scm_make_argv_from_stringlist), posix.c
1244 (scm_convert_exec_args): Aligned to match each other.
1245
1246 * dynl.c (scm_coerce_rostring): Removed.
1247
1248 (scm_dynamic_func): Changed the comment to reflect that the
1249 function name has to be a string. Further, hide implementation
1250 details from the scheme comment.
1251
1252 * error (scm_error_scm): Don't accept a symbol as message
1253 parameter. Fix substring handling.
1254
1255 * posix.c (environ_list_to_c): Use memcpy to copy environment
1256 strings. Handle substrings which don't have a trailing \0.
1257
1258 * symbols.h (SCM_LENGTH, SCM_ROLENGTH, SCM_SUBSTRP,
1259 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_COERCE_SUBSTR):
1260 Deprecated.
1261
1262 * unif.h (SCM_HUGE_LENGTH): Deprecated.
1263
1264 * validate.h (SCM_VALIDATE_ROSTRING, SCM_VALIDATE_ROSTRING_COPY,
1265 SCM_VALIDATE_NULLORROSTRING_COPY): Deprecated.
1266
1267 2000-10-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
1268
1269 * random.c: Include unif.h.
1270
1271 * strings.h (SCM_STRING_COERCE_0TERMINATION_X): Added. This is
1272 intended to replace the macro SCM_COERCE_SUBSTR. Such a macro
1273 will be necessary, even after copy-on-write strings will be added
1274 to guile, but the current naming is inappropriate.
1275
1276 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
1277 scm_string_less_p, scm_string_ci_less_p): Don't accept symbols as
1278 input parameters. Further, the functions that test for equality
1279 are rewritten to compare from back to front, the others are also a
1280 little bit more polished.
1281
1282 2000-10-25 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
1283
1284 This change merges the GOOPS code into Guile. However, GOOPS
1285 is still not initialized until someone asks for the module.
1286 We need to optimize GOOPS initialization time before initializing
1287 it together with the rest of libguile. We also need to add the
1288 C API + primitive methods. Then we can start using it to
1289 modularize Guile, implement a real exception system etc.
1290
1291 * goops.c, objects.c, objects.h, eval.c (scm_make_extended_class,
1292 scm_make_port_classes, scm_change_object_class,
1293 scm_memoize_method): Changed to ordinary functions (was plugin
1294 slots).
1295
1296 * goops.c (wrap_init, scm_wrap_object): Unconditionally use
1297 SCM_STRUCT_GC_CHAIN.
1298 (scm_goops_version): Removed.
1299 (scm_oldfmt): and all uses of it: Removed.
1300 (scm_shared_array_root, scm_shared_array_offset,
1301 scm_shared_array_increments): Removed.
1302 (scm_init_goops): No need to support two arg mutex init.
1303 Removed #include "versiondat.h", #include "goops.h".
1304
1305 * goops.h: Removed various superfluous conditions.
1306 Renamed class --> cls, new --> newinst in order to accomodate
1307 C++.
1308
1309 * init.c (scm_init_guile_1): Call the goops module registration
1310 function.
1311 Added #include "libguile/goops.h".
1312
1313 * Makefile.am (libguile_la_SOURCES): Added goops.c
1314 (DOT_X_FILES): Added goops.x
1315 (DOT_DOC_FILES): Added goops.doc
1316 (modinclude_HEADERS): Added goops.h
1317
1318 2000-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1319
1320 * gc.c (scm_igc): Remove references to scm_vector_set_length_x.
1321
1322 (scm_gc_sweep): SCM_CONTREGS is never NULL.
1323
1324 * gc.c (scm_gc_sweep), vectors.c (scm_make_vector): Don't
1325 allocate/free memory for zero length vectors.
1326
1327 * vectors.[ch] (scm_vector_set_length_x): Deprecated.
1328
1329 2000-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1330
1331 * alist.c (scm_assq_ref): Add a suggestion about how to deal with
1332 this function when the API gets reviewed.
1333
1334 * async.c (SET_ASYNC_GOT_IT): Use SCM_TYP16 instead of doing bit
1335 operations directly.
1336
1337 * dynl.c (scm_coerce_rostring), filesys.c (scm_link,
1338 scm_copy_file), fports (scm_open_file), hash.c (scm_hasher),
1339 posix.c (scm_getpwuid), print.c (scm_iprin1), simpos.c
1340 (scm_system), strings.c (scm_string_ref, scm_substring,
1341 scm_string_append), strop.c (scm_string_copy), struct.c
1342 (scm_make_struct_layout), symbols.c (scm_gensym, scm_gentemp),
1343 symbols.h (SCM_COERCE_SUBSTR): Use SCM_STRING_LENGTH instead of
1344 SCM_ROLENGTH if the object is known to be a string or substring.
1345
1346 * eval.c (scm_lookupcar): Use SCM_ITAG7 instead of doing bit
1347 operations directly.
1348
1349 * filesys.c (scm_dirname, scm_basename): Don't create shared
1350 substrings as these are going to disappear from guile.
1351
1352 * gc.c (scm_gc_sweep): Use SCM_UVECTOR_LENGTH instead of
1353 SCM_HUGE_LENGTH. (The SCM_HUGE_LENGTH mechanism does not work
1354 correctly anyway.)
1355
1356 * gc.h (SCM_FREEP, SCM_NFREEP): Deprecated.
1357
1358 * read.c (scm_flush_ws): Don't compare SCM values directly.
1359
1360 * root.c (scm_make_root), root.h (scm_root_state): Removed
1361 system_transformer and top_level_lookup_closure_var from struct.
1362 (Since eval is now R5RS, binary compatibility is not granted
1363 anyway.)
1364
1365 * simpos.c (scm_system): Fix condition.
1366
1367 * strings.c (scm_string_length, scm_string_ref, scm_substring,
1368 scm_string_append), strop.c (scm_string_copy), struct.c
1369 (scm_make_struct_layout, scm_make_vtable_vtable), symbols.c
1370 (scm_gensym, scm_gentemp): Replace SCM_VALIDATE_STRINGORSUBSTR
1371 with SCM_VALIDATE_STRING, since they do the same thing.
1372
1373 * strings.h (scm_make_shared_substring): Deprecated.
1374
1375 * tags.h (SCM_ITAG7): Added.
1376
1377 * validated.h (SCM_VALIDATE_STRINGORSUBSTR): Deprecated.
1378
1379 2000-10-20 Marius Vollmer <mvo@zagadka.ping.de>
1380
1381 * init.c (scm_init_guile_1, invoke_main_func): Call
1382 scm_load_startup_files in scm_init_guile_1, not in
1383 invoke_main_func.
1384
1385 2000-10-18 Marius Vollmer <mvo@zagadka.ping.de>
1386
1387 * print.c (grow_ref_stack): Pass a INUM to scm_make_vector as the
1388 size, not a naked int. Thanks to Brad Knotwell!
1389
1390 * gc_os_dep.c (GC_noop1, GC_bool, TRUE, FALSE, VOLATILE):
1391 Definitions copied from Boehm collector.
1392
1393 2000-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
1394
1395 * list.[ch] (scm_sloppy_memq, scm_sloppy_memv, scm_sloppy_member):
1396 Deprecated.
1397
1398 (scm_memq, scm_memv, scm_member): Inline the sloppy code.
1399
1400 2000-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
1401
1402 * alloca.c: Fixed include file path. Thanks to Bruce Korb for
1403 the bug report.
1404
1405 2000-10-11 Marius Vollmer <mvo@zagadka.ping.de>
1406
1407 * gc_os_dep.c: Added real implementation based on code from Boehms
1408 collector. This is not well tested yet.
1409
1410 * gc.h (scm_get_stack_base): Added prototype.
1411 * init.c (scm_get_stack_base): Removed prototype.
1412
1413 2000-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
1414
1415 * random.c (scm_seed_to_random_state): Replace SCM_LENGTH with
1416 the appropriate SCM_<type>_LENGTH macro.
1417
1418 (vector_scale, vector_sum_squares, scm_random_solid_sphere_x,
1419 scm_random_normal_vector_x): Use scm_uniform_vector_length to
1420 determine the length of a vector object generically.
1421
1422 2000-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
1423
1424 * ramap.c (scm_array_fill_int, scm_array_index_map_x): Replace
1425 SCM_LENGTH with the appropriate SCM_<type>_LENGTH macro.
1426
1427 (scm_ra_matchp, scm_ramapc, ramap, rafe, scm_array_index_map_x,
1428 raeql_1, raeql): Use scm_uniform_vector_length to determine the
1429 length of a vector object generically.
1430
1431 2000-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
1432
1433 * unif.c (scm_make_uve, scm_uniform_vector_length, scm_array_p,
1434 scm_transpose_array, scm_array_contents, scm_ra2contig,
1435 scm_uniform_array_read_x, scm_uniform_array_write, scm_bit_count,
1436 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
1437 scm_bit_invert_x, scm_array_to_list, scm_raprin1): Replace
1438 SCM_LENGTH with the appropriate SCM_<type>_LENGTH macro.
1439
1440 (scm_array_dimensions, scm_make_shared_array, scm_enclose_array,
1441 scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x,
1442 scm_array_contents, scm_uniform_array_read_x,
1443 scm_uniform_array_write, scm_list_to_uniform_array, rapr1): Use
1444 scm_uniform_vector_length to determine the length of a vector
1445 object generically.
1446
1447 (scm_bit_count, scm_bit_set_star_x, scm_bit_count_star,
1448 scm_bit_invert_x): Eliminated dummy type dispatch.
1449
1450 (scm_ra2contig): Fixed array vector access.
1451
1452 2000-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
1453
1454 * unif.h (SCM_BITVECTOR_P, SCM_BITVECTOR_BASE): Added.
1455
1456 * eval.c (iqq, SCM_CEVAL, SCM_APPLY, check_map_args, scm_map,
1457 scm_for_each, scm_copy_tree), gc.c (scm_igc, scm_gc_mark,
1458 scm_gc_sweep), gh_data.c (gh_scm2chars), sort.c
1459 (scm_restricted_vector_sort_x, scm_sorted_p, scm_sort_x,
1460 scm_sort, scm_stable_sort_x, scm_stable_sort), vectors.c
1461 (scm_vector_length, scm_vector_ref, scm_vector_set_x,
1462 scm_vector_to_list, scm_vector_fill_x, scm_vector_equal_p,
1463 scm_vector_move_left_x, scm_vector_move_right_x, ): Replace
1464 SCM_LENGTH with the appropriate SCM_<type>_LENGTH macro.
1465
1466 * gc.c (scm_gc_sweep): Use SCM_BITVECTOR_BASE for bitvectors.
1467
1468 * sort.c (scm_restricted_vector_sort_x, scm_sorted_p): Eliminated
1469 dummy type dispatch.
1470
1471 (scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort):
1472 Eliminated redundant NIM test.
1473
1474 2000-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
1475
1476 * filesys.c (fill_select_type, retrieve_select_type, scm_select),
1477 gh_data.c (gh_set_substr, gh_scm2chars, gh_scm2shorts,
1478 gh_scm2longs, gh_scm2floats, gh_scm2doubles, gh_symbol2newstr),
1479 stime.c (bdtime2c), symbols.c (scm_sym2vcell, scm_sym2ovcell_soft,
1480 scm_intern_obarray_soft, scm_symbol_to_string, scm_intern_symbol,
1481 scm_unintern_symbol, copy_and_prune_obarray, scm_builtin_bindings,
1482 scm_builtin_weak_bindings), validate.h (SCM_VALIDATE_VECTOR_LEN):
1483 Replace SCM_LENGTH with the appropriate SCM_<type>_LENGTH macro.
1484
1485 * filesys.c (scm_dirname, scm_basename), gh_data.c (gh_scm2newstr,
1486 gh_get_substr), posix.c (scm_putenv), regex-posix.c
1487 (scm_regexp_exec), stime.c (setzone), symbols.c
1488 (scm_string_to_symbol): Don't accept symbols as input parameters
1489 any more.
1490
1491 2000-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
1492
1493 * continuations.c (scm_make_cont, copy_stack_and_call,
1494 scm_dynthrow), environments.c (obarray_enter, obarray_replace,
1495 obarray_retrieve, obarray_remove, obarray_remove_all,
1496 leaf_environment_fold), fluids.c (grow_fluids, scm_copy_fluids,
1497 scm_fluid_ref, scm_fluid_set_x), hash.c (scm_hasher), hashtab.c
1498 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x,
1499 scm_hash_fn_remove_x, scm_internal_hash_fold), ioext.c
1500 (scm_read_delimited_x), objects.c (scm_mcache_lookup_cmethod,
1501 scm_make_subclass_object), ports.c (scm_unread_string), socket.c
1502 (scm_recv, scm_recvfrom), stacks.c (scm_make_stack, scm_stack_id,
1503 scm_last_stack_frame), strings.c (scm_string_length,
1504 scm_string_set_x), strop.c (scm_substring_move_x,
1505 scm_substring_fill_x, scm_string_fill_x, scm_string_upcase_x,
1506 scm_string_downcase_x, scm_string_capitalize_x), struct.c
1507 (scm_struct_init, scm_struct_vtable_p, scm_make_struct,
1508 scm_make_vtable_vtable, scm_struct_ref, scm_struct_set_x), weaks.c
1509 (scm_mark_weak_vector_spines, scm_scan_weak_vectors): Replace
1510 SCM_LENGTH with the appropriate SCM_<type>_LENGTH macro.
1511
1512 2000-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
1513
1514 * print.c (make_print_state, scm_iprin1): Replace SCM_LENGTH with
1515 the appropriate SCM_<type>_LENGTH macro.
1516
1517 (grow_ref_stack): Don't call scm_vector_set_length_x to resize
1518 the print stack.
1519
1520 2000-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
1521
1522 * numbers.c (big2str): Avoid redundant copying.
1523
1524 (scm_bigprint): Use SCM_STRING_LENGTH instead of SCM_LENGTH.
1525
1526 2000-10-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
1527
1528 * numbers.c (big2str), read.c (scm_grow_tok_buf), strports.c
1529 (st_resize_port): Don't call scm_vector_set_length_x to resize
1530 strings.
1531
1532 * read.c (scm_lreadr, scm_read_token): Use SCM_STRING_LENGTH for
1533 string arguments (instead of SCM_LENGTH).
1534
1535 2000-10-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
1536
1537 * continuations.h (SCM_CONTINUATION_LENGTH), strings.h
1538 (SCM_STRING_LENGTH), symbols.h (SCM_SYMBOL_LENGTH), unif.h
1539 (SCM_UVECTOR_LENGTH, SCM_BITVECTOR_LENGTH), vectors.h
1540 (SCM_VECTOR_LENGTH): Added as replacements for SCM_LENGTH.
1541
1542 2000-10-02 Marius Vollmer <mvo@zagadka.ping.de>
1543
1544 * coop-defs.h (coop_key_create): Don't use the C++ keyword
1545 `destructor' in prototype. Thanks to Martin Baulig!
1546
1547 2000-10-02 Michael Livshin <mlivshin@bigfoot.com>
1548
1549 * guile-func-name-check.in: now should not confuse SCO nawk
1550 anymore. thanks to Bruce Korb for the fix!
1551
1552 2000-10-01 Gary Houston <ghouston@arglist.com>
1553
1554 * net_db.c: declare inet_aton only if HAVE_INET_ATON is not
1555 defined. thanks to Han-Wen Nienhuys.
1556
1557 2000-09-30 Gary Houston <ghouston@arglist.com>
1558
1559 * filesys.c (scm_stat2scm), posix.c (s_scm_mknod): don't use
1560 S_ISSOCK or S_IFSOCK if not defined. thanks to Bruce Korb.
1561
1562 2000-09-29 Neil Jerram <neil@ossau.uklinux.net>
1563
1564 * Makefile.am (guile-procedures.txt): Insert a new rule such that
1565 the output from guile-snarf.awk is processed by makeinfo to
1566 produce guile-procedures.txt.
1567
1568 * guile-snarf.awk.in: Modify the way we snarf docstrings such that
1569 the output is Texinfo-compliant and suitable for post-processing
1570 with makeinfo. (Trim leading "./" from C file name if
1571 present; reformat procedure prototype line in @deffn format;
1572 improve representation of args to show optional and rest args;
1573 explicitly quote quotation marks where they are used inside an AWK
1574 regexp.)
1575
1576 * net_db.c (scm_inet_ntoa): Docstring fix: missing newline
1577 inserted.
1578
1579 * hashtab.c (scm_hashx_create_handle_x, scm_hashx_ref): Insert
1580 spaces between C parameters so that the snarfer doesn't coalesce
1581 them all into a single very long-named parameter.
1582
1583 2000-09-27 Neil Jerram <neil@ossau.uklinux.net>
1584
1585 * list.c (scm_append): Use @example texinfo markup in docstring.
1586
1587 2000-09-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
1588
1589 * strings.c (scm_string, scm_make_string, scm_string_set_x,
1590 scm_string_append), strop.c (scm_string_upcase_x,
1591 scm_string_downcase_x), strports.c (st_resize_port), symbols.c
1592 (scm_sym2vcell, scm_sym2ovcell_soft, scm_intern_obarray_soft,
1593 scm_intern_symbol, scm_unintern_symbol), unif.c (scm_cvref,
1594 scm_uniform_vector_ref, scm_array_set_x, rapr1): Replace calls to
1595 SCM_UCHARS with SCM_STRING_UCHARS or SCM_SYMBOL_UCHARS.
1596
1597 * symbols.h (SCM_UCHARS): Deprecated.
1598
1599 2000-09-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
1600
1601 * gc.c (scm_gc_sweep): Replace SCM_CHARS by SCM_COMPLEX_MEM.
1602
1603 * numbers.h (SCM_COMPLEX_MEM): Added as a replacement for
1604 SCM_CHARS.
1605
1606 (SCM_COMPLEX_REAL, SCM_COMPLEX_IMAG): Use it.
1607
1608 * ramap.c (scm_array_fill_int, racp, raeql_1): Replace SCM_CHARS
1609 with SCM_STRING_CHARS or SCM_UVECTOR_BASE.
1610
1611 (racp): Fix: Make sure that src and dst types match.
1612
1613 * read.c (scm_grow_tok_buf, scm_lreadr, scm_read_token): Replace
1614 SCM_CHARS with SCM_STRING_CHARS.
1615
1616 * symbols.h (SCM_CHARS): Deprecated.
1617
1618 * unif.c (scm_enclose_array, scm_uniform_vector_ref, scm_cvref,
1619 scm_array_set_x, scm_uniform_array_read_x, rapr1, freera,
1620 scm_uniform_array_write): Replace SCM_CHARS with
1621 SCM_STRING_CHARS, SCM_UVECTOR_BASE or SCM_ARRAY_MEM.
1622
1623 * unif.h (SCM_ARRAY_MEM): Added as a replacement for SCM_CHARS.
1624
1625 (SCM_ARRAY_V, SCM_ARRAY_BASE, SCM_ARRAY_DIMS): Use it.
1626
1627 * validate.h (SCM_COERCE_ROSTRING): Removed.
1628
1629 2000-09-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
1630
1631 * gc.c (scm_igc): : Eliminate references to SCM_LENGTH and
1632 SCM_CHARS from comment.
1633
1634 (scm_gc_mark, scm_gc_sweep): Replace SCM_CHARS with
1635 SCM_SYMBOL_CHARS or SCM_CCLO_BASE or SCM_UVECTOR_BASE or
1636 SCM_BDIGITS, and replace SCM_VELTS with SCM_VECTOR_BASE or
1637 SCM_CONTREGS, according to the corresponding types.
1638
1639 (scm_gc_sweep): Simplify sweeping of uniform vectors.
1640
1641 2000-09-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
1642
1643 * procs.h (SCM_CCLO_LENGTH, SCM_SET_CCLO_LENGTH, SCM_CCLO_BASE,
1644 SCM_SET_CCLO_BASE, SCM_CCLO_REF, SCM_CCLO_SET, SCM_CCLO_SUBR,
1645 SCM_SET_CCLO_SUBR): Added resp. changed such that none of the
1646 macros SCM_CHARS, SCM_SETCHARS, SCM_VELTS and SCM_LENGTH have to
1647 be used with compiled closures any more.
1648
1649 * procs.c (scm_makcclo), gsubr.h (SCM_GSUBR_TYPE, SCM_GSUBR_PROC):
1650 Replace uses of SCM_CHARS, SCM_SETCHARS and SCM_VELTS with regards
1651 to compiled closures.
1652
1653 * gsubr.h (SCM_SET_GSUBR_TYPE, SCM_SET_GSUBR_PROC): Added.
1654
1655 * gsubr.c (scm_make_gsubr): Use them.
1656
1657 2000-09-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
1658
1659 * numbers.c (scm_adjbig): Use SCM_BDIGITS instead of SCM_CHARS.
1660
1661 (big2str, scm_bigprint): Use SCM_STRING_CHARS instead of
1662 SCM_CHARS.
1663
1664 * vectors.c (scm_vector_set_length_x): Distinguish between
1665 strings, scheme vectors and uniform vectors, thus getting rid of
1666 references to SCM_CHARS. (The code still needs improvement.)
1667
1668 2000-09-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
1669
1670 * eval.c (scm_m_letrec1, SCM_CEVAL, SCM_APPLY): Use
1671 SCM_STRING_U?CHARS or SCM_SYMBOL_U?CHARS instead of SCM_U?CHARS.
1672
1673 * unif.h (SCM_UVECTOR_BASE), vectors.h (SCM_VECTOR_BASE): Added
1674 as replacements for SCM_CHARS and SCM_VELTS.
1675
1676 2000-09-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
1677
1678 * continuations.c (scm_make_cont, scm_dynthrow), print.c
1679 (scm_iprin1), stacks.c (scm_make_stack, scm_stack_id,
1680 scm_last_stack_frame): For continuations, use SCM_CONTREGS
1681 instead of SCM_CHARS.
1682
1683 * coop-threads.c (scm_threads_mark_stacks): Eliminate references
1684 to SCM_LENGTH and SCM_CHARS from comments.
1685
1686 * dynl.c (scm_dynamic_link, scm_dynamic_func), symbols.h
1687 (SCM_ROCHARS, SCM_ROUCHARS): Cleanly distinguish between string
1688 and symbol arguments.
1689
1690 * hash.c (scm_hasher), keywords.c (prin_keyword), objects.c
1691 (scm_make_subclass_object), print.c (scm_iprin1), regex-posix.c
1692 (scm_regexp_error_msg), stime.c (bdtime2c, scm_strftime), struct.c
1693 (scm_struct_init, scm_struct_vtable_p, scm_struct_ref,
1694 scm_struct_set_x): Use SCM_STRING_U?CHARS or SCM_SYMBOL_U?CHARS
1695 instead of SCM_U?CHARS.
1696
1697 * strings.h (SCM_STRING_UCHARS): Added as a replacement for
1698 SCM_UCHARS for string arguments.
1699
1700 * strorder.c: Include strings.h and symbols.h.
1701
1702 * symbols.h: Replaced SCM_CHARS in comment.
1703
1704 (SCM_SYMBOL_UCHARS): Added as a replacement for SCM_UCHARS for
1705 symbol arguments.
1706
1707 (SCM_SLOPPY_SUBSTRP): Deprecated.
1708
1709 * tags.h: Fixed comments not to reference SCM_LENGTH or
1710 SCM_CHARS.
1711
1712 2000-09-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
1713
1714 * gc.c (scm_gc_mark, scm_gc_sweep), tags.h: Removed the
1715 scm_tc7_lvector type tag.
1716
1717 2000-09-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
1718
1719 * eval.c (scm_m_define), evalext.c (scm_m_undefine): Removed dead
1720 code.
1721
1722 * gc.c (scm_gc_sweep): Use SCM_STRING_CHARS or SCM_SYMBOL_CHARS
1723 instead of SCM_CHARS.
1724
1725 2000-09-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
1726
1727 * backtrace.c (display_frame_expr), environments.c
1728 (print_observer, print_leaf_environment, print_eval_environment,
1729 print_import_environment, print_export_environment), gh_data.c
1730 (gh_set_substr, gh_symbol2newstr), keywords.c
1731 (scm_make_keyword_from_dash_symbol), ports.c (scm_drain_input),
1732 posix.c (scm_mknod), print.c (scm_iprin1), regexp-posix.c
1733 (scm_regexp_error_msg), script.c (scm_compile_shell_switches),
1734 simpos.c (scm_getenv), socket.c (scm_recv, scm_recvfrom),
1735 strings.c (scm_makfromstr), strop.c (scm_substring_move_x,
1736 scm_substring_fill_x, scm_string_capitalize_x), symbols.c
1737 (scm_symbol_to_string), unif.c (scm_make_uve, scm_array_p),
1738 validate.h (SCM_VALIDATE_STRING_COPY): Use SCM_STRING_CHARS or
1739 SCM_SYMBOL_CHARS instead of SCM_CHARS.
1740
1741 2000-09-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
1742
1743 * strings.h (SCM_STRING_CHARS): Added, should be used instead of
1744 SCM_CHARS whenever the argument is known to be a string.
1745
1746 (SCM_SLOPPY_STRINGP): Deprecated.
1747
1748 * symbols.h (SCM_SYMBOL_CHARS): Added, should be used instead of
1749 SCM_CHARS whenever the argument is known to be a symbol.
1750
1751 2000-09-22 Neil Jerram <neil@ossau.uklinux.net>
1752
1753 * struct.c (scm_make_struct): Fix texinfo warning in docstring by
1754 using @pxref rather than @xref.
1755
1756 * root.c (scm_call_with_dynamic_root): Fix texinfo warning in
1757 docstring by using @code for (thunk) rather than @var.
1758
1759 2000-09-20 Marius Vollmer <mvo@zagadka.ping.de>
1760
1761 * numbers.c (scm_istr2flo): Throw an `out of range' error when
1762 exponent is too large instead of returning `#f'. The rationale is
1763 that in this case the string represents a valid number but we
1764 can't deal with it.
1765
1766 2000-09-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
1767
1768 * symbols.c (scm_intern_obarray_soft,
1769 scm_sysintern0_no_module_lookup): Make sure that symbol
1770 properties initially form an empty list. Thanks to Keisuke
1771 Nishida for pointing this out.
1772
1773 2000-09-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
1774
1775 * throw.c (scm_handle_by_message): Added a FIXME comment.
1776
1777 (scm_ithrow): Removed some redundant tests. When compiling on
1778 gcc, always add the GCSE bug workaround.
1779
1780 2000-09-14 Gary Houston <ghouston@arglist.com>
1781
1782 * print.c (scm_iprin1): write the ascii delete character as #\del
1783 instead of '#\', so it can be read back. like in SCM.
1784
1785 2000-09-12 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
1786
1787 * symbols.c (duplicate_string): Don't try to copy the byte after
1788 the string. This might not be `\0' and might even not be
1789 allocated memory.
1790
1791 2000-09-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
1792
1793 * symbols.c (scm_symbol_p): Eliminate redundant SCM_IMP test.
1794
1795 2000-09-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
1796
1797 This patch unifies the formerly distinct ssymbol and msymbol types
1798 to a common symbol type scm_tc7_symbol. The representation of the
1799 new symbol type uses a double cell with the following layout:
1800 <type/length, chars, raw_hash, prop-pair>, where the car of
1801 prop-pair holds the symbol's function property and the cdr of
1802 prop-pair holds the symbol's other properties. In the long run,
1803 these properties will be removed. Then, the generic property
1804 functions will be uses.
1805
1806 * eval.c (SCM_CEVAL), objects.c (scm_class_of), print.c
1807 (scm_iprin1), tag.c (scm_tag): Use scm_tc7_symbol instead of
1808 scm_tc7_ssymbol, scm_tc7_msymbol or scm_tcs_symbols.
1809
1810 * gc.c (scm_gc_mark): Mark the symbols property pair.
1811
1812 (scm_gc_sweep): There are no symbol slots any more.
1813
1814 * hash.c (scm_hasher): Instead of re-calculating the hash value
1815 of a symbol, use the raw_hash value stored in the symbol itself.
1816
1817 * properties.h: Fix typo.
1818
1819 * strings.[ch] (scm_makstr, scm_makfromstr): The slot parameter
1820 is not used any more.
1821
1822 * symbols.[ch] (scm_strhash): Deprecated, replaced by a macro.
1823
1824 (scm_intern_obarray_soft): Made softness parameter unsigned.
1825
1826 (scm_string_hash): New function with the same functionality as
1827 scm_strhash had before, except that the hash value is not adjusted
1828 to a hash table size. Instead, the 'raw' hash value is returned.
1829
1830 * symbols.c (duplicate_string): New static convenience function.
1831
1832 (scm_sym2vcell, scm_sym2ovcell_soft, scm_intern_obarray_soft):
1833 Renamed local variable from scm_hash to hash.
1834
1835 (scm_intern_obarray_soft): Don't check for a negative softness
1836 any more. When generating symbol cells, use the new layout and
1837 store the raw hash value in the symbol's cell.
1838
1839 (scm_symbol_to_string): Removed unnecessary cast.
1840
1841 (scm_intern_symbol, scm_unintern_symbol): Use scm_string_hash to
1842 determine the hash values.
1843
1844 (msymbolize): Removed.
1845
1846 (scm_symbol_fref, scm_symbol_pref, scm_symbol_fset_x,
1847 scm_symbol_pset_x, scm_symbol_hash): No need to distinguish
1848 between different symbol types any more.
1849
1850 (scm_symbol_hash): Comment fixed.
1851
1852 * symbols.h: Comment about the distinction between ssymbols and
1853 msymbols removed.
1854
1855 (SCM_SYMBOLP, SCM_ROSTRINGP): No need to distinguish between
1856 different symbol types any more.
1857
1858 (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Added.
1859
1860 (SCM_SYMBOL_FUNC, SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS,
1861 SCM_SET_SYMBOL_PROPS, SCM_SYMBOL_HASH, SCM_SET_SYMBOL_HASH): Use
1862 the new symbol cell layout.
1863
1864 * tags.h (scm_tc7_ssymbol, scm_tc7_msymbol, scm_tcs_symbols):
1865 Deprecated.
1866
1867 2000-09-12 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
1868
1869 * symbols.h (scm_gentemp): Declared.
1870
1871 * symbols.c (scm_gensym): Reimplemented. Now only takes one
1872 optional argument which should be a *string*.
1873 (scm_gentemp): Reimplemented and moved from boot-9.scm.
1874
1875 2000-09-10 Keisuke Nishida <kxn30@po.cwru.edu>
1876
1877 * modules.c: Use applicable smobs for eval closures instead of
1878 compiled closures. Include "libguile/smob.h".
1879 (f_eval_closure): Removed.
1880 (scm_eval_closure_tag): New variable.
1881 (scm_eval_closure_lookup): Renamed from eval_closure.
1882 This function now takes a smob instead of a compiled closure.
1883 (scm_standard_eval_closure): Create a smob instead of a compiled
1884 closure.
1885 (scm_init_modules): Initialize the eval closure type as a smob.
1886 * modules.h (SCM_EVAL_CLOSURE_P): New macro.
1887 (scm_eval_closure_tag, scm_eval_closure_lookup): Declare.
1888 * symbols.c: Include "libguile/smob.h".
1889 (scm_sym2vcell): Call scm_eval_closure_lookup directly if THUNK
1890 is an eval closure.
1891
1892 2000-09-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
1893
1894 * Makefile.am (.x.doc): Bugfix: Added $(srcdir) to path in order
1895 to allow for builds in separate tree.
1896
1897 * symbols.c (scm_gensym): Bugfixed my previous bugfix. (Thanks to
1898 Dale P. Smith.)
1899
1900 2000-09-10 Keisuke Nishida <kxn30@po.cwru.edu>
1901
1902 * eval.c (SCM_APPLY): Fixed bugs in the applicable-smob calls.
1903
1904 2000-09-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
1905
1906 * environments.c (obarray_enter, obarray_retrieve,
1907 obarray_remove): Make sure the hash value is a valid obarray
1908 index.
1909
1910 (obarray_enter, obarray_remove): Documentation improved.
1911
1912 (obarray_replace): Added.
1913
1914 (leaf_environment_define, leaf_environment_undefine): Cleaned up
1915 and optimized.
1916
1917 2000-09-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
1918
1919 * symbols.c (scm_gensym): Check that argument is a symbol, not a
1920 string. (Thanks to Ralf Mattes.)
1921
1922 2000-09-05 Marius Vollmer <mvo@zagadka.ping.de>
1923
1924 * init.c: Include "libguile/properties.h".
1925
1926 * gh_data.c (gh_scm2char): Validate that argument is a character.
1927
1928 2000-08-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1929
1930 * environments.h (SCM_IMPORT_ENVIRONMENT_P,
1931 SCM_EXPORT_ENVIRONMENT_P): Before fetching the environment
1932 functions, make sure that we really got an environment.
1933
1934 2000-09-03 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
1935
1936 * validate.h (SCM_VALIDATE_NUMBER_DEF_COPY): New macro.
1937
1938 2000-09-03 Marius Vollmer <mvo@zagadka.ping.de>
1939
1940 * Makefile.am (.x.doc): Pretend to create .doc files from .x files
1941 and give explicit dependencies for .x files that depend on
1942 generated files. This allows parallel builds. Thanks to Matthias
1943 Koeppe!
1944
1945 2000-08-27 Marius Vollmer <mvo@zagadka.ping.de>
1946
1947 * Makefile.am: Added gc_os_dep.c, properties.c, properties.x,
1948 properties.h and properties.doc in the suitable places.
1949
1950 * init.h (scm_init_guile): New prototype.
1951
1952 * init.c (scm_init_guile, scm_init_guile_1): New interface for
1953 initializing Guile that does return to the caller.
1954 (scm_boot_guile_1): Use scm_init_guile_1 to initialize Guile.
1955 Do not establish a catch-all, this is no longer needed.
1956
1957 * root.h (scm_properties_whash): New `sys_protect', used in
1958 properties.c.
1959
1960 * throw.c (scm_ithrow): Perform catch-all handling here when no
1961 suitable handler has been found. That way, we don't have to rely
1962 on the user establishing a catch-all, which might be difficult for
1963 him if he is using scm_init_guile instead of scm_boot_guile.
1964
1965 2000-09-03 Neil Jerram <neil@ossau.uklinux.net>
1966
1967 * vectors.c (scm_vector): Docstring: add @deffnx line for
1968 list->vector.
1969
1970 * unif.c (scm_uniform_vector_ref): Docstring: add @deffnx line for
1971 array-ref.
1972 (scm_array_set_x): Docstring: add @deffnx line for
1973 uniform-array-set!.
1974
1975 * symbols.c (scm_symbol_to_string): Docstring: complete an
1976 incomplete Texinfo reference to a node in r4rs.texi.
1977 (scm_symbol_to_string): Escape double quotes correctly within
1978 docstring.
1979
1980 * struct.c (scm_make_struct, scm_make_vtable_vtable): Docstring
1981 fixes: `@dots' changed to `@dots{}'.
1982
1983 * strop.c (scm_substring_move_x): Docstring: add @deffnx lines for
1984 substring-move-left! and substring-move-right!.
1985
1986 * strings.c (scm_string): Docstring: add @deffnx line for
1987 list->string.
1988
1989 * stime.c (scm_strptime): Fix spelling mistake in docstring.
1990 (scm_current_time): Docstring fix: insert missing newline.
1991
1992 * socket.c (scm_recvfrom): Docstring format fix: missing newline
1993 inserted.
1994
1995 * ramap.c (scm_array_copy_x): Docstring: add @deffnx line for
1996 array-copy-in-order!.
1997 (scm_array_map_x): Docstring: add @deffnx line for
1998 array-map-in-order!.
1999
2000 * posix.c (scm_mknod): Docstring format fix: missing newlines
2001 inserted.
2002
2003 * modules.c (scm_interaction_environment): Docstring fix: add
2004 newlines.
2005
2006 * eval.c (scm_cons_source): Added newly written docstring.
2007
2008 2000-09-03 Michael Livshin <mlivshin@bigfoot.com>
2009
2010 the following changes let Guile get rid of the `allocated' cell
2011 state.
2012
2013 * smob.c (scm_smob_prehistory): don't init the "allocated" smob
2014 type.
2015
2016 * tags.h (scm_tc16_allocated): removed.
2017
2018 * gc.h: removed now-obsolete comments about the `allocated' cell
2019 state.
2020 (SCM_NEWCELL): don't change cell type to `allocated'.
2021 (SCM_NEWCELL2): ditto.
2022
2023 * gc.c (scm_mark_locations): mark freecells too, and don't worry
2024 about any possible false positives.
2025 (scm_debug_newcell): don't change cell type to `allocated'.
2026 (scm_debug_newcell2): ditto.
2027 (scm_gc_for_newcell): ditto.
2028 (scm_gc_mark): remove the tc16_allocated case.
2029
2030 2000-08-26 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
2031
2032 * gdbint.c (gdb_print): Removed superfluous macro definition.
2033
2034 * objects.c (scm_init_objects), print.c (scm_init_print), struct.c
2035 (scm_init_struct): First arg to scm_make_vtable_vtable should be a
2036 string, not a symbol. (`make-vtable-vtable' needs to append this
2037 string to another string and then pass it through
2038 `make-struct-layout'.)
2039
2040 * stacks.c (scm_init_stacks): Pass a string, not a layout object,
2041 to scm_make_vtable_vtable. (Thanks to Dale P. Smith.)
2042
2043 * struct.c (scm_make_struct_layout): Removed reference to
2044 "read-only string" in comment; Check that argument is a string.
2045 (scm_make_vtable_vtable): Check that argument is a string.
2046
2047 * environments.c (scm_init_environments): All internal includes in
2048 libguile must use the prefix "libguile/" in path names since inly
2049 the top-level source directory is on the include list. (That, in
2050 turn, is because we want to distinguish between system header
2051 files and hedares files internal to libguile.)
2052
2053 * strings.c (scm_make_shared_substring, scm_read_only_string_p):
2054 Deprecated.
2055 (scm_string_length, scm_string_ref, scm_substring,
2056 scm_string_append): Don't accept symbols as arguments (R5RS).
2057
2058 2000-08-25 Neil Jerram <neil@ossau.uklinux.net>
2059
2060 * ports.c (scm_set_port_column_x): Fix docstring so that it
2061 mentions set-port-line! rather than set-port-column! twice.
2062
2063 * guardians.c (scm_make_guardian): Remove spurious . from doc string.
2064
2065 2000-08-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
2066
2067 * Makefile.am: Added all necessary environments.* files.
2068
2069 * init.c: Include environments.h.
2070
2071 (scm_boot_guile_1): Initialize the environments.
2072
2073 * environments.[ch]: Added. Most of the credit for these files
2074 goes to Jost Boekemeier.
2075
2076 2000-08-25 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
2077
2078 * procprop.c: #include "libguile/smob.h"; handle applicable smobs.
2079
2080 2000-08-24 Keisuke Nishida <kxn30@po.cwru.edu>
2081
2082 * smob.h (scm_smob_descriptor): Added `apply' and `gsubr_type'.
2083 * smob.c (scm_make_smob_type): Initialize `apply' and `gsubr_type'.
2084 (scm_set_smob_apply): New function.
2085 (scm_smob_apply_0, scm_smob_apply_1, scm_smob_apply_2,
2086 scm_smob_apply_3): New functions.
2087 * eval.c (SCM_CEVAL, SCM_APPLY): Added dispatch for applicable smobs.
2088 * procs.c (scm_procedure_p): Check applicable smobs.
2089
2090 2000-08-24 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2091
2092 * Makefile.am (BUILT_SOURCES): Experimentally added scmconfig.h
2093 also here. (This is supposed to make sure that scmconfig.h is
2094 built before all sources in order to prevent that everything has
2095 to be rebuilt again. Hope it works---I'm just guessing. :)
2096
2097 * fluids.c (scm_fluid_set_x): Return SCM_UNSPECIFIED.
2098
2099 2000-08-23 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2100
2101 * gc.c (scm_gc_mark): Don't use GUILE_DEBUG flag to compile in
2102 extra tests. (GUILE_DEBUG is only supposed to make extra
2103 debugging functions available.)
2104
2105 2000-08-21 Michael Livshin <mlivshin@bigfoot.com>
2106
2107 * gc.h (SCM_GC_CARD_N_CELLS): change to be a nice non-confusing
2108 constant.
2109
2110 2000-08-19 Michael Livshin <mlivshin@bigfoot.com>
2111
2112 * gc.c (scm_gc_sweep): added a `continue' statement that have
2113 fallen through the cracks in the merge. thanks to Shuji Narazaki!
2114
2115 * gc.h: removed some stuff that broke compilation for people and
2116 wasn't actually needed anyway.
2117
2118 2000-08-18 Neil Jerram <neil@ossau.uklinux.net>
2119
2120 * filesys.c (scm_fcntl): Docstring fix - missing newlines inserted.
2121
2122 * net_db.c (scm_gethost, scm_getnet, scm_getproto, scm_sethost,
2123 scm_setnet, setproto, setserv): Argument names changed to match
2124 doc string.
2125
2126 * feature.c (scm_program_arguments): New docstring.
2127
2128 * simpos.c (scm_getenv): Reflow docstring.
2129
2130 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Add texinfo markup to
2131 docstrings.
2132
2133 * chars.c (scm_char*): Docstring fixes - texinfo markup.
2134
2135 2000-08-18 Neil Jerram <neil@ossau.uklinux.net>
2136
2137 * boolean.c (scm_not, scm_boolean_p): Docstring fixes - add
2138 texinfo markup and remove trailing newlines.
2139
2140 2000-08-17 Michael Livshin <mlivshin@bigfoot.com>
2141
2142 this changes the Guile GC to use cards (aka "chunklets").
2143 (most of the ideas and some of the code are by Greg Harvey, though
2144 the code is probably unrecognizable now. the original chunklet
2145 proposal, way back, is by Dale Jordan).
2146
2147 * tags.h: (SCM_GCTYPE16, SCM_GCCDR, SCM_GC[8]MARKP,
2148 SCM_SETGC[8]MARK, SCM_CLRGC[8]MARK): moved from here into gc.h.
2149 some (most) of these are probably going to be deprecated.
2150
2151 * gc.h (SCM_MARKEDP): simplified, there are no different mark bit
2152 locations anymore.
2153 (SCM_GC_CARD_*, SCM_C_BVEC_*): lots of new macros to deal with
2154 cards and bvecs (bit-vectors).
2155
2156 * gc.c: (scm_default_init_heap_size_*): defined to take cards into
2157 account, but keeping more or less the same values as previously.
2158 added some simple helper macros.
2159 (CLUSTER_SIZE_IN_BYTES, ALIGNMENT_SLACK): defined to take cards
2160 into account.
2161 (BVEC_*, scm_mark_space_t, current_mark_space, mark_space_ptr,
2162 current_mark_space_offset, mark_space_head, get_bvec,
2163 clear_mark_space): new functions and supporting variables, types
2164 and macros that implement mark space management.
2165 (scm_igc): clear the mark space (all of it) before beginning the
2166 mark phase.
2167 (scm_gc_mark): changed the tests for rogue cells, much simplified
2168 throughout (no different mark bit locations to worry about now).
2169 (scm_mark_locations): don't consider card header cells.
2170 (scm_cellp): ditto.
2171 (scm_gc_sweep): simplified.
2172 (init_heap_seg): changed to take cards into account.
2173
2174 2000-08-16 Michael Livshin <mlivshin@bigfoot.com>
2175
2176 * stime.c (scm_c_get_internal_run_time): new function, same as
2177 scm_get_internal_run_time but returns a long. it's used by the GC
2178 for timekeeping, since with scm_get_internal_run_time there is a
2179 (extremely theoretical) possibility of consing.
2180 (scm_get_internal_run_time): redefined in terms of
2181 scm_c_get_internal_run_time.
2182
2183 * stime.h: added prototype for scm_c_get_internal_run_time.
2184
2185 * gc.c (scm_gc_stats): add more obscure stats, such as: mark time,
2186 sweep time, total marked cells, total swept cells, and number of
2187 times GC was invoked.
2188 (gc_start_stats): renamed from scm_gc_start, made static, taught
2189 to init the new stats.
2190 (gc_end_stats): renamed from scm_gc_end, made static, taught to
2191 calculate the new stats.
2192 (scm_igc): don't call gc_start_stats unless we are sure that we
2193 are indeed going to collect. also, added some timekeeping between
2194 the mark and sweep phases.
2195 (scm_gc_sweep): count number of cells we sweep as we go.
2196
2197 * gc.h: removed prototypes for scm_gc_{start,end}.
2198
2199 2000-08-13 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
2200
2201 * alist.c (scm_assq, scm_assv, scm_assoc): Report argument type
2202 error for the alist rather than the sublist where the type
2203 mismatch is discovered.
2204
2205 2000-08-13 Neil Jerram <neil@ossau.uklinux.net>
2206
2207 * root.c (s_scm_call_with_dynamic_root): Docstring fix - rogue
2208 newline.
2209
2210 2000-08-12 Neil Jerram <neil@ossau.uklinux.net>
2211
2212 * numbers.c (scm_ash): Docstring fix - missing newlines.
2213
2214 * ports.c (scm_port_filename): Docstring fix - missing newline.
2215
2216 * strports.c (scm_eval_string): Docstring fix - missing newline.
2217
2218 * vports.c (s_scm_make_soft_port): Docstring updated so that
2219 example is correct.
2220
2221 * strop.c: Docstring fixes - quotation marks and backslashes
2222 needed quoting.
2223
2224 * numbers.c (s_scm_logand): Docstring fix - "@end lisp" inserted.
2225
2226 2000-08-11 Neil Jerram <neil@ossau.uklinux.net>
2227
2228 * macros.c: Remove surplus newlines from end of docstrings.
2229
2230 * list.c (scm_list_tail): Add @deffnx line to docstring for
2231 list-cdr-ref.
2232
2233 * keywords.c: Docstring improvements in conjunction with new
2234 reference manual doc on keywords.
2235
2236 * error.c (scm_error_scm): Fix texinfo syntax error in
2237 docstring. (@code(~S) should be @code{~S}.)
2238
2239 * dynl.c: Remove surplus newlines from end of docstrings.
2240
2241 2000-08-11 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
2242
2243 * eval.c (scm_eval): Backward incompatible change: Now takes an
2244 environment specifier as second arg. `eval' hereby becomes R5RS
2245 compatible.
2246 (scm_i_eval_x, scm_i_eval): New functions (replace
2247 scm_eval_3).
2248 (scm_eval2, scm_eval_3): Deprecated.
2249 (scm_top_level_lookup_closure_var): Deprecated.
2250
2251 * eval.h: #include "struct.h".
2252
2253 * evalext.c (scm_definedp): Have to work before module system is
2254 booted.
2255
2256 * modules.h (SCM_MODULEP, SCM_VALIDATE_MODULE,
2257 SCM_MODULE_OBARRAY, SCM_MODULE_USES, SCM_MODULE_BINDER,
2258 SCM_MODULE_EVAL_CLOSURE): New macros.
2259 (scm_module_index_obarray, scm_module_index_uses,
2260 scm_module_index_binder, scm_module_index_eval_closure): New
2261 constants; #include "validate.h".
2262
2263 * modules.c (scm_module_tag, scm_module_system_booted_p): New
2264 globals.
2265 (scm_post_boot_init_modules): Initialize scm_module_tag.
2266 (scm_interaction_environment): New primitive.
2267
2268 * symbols.c (scm_can_use_top_level_lookup_closure_var): Removed.
2269 #include "modules.h".
2270
2271 * strports.c (scm_eval_string): Evaluate in
2272 scm_interaction_environment ().
2273
2274 * script.c (scm_shell): Pass scm_the_root_module () as second arg
2275 to new scm_eval_x.
2276
2277 * load.c (load): Use `scm_selected_module' to compute second arg
2278 to new scm_i_eval_x; Don't call it if module system hasn't booted.
2279 (scm_read_and_eval_x): Deprecated.
2280 #include "modules.h".
2281
2282 * debug.c (scm_local_eval): Use scm_i_eval and scm_i_eval_x.
2283 (scm_start_stack): Use scm_i_eval.
2284
2285 * strports.c: #include "modules.h".
2286
2287 * print.c (scm_simple_format): Be case-insensitive for ~A and ~S
2288 directives.
2289
2290 2000-08-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
2291
2292 The following changes are intended to ensure that struct instances
2293 are freed before their vtables. It's optimized for the most
2294 common case, which is freeing of struct instances.
2295
2296 * gc.c (scm_gc_mark, scm_gc_sweep): Remove vcell = 1 magic.
2297 (scm_structs_to_free): New variable.
2298 (scm_gc_sweep): Hook up structs to free on the scm_structs_to_free
2299 chain.
2300
2301 * struct.h (SCM_STRUCT_GC_CHAIN, SCM_SET_STRUCT_GC_CHAIN): New
2302 macros.
2303 (scm_structs_to_free, scm_struct_prehistory): Declare.
2304
2305 * struct.c (scm_make_struct, scm_make_vtable_vtable): Structs
2306 handles are now double cells; Initialize SCM_STRUCT_GC_CHAIN to
2307 0.
2308 (scm_struct_gc_init, scm_free_structs): New GC C hooks.
2309 (scm_struct_prehistory): Install them.
2310
2311 * init.c (scm_boot_guile_1): Call scm_struct_prehistory.
2312
2313 2000-08-06 Marius Vollmer <mvo@zagadka.ping.de>
2314
2315 * read.c (scm_flush_ws): Include filename in error message when it
2316 is not `#f'.
2317
2318 2000-08-05 Marius Vollmer <mvo@zagadka.ping.de>
2319
2320 * iselect.c: Include <unistd.h>. Thanks to Bertrand Petit!
2321
2322 2000-08-02 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
2323
2324 * struct.c (scm_make_struct_layout, scm_make_struct,
2325 scm_make_vtable_vtable): Updated documentation.
2326
2327 * print.c (scm_simple_format): Bugfix: Coerce port before using
2328 it.
2329
2330 2000-07-31 Gary Houston <ghouston@arglist.com>
2331
2332 * net_db.c: declare h_errno only if HAVE_H_ERRNO is not defined
2333 (thanks to Richard Kim for the bug report).
2334
2335 2000-07-30 Marius Vollmer <mvo@zagadka.ping.de>
2336
2337 * alist.c (scm_assq_remove_x, scm_assv_remove_x,
2338 scm_assoc_remove_x): Use scm_delq1_x instead of scm_delq_x, since
2339 using the latter is pointless.
2340
2341 2000-07-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
2342
2343 * gc.c (scm_gc_sweep): Renamed local variable from 'free' to
2344 'free_struct_data' to avoid confusion with stdlib's 'free'.
2345
2346 2000-07-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
2347
2348 * vectors.c (scm_make_vector): Fix the initialization order of
2349 the vector such that the type cell is initialized last.
2350
2351 2000-07-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
2352
2353 * struct.[ch] (scm_struct_init): Made static. Fixed not to rely
2354 on the struct cell to be fully initialized.
2355
2356 * struct.c (scm_make_struct, scm_make_vtable_vtable): Fix the
2357 initialization order of the struct such that the type cell is
2358 initialized last.
2359
2360 2000-07-25 Marius Vollmer <mvo@zagadka.ping.de>
2361
2362 * alist.c (scm_assq_remove_x, scm_assv_remove_x,
2363 scm_assoc_remove_x): Remove only the first cell with a matching
2364 key, not all.
2365
2366 2000-07-24 Marius Vollmer <mvo@zagadka.ping.de>
2367
2368 * stime.c (scm_strftime): Recognize a return value of zero from
2369 strftime as buffer overflow and take care to detect a valid zero
2370 length result regardless. Thanks to David Barts!
2371
2372 2000-07-23 Marius Vollmer <mvo@zagadka.ping.de>
2373
2374 * alist.c (scm_assq_remove_x, scm_assv_remove_x,
2375 scm_assoc_remove_x): Remove all cells whose key is eq, eqv, or
2376 equal (respectively) to the argument key, not all cells that are
2377 eq, eqv, or equal to the first cell with the argument key. Thanks
2378 to Neil Jerram!
2379
2380 2000-07-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2381
2382 * gc.h (SCM_FREE_CELL_CDR, SCM_SET_FREE_CELL_CDR), hooks.c
2383 (make_hook), modules.c (OBARRAY, USES, BINDER): Pack and unpack
2384 SCM values appropriately.
2385
2386 * modules.c (scm_standard_eval_closure): Don't pass an inum to
2387 scm_makcclo, but rather a long value.
2388
2389 2000-07-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2390
2391 read.c (scm_lreadrecparen), srcprop.c (scm_set_source_property_x):
2392 SCM_SETCDR and SCM_WHASHSET macros don't deliver a return value.
2393 Thanks to Han-Wen Nienhuys for the bug report.
2394
2395 2000-07-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2396
2397 * root.[ch] (scm_call_catching_errors): Deprecated.
2398
2399 * root.c (scm_init_root): Initialize the root smob type using the
2400 standard initialization functions.
2401
2402 2000-07-17 Marius Vollmer <mvo@zagadka.ping.de>
2403
2404 * eval.c (unmemocopy): Don't rely on V being a list of at least
2405 one element. Thanks to Bill Schottstaedt!
2406
2407 2000-07-15 Michael Livshin <mlivshin@bigfoot.com>
2408
2409 * gc.c (scm_done_free): new.
2410 expanded comments about scm_done_malloc.
2411
2412 * gc.h: added prototype for scm_done_free
2413
2414 2000-07-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
2415
2416 * gc.h (scm_take_stdin): Removed.
2417
2418 * gc.h (SCM_VALIDATE_CELL): Delegate cell checks to function
2419 scm_assert_cell_valid to allow extensions to the checking
2420 functionality without need to recompile everything.
2421
2422 * gc.[ch] (scm_assert_cell_valid, scm_set_debug_cell_accesses_x):
2423 Added as conditionally compiled functions for the case that
2424 SCM_DEBUG_CELL_ACCESSES is enabled.
2425
2426 * gc.c (debug_cells_p): Added to indicate whether compile-time
2427 included cell access debugging is run-time enabled.
2428
2429 * gc.[ch] (scm_gc_running_p): Added to indicate that scm_igc is
2430 being executed. Intended to be used instead of scm_gc_heap_lock
2431 at most places.
2432
2433 * error.c (scm_error), gdbint.c (SCM_GC_P): Use scm_gc_running_p
2434 instead of scm_gc_heap_lock.
2435
2436 * gc.c (scm_igc): Set scm_gc_running_p to true while running.
2437
2438 * gc.c (scm_mark_locations): Don't mark free cells.
2439
2440 * weaks.c (scm_scan_weak_vectors): Use SCM_FREE_CELL_P instead of
2441 SCM_FREEP.
2442
2443 2000-07-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
2444
2445 * gc.c (scm_mark_locations): Minimized some variable scopes and
2446 simplified the code a bit.
2447
2448 2000-07-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
2449
2450 * gc.h (SCM_SET_FREE_CELL_TYPE, SCM_SET_FREE_CELL_CDR,
2451 SCM_FREE_CELL_P, SCM_FREE_CELL_CDR): Added since free cells
2452 should not be accessed via SCM_C[AD]R. Further, using dedicated
2453 macros to access free cells allows all other cell accessing macros
2454 to treat acesses to free cells as errors, thus enabling better
2455 error checks for cell accesses. SCM_FREE_CELL_P is supposed to
2456 replace SCM_FREEP some time.
2457
2458 * gc.h (SCM_NEWCELL, SCM_NEWCELL2), gc.c (map_free_list,
2459 free_list_length, scm_check_freelist, scm_debug_newcell,
2460 scm_debug_newcell2, freelist_length, scm_gc_for_newcell,
2461 scm_gc_mark, scm_gc_sweep, init_heap_seg): Only use the dedicated
2462 cell accessors when accessing free cells.
2463
2464 2000-07-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
2465
2466 * gc.h (SCM_CELL_WORD, SCM_CELL_OBJECT): Treat the referenced
2467 object as const in order to make the compiler warn about code like
2468 SCM_CELL_WORD (x, n) = y. Instead, SCM_SET_CELL_WORD (x, n, y)
2469 should be used.
2470
2471 (SCM_CELL_WORD_LOC, SCM_CARLOC, SCM_CDRLOC): Return the address
2472 as an address to a non-const object, since these macros are used
2473 to allow direct write access to objects.
2474
2475 2000-07-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
2476
2477 * hashtab.c (scm_hash_fn_create_handle_x): Signal an error if the
2478 given hash table has no slots.
2479
2480 2000-07-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
2481
2482 * gc.c (policy_on_error): Added in order to allow alloc_some_heap
2483 to react to malloc failures in a context dependent way.
2484
2485 (scm_check_freelist): No need to flush streams before abort().
2486
2487 (scm_gc_for_newcell): Try to allocate new memory in three phases:
2488 grow heap if preferred, if still no memory available collect
2489 garbage, if still no memory available grow heap.
2490
2491 (heap_segment_table_size): Added to always reflect the actual
2492 size of the heap segment table, because scm_n_heap_segs may differ
2493 from the heap segment table size.
2494
2495 (alloc_some_heap): In case of malloc failure, react according to
2496 the new policy_on_error parameter (either return to caller or
2497 abort immediately). Further, keep heap_segment_table_size up to
2498 date.
2499
2500 (scm_init_storage): Initialize heap_segment_table_size.
2501
2502 2000-07-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
2503
2504 * gh.h: Don't include <stdio.h>. Thanks to Han-Wen Nienhuys for
2505 the hint.
2506
2507 2000-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
2508
2509 * __scm.h (SCM_OUTOFRANGE, SCM_NALLOC, SCM_HUP_SIGNAL,
2510 SCM_INT_SIGNAL, SCM_FPE_SIGNAL, SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL,
2511 SCM_ALRM_SIGNAL, SCM_GC_SIGNAL, SCM_TICK_SIGNAL, SCM_SIG_ORD,
2512 SCM_ORD_SIG, SCM_NUM_SIGS): Re-introduce these as deprecated
2513 symbols.
2514
2515 * error.c (scm_wta): Re-introduce dispatching for SCM_OUTOFRANGE
2516 and SCM_NALLOC, but as a deprecated feature.
2517
2518 2000-06-30 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2519
2520 * debug.c: Added #include fluids.h.
2521
2522 * numbers.c (scm_gr_p, scm_leq_p, scm_geq_p): Turned into
2523 primitive generics. (Thanks to Nicolas Neuss.)
2524
2525 2000-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
2526
2527 * gc.c (alloc_some_heap): Use scm_memory_error to indicate a
2528 failed attempt to get additional memory from the system.
2529
2530 (scm_gc_for_newcell): Changed the control structure to make the
2531 behaviour explicit for the case that gc is not able to free any
2532 cells.
2533
2534 2000-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
2535
2536 * __scm.h (SCM_OUTOFRANGE): Removed.
2537
2538 * error.c (scm_wta): Removed sick dispatch code for range
2539 errors. (More sick dispatches still to be removed.)
2540
2541 * hashtab.c (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x,
2542 scm_hash_fn_remove_x): Eliminate redundant test for if unsigned
2543 value is non-negative. Use scm_out_of_range to signal range
2544 errors.
2545
2546 * hooks.c (make_hook), unif.c (scm_aind): Use scm_out_of_range to
2547 signal range errors.
2548
2549 * list.c (scm_list_ref, scm_list_set_x, scm_list_cdr_set_x): Fix
2550 error reporting (now uses original input parameter to report wrong
2551 type argument errors). Use SCM_OUT_OF_RANGE to report range
2552 errors and SCM_WRONG_TYPE_ARG to report type errors.
2553
2554 * strings.c (scm_substring): Make range checks for negative
2555 values explicit (former behaviour relied on an implicit
2556 conversion from signed to unsigned). Don't use SCM_ASSERT for
2557 range checks.
2558
2559 * unif.c (scm_aind, scm_transpose_array, scm_bit_set_star_x,
2560 scm_bit_count_star): Use scm_out_of_range to signal range
2561 errors.
2562
2563 * unif.c (scm_transpose_array, scm_bit_position), vectors.c
2564 (scm_vector_ref, scm_vector_set_x, scm_vector_move_left_x,
2565 scm_vector_move_right_x): Use SCM_ASSERT_RANGE to check ranges.
2566
2567 2000-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
2568
2569 * validate.h (SCM_VALIDATE_INUM_MIN_COPY,
2570 SCM_VALIDATE_INUM_MIN_DEF_COPY, SCM_VALIDATE_INUM_RANGE_COPY):
2571 Perform all range checks based on the input value. The former way
2572 of using the value that is assigned to the target variable fails
2573 if the assignment to the target variable itself can change the
2574 value because of type conversion.
2575
2576 (SCM_ASSERT_RANGE): Use scm_out_of_range to signal range errors.
2577
2578 2000-06-30 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2579
2580 * gc.c (scm_gc_for_newcell): Behave gracefully also if scm_igc
2581 doesn't yield any new cells. In theory this could happen if all
2582 cells allocated with NEWCELL are either in use or conservatively
2583 marked and all cluster spine cells are conservatively marked.
2584 (Thanks to Dirk.)
2585
2586 2000-06-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
2587
2588 * __scm.h (SCM_NALLOC): Removed.
2589
2590 * error.c (scm_wta): Removed sick dispatch code for memory
2591 errors. (More sick dispatches still to be removed.)
2592
2593 * numbers.c (scm_mkbig, scm_adjbig), ports.c (scm_make_port_type),
2594 random.c (scm_i_copy_rstate, scm_c_make_rstate), smob.c
2595 (scm_make_smob_type), srcprop.c (scm_make_srcprops), vectors.c
2596 (scm_vector_set_length_x): Now using scm_memory_error to signal
2597 memory errors.
2598
2599 2000-06-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
2600
2601 * __scm.h: Removed some commented code and fixed some comments.
2602
2603 (SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL, SCM_BUS_SIGNAL,
2604 SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL, SCM_TICK_SIGNAL,
2605 SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS): Removed.
2606
2607 * async.c: Removed some commented code.
2608
2609 2000-06-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
2610
2611 * gc.c (scm_gc_mark, scm_gc_sweep, scm_must_malloc,
2612 scm_must_realloc, scm_must_free, alloc_some_heap): Use the
2613 appropriate error signalling function.
2614
2615 2000-06-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
2616
2617 * root.h (scm_first_type): Removed.
2618
2619 2000-06-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
2620
2621 * gc.c (MIN_GC_YIELD): Removed.
2622
2623 2000-06-28 Michael Livshin <mlivshin@bigfoot.com>
2624
2625 * gc.c (scm_gc_for_newcell): don't try to do GC if it's blocked,
2626 allocate instead.
2627
2628 2000-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
2629
2630 * async.c (scm_gc_async, scm_gc_vcell, scm_sys_gc_async_thunk):
2631 Moved to gc.c.
2632
2633 (scm_init_async): Moved initialization for scm_gc_async and
2634 scm_gc_vcell to gc.c. Moved initialization of scm_asyncs here
2635 from gc.c.
2636
2637 * async.h (scm_gc_async): Not globally visible any more.
2638
2639 * gc.c (scm_gc_stats): Made callable even from within regions
2640 where gc is blocked.
2641
2642 (scm_gc_end): Eliminate the hardcoding of the marking of the
2643 scm_gc_async from the gc core.
2644
2645 (scm_init_storage): Don't initialize the scm_asyncs list here.
2646 This is now done in asyncs.c.
2647
2648 (scm_gc_vcell): Moved here from async.c.
2649
2650 (gc_async): Renamed from scm_gc_async, moved here from async.c
2651 and made static.
2652
2653 (gc_async_thunk): Renamed from scm_sys_gc_async_thunk and moved
2654 here from async.c.
2655
2656 (mark_gc_async): New hook function for scm_after_gc_c_hook.
2657
2658 (scm_init_gc): Added initialization of scm_gc_vcell and
2659 gc_async. Further, add mark_gc_async to scm_after_gc_c_hook.
2660
2661 * init.c (scm_boot_guile_1): scm_init_gc requires asyncs to be
2662 initialized.
2663
2664 2000-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
2665
2666 * gc.c (scm_igc): Removed commented code that once was intended
2667 to unprotect struct types with no instances.
2668
2669 * root.h (scm_type_obj_list): Removed.
2670
2671 2000-06-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
2672
2673 * async.c (scm_init_async): Switch to standard way of smob
2674 initialization.
2675
2676 2000-06-21 Michael Livshin <mlivshin@bigfoot.com>
2677
2678 * guile-doc-snarf.in: use cut instead of sed, that's much much
2679 faster. also, don't call basename more than needed. and, to gain
2680 a couple of microseconds more, don't call cat needlessly. (thanks
2681 to Brad Knotwell).
2682
2683 2000-06-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
2684
2685 * guile-snarf.awk.in, guile-snarf.in, snarf.h: Rename SCM__I to
2686 SCM_SNARF_INIT_START, SCM__D to SCM_SNARF_DOC_START, SCM__S to
2687 SCM_SNARF_DOCSTRING_START and SCM__E to SCM_SNARF_DOCSTRING_END.
2688
2689 2000-06-21 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2690
2691 * eval.c, eval.h (scm_top_level_lookup_closure_var): Added.
2692 #include "libguile/fluids.h".
2693
2694 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): New macro which replaces
2695 SCM_CDR (scm_top_level_lookup_closure_var) everywhere.
2696
2697 * root.h (scm_top_level_lookup_closure_var,
2698 scm_system_transformer): Removed. (It's no sense in having the
2699 *variable* be a "fluid".)
2700
2701 * root.c (mark_root): Removed marking of
2702 s->top_level_lookup_closure_var and s->system_transformer.
2703
2704 * modules.c (scm_selected_module): the_module is now a fluid.
2705
2706 2000-06-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2707
2708 * gc.h, tags.h: Be kind to compilers which must see hash signs in
2709 column 0. (Thanks to Ian Grant.)
2710
2711 * numbers.h: Put #ifdef HAVE_LONG_LONGS around declarations using
2712 the long_long type. (Thanks to Bernard Urban.)
2713
2714 2000-06-20 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2715
2716 * gc.c, gc.h (scm_default_init_heap_size_1,
2717 scm_default_min_yield_1, scm_default_init_heap_size_2,
2718 scm_default_min_yield_2, scm_default_max_segment_size): New global
2719 variables. Can be customized by the application before booting
2720 Guile. (We might want to be able to control these parameters
2721 dynamically through the "options interface" in the future, but
2722 note that that is additional functionality. Here we're giving
2723 default values which the environment variables can override.)
2724
2725 * list.c (scm_cons_star): Updated comment.
2726
2727 * smob.h: Changed comments for scm_make_smob_type and
2728 scm_make_smob_type_mfpe, warning that the latter might be
2729 deprecated in a future release.
2730
2731 2000-06-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
2732
2733 * list.[ch] (scm_cons_star/cons*): Renamed from
2734 scm_list_star/list*.
2735
2736 * list.[ch] (scm_list_star/list*): Provided as a deprecated alias
2737 for scm_cons_star/cons*.
2738
2739 * gc.c (scm_protect_object): Updated comment.
2740
2741 * numbers.h (SCM_NEWREAL, SCM_NEWCOMPLEX): Removed.
2742
2743 * tags.h (SCM_UNPACK_CAR, SCM_NDOUBLE_CELLP): Removed.
2744
2745 2000-06-19 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2746
2747 * init.c, init.h (scm_initialized_p): Renamed from `initialized'
2748 and made global.
2749
2750 * gdbint.c (gdb_print): Print warning instead of calling scm_write
2751 if Guile isn't yet initialized.
2752
2753 * print.c (scm_current_pstate, scm_make_print_state): Simplified
2754 tests, using the assumption that Guile has been initialized.
2755
2756 Sun Jun 18 14:45:21 2000 Greg J. Badros <gjb@cs.washington.edu>
2757
2758 * print.c (s_scm_current_pstate): Do not segfault when the
2759 print_state_pool is unitialized in `current-pstate', and better
2760 verify its state before altering it in scm_make_print_state().
2761
2762 2000-06-18 Michael Livshin <mlivshin@bigfoot.com>
2763
2764 * scmsigs.c (s_scm_sigaction): guard the SIGIOT case with an
2765 #ifdef -- it's missing on at least one platform. (thanks to
2766 Jan Nieuwenhuizen).
2767
2768 2000-06-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2769
2770 * list.c (list*): Added documentation from common-list.scm.
2771
2772 2000-06-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
2773
2774 * gc.c (scm_unprotect_object): The reference count is guaranteed
2775 to be a positive number.
2776
2777 2000-06-15 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2778
2779 * eval.c: Updated comment above scm_map.
2780
2781 2000-06-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2782
2783 * gc.c (scm_protect_object): Avoid looking up the object handle
2784 twice.
2785 (scm_unprotect_object): Abort if scm_unprotect_object is called on
2786 an unprotected object.
2787
2788 2000-06-14 Michael Livshin <mlivshin@bigfoot.com>
2789
2790 * gc.c (scm_unprotect_object): fix a nasty typo bug (thanks to
2791 Dirk Herrmann).
2792
2793 2000-06-14 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2794
2795 * socket.c (scm_getsockopt): Changed type for `optlen' from int to
2796 size_t.
2797 (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
2798 Ditto for `tmp_size'.
2799 (scm_addr_buffer_size): Changed type from int to size_t.
2800
2801 * random.c: #include <string.h>. (Needed by memcpy.)
2802
2803 * guile-snarf.awk.in: Replace the dot_doc_file arg with "-",
2804 indicating stdin, instead of "" and don't reset ARGC. This is a
2805 workaround for `nawk' in AIX 4.3 on RS6000 but, as far as I know,
2806 it is correct, and perhaps even better.
2807
2808 2000-06-14 Gary Houston <ghouston@arglist.com>
2809
2810 * scmsigs.c (scm_init_scmsigs): if HAVE_SIGINTERRUPT is not
2811 defined, add SA_RESTART to the sigaction flags correctly
2812 (thanks to Dale P. Smith).
2813
2814 2000-06-13 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2815
2816 * strings.c: #include <string.h>. (Thanks to Bill Schottstaedt.)
2817
2818 * net_db.c (scm_resolv_error): Only use macro NETDB_INTERNAL if
2819 defined. It isn't on sgi irix 5.3. (Thanks to Bill Schottstaedt.)
2820
2821 * Makefile.am (.c.doc): Pipe output (the .x contents) to /dev/null.
2822
2823 2000-06-13 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2824
2825 * fports.c (scm_setvbuf): Use `free' instead of `scm_must_free'
2826 since read and write buffers are allocated by `malloc'.
2827
2828 * Makefile.am: Removed old test code.
2829
2830 * gh_test_c.c, gh_test_repl.c: Removed.
2831
2832 2000-06-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2833
2834 * iselect.c (SCM_NLONGBITS): Add workaround for the Sun 4.2
2835 compiler.
2836
2837 * inet_aton.c (inet_aton): Cast init value for `cp'.
2838
2839 * ramap.c (s_scm_array_fill_x): Cast `ve' properly in case
2840 `scm_tc7_uvect'.
2841
2842 * symbols.c (scm_intern_obarray_soft,
2843 scm_sysintern0_no_module_lookup): Cast `name' to unsigned char ptr
2844 in calls to scm_strhash.
2845
2846 * strports.c (st_resize_port): Substituted SCM_UCHARS for
2847 SCM_CHARS.
2848 (st_write): Cast argument to strncpy to char ptr.
2849 (scm_mkstrport): Substituted SCM_ROUCHARS for SCM_ROCHARS.
2850 (scm_strport_to_string): Cast argument to scm_makfromstr to char
2851 ptr.
2852
2853 * ports.c (scm_ungetc): Cast value to unsigned char ptr before
2854 storing in putback_buf.
2855 (scm_unread_string): Substituted SCM_ROCHARS for SCM_ROUCHARS.
2856
2857 * ioext.c (s_scm_read_line): Cast result of call to
2858 scm_do_read_line to unsigned char ptr.
2859
2860 * gdbint.c (SEND_STRING): Cast argument to char pointer.
2861
2862 * fports.c (fport_flush): Declare `ptr' as unsigned char (was
2863 char).
2864
2865 * Makefile.am (DOT_DOC_FILES): List doc-files explicitly. (We
2866 shouldn't use Make rules which aren't supported by most Make
2867 programs.)
2868 (OMIT_DEPENDENCIES): Defined to "libguile.h ltdl.h". (We don't
2869 want these dependencies recorded, since they would get bogus
2870 relative paths; libguile.h is only used in gh.h and guile.c.)
2871 (EXTRA_DOT_X_FILES, EXTRA_DOT_DOC_FILES): New variables.
2872 (guile-procedures.txt): Depend on EXTRA_DOT_DOC_FILES.
2873 (modinclude_HEADERS): Removed kw.h.
2874
2875 * guile-snarf.in: Change regexp "^SCM__I" --> "^ *SCM__I".
2876 (The preprocessor might insert spaces before the identifier.)
2877
2878 * snarf.h (SCM_SNARF_HERE, SCM_SNARF_INIT, SCM_SNARF_DOCS):
2879 Renamed from SCM_HERE, SCM_INIT, SCM_DOCS.
2880
2881 * smob.h (scm_smobfuns): Removed deprecated type.
2882
2883 * smob.c, smob.h (scm_newsmob): Removed deprecated function.
2884 (Replaced by `scm_make_smob_type'.)
2885
2886 * keywords.c (scm_tc16_kw): Removed deprecated type.
2887 (Replaced by scm_tc16_keyword.)
2888
2889 * kw.h: Removed deprecated header file.
2890
2891 * evalext.c (serial-map): Removed deprected alias for scm_map.
2892 (Has been replaced by `map-in-order'.)
2893
2894 * ramap.c (serial-array-copy!, serial-array-map!): Removed
2895 depracted aliases. (Replaced by `array-copy-in-order!' and
2896 `array-map-in-order'.)
2897
2898 2000-06-11 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2899
2900 * gc.h (SCM_VALIDATE_CELL): Rewritten.
2901 (SCM_CELL_WORD, SCM_CELL_OBJECT, SCM_SET_CELL_WORD,
2902 SCM_SET_CELL_OBJECT): Use new version of SCM_VALIDATE_CELL.
2903 (Thanks to Han-Wen Nienhuys.)
2904
2905 2000-06-10 Michael Livshin <mlivshin@bigfoot.com>
2906
2907 * guile-doc-snarf.in: don't pipe the CPP output right into sed --
2908 write it to the temp file first and check the CPP return code.
2909 (I introduced this bug earlier, and this probably caused people
2910 with non-GNU C preprocessors to get empty *.x files and not to
2911 have the build fail right away...).
2912
2913 * scmsigs.c (s_scm_sigaction): guard the SIGSYS case with an ifdef
2914 -- at least my libc5-based Linux system doesn't define SIGSYS.
2915
2916 2000-06-08 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2917
2918 * snarf.h, guile-snarf.awk.in, guile-snarf.in: Replaced snarf
2919 markers with identifiers (SCM__I, SCM__D, SCM__S, SCM__E).
2920 (Thanks to Bernard Urban.)
2921
2922 2000-06-06 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2923
2924 * modules.c (scm_system_module_env_p): Fixed detection of system
2925 modules.
2926
2927 2000-06-06 Marius Vollmer <mvo@zagadka.ping.de>
2928
2929 * scmsigs.c (scm_sigaction): Silently ignore setting handlers for
2930 `program error signals' because they can't currently be handled by
2931 Scheme code.
2932
2933 2000-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
2934
2935 * procs.h (SCM_SET_SUBRF): Added.
2936
2937 * procs.c (scm_make_subr_opt): Don't assign to SCM_SUBRF, use
2938 SCM_SET_SUBRF instead. Thanks to Bernard Urban for the bug
2939 report.
2940
2941 2000-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
2942
2943 * gc.h (SCM_CARLOC, SCM_CDRLOC): Don't take the address of a SCM
2944 value.
2945
2946 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x,
2947 scm_merge_list_step): Don't take the address of SCM_CAR. Use
2948 SCM_CARLOC instead. Thanks to Bernard Urban for the bug report.
2949
2950 2000-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
2951
2952 * boolean.h (SCM_TRUE_P): Removed, as people might use it as a
2953 replacement for !SCM_FALSEP.
2954
2955 * backtrace.c (display_error_body), boolean.h (SCM_BOOLP), gc.c
2956 (scm_unhash_name), gh_data.c (gh_module_lookup), load.c
2957 (scm_primitive_load), print.c (scm_simple_format), procs.c
2958 (scm_procedure_documentation), procs.h (SCM_TOP_LEVEL), ramap.c
2959 (scm_array_fill_int), scmsigs.c (scm_sigaction), stacks.c
2960 (narrow_stack, scm_make_stack, scm_stack_id), symbols.c
2961 (scm_string_to_obarray_symbol), throw.c (scm_catch,
2962 scm_lazy_catch, scm_ithrow), unif.c (scm_make_uve, scm_array_p,
2963 scm_array_set_x, scm_bit_set_star_x, scm_bit_count_star),
2964 validate.h (SCM_VALIDATE_BOOL_COPY, SCM_VALIDATE_PROC): Replace
2965 uses of SCM_TRUE_P (x) with SCM_EQ_P (x, SCM_BOOL_T).
2966
2967 2000-06-04 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2968
2969 * eval.c (scm_badformalsp): New static function.
2970 (SCM_CEVAL): Check arguments for procedure-with-setter closures.
2971 (Thanks to Keisuke Nishida.)
2972
2973 The major reason for Guile's slow loading speed has been the fact
2974 that a chain of Scheme level procedures has been evaluated for
2975 every top-level symbol lookup during the first pass through the
2976 code.
2977
2978 The following is a kludge which I suggested four years ago, and
2979 which I've repeatedly suggested since. Personally, I've never
2980 been bothered by Guile's slow loading speed, so I thought I would
2981 let someone else do it...
2982
2983 But since the new environments will be included first in
2984 Guile-1.5, I thought it would make people happy to get the kludge
2985 into 1.4.
2986
2987 * modules.c: Added #include "libguile/vectors.h";
2988 Added #include "libguile/hashtab.h";
2989 Added #include "libguile/struct.h";
2990 Added #include "libguile/variable.h";
2991 Capture Scheme level `module-make-local-var!' to be used in the
2992 standard eval closure.
2993 (scm_standard_eval_closure): New primitive.
2994
2995 * modules.h (scm_standard_eval_closure): Declare.
2996
2997 * eval.c (scm_lookupcar): Test for !SCM_CONSP (SCM_CAR (env))
2998 instead of SCM_TRUE (scm_procedurep (SCM_CAR (env))).
2999
3000 * symbols.c (scm_sym2vcell): Bypass dispatch in the evaluator for
3001 standard eval closures.
3002
3003 * variable.c: Code layout fixes.
3004
3005 2000-06-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3006
3007 * Makefile.am: Added LIBS line to libpath which accidentally
3008 disappeared in the change of 2000-06-01.
3009 (Thanks to Dale P. Smith.)
3010
3011 2000-06-03 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3012
3013 * scmsigs.c (scm_segfault): Removed. (Was probably added by
3014 mistake since it is not mentioned in ChangeLog.)
3015
3016 * gc.h (SCM_VALIDATE_CELL): Cast result to (void) in order to
3017 avoid compiler warnings in gcc. (Does this work for other
3018 compilers?)
3019
3020 2000-06-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3021
3022 * gc.h (SCM_VALIDATE_CELL): Don't "use" the value returned by
3023 abort ().
3024 (SCM_CARLOC, SCM_CDRLOC): Define directly instead of using
3025 SCM_CELL_OBJECT_0 and SCM_CELL_OBJECT_1. It's not correct to take
3026 the address of these expressions since they use SCM_VALIDATE_CELL.
3027 (Thanks to Bernard Urban.)
3028
3029 * dynl.c: Changed #include <ltdl.h> --> #include
3030 "libltdl/ltdl.h". (Thanks to Bill Schottstaedt.)
3031
3032 2000-06-01 Craig Brozefsky <craig@red-bean.com>
3033
3034 * Makefile.am: libguile_la_LDFLAGS gets -version-info args
3035 from GUILE-VERSION definition of LIBGUILE version. Added to
3036 libpath.h definitions for guileversion and libguileversion which
3037 both get their values from GUILE-VERSION definition.
3038
3039 2000-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
3040
3041 * numbers.h (SCM_BIGP): Don't use SCM_SMOB_PREDICATE in header
3042 file: Code using numbers should not be required to include
3043 smob.h.
3044
3045 2000-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
3046
3047 * coop-threads.c.cygnus, coop-threads.h.cygnus, fsu-pthreads.h,
3048 mit-pthreads.c, mit-pthreads.h: Deleted.
3049
3050 * Makefile.am (EXTRA_DIST), scmsigs.c, threads.[ch]: Drop
3051 references to deleted files and fsu/mit thread support in
3052 general.
3053
3054 2000-05-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
3055
3056 * hooks.c (symbol_name, scm_create_hook): Restored the original
3057 behaviour of scm_create_hook. Changing it was bad as Carl
3058 R. Witty has pointed out.
3059
3060 * gc.c (scm_init_gc): We can still rely on scm_create_hook to
3061 protect the object.
3062
3063 2000-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
3064
3065 * gc.c (scm_init_gc): Protect scm_after_gc_hook, since this will
3066 soon not be done by scm_create_hook any longer.
3067
3068 * hooks.c (make_hook, print_hook, scm_create_hook,
3069 scm_make_hook_with_name, scm_make_hook), hooks.h (SCM_HOOK_NAME,
3070 SCM_HOOK_PROCEDURES, SCM_SET_HOOK_PROCEDURES,
3071 scm_make_hook_with_name), init.c (scm_boot_guile_1): Hooks no
3072 longer have names. As an intermediate solution, the name
3073 predicate is emulated via object properties, but use of this
3074 feature is deprecated.
3075
3076 * hooks.h (scm_free_hook): Removed, as it is never defined.
3077
3078 2000-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
3079
3080 * numbers.[ch] (SCM_POSFIXABLE, SCM_NEGFIXABLE, SCM_FIXABLE):
3081 Un-deprecated since otherwise user code can't determine whether a
3082 number fits into an inum any longer. The names should be changed
3083 some time, though.
3084
3085 * numbers.c (scm_big2inum): Eliminated use of SCM_UNEGFIXABLE.
3086
3087 * tags.h (SCM_UNPACK_CAR): Deprecated.
3088
3089 2000-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
3090
3091 * filesys.h (SCM_OPDIRP), fluids.h (SCM_FLUIDP, SCM_FLUID_NUM),
3092 fports.h (SCM_OPFPORTP, SCM_OPINFPORTP, SCM_OPOUTFPORTP), hooks.h
3093 (SCM_HOOK_ARITY), keywords.h (SCM_KEYWORDP, SCM_KEYWORDSYM),
3094 numbers.h (SCM_NUMP, SCM_BIGSIGN, SCM_BDIGITS, SCM_NUMDIGS):
3095 Replace SCM_UNPACK_CAR appropriately. Don't access cells via
3096 SCM_{SET}?C[AD]R unless they are known to be cons cells.
3097
3098 * gc.c (scm_heap_seg_data_t, scm_mark_locations, scm_cellp,
3099 init_heap_seg): Remove unused struct member variable 'valid'.
3100
3101 2000-05-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
3102
3103 * fports.c (fport_write), ports.c (scm_markstream, scm_port_mode,
3104 scm_print_port_mode), ports.h (SCM_OPPORTP, SCM_OPINPORTP,
3105 SCM_OPOUTPORTP, SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP),
3106 procs.h (SCM_CLOSCAR), unif.h (SCM_ARRAY_NDIM, SCM_ARRAY_CONTP),
3107 variable.h (SCM_VARIABLEP): Replace SCM_UNPACK_CAR
3108 appropriately.
3109
3110 2000-05-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
3111
3112 * gc.c (free_list_length), hash.c (scm_hasher), macros.c
3113 (scm_macro_type), objects.c (scm_class_of), options.c
3114 (scm_options), print.c (scm_iprin1), strports.c (st_seek), throw.c
3115 (SCM_LAZY_CATCH_P): Replace SCM_UNPACK_CAR appropriately.
3116
3117 2000-05-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
3118
3119 * eval.c (scm_macroexp, SCM_CEVAL, scm_force), tags.h: Replace
3120 SCM_UNPACK_CAR with SCM_CELL_TYPE or SCM_CELL_WORD_0.
3121
3122 * eval.c (scm_force): Add documentation.
3123
3124 * eval.c (scm_force, scm_cons_source): Don't access cells via
3125 SCM_{SET}?C[AD]R unless they are known to be cons cells.
3126
3127 2000-05-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
3128
3129 * strings.h (SCM_NSTRINGP, SCM_NRWSTRINGP), tags.h
3130 (SCM_NDOUBLE_CELLP), vectors.h (SCM_NVECTORP): Deprecated.
3131
3132 * gc.c (scm_igc), gc.h (SCM_PTR_MASK, SCM_PTR_LT): Removed #ifdef
3133 nosve #endif conditionally compiled code.
3134
3135 2000-05-23 Michael Livshin <mlivshin@bigfoot.com>
3136
3137 * gc.c (scm_heap_seg_data_t): fixed comment for the `span' member.
3138
3139 2000-05-22 Michael Livshin <mlivshin@bigfoot.com>
3140
3141 * guile-doc-snarf.in: put the preprocessed file through sed to
3142 trim all lines to 1024 chars. I hope it doesn't break anybody's
3143 sed. we'll see. (note: this is lossy trimming, i.e. the spill
3144 isn't wrapped around but actually chopped off. this seemed to me
3145 safe because the current snarfer doesn't understand multi-line
3146 cookies anyway. in the long term, it would be nice not to depend
3147 on AWK for anything.)
3148
3149 * gc.h (SCM_[SET_]CELL_{WORD,OBJECT}, SCM_VALIDATE_CELL): reverted
3150 the previous change to this macros, after deciding to torture the
3151 snarfer instead.
3152
3153 2000-05-21 Michael Livshin <mlivshin@bigfoot.com>
3154
3155 * gc.h (SCM_[SET_]CELL_{WORD,OBJECT}, SCM_VALIDATE_CELL): brought
3156 the yucky, ugly and nasty conditional compilation back. sorry,
3157 but it was either that or requiring GAWK to build Guile.
3158 (lots of places): removed the code that implemented the old GC
3159 scheme.
3160
3161 * init.c (scm_boot_guile_1): removed the code conditioned on
3162 !GUILE_NEW_GC_SCHEME.
3163
3164 * __scm.h: (GUILE_NEW_GC_SCHEME): removed.
3165
3166 * gc.c (scm_protect_object, scm_unprotect_object): change the
3167 implementation to more efficient (at least in the time complexity
3168 sense). the calls should now also be thread-safe -- I suspect
3169 that people expect them to be. (thanks to Han-Wen Nienhuys)
3170 (lots of places): removed the code that implemented the old GC
3171 scheme.
3172
3173 * hashtab.c (scm_hash_fn_create_handle_x): add missing
3174 SCM_REALLOW_INTS before return. I really wonder about the
3175 possible interactions between hashtables, threads & GC. it
3176 doesn't look healthy at all.
3177
3178 2000-05-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
3179
3180 * unif.c (scm_bit_count): Fixed the parameter checks. Thanks to
3181 Dale P. Smith.
3182
3183 2000-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
3184
3185 * __scm.h (SCM_DEBUG_CELL_ACCESSES), gc.h (SCM_): Added as a new
3186 debug option to verify all accesses to cells actually access
3187 objects on the heap.
3188
3189 * gc.h (SCM_VALIDATE_CELL): Added. Only performs validation if
3190 SCM_DEBUG_CELL_ACCESSES is set to 1.
3191
3192 (SCM_CELL_WORD, SCM_CELL_OBJECT, SCM_SET_CELL_WORD,
3193 SCM_SET_CELL_OBJECT): Use SCM_VALIDATE_CELL to check every cell
3194 that is accessed.
3195
3196 2000-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
3197
3198 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs,
3199 gh_scm2floats, gh_scm2doubles): Change !SCM_NIMP to SCM_IMP.
3200
3201 * gc.c (scm_cellp): Fixed and simplified.
3202
3203 * throw.c (JBJMPBUF, SETJBJMPBUF, SCM_JBDFRAME, SCM_SETJBDFRAME,
3204 make_jmpbuf, scm_init_throw): Now using double cells to represent
3205 jump buffers when using debug extensions.
3206
3207 (freejb): Removed.
3208
3209 2000-05-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
3210
3211 * gh.h gh_data.c gh_funcs.c (gh_new_procedure*, gh_chars2byvect,
3212 gh_shorts2svect, gh_longs2ivect, gh_ulongs2uvect, gh_floats2fvect,
3213 gh_doubles2dvect, gh_doubles2scm, gh_define, gh_lookup,
3214 gh_module_lookup): Accept const pointers as parameters.
3215
3216 * gh.h gh_data.c (gh_int2scmb): Deprecated.
3217
3218 2000-05-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
3219
3220 * __scm.h (SCM_DEBUG_REST_ARGUMENT): Renamed from
3221 SCM_DEBUG_REST_ARGUMENTS in order to clarify that we don't test
3222 the actual arguments in the list, but rather the rest argument as
3223 a list of arguments.
3224
3225 * validate.h (SCM_VALIDATE_REST_ARGUMENT): Added.
3226
3227 * async.c (scm_noop), eval.c (scm_map, scm_for_each), list.c
3228 (scm_list_star, scm_append, scm_append_x), ports.c
3229 (scm_close_all_ports_except), ramap.c (scm_array_map_x,
3230 scm_array_for_each), regex-posix.c (scm_make_regexp), stacks.c
3231 (scm_make_stack), strings.c (scm_string_append), struct.c
3232 (scm_make_struct, scm_make_vtable_vtable): Validate rest arguments.
3233
3234 * dynl.c (DYNL_GLOBAL, sysdep_dynl_link, kw_global, sym_global,
3235 scm_dynamic_link, scm_init_dynamic_linking), dynl.h
3236 (scm_dynamic_link): Removed possibility to pass flags to
3237 scm_dynamic_link, as it had no effect anyway.
3238
3239 * filesys.c (scm_fcntl): Made single optional rest argument into
3240 a standard optional argument.
3241
3242 * hooks.c (scm_run_hook): A list of rest arguments is never
3243 SCM_UNBNDP.
3244
3245 * list.c (scm_append, scm_append_x), stacks.c (scm_make_stack),
3246 strings.c (scm_string_append): Don't perform half-hearted checks
3247 to see whether the rest argument forms a proper list any more, use
3248 SCM_VALIDATE_REST_ARGUMENTS instead.
3249
3250 * ports.c (scm_close_all_ports_except): Accept empty list of rest
3251 arguments.
3252
3253 * posix.c (scm_convert_exec_args), print.c (scm_simple_format):
3254 Simplify verification of rest argument.
3255
3256 * stacks.c (scm_make_stack), stacks.h (scm_make_stack), throw.c
3257 (ss_handler, handler_message): Make first mandatory rest argument
3258 of scm_make_stack into a standard mandatory argument.
3259
3260 * unif.c (scm_transpose_array, scm_enclose_array,
3261 scm_array_in_bounds_p), unif.h (scm_transpose_array,
3262 scm_enclose_array, scm_array_in_bounds_p): Make first mandatory
3263 rest argument into a standard mandatory argument.
3264
3265 2000-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
3266
3267 * __scm.h: Added SCM_DEBUG as default debug option. (Thanks to
3268 Keisuke Nishida for the suggestion.) Added debug option
3269 SCM_DEBUG_REST_ARGUMENTS.
3270
3271 * eval.c (scm_map, scm_for_each): Make sure all lists have the
3272 same length. Also, removed redundant parameter checks.
3273
3274 2000-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
3275
3276 * Makefile.am: Let 'make clean' remove *.x and *.doc files.
3277
3278 * __scm.h: Improved explanation of giving options to make.
3279
3280 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS), tags.h
3281 (SCM_STRICT_TYPING, SCM_DEBUG_TYPING_STRICTNESS): Renamed
3282 SCM_STRICT_TYPING to SCM_DEBUG_TYPING_STRICTNESS and moved the
3283 corresponding declaration and comment to __scm.h.
3284
3285 * _scm.h (errno), gc.h (SCM_CELLPTR, SCM_PTR_LT), numbers.c
3286 (scm_remainder, scm_modulo), numbers.h (SCM_SRS, SCM_MAKINUM,
3287 SCM_INUM): Removed conditionally compiled code for Turbo C.
3288
3289 * gdbint.c (gdb_maybe_valid_type_p): Eliminated call to scm_tag.
3290 That check can be assumed to be redundant except for very rare
3291 conditions that actually indicate broken heap data.
3292
3293 2000-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
3294
3295 * numbers.c (scm_logcount, scm_integer_length): Reordered
3296 dispatch sequence.
3297
3298 2000-05-15 Gary Houston <ghouston@arglist.com>
3299
3300 * stime.c (scm_strftime): don't reset TZ if zone is an empty
3301 string. append a "0" to the zone for TZ.
3302
3303 2000-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
3304
3305 * numbers.c (scm_logbit_p, scm_bit_extract): Reordered dispatch
3306 sequence.
3307
3308 (scm_bit_extract): Fixed handling of bignums.
3309
3310 2000-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
3311
3312 * async.c (scm_sys_gc_async_thunk), chars.h (SCM_ICHRP, SCM_ICHR,
3313 SCM_MAKICHR), continuations.h (SCM_SETJMPBUF), error.c
3314 (scm_sysmissing), error.h (scm_sysmissing), evalext.c
3315 ('serial-map), ioext.c (scm_fseek), ioext.h (scm_fseek),
3316 keywords.c (scm_tc16_kw, scm_init_keywords), ports.h (SCM_CRDY,
3317 SCM_INPORTP, SCM_OUTPORTP), ramap.c ('serial-array-copy!,
3318 'serial-array-map!), smob.c (scm_newsmob), smob.h (scm_smobfuns,
3319 scm_newsmob), tag.c (scm_tag), tag.h (scm_tag), tags.h
3320 (scm_tc16_flo, scm_tc_flo, scm_tc_dblr, scm_tc_dblc): Wrapped
3321 deprecated code between #if (SCM_DEBUG_DEPRECATED == 0) #endif.
3322
3323 * fports.c (scm_fport_buffer_add), ports.c (scm_input_port_p,
3324 scm_output_port_p), print.c (scm_get_print_state), validate.h
3325 (SCM_VALIDATE_CHAR): Replace use of deprecated macros
3326 SCM_INPORTP, SCM_OUTPORTP, SCM_ICHRP by SCM_INPUT_PORT_P,
3327 SCM_OUTPUT_PORT_P, SCM_CHARP, respectively.
3328
3329 2000-05-14 Gary Houston <ghouston@arglist.com>
3330
3331 * stime.c (scm_strftime): if HAVE_TM_ZONE is not defined, hack the
3332 TZ environment variable so that the %Z format returns the zone
3333 from the input vector instead of the system default.
3334
3335 from Keisuke Nishida:
3336 * fports.c (scm_setvbuf): minor docstring fix.
3337 * ports.h (scm_generic_fgets): obsolete prototype deleted.
3338
3339 2000-05-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
3340
3341 * __scm.h: Added new section for debugging options.
3342
3343 (SCM_DEBUG_DEPRECATED): If 1, no deprecated code is included to
3344 help developers to get rid of references to deprecated code.
3345
3346 * numbers.[ch] (SCM_POSFIXABLE, SCM_NEGFIXABLE, SCM_UNEGFIXABLE,
3347 SCM_FIXABLE, SCM_FLOBUFLEN): These macros are no longer provided
3348 as part of the interface and are marked as deprecated in the
3349 header file.
3350
3351 * numbers.c (scm_make_real, scm_make_complex): Inlined the
3352 corresponding macros SCM_NEWREAL and SCM_NEWCOMPLEX,
3353 respectively.
3354
3355 * numbers.h (SCM_NEWREAL, SCM_NEWCOMPLEX, SCM_INEXP, SCM_CPLXP,
3356 SCM_REAL, SCM_IMAG, SCM_REALPART, scm_makdbl, SCM_SINGP,
3357 SCM_NO_BIGDIG, SCM_NUM2DBL, scm_dblproc): Deprecated.
3358
3359 2000-05-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
3360
3361 * gc.h (scm_cell, SCM_CELL_WORD, SCM_CELL_OBJECT,
3362 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT): Scheme cells now consist
3363 of two scm_bits_t values instead of two SCM values, because it is
3364 legal for cell entries to hold values that are not scheme objects.
3365
3366 (SCM_SETAND_CAR, SCM_SETAND_CDR, SCM_SETOR_CAR, SCM_SETOR_CDR):
3367 Use SCM_SETC[AD]R to modify contents of pairs.
3368
3369 2000-05-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
3370
3371 * numbers.c (IS_INF, isfinite): Added FIXME comment.
3372
3373 (scm_abs, scm_magnitude): Make these two independent of each
3374 other. scm_abs now reports an error if given a complex argument.
3375
3376 (scm_istr2flo, scm_integer_p). Use SCM_REAL_VALUE instead of
3377 SCM_REALPART if the object is known to be real.
3378
3379 (scm_init_numbers): No need to use SCM_NEWREAL macro for speed
3380 here.
3381
3382 * numbers.h (SCM_SINGP): Set to 0 instead of SCM_BOOL_F.
3383
3384 2000-05-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
3385
3386 * eq.c (scm_eqv_p): Separate handling of real and complex
3387 values. Remove #ifdef SCM_BIGDIG #endif test.
3388
3389 * eval.c (SCM_CEVAL, SCM_APPLY), gh_data.c (gh_scm2floats,
3390 gh_scm2doubles), hash.c (scm_hasher), ramap.c (scm_array_fill_int,
3391 ramap_rp, scm_array_map_x), random.c (vector_scale,
3392 vector_sum_squares), unif.c (scm_make_uve, scm_array_p,
3393 scm_array_set_x): Use SCM_REAL_VALUE instead of SCM_REALPART if
3394 the object is known to be real. Use SCM_COMPLEXP instead of
3395 deprecated SCM_CPLXP. Use SCM_INEXACTP instead of deprecated
3396 SCM_INEXP.
3397
3398 2000-05-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
3399
3400 * numbers.c: No need to include unif.h.
3401
3402 (IS_INF): Returned to old test for now: x == x + 1 will not work
3403 for large numbers due to rounding errors.
3404 Thanks to Kalle Olavi Niemitalo.
3405
3406 2000-05-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
3407
3408 * numbers.c (scm_divbigdig): Removed outdated comment.
3409
3410 (scm_number_to_string, scm_string_to_number, scm_number_p,
3411 scm_real_p, scm_integer_p, scm_inexact_p, scm_gr_p, scm_leq_p,
3412 scm_geq_p, scm_make_rectangular, scm_make_polar,
3413 scm_inexact_to_exact): Added comments.
3414
3415 (add1, scm_init_numbers): Removed add1.
3416
3417 2000-05-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
3418
3419 * numbers.c (IS_INF): The new test is x == x + 1. The old test
3420 x == x/2 did not work for zero values. Thanks to Han-Wen Nienhuys
3421 and Ivan Toshkov.
3422
3423 (scm_number_to_string, scm_sum, scm_difference, scm_two_doubles,
3424 scm_num2long, scm_num2long_long, scm_num2ulong): Reordered
3425 dispatch sequence.
3426
3427 2000-05-09 Marius Vollmer <mvo@zagadka.ping.de>
3428
3429 * scmsigs.c (take_signal): Execute SCM_ASYNC_TICK for SIGSEGV,
3430 SIGILL and SIGBUS signals. These signals are not continuable and
3431 must be handled for real right away.
3432
3433 2000-05-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
3434
3435 * numbers.c (scm_zero_p, scm_positive_p, scm_negative_p,
3436 scm_real_part, scm_imag_part, scm_magnitude,
3437 scm_inexact_to_exact): Reordered dispatch sequence.
3438
3439 2000-05-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
3440
3441 * feature.c: No need to include "libguile/smob.h"
3442
3443 (scm_loc_features, features, scm_add_feature, scm_init_feature):
3444 Removed variable 'scm_loc_features' as a pointer to the SCM value
3445 holding the features list. Using variable 'features' instead,
3446 which holds the interned pair. Thus, SCM_SETCDR can be used
3447 instead of pointer trickery.
3448
3449 2000-05-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
3450
3451 * alist.c (scm_acons): Use SCM{_SET}?_CELL_OBJECT as long as a
3452 cell is not known to be a valid pair.
3453
3454 2000-05-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
3455
3456 * eval.c (ASRTSYNTAX, scm_m_body, scm_m_letrec1): Removed
3457 ASRTSYNTAX. Using SCM_ASSYNT instead.
3458
3459 (scm_m_body): Don't create a redundant cons cell.
3460
3461 (scm_m_do): Removed redundant test 'bodycheck'.
3462
3463 (bodycheck): Removed.
3464
3465 * stacks.c (stack_depth, read_frame, read_frames): Removed
3466 redundant calculation of size, minimized some variable scopes.
3467
3468 2000-05-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
3469
3470 * pairs.c (scm_cons, scm_cons2): Use SCM{_SET}?_CELL_OBJECT as
3471 long as a cell is not known to be a valid pair.
3472
3473 (scm_pair_p): Eliminated redundant SCM_IMP test.
3474
3475 2000-05-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
3476
3477 * eval.c (scm_m_body, scm_macroexp, unmemocopy, scm_eval_args,
3478 scm_deval_args): Eliminated redundant SCM_IMP tests.
3479
3480 * hashtab.c (scm_ihashx, scm_sloppy_assx, scm_delx_x), weaks.c
3481 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
3482 scm_make_doubly_weak_hash_table): Fixed critical sections.
3483 Thanks to Keisuke Nishida.
3484
3485 2000-05-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
3486
3487 * numbers.c (scm_logand, scm_logior, scm_logxor, scm_logtest):
3488 Fixed some goto-related initialization bugs (introduced by me).
3489
3490 2000-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
3491
3492 * numbers.h (SCM_INUM0): Uses SCM_MAKINUM instead of SCM_PACK.
3493
3494 * dynl.c (dynl_obj, DYNL_OBJ, get_dynl_obj): Removed.
3495
3496 (DYNL_FILENAME, DYNL_HANDLE): Use SCM_CELL... macros instead of
3497 pointer trickery.
3498
3499 (SET_DYNL_HANDLE): Added.
3500
3501 (scm_dynamic_object_p): Simplified.
3502
3503 (scm_dynamic_unlink, scm_dynamic_func): Changed comment. Deliver
3504 better error message when accessing unlinked dynamic objects.
3505 Eliminated call to get_dynl_obj.
3506
3507 2000-05-03 Marius Vollmer <mvo@zagadka.ping.de>
3508
3509 * scmsigs.c (orig_handlers) [!HAVE_SIGACTION]: Fix declaration to
3510 be an array of function pointers instead of being a pointer to an
3511 array returning function. Thanks to Kalle Olavi Niemitalo!
3512
3513 2000-05-03 Dirk Herrmann <D.Herrmann@tu-bs.de>
3514
3515 * numbers.c (scm_divbigbig, scm_divbigint), numbers.h
3516 (scm_divbigbig, scm_divbigint): Don't return zero any more to
3517 indicate that a division has a remainder, return SCM_UNDEFINED
3518 instead. It is improbable that anyone actually used these
3519 functions outside of numbers.c. For this reason and due to the
3520 change in behaviour the functions are static now. Thus, if
3521 surprisingly there are users of these functions they will at least
3522 get alarmed.
3523
3524 * numbers.c: Removed #ifdef SCM_BIGDIG #endif in those functions,
3525 that already have a clean dispatch order. Note: SCM_BIGDIG is
3526 always defined.
3527
3528 * numbers.c (scm_inexact_p): Simplified.
3529
3530 * numbers.c (scm_num_eq_p, scm_less_p, scm_max, scm_min,
3531 scm_product, scm_num2dbl, scm_angle): Reordered dispatch
3532 sequence, thereby fixing some comparisons of SCM values with
3533 integer constants.
3534
3535 * numbers.c (scm_divide): Division by zero of inums leads to an
3536 error now. (Formerly, an infinite number was returned.)
3537
3538 Respect the fact, that scm_divbigbig does now return SCM_UNDEFINED
3539 if a division has a remainder.
3540
3541 2000-05-02 Gary Houston <ghouston@arglist.com>
3542
3543 * Makefile.am (INCLUDES): add ${INCLTDL} (thanks to Tim Mooney).
3544
3545 2000-05-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
3546
3547 * numbers.c (scm_logtest, scm_division): Reordered dispatch
3548 sequence, thereby fixing some comparisons of SCM values with
3549 integer constants.
3550
3551 * numbers.h (scm_makdbl): Mark as deprecated at the point of
3552 declaration.
3553
3554 * eval.c (SCM_CEVAL, SCM_APPLY), gh_data.c (gh_double2scm,
3555 gh_doubles2scm), numbers.c (scm_istr2flo, scm_max, scm_min,
3556 scm_sum, scm_difference, scm_product, scm_divide, scm_sys_expt,
3557 scm_sys_atan2, scm_make_rectangular, scm_make_polar,
3558 scm_real_part, scm_imag_part, scm_magnitude, scm_angle,
3559 scm_long2num, scm_long_long2num, scm_ulong2num), ramap.c
3560 (ramap_rp, scm_array_map_x), random.c (scm_random,
3561 scm_random_uniform, scm_random_normal_vector_x, scm_random_exp),
3562 struct.c (scm_struct_ref), unif.c (scm_array_to_list): Replace
3563 call to scm_makdbl with a call to scm_make_real or
3564 scm_make_complex, depending on whether the imaginary part is known
3565 to be zero.
3566
3567 2000-05-01 Gary Houston <ghouston@arglist.com>
3568
3569 * scmsigs.c: fix the definition of orig_handlers for the case
3570 that HAVE_SIGACTION is not defined (thanks to
3571 Kalle Olavi Niemitalo).
3572
3573 * Makefile.am: remove include_HEADERS (was libguile.h)
3574 libguile.h: moved to top level directory.
3575
3576 2000-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
3577
3578 * numbers.c (SCM_SWAP): Moved to the top of the file to allow for
3579 a wider use.
3580
3581 * numbers.c (scm_modulo, scm_gcd, scm_lcm, scm_logand, scm_logior,
3582 scm_logxor): Reordered dispatch sequence, thereby fixing some
3583 comparisons of SCM values with integer constants.
3584
3585 * number.c (scm_logtest): Removed some redundant SCM_{N}?IMP
3586 tests.
3587
3588 2000-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
3589
3590 * numbers.c (scm_quotient, scm_remainder): Removed code that was
3591 conditionally compiled based on BADIVSGNS. BADIVSGNS does not
3592 occur anywhere else throughout guile.
3593
3594 * numbers.c (scm_quotient): Fixed parameter number in error
3595 message.
3596
3597 * numbers.c (scm_remainder): Reordered dispatch sequence.
3598
3599 2000-04-25 Gary Houston <ghouston@arglist.com>
3600
3601 * posix.c (scm_execlp): docstring fix (thanks to Martin
3602 Grabmueller).
3603
3604 2000-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
3605
3606 * eval.c (undef_object): Made into a local static variable
3607 (suggested by Jost Boekemeier).
3608
3609 2000-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
3610
3611 * pairs.c (cxrs, scm_init_pairs): Simplify initialization of
3612 c[ad]+r functions.
3613
3614 * procs.c (scm_init_iprocs), procs.h (scm_subr, scm_iproc,
3615 scm_dsubr, scm_init_iprocs): Removed.
3616
3617 * procs.h (SCM_SUBRF, SCM_DSUBRF): Access the cell words
3618 directly instead of casting a cell to a C struct.
3619
3620 2000-04-22 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3621
3622 Better modularization of GC extensions through new C level GC
3623 hooks:
3624
3625 * weaks.c (scm_weaks_prehistory): New function: Add
3626 scm_weak_vector_gc_init to scm_before_mark_c_hook; Add
3627 scm_mark_weak_vector_spines to scm_before_sweep_c_hook.
3628 (scm_scan_weak_vectors): New function; added to
3629 scm_after_sweep_c_hook.
3630
3631 * weaks.h (scm_weak_vectors, scm_weaks_prehistory): Added
3632 declarations.
3633
3634 * guardians.h (scm_guardian_gc_init, scm_guardian_zombify): Are
3635 now static.
3636
3637 * guardians.c (scm_guardian_gc_init): Turned into a hook function
3638 and added to scm_before_mark_c_hook.
3639 (scm_guardian_zombify): Turned into a hook function and added to
3640 scm_before_sweep_c_hook.
3641
3642 * async.c (scm_sys_gc_async_thunk): Run after-gc-hook.
3643 Added #include "libguile/gc.h".
3644
3645 * gc.h: Added #include "libguile/hooks.h".
3646
3647 * gc.c: Removed #include "libguile/guardians.h".
3648 (scm_before_gc_c_hook, scm_before_mark_c_hook,
3649 scm_before_sweep_c_hook, scm_after_sweep_c_hook,
3650 scm_after_gc_c_hook): New C level hooks.
3651 (scm_after_gc_hook): New Scheme level hook.
3652 (scm_gc_sweep): Moved scanning of weak vectors to weaks.c.
3653 (scm_igc): Moved initialization of scm_weak_vectors and the call
3654 to scm_guardian_gc_init to respective module.
3655 (scm_mark_weak_vector_spines): Moved to weaks.c;
3656 Call to scm_guardian_zombify moved to guardians.c;
3657 Run scm_before_gc_c_hook, scm_before_sweep_c_hook,
3658 scm_after_gc_c_hook at appropriate places.
3659 (scm_init_gc): Initialize scm_after_gc_hook.
3660
3661 * hooks.c, hooks.h (scm_make_hook_with_name): Removed deprecated
3662 function.
3663
3664 * init.c (scm_boot_guile_1): Added `scm_init_hooks'.
3665
3666 * Makefile.am: Added hooks.c, hooks.h, hooks.x.
3667
3668 * feature.c, feature.h: Broke out hook code into separate files.
3669
3670 * hooks.c, hooks.h: New files.
3671
3672 * *.*: Change includes so that they always use the "prefixes"
3673 libguile/, qt/, guile-readline/, or libltdl/.
3674 (Thanks to Tim Mooney.)
3675
3676 * Makefile.am (INCLUDES): Removed THREAD_CPPFLAGS and INCLTDL.
3677 (DEFS): Added. automake adds -I options to DEFS, and we don't
3678 want that.
3679 Removed all -I options except for the root source directory and
3680 the root build directory.
3681
3682 * numbers.c (scm_odd_p, scm_even_p): Use SCM_WRONG_TYPE_ARG
3683 instead of SCM_ASSERT (0, ...). (Some compilers will complain
3684 about control reaching end of function otherwise, and, besides,
3685 the new code is not less clear.)
3686
3687 * gc.c (scm_must_malloc, scm_must_realloc, scm_must_free): Added
3688 calls to malloc debugging functions.
3689
3690 * init.c (scm_boot_guile_1): Added calls to debug-malloc init
3691 functions.
3692
3693 * Makefile.am: Added debug-malloc.c, debug-malloc.h,
3694 debug-malloc.x.
3695
3696 * debug-malloc.c, debug-malloc.h: New files.
3697
3698 2000-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
3699
3700 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p): Added
3701 documentation strings.
3702
3703 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p, scm_abs,
3704 scm_quotient): Reordered dispatch sequence to first handle
3705 immediates, second handle bignums and finally handle generic
3706 functions respectively signal wrong type arguments. Hopefully
3707 this will allow for easier separation when goops is integrated.
3708
3709 2000-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
3710
3711 * gc.c (which_seg): Use SCM2PTR to convert a non immediate SCM
3712 variable into a pointer to a heap cell.
3713
3714 * gc.c (scm_mark_locations, scm_cellp, init_heap_seg,
3715 scm_unhash_name): Remove redundant cast to SCM_CELLPTR.
3716
3717 2000-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
3718
3719 * print.c (scm_iprin1): Don't assign zero to SCM values, use
3720 SCM_UNDEFINED instead.
3721
3722 * weaks.c (scm_make_weak_vector): Fix assignment of zero to a
3723 vector element. (Still to be improved)
3724
3725 2000-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
3726
3727 * eval.c (undef_cell): Removed, replaced by:
3728
3729 (undef_object): Added to replace undef_cell.
3730
3731 (scm_lookupcar, scm_lookupcar1): Use undef_object.
3732
3733 * eval.c (scm_lookupcar, scm_lookupcar1, scm_m_atfop,
3734 scm_m_atbind, CHECK_EQVISH, SCM_CEVAL), procs.h (SCM_SETCODE):
3735 Don't perform arithmetic operations with SCM values.
3736
3737 * eval.c (scm_lookupcar, scm_lookupcar1, scm_m_atfop,
3738 scm_m_atbind, scm_eval_args, scm_deval_args, SCM_CEVAL): Use
3739 symbolic names for the tc3 type codes.
3740
3741 * eval.c (scm_m_define, SCM_CEVAL, SCM_APPLY): Remove redundant
3742 cast to SCM.
3743
3744 * eval.c (scm_eval_args, scm_deval_args, SCM_CEVAL): Made the
3745 access of the struct vcell element explicit.
3746
3747 2000-04-19 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3748
3749 * struct.c (scm_struct_free_light, scm_struct_free_standard,
3750 scm_struct_free_entity): Use `scm_must_free' instead of `free'.
3751
3752 * procs.c (scm_make_subr_opt): Tell scm_must_realloc that we're
3753 realloc:ing scm_subr_table ("what" instead of "who").
3754
3755 * numbers.c (scm_adjbig): Ditto.
3756
3757 Tue Apr 18 08:22:41 2000 Greg J. Badros <gjb@cs.washington.edu>
3758
3759 * validate.h: Do not cast to (unsigned) in SCM_VALIDATE_INUM_RANGE
3760 when testing high-end of the range. Mikael Djurfeldt noticed this
3761 anomaly -- thanks Mikael!
3762
3763 2000-04-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
3764
3765 * unif.c (l2ra): Don't eliminate the call to scm_array_set_x
3766 itself, as was done in the previous 'patch'. (Thanks to Radey
3767 Shouman)
3768
3769 2000-04-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
3770
3771 * options.c (scm_options), read.c (recsexpr): Remove redundant
3772 SCM_IMP test.
3773
3774 * print.c (scm_iprin1): Made the access of the struct vcell
3775 element explicit.
3776
3777 * print.h (SCM_PRINT_CLOSURE): Added call to SCM_PACK.
3778
3779 * ramap.c (scm_ra_eqp, ra_compare), unif.c
3780 (scm_uniform_vector_ref, scm_cvref, rapr1): Separated accesses to
3781 unsigned long and signed long arrays and clarified the way the
3782 access is performed.
3783
3784 * ramap.c (scm_array_map_x, raeql), read.c (scm_lreadr), stacks.c
3785 (narrow_stack), unif.c (scm_cvref, scm_uniform_array_read_x,
3786 scm_raprin1): Use SCM_EQ_P to compare SCM values.
3787
3788 * strings.c (scm_makstr): Treat the msymbol slots as a field of
3789 scm_bits_t values.
3790
3791 * struct.h (SCM_SET_VTABLE_DESTRUCTOR): Treat the struct data as
3792 a field of scm_bits_t values.
3793
3794 * unif.c (l2ra): Don't test result of scm_array_set_x against
3795 zero: It is always SCM_UNSPECIFIED.
3796
3797 2000-04-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3798
3799 * script.c (scm_compile_shell_switches): Also enable
3800 record-positions when given the --debug option. (Thanks to Diego
3801 Dainese.)
3802
3803 2000-04-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
3804
3805 * print.c (ENTER_NESTED_DATA, print_circref, scm_iprlist):
3806 Compare SCM's with SCM_EQ_P.
3807
3808 * print.c (scm_make_print_state), srcprop.c
3809 (scm_source_properties): Use valid scheme object to initialize
3810 SCM variable.
3811
3812 * print.c (scm_iprin1): Remove redundant calls to SCM_UNPACK.
3813
3814 2000-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
3815
3816 * struct.c (scm_alloc_struct, scm_struct_free_0,
3817 scm_struct_free_light, scm_struct_free_standard,
3818 scm_struct_free_entity, scm_make_struct, scm_make_vtable_vtable),
3819 struct.h (scm_struct_free_t, scm_alloc_struct, scm_struct_free_0,
3820 scm_struct_free_light, scm_struct_free_standard,
3821 scm_struct_free_entity): Struct data regions (and thus also
3822 vtable data regions) are now C arrays of scm_bits_t elements.
3823
3824 * gc.c (scm_gc_mark, scm_gc_sweep, scm_unhash_name): Made the
3825 mixup of glocs and structs explicit.
3826
3827 * gc.c (scm_unprotect_object): Compare SCM's with SCM_EQ_P.
3828
3829 2000-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
3830
3831 * eval.c (scm_unmemocar): Use macros to test for gloc cell.
3832 Minimize scope of variable 'ir'.
3833
3834 * eval.h (SCM_IFRAME, SCM_IDIST), weaks.h (SCM_IS_WHVEC_ANY):
3835 Added missing call to SCM_UNPACK.
3836
3837 2000-04-17 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3838
3839 * validate.h (SCM_VALIDATE_INUM_RANGE_COPY,
3840 SCM_VALIDATE_NUMBER_COPY): New macros.
3841
3842 2000-04-16 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3843
3844 * script.c (scm_compile_shell_switches): Added --debug option.
3845
3846 2000-04-16 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3847
3848 * vectors.c (scm_vector_set_x): Return SCM_UNSPECIFIED (as
3849 specified by R5RS).
3850
3851 2000-04-15 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3852
3853 * ports.h (SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P): New macros.
3854 (SCM_INPORTP, SCM_OUTPORTP): Marked as deprecated.
3855
3856 * validate.h (SCM_VALIDATE_INPUT_PORT, SCM_VALIDATE_OUTPUT_PORT):
3857 New macros.
3858 Cleanup of code layout.
3859
3860 * ports.c, ports.h (close-input-port, close-output-port): New R5RS
3861 procedures.
3862
3863 2000-04-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
3864
3865 * continuations.c (scm_make_cont, scm_dynthrow): Completely
3866 separated implementations for defined (CHEAP_CONTINUATIONS) and
3867 !defined (CHEAP_CONTINUATIONS). Also, now using memcpy for stack
3868 copying.
3869
3870 * continuations.c (grow_stack): Renamed from grow_throw.
3871
3872 * continuations.c (copy_stack_and_call): New static function.
3873
3874 * continuations.c (scm_dynthrow): Simplified and made static.
3875
3876 * continuations.h (scm_dynthrow): Made static.
3877
3878 2000-04-13 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3879
3880 * unif.c, unif.h (shared-array-root, shared-array-offset,
3881 shared-array-increments): New primitives.
3882
3883 2000-04-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
3884
3885 * gc.c (scm_gc_sweep): Simplify the computation of freed memory
3886 size for msymbols.
3887
3888 * symbols.h (SCM_SLOTS, SCM_SYMBOL_FUNC, SCM_SYMBOL_PROPS,
3889 SCM_SYMBOL_HASH): The msymbol slots are now a field of scm_bits_t
3890 values.
3891
3892 * symbols.h (SCM_SET_SYMBOL_FUNC, SCM_SET_SYMBOL_PROPS): New
3893 macros.
3894
3895 symbols.c (scm_intern_obarray_soft, msymbolize, scm_symbol_fset_x,
3896 scm_symbol_pset_x): Use them.
3897
3898 * symbols.c (scm_symbol_hash): Unpack to access SCM raw data.
3899
3900 2000-04-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
3901
3902 * ports.c (scm_port_print): The port data is read as raw data.
3903
3904 * ports.h (SCM_TC2PTOBNUM, SCM_PTOBNUM): Fix SCM/scm_bits_t
3905 mismatch.
3906
3907 2000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
3908
3909 * eval.c (SCM_CEVAL), objects.c (scm_mcache_lookup_cmethod,
3910 scm_make_subclass_object), objects.h (SCM_CLASS_FLAGS,
3911 SCM_ENTITY_PROCEDURE, SCM_ENTITY_SETTER), struct.c
3912 (scm_struct_init, scm_struct_vtable_p, scm_make_struct,
3913 scm_struct_ref, scm_struct_set_x), struct.h (SCM_STRUCT_DATA):
3914 The struct data is now an array of scm_bits_t variables.
3915
3916 * objects.h (SCM_SET_ENTITY_PROCEDURE): New macro.
3917
3918 objects.c (scm_set_object_procedure_x): Use it.
3919
3920 * struct.c (scm_struct_init): Unused variable 'data' removed.
3921
3922 (scm_struct_vtable_p): Redundant SCM_IMP tests removed.
3923
3924 2000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
3925
3926 * objects.h (SCM_OBJ_CLASS_FLAGS, SCM_OBJ_CLASS_REDEF), struct.h
3927 (SCM_STRUCT_VTABLE_DATA, SCM_STRUCT_LAYOUT, SCM_STRUCT_VTABLE,
3928 SCM_STRUCT_PRINTER): The struct vtable data is now an array of
3929 scm_bits_t variables.
3930
3931 * struct.h (SCM_SET_STRUCT_LAYOUT): New macro.
3932
3933 struct.c (scm_make_vtable_vtable): Use it.
3934
3935 2000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
3936
3937 * symbols.c (scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
3938 scm_intern_obarray_soft, scm_sysintern0,
3939 scm_string_to_obarray_symbol, scm_intern_symbol,
3940 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
3941 scm_symbol_bound_p, scm_symbol_set_x): Don't use C operators to
3942 compare SCM values.
3943
3944 2000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
3945
3946 * numbers.c (scm_quotient, scm_modulo): Reordered to handle the
3947 case of immediate numbers parameters first. Also, only use
3948 decoded numbers for numerical comparison.
3949
3950 2000-04-10 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3951
3952 * objects.h: Don't redeclare scm_call_generic_0 and
3953 scm_apply_generic. (Thanks to Tal Tversky.)
3954
3955 2000-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
3956
3957 * hash.c (scm_hasher): Use symbolic names for the tc3 constants.
3958 Unpack SCM value to use it as a switch parameter. Don't cast SCM
3959 values to int values.
3960
3961 2000-04-10 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3962
3963 * coop.c (mother): Handled EINTR (the wait has been interrupted by
3964 a signal).
3965
3966 2000-04-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
3967
3968 * __scm.h (SCM_WTA_DISPATCH_[012n]): To test whether a SCM value
3969 contains a raw zero value it has to be unpacked.
3970
3971 * debug.c (with_traps_inner, scm_with_traps): Passing SCM values
3972 via void * requires unpacking / packing.
3973
3974 * stacks.h (SCM_STACKP): Remove unnecessary SCM_NIMP test and use
3975 SCM_EQ_P to compare SCM values.
3976
3977 * stacks.h (SCM_FRAME_VOID_P, SCM_FRAME_REAL_P, SCM_FRAME_PROC_P,
3978 SCM_FRAME_EVAL_ARGS_P, SCM_FRAME_OVERFLOW_P): Remove unnecessary
3979 call to SCM_UNPACK.
3980
3981 * tags.h (SCM_NECONSP): Define in terms of SCM_ECONSP
3982
3983 * tags.h (SCM_ECONSP): Clarify the test for glocs. This is still
3984 quite ugly.
3985
3986 2000-04-05 Michael Livshin <mlivshin@bigfoot.com>
3987
3988 * async.[ch]: unexpose low-level async access macros (thanks to
3989 Dirk Herrmann).
3990
3991 * validate.h: move async validation macros to async.c (nobody else
3992 needs them anyway), and rename them.
3993
3994 2000-04-04 Michael Livshin <mlivshin@bigfoot.com>
3995
3996 * async.h: kill the scm_async_t struct. having a heap cell
3997 pretending to be a C struct is not helthy, and is not needed here
3998 anyway, as asyncs happily fit in one heap cell.
3999
4000 * async.c: reflect the fact that asyncs are now represented by
4001 single heap cell each.
4002
4003 2000-04-04 Gary Houston <ghouston@arglist.com>
4004
4005 * error.c (scm_syserror): save errno before doing anything else,
4006 since it's used in two expressions and may get mutated (thanks to
4007 Dirk Herrmann).
4008
4009 2000-04-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
4010
4011 * debug.c (scm_procedure_source, scm_procedure_environment),
4012 gsubr.c (scm_make_gsubr_with_generic, scm_gsubr_apply), procs.c
4013 (scm_procedure, scm_setter): Return valid scheme value as dummy.
4014
4015 * filesys.c (scm_readdir, scm_rewinddir, scm_closedir,
4016 scm_dir_print, scm_dir_free), numbers.h (SCM_COMPLEX_REAL,
4017 SCM_COMPLEX_IMAG), regex-posix.h (SCM_RGX), throw.c (JBJMPBUF,
4018 SETJBJMPBUF, JBJMPBUF, SETJBJMPBUF, freejb, print_lazy_catch,
4019 scm_ithrow), unif.c (scm_uniform_vector_ref, scm_cvref,
4020 scm_array_set_x, rapr1), unif.h (SCM_ARRAY_V, SCM_ARRAY_BASE),
4021 vectors.h (SCM_VELTS, SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS): Use
4022 SCM_{SET_}?CELL_WORD* to access cell entries with raw data.
4023
4024 * filesys.c (scm_closedir), numbers.c (scm_addbig), numbers.h
4025 (SCM_SETNUMDIGS), throw.c (JBACTIVE, SCM_JBDFRAME,
4026 SCM_SETJBDFRAME): Read and modify data bits in cell entry #0 using
4027 SCM_{SET_}?CELL_WORD_0.
4028
4029 * filesys.c (fill_select_type, retrieve_select_type, scm_select),
4030 numbers.c (scm_gcd, scm_lcm, scm_integer_expt, scm_zero_p,
4031 scm_product, scm_divide), posix.c (scm_getgrgid), ramap.c
4032 (scm_array_fill_int, racp), throw.c (scm_catch, scm_lazy_catch,
4033 scm_ithrow), unif.c (scm_make_uve, scm_array_p,
4034 scm_transpose_array, scm_array_set_x, scm_bit_set_star_x,
4035 scm_bit_count_star, l2ra), variable.c (prin_var,
4036 scm_make_variable, scm_make_undefined_variable,
4037 scm_builtin_variable), vectors.c (scm_vector_set_length_x),
4038 vports.c (sf_flush, sf_close): Don't use C operators to compare
4039 SCM values.
4040
4041 * numbers.c (scm_odd_p, scm_even_p), variable.c (prin_var): Must
4042 unpack SCM values to access their raw contents.
4043
4044 * numbers.c (big2str): Eliminate unnecessary casts to SCM.
4045
4046 * numbers.h (SCM_NEWREAL), regex-posix.h (SCM_RGXP), vports.c
4047 (scm_make_soft_port): Use SCM_{SET_}?CELL_TYPE to access the cell
4048 type information.
4049
4050 * throw.c (printjb): Eliminated unnecessary unpack.
4051
4052 * variable.c (make_vcell_variable): Smob data is of type
4053 scm_bits_t.
4054
4055 2000-04-04 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4056
4057 * print.c: Removed promise to rewrite printer code before next
4058 release. :)
4059
4060 2000-04-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4061
4062 * iselect.c (add_fd_sets): Insert empty statement after label.
4063 (Thanks to Tim Mooney.)
4064
4065 2000-04-03 Michael Livshin <mlivshin@bigfoot.com>
4066
4067 * guardians.c (scm_guardian_zombify): mark all zombies in a
4068 separate loop after processing all the currently known live
4069 guardians, so as to not introduce order dependencies (thanks to
4070 Gary Houston). note that the order problems are still there if
4071 some guardians are themselves zombies, but that's a sick case that
4072 I'm not going to worry about.
4073 also, make another outer loop to process zombified
4074 guardians (which are uncovered while marking zombies).
4075
4076 2000-04-03 Dirk Herrmann <D.Herrmann@tu-bs.de>
4077
4078 * evalext.c (scm_definedp, scm_m_undefine), gc.c
4079 (scm_mark_weak_vector_spines, scm_gc_sweep), hashtab.c
4080 (scm_hashq_ref, scm_hashv_ref, scm_hash_ref, scm_hashx_ref),
4081 keywords.c (scm_make_keyword_from_dash_symbol), lang.c
4082 (scm_nil_eq), lang.h (SCM_NILP, SCM_NIL2EOL), load.c
4083 (scm_primitive_load), modules.c (scm_module_full_name), objects.c
4084 (scm_class_of, scm_mcache_lookup_cmethod, scm_make_class_object),
4085 ports.c (scm_close_all_ports_except), ports.h (SCM_EOF_OBJECT_P),
4086 print.c (scm_iprin1, scm_prin1, scm_iprlist, scm_simple_format),
4087 print.h (SCM_PRINT_STATE_P), procprop.c (scm_i_procedure_arity,
4088 scm_stand_in_scm_proc, scm_procedure_property,
4089 scm_set_procedure_property_x), procs.c
4090 (scm_procedure_documentation), read.c (scm_lreadr, scm_lreadparen,
4091 scm_lreadrecparen, scm_read_hash_extend), script.c
4092 (scm_compile_shell_switches), srcprop.c (scm_source_property,
4093 scm_set_source_property_x), srcprop.h (SCM_WHASHFOUNDP), stacks.c
4094 (read_frame, NEXT_FRAME, read_frames, narrow_stack,
4095 scm_make_stack, scm_stack_id), strop.c (scm_i_index,
4096 scm_string_index, scm_string_rindex), struct.c (scm_struct_init),
4097 validate.h (SCM_VALIDATE_BOOL_COPY, SCM_VALIDATE_INUM_DEF,
4098 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_PROC,
4099 SCM_VALIDATE_ARRAY): Don't use C operators to compare SCM values.
4100
4101 * feature.c (make_hook), keywords.c
4102 (scm_make_keyword_from_dash_symbol), macros.c (scm_makacro,
4103 scm_makmacro, scm_makmmacro), print.c (scm_iprin1,
4104 scm_printer_apply, scm_port_with_print_state): Smob data is of type
4105 scm_bits_t.
4106
4107 * feature.c (print_hook), gc.c (scm_object_address), hash.c
4108 (scm_ihashq, scm_ihashv), print.c (scm_iprin1, scm_ipruk), smob.c
4109 (freeprint), struct.c (scm_print_struct): Must unpack
4110 SCM values to access their raw contents.
4111
4112 * fluids.c (apply_thunk, scm_with_fluids), hashtab.c (fold_proc,
4113 scm_hash_fold), load.c (load, scm_primitive_load): Passing SCM
4114 values via void * requires unpacking / packing.
4115
4116 * fports.c (scm_fport_buffer_add, scm_setvbuf), procs.h
4117 (SCM_SUBRNUM, SCM_SET_SUBRNUM), srcprop.h (SRCPROPBRK, SRCBRKP):
4118 Read and modify data bits in cell entry #0 using
4119 SCM_{SET_}?CELL_WORD_0.
4120
4121 * fports.c (scm_fdes_to_port), gc.c (scm_gc_for_newcell,
4122 scm_gc_sweep, init_heap_seg), init.c (start_stack), ports.c
4123 (scm_void_port), procs.c (scm_make_subr_opt,
4124 scm_make_procedure_with_setter), root.c (scm_internal_cwdr),
4125 smob.c (scm_make_smob), strports.c (scm_mkstrport): Use
4126 SCM_SET_CELL_TYPE to write the cell type information.
4127
4128 * gc.c (scm_gc_mark): Use SCM_CELL_OBJECT* to access SCM values
4129 from cells that are no scheme pairs.
4130
4131 * gc.c (scm_gc_sweep), mallocs.c (prinmalloc), mallocs.h
4132 (SCM_MALLOCDATA, SCM_SETMALLOCDATA), print.c (scm_ipruk), random.h
4133 (SCM_RSTATE), root.h (SCM_ROOT_STATE), smob.c (scm_smob_free),
4134 srcprop.c (freesrcprops), srcprop.h (SRCPROPPOS, SRCPROPFNAME,
4135 SRCPROPCOPY, SRCPROPPLIST), struct.c (scm_make_struct,
4136 scm_make_vtable_vtable): Use SCM_{SET_}?CELL_WORD* to access cell
4137 entries with raw data.
4138
4139 * gc.c (scm_init_storage), sort.c (applyless), strop.c
4140 (scm_string_to_list): Eliminate unnecessary casts to SCM.
4141
4142 * mallocs.c (scm_malloc_obj): Store result of malloc as raw
4143 data.
4144
4145 * ports.c (scm_close_all_ports_except): Duplicate documentation
4146 text removed.
4147
4148 * print.c (scm_iprin1): Use SCM_ITAG3.
4149
4150 * procs.h (SCM_SET_SUBRNUM): Fix shift direction.
4151
4152 * snarf.h (SCM_GPROC, SCM_GPROC1, SCM_SYMBOL, SCM_GLOBAL_SYMBOL,
4153 SCM_KEYWORD, SCM_GLOBAL_KEYWORD, SCM_VCELL, SCM_GLOBAL_VCELL,
4154 SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT): Don't initialize globals
4155 and static variables at their point of declaration, but rather in
4156 the init function.
4157
4158 * tags.h (SCM_PACK): Automatically cast to scm_bits_t.
4159
4160 2000-04-02 Gary Houston <ghouston@arglist.com>
4161
4162 * guardians.c (TCONC_IN, scm_make_guardian): set the CDR of the
4163 empty tconc pair to SCM_EOL instead of SCM_BOOL_F, avoiding the
4164 use of an improper list (which breaks g_print. g_print isn't
4165 used).
4166 guardians.c: Added more comments and modified the make-guardian
4167 docstring. Reordered a few procedures.
4168
4169 2000-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
4170
4171 * eval.c (scm_lookupcar1, scm_lookupcar, scm_m_case, scm_m_cond,
4172 scm_m_lambda, iqq, scm_m_define, scm_m_expand_body, unmemocopy,
4173 SCM_CEVAL), procs.h (SCM_TOP_LEVEL): Don't use C operators to
4174 compare SCM values.
4175
4176 (scm_makprom): Smob data is of type scm_bits_t.
4177
4178 2000-03-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
4179
4180 * backtrace.c (display_error_body), debug.c (scm_procedure_source,
4181 scm_reverse_lookup), dynl.c (scm_dynamic_link): Don't use C
4182 operators to compare SCM values.
4183
4184 * debug.c (scm_make_debugobj), debug.h (SCM_DEBUGOBJ_FRAME,
4185 SCM_SET_DEBUGOBJ_FRAME): Update SCM_{SET_}?DEBUGOBJ_FRAME to
4186 access raw cell data with SCM_{SET_}?CELL_WORD_1.
4187
4188 * debug.c (scm_make_debugobj): Don't use SCM_SETCAR to set types.
4189
4190 * debug.c (scm_make_memoized), dynl.c (scm_dynamic_link): Smob
4191 data is of type scm_bits_t.
4192
4193 2000-03-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
4194
4195 * gdbint.c (gdb_maybe_valid_type_p), guardians.c (TCONC_EMPTYP,
4196 scm_guardian_zombify): Use SCM_EQ_P to compare SCM values.
4197
4198 * guardians.c (GUARDIAN): Use SCM_CELL_WORD_1 for raw data.
4199
4200 2000-03-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
4201
4202 * ports.h (scm_port): Change type of stream member to scm_bits_t.
4203
4204 * gdbint.c (unmark_port, remark_port), ports.c (scm_markstream),
4205 strports.c (st_resize_port, scm_mkstrport), vports (sf_flush,
4206 sf_write, sf_fill_input, sf_close, scm_make_soft_port): Since
4207 streams are now of type scm_bits_t, SCM streams have to be
4208 unpacked/packed.
4209
4210 * ports.h (SCM_SETPTAB_ENTRY, SCM_SETSTREAM): Cast input to
4211 scm_bits_t.
4212
4213 2000-03-31 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
4214
4215 * coop-defs.h (struct coop_t): Added `sto'-field again because of
4216 binary compatibility---let's remove it next time we alter some
4217 major structure.
4218
4219 * coop.c (coop_quitting_p, coop_cond_create, coop_mutex_create,
4220 coop_mother, coop_child): New variables.
4221 (mother): New function.
4222 (coop_create): New thread spawning mechanism which uses a "mother
4223 thread". The "dummy" pthreads aren't healthy enough to give birth
4224 to new threads since Linux threads thinks they are asleep.
4225
4226 * coop-defs.h (struct coop_t): Removed dummy_mutex.
4227
4228 * coop-defs.h, coop-threads.c (struct coop_t): Eliminate
4229 `sto'-field when GUILE_PTHREAD_COMPAT is enabled.
4230
4231 2000-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4232
4233 * arbiters.c (scm_make_arbiter), async.c (scm_async), dynwind.c
4234 (scm_internal_dynamic_wind): Smob data is always of type
4235 scm_bits_t.
4236
4237 * arbiters.c (SCM_ARB_LOCKED, SCM_LOCK_ARB, SCM_UNLOCK_ARB):
4238 Access the locking information in cell entry 0 with
4239 SCM_{SET_}?CELL_WORD_0 instead of SCM_*CAR.
4240
4241 * async.c (scm_run_asyncs): Use SCM_NULLP to test for the empty
4242 list.
4243
4244 * dynwind.c (scm_dowinds): Use SCM_EQ_P to compare SCM values.
4245
4246 * ports.h (SCM_PTAB_ENTRY, SCM_SETPTAB_ENTRY): Access the ptab
4247 entry data using SCM_{SET_}?CELL_WORD_1 instead of SCM_{SET}?CDR.
4248
4249 2000-03-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
4250
4251 * alist.c (scm_sloppy_assq, scm_assq), eq.c (scm_eq_p, scm_eqv_p,
4252 scm_equal_p), list.c (scm_ilength, scm_last_pair, scm_reverse,
4253 scm_sloppy_memq, scm_delq_x, scm_delq1_x), tags.h (SCM_UNBNDP):
4254 Don't use C operators == and != to compare SCM values, use
4255 SCM_EQ_P instead.
4256
4257 * boolean.c (scm_boolean_p): Use SCM_BOOLP to determine whether a
4258 SCM value is equal to #t or #f.
4259
4260 * eq.c (scm_eqv_p, scm_equal_p): Don't use SCM_CAR to access the
4261 cell type entry of non immediate objects of unknown type. Use
4262 SCM_CELL_TYPE instead.
4263
4264 * gh_data.c (gh_scm2bool, gh_module_lookup), list.c
4265 (scm_sloppy_memv, scm_sloppy_member, scm_delv_x, scm_delete_x,
4266 scm_delv1_x, scm_delete1_x), scmsigs.c (scm_sigaction): Use
4267 SCM_FALSEP and SCM_TRUE_P to compare SCM values against #f and
4268 #t.
4269
4270 * list.c (scm_listify): Use SCM_UNBNDP to test for an unbound
4271 scheme value.
4272
4273 2000-03-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
4274
4275 * coop-threads.c (scm_call_with_new_thread, scm_spawn_thread,
4276 scm_make_mutex, scm_make_condition_variable): Cast data to
4277 scm_bits_t in SCM_SET_CELL_WORD and SCM_NEWSMOB macros.
4278
4279 * coop.c (coop_create): Set `specific' field, not `data' to NULL.
4280
4281 2000-03-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
4282
4283 * smob.h (SCM_NEWSMOB, SCM_NEWSMOB2, SCM_NEWSMOB3, SCM_SMOB_DATA,
4284 SCM_SET_SMOB_DATA, SCM_TC2SMOBNUM, SCM_SMOBNUM): To access smob
4285 data, use SCM_{SET_}?CELL_TYPE or SCM_{SET_}?WORD_[1-3].
4286
4287 Note that this implies that smob data has always to be passed as
4288 values of type scm_bits_t.
4289
4290 2000-03-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
4291
4292 * threads.c (scm_init_threads): Pass 0 size to scm_make_smob_type
4293 for scm_tc16_thread. As the current COOP threads are written, GC
4294 is not supposed to manage storage for threads.
4295
4296 * error.c (scm_error): Don't try to throw an error if
4297 scm_gc_heap_lock is true.
4298
4299 * coop.c (coop_finish): New function. Called at exit.
4300 (coop_aborthelp): Free thread structures when threads die.
4301 Finished LinuxThreads compatibility support => COOP threads now
4302 mesh with LinuxThreads.
4303
4304 * coop-threads.c (scm_call_with_new_thread, scm_spawn_thread):
4305 Changed SETCDR --> SET_CELL_WORD_1.
4306
4307 * coop-threads.c (scheme_launch_thread): Set word 1 of handle to 0
4308 when thread dies.
4309
4310 2000-03-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
4311
4312 * boolean.h (SCM_TRUE_P): New macro.
4313
4314 * boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP), pairs.h
4315 (SCM_NULLP, SCM_NNULLP): Use SCM_EQ_P to compare SCM values.
4316
4317 2000-03-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
4318
4319 * continuations.h (SCM_CONTREGS, SCM_SET_CONTREGS): New macros to
4320 access continuation data.
4321
4322 (SCM_SETJMPBUF): Deprecated. Use SCM_SET_CONTREGS instead.
4323
4324 (SCM_JMPBUF, SCM_DYNENV, SCM_THROW_VALUE, SCM_BASE, SCM_SEQ,
4325 SCM_DFRAME): Use SCM_CONTREGS instead of SCM_CHARS to access
4326 continuation data.
4327
4328 * continuations.c (scm_make_cont), init.c (start_stack),
4329 root.c (scm_internal_cwdr): Use SCM_SET_CONTREGS instead of
4330 SCM_SETJMPBUF.
4331
4332 2000-03-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
4333
4334 * symbols.h (SCM_LENGTH, SCM_SETLENGTH): Access the length field
4335 of strings and symbols by using SCM_{SET_}?CELL_WORD_0.
4336
4337 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS): Use SCM_{SET_}?CELL_WORD_1
4338 to access the char * field of strings and symbols.
4339
4340 2000-03-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
4341
4342 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Use SCM_SET_CELL_TYPE to set
4343 the type entry of a new cell. Added a comment about things to
4344 remember when updating the list of free cells.
4345
4346 (SCM_FREEP, SCM_MARKEDP): Use SCM_CELL_TYPE to access the type
4347 entry of a cell.
4348
4349 2000-03-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
4350
4351 * pairs.h (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): Use
4352 SCM_CELL_OBJECT and SCM_SET_CELL_OBJECT. This change implies that
4353 with strict type checking enabled these macros will only work if
4354 given valid SCM parameters.
4355
4356 (SCM_GCCDR): Moved to tags.h.
4357
4358 * tags.h (SCM_GCCDR): Moved here from pairs.h.
4359
4360 2000-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
4361
4362 * tags.h (SCM2PTR, PTR2SCM): Moved to gc.h.
4363
4364 * pairs.h (scm_cell, SCM_CELLPTR, SCM_CELL_WORD*, SCM_CELL_OBJECT*,
4365 SCM_SET_CELL_WORD*, SCM_SET_CELL_OBJECT*, SCM_CELL_TYPE,
4366 SCM_SET_CELL_TYPE, SCM_PTR_LT, SCM_PTR_MASK, SCM_PTR_GT,
4367 SCM_PTR_LE, SCM_PTR_GE, SCM_CELL_WORD_LOC, SCM_NEWCELL,
4368 SCM_NEWCELL2): Moved to gc.h.
4369
4370 (SCM_CARLOC, SCM_CDRLOC, SCM_SETAND_CAR, SCM_SETAND_CDR,
4371 SCM_SETOR_CAR, SCM_SETOR_CDR): Moved to gc.h. These names should
4372 be changed, though, since the macros are not only pair related.
4373
4374 (SCMPTR): Deleted.
4375
4376 * gc.h (SCM2PTR, PTR2SCM, scm_cell, SCM_CELLPTR, SCM_CELL_WORD*,
4377 SCM_CELL_OBJECT*, SCM_SET_CELL_WORD*, SCM_SET_CELL_OBJECT*,
4378 SCM_CELL_TYPE, SCM_SET_CELL_TYPE, SCM_PTR_LT, SCM_PTR_MASK,
4379 SCM_PTR_GT, SCM_PTR_LE, SCM_PTR_GE, SCM_CELL_WORD_LOC,
4380 SCM_NEWCELL, SCM_NEWCELL2, SCM_CARLOC, SCM_CDRLOC, SCM_SETAND_CAR,
4381 SCM_SETAND_CDR, SCM_SETOR_CAR, SCM_SETOR_CDR): Moved here from
4382 tags.h and pairs.h.
4383
4384 2000-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
4385
4386 * tags.h (SCM_STRICT_TYPING): New macro that, if defined,
4387 activates strict compile time type checking for variables of
4388 type SCM.
4389 (SCM, SCM_PACK, SCM_UNPACK): Define according to whether
4390 SCM_STRICT_TYPING or SCM_VOIDP_TEST are defined.
4391 (SCM_EQ_P): Defined as a macro equivalent for eq?.
4392
4393 2000-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
4394
4395 * tags.h (SCM_POINTERS_MUNGED): Removed.
4396
4397 * gc.c (scm_gc_sweep, init_heap_seg): Removed use of
4398 SCM_POINTERS_MUNGED, thus fixing some illegal casts to SCM.
4399
4400 2000-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
4401
4402 * pairs.h (SCM_CELL_OBJECT, SCM_CELL_OBJECT_[0-3],
4403 SCM_SET_CELL_OBJECT, SCM_SET_CELL_OBJECT_[0-3], SCM_CELL_TYPE,
4404 SCM_SET_CELL_TYPE): Added a set of low level macros for accessing
4405 cell entries.
4406 (SCM_CELL_WORD_[0-3]): Renamed from the SCM_CELL_WORD[0-3].
4407
4408 * procs.h, procs.c: Instead of SCM_{SET_}?CELL_WORD[12], use the
4409 newly introduced SCM_{SET_}?CELL_OBJECT_[12] macros.
4410
4411 2000-03-23 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4412
4413 * tags.h: Disabled definition of SCM_VOIDP_TEST.
4414
4415 Defining SCM as void * introduces problems which haven't been
4416 handled yet. Developers who work with these issues can enable it
4417 in their working copies.
4418
4419 Disabling this definition exposes a set of newly introduced and
4420 older misuses of types which causes warning messages during
4421 compilation. We'll fix this successively.
4422
4423 * gc.c (scm_mark_locations): Changed * (SCM **) X --> * (SCM *) X
4424 in order to obtain a value of type SCM.
4425 (scm_cellp): Updated with new changes to scm_mark_locations.
4426
4427 * continuations.h (SCM_SETJMPBUF): Cast second arg into SCM.
4428
4429 * continuations.c (scm_make_cont): Removed cast of size_t into
4430 long.
4431
4432 * symbols.h (SCM_SETCHARS): Cast second arg into SCM.
4433
4434 2000-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
4435
4436 * numbers.h (SCM_SETNUMDIGS): Use SCM_BIGSIZEFIELD macro for
4437 shifting, not constant. Thanks to Dale P. Smith.
4438
4439 * numbers.c (scm_sum, scm_difference): Don't test a SCM value
4440 for being less than zero. Decode it to a C value first. Again,
4441 thank you Dale.
4442
4443 2000-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
4444
4445 * numbers.h, ramap.c, struct.h, vectors.h: Don't use SCM2PTR for
4446 non scheme values. If raw data is stored in SCM variables, it has
4447 to be accessed using SCM_UNPACK until a better solution is found.
4448
4449 2000-03-22 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4450
4451 * tags.h (SCM_ECONSP, SCM_NECONSP): More corrections of
4452 pointer-arithmetic induced by the SCM_PACK/UNPACK change.
4453
4454 * print.c (scm_iprin1): SCM_PACK/UNPACK corrections.
4455
4456 * gc.c (scm_gc_sweep): SCM_PACK/UNPACK corrections.
4457
4458 * eval.c (SCM_CEVAL, scm_unmemocar): SCM_PACK/UNPACK corrections.
4459
4460 * dynwind.c (scm_swap_bindings): SCM_PACK/UNPACK corrections.
4461
4462 * async.c, __scm.h: Removed lots of the old async click logic. It
4463 is possible to reinsert it by defining GUILE_OLD_ASYNC_CLICK in
4464 __scm.h. Let's try this out and dump the old code after the
4465 threads reorganization.
4466 (set-tick-rate, set-switch-rate): Conditionally removed.
4467
4468 2000-03-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4469
4470 * gc.c (scm_gc_mark): Bugfix 1: The recent SCM_PACK/UNPACK change
4471 made SCM values into pointers. This turned an arithmetic
4472 computation of the address of the vcell into a pointer-arithmetic
4473 one, thereby screwing up marking of structs.
4474 Bugfix 2: Removed incompletely introduced loop variable `j' used
4475 when protecting the tail array of a struct.
4476
4477 2000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
4478
4479 * struct.h (SCM_STRUCT_DATA): Don't cast SCM values to pointers.
4480
4481 2000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
4482
4483 * symbols.h, symbols.c (scm_strhash): Declare the string
4484 parameter as constant, since it is not modified.
4485
4486 * symbols.c (scm_intern_obarray_soft,
4487 scm_sysintern0_no_module_lookup): Can now pass constant strings
4488 to scm_strhash without need for casting.
4489
4490 2000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
4491
4492 * vectors.h (SCM_VELTS, SCM_VELTS_AS_STACKITEMS): Don't cast SCM
4493 values to pointers. Use SCM2PTR instead.
4494
4495 2000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
4496
4497 * async.c (scm_set_tick_rate, scm_set_switch_rate): Don't unpack
4498 results of SCM_INUM.
4499
4500 2000-03-21 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
4501
4502 * init.c (scm_boot_guile_1): Renamed GUILE_GC_TRIGGER_1 -->
4503 GUILE_MIN_YIELD_1, GUILE_GC_TRIGGER_2 --> GUILE_MIN_YIELD_2.
4504 GUILE_MIN_YIELD_X now take *positive* fractions of heap size.
4505
4506 * gc.c, gc.h (SCM_MIN_YIELD_1, SCM_MIN_YIELD_2,
4507 min_yield_fraction, min_yield, adjust_min_yield): Renamed from
4508 SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2, gc_trigger_fraction,
4509 gc_trigger, adjust_gc_trigger.
4510
4511 * gc.c (alloc_some_heap): Further improvement of minimal heap size
4512 prediction.
4513 (SCM_MAX): New macro.
4514 (scm_freelist_t): New field: collected_1. Previous amount of
4515 collected cells.
4516 (gc_sweep_freelist_finish): Trigger based on two last values of
4517 freelist->collected to avoid unnecessary allocation due to
4518 temporary peaks.
4519 (SCM_INIT_HEAP_SIZE_1, SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2):
4520 Adjusted to 45000 cells, 40% and 40%. Gives quick startup
4521 without extra heap allocation.
4522
4523 2000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
4524
4525 * numbers.h (SCM_MAKINUM): The parameter to SCM_MAKINUM should
4526 already be a C value. No need to unpack it.
4527
4528 * numbers.c (scm_long_long2num): Cast the parameter to scm_bits_t
4529 if we know it fits into an inum.
4530
4531 * ramap.c (ramap_rp): An scm_tc7_[ui]vect object does point to a
4532 field of long values. In contrast, SCM_VELTS accesses a field of
4533 SCM values.
4534
4535 2000-03-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4536
4537 * gc.c (scm_gc_stats): Inserted explanation of local_scm_mtrigger
4538 etc.
4539 (scm_gc_yield_1): New variable: Holds previous yield. Used to
4540 make better judgements.
4541 (gc_sweep_freelist_finish): Inserted explanation of use of
4542 gc_trigger.
4543
4544 * print.h, stacks.h, options.c, options.h: Changed C++
4545 commentaries to C.
4546
4547 2000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
4548
4549 * tags.h (SCM2PTR, PTR2SCM): Use SCM_PACK / SCM_UNPACK correctly.
4550
4551 * numbers.h (SCM_INUMP, SCM_MAKINUM, SCM_INUM0, SCM_COMPLEX_REAL,
4552 SCM_COMPLEX_IMAG, SCM_NUMP, SCM_BDIGITS): Use SCM_PACK /
4553 SCM_UNPACK / SCM2PTR correctly.
4554
4555 2000-03-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4556
4557 * gc.c (adjust_gc_trigger): Improved documentation.
4558 (alloc_some_heap): Since gc_trigger is used against
4559 freelist->collected, this is the value which should be used to
4560 predict minimum growth.
4561
4562 2000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
4563
4564 * eval.h: Fix mixup of packed/unpacked SCM values. (Thanks
4565 Thien-Thi Nguyen for the patch.)
4566
4567 2000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
4568
4569 * numbers.c (scm_ash): Fixed typing problems with the second
4570 parameter and added some documentation. (Thanks Thien-Thi Nguyen
4571 for indicating the problem.)
4572
4573 2000-03-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4574
4575 * gc.c, gc.h (scm_gc_yield): New variable.
4576 (adjust_gc_trigger): Use scm_gc_yield.
4577 (alloc_some_heap): Use scm_gc_yield instead of
4578 scm_gc_cells_collected.
4579
4580 * coop-threads.c: Addd #include "root.h", #include "strings.h".
4581
4582 * debug.c: Added #include "root.h". (Thanks to Thien-Thi Nguyen.)
4583
4584 * gc.c (scm_gc_for_newcell, adjust_gc_trigger): Improved GC
4585 trigger adjustmeant: Take yield (freed cells) for all freelists
4586 into account.
4587 (SCM_INIT_HEAP_SIZE_1, SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2): Tuned
4588 to 50000 cell heap with 45% trigger.
4589 (scm_gc_cells_collected): Reintroduced.
4590 (SCM_HEAP_SIZE): New macro.
4591 (scm_gc_sweep): Reintroduced correct computation of
4592 scm_cells_allocated.
4593 (scm_freelist_t): Corrected commentary for field `cluster_size':
4594 Clustersize counts objects, not cells; New member
4595 `clusters_allocated'.
4596
4597 2000-03-19 Michael Livshin <mlivshin@bigfoot.com>
4598
4599 * *.[hc]: add Emacs magic at the end of file, to ensure GNU
4600 indentation style.
4601
4602 2000-03-19 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
4603
4604 * threads.h: Added #include "libguile/throw.h". (Thanks to
4605 Thien-Thi Nguyen.)
4606
4607 2000-03-18 Michael Livshin <mlivshin@bigfoot.com>
4608
4609 * tags.h: (SCM_DOUBLE_CELLP, SCM_NDOUBLE_CELLP): new macros (bad
4610 names, anyone got any better ones?)
4611
4612 * gc.h: (typedef struct scm_freelist_t) remove from here.
4613
4614 * gc.c: (CELL_UP, CELL_DN) made these macros take additional
4615 parameter (the span).
4616 (CLUSTER_SIZE_IN_BYTES, ALIGNMENT_SLACK) new macros.
4617 (typedef struct scm_freelist_t) moved here from gc.h, it had no
4618 business being externally visible.
4619 (typedef struct scm_heap_seg_data_t) renamed from
4620 scm_heap_seg_data, to be style-compliant.
4621 (scm_mark_locations) if the possible pointer points to a
4622 double-cell, check that it's properly aligned.
4623 (init_heap_seg) align double-cells properly, work with the
4624 assumption that the segment size divides cleanly by cluster size.
4625 (round_to_cluster_size) new function.
4626 (alloc_some_heap, make_initial_segment) use round_to_cluster_size
4627 to satisfy the new init_heap_seg invariant.
4628
4629 2000-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4630
4631 * _scm.h: Don't include async.h everywhere...
4632
4633 * eq.c eval.c iselect.c: ... only include it here.
4634
4635 2000-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
4636
4637 * _scm.h: Don't include root.h everywhere...
4638
4639 * async.c continuations.c eq.c eval.c evalext.c feature.c gc.c
4640 gdbint.c gsubr.c ioext.c keywords.c lang.c load.c macros.c
4641 numbers.c objprop.c ports.c print.c procprop.c ramap.c read.c
4642 srcprop.c stackchk.c stacks.c strports.c symbols.c unif.c
4643 variable.c vectors.c vports.c: ... only include it here.
4644
4645 2000-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
4646
4647 * _scm.h: Don't include strings.h everywhere...
4648
4649 * backtrace.c dynl.c error.c feature.c filesys.c fports.c gc.c
4650 gdbint.c ioext.c load.c net_db.c numbers.c objects.c options.c
4651 ports.c posix.c print.c procs.c random.c read.c regex-posix.c
4652 simpos.c socket.c stacks.c stime.c strop.c strports.c struct.c
4653 symbols.c unif.c vectors.c version.c vports.c: ... only include it
4654 here.
4655
4656 2000-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
4657
4658 * _scm.h: Don't include ports.h everywhere...
4659
4660 * arbiters.c backtrace.c debug.c dynl.c dynwind.c eval.c feature.c
4661 fluids.c gc.c gdbint.c guardians.c hash.c keywords.c mallocs.c
4662 numbers.c objects.c print.c read.c root.c smob.c srcprop.c
4663 stackchk.c strports.c struct.c throw.c variable.c: ... only
4664 include it here.
4665
4666 2000-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
4667
4668 * _scm.h: Don't include vectors.h everywhere...
4669
4670 * eq.c eval.c filesys.c gc.c gsubr.c guardians.c hash.c hashtab.c
4671 keywords.c net_db.c numbers.c objects.c posix.c print.c procprop.c
4672 procs.c ramap.c random.c read.c scmsigs.c socket.c sort.c stime.c
4673 strports.c symbols.c unif.c vports.c weaks.c: ... only include it
4674 here.
4675
4676 2000-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
4677
4678 * genio.h: removed. (Only content was '/* delete me */'.)
4679
4680 * Makefile.am arbiters.c backtrace.c debug.c dynl.c dynwind.c
4681 error.c filesys.c fluids.c gc.c gsubr.c guardians.c keywords.c
4682 libguile.h mallocs.c numbers.c print.c random.c read.c root.c
4683 srcprop.c stackchk.c struct.c threads.c throw.c variable.c:
4684 Removed reference to genio.h
4685
4686 2000-03-17 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
4687
4688 * gc.c, gc.h: Cleanup of the change of 2000-03-15.
4689 Cluster sizes are now independent of GC trigger values.
4690 GUILE_GC_TRIGGER_n can now specify a relative trigger value:
4691 A negative integer gives fraction of total heap size in percent.
4692 (SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2): Default values set to -40.
4693
4694 * init.c (scm_boot_guile_1): Introduced new variable
4695 GUILE_MAX_SEGMENT_SIZE; New environment variable names:
4696 GUILE_INIT_SEGMENT_SIZE_1, GUILE_GC_TRIGGER_1,
4697 GUILE_INIT_SEGMENT_SIZE_2, GUILE_GC_TRIGGER_2
4698
4699 2000-03-16 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4700
4701 * __scm.h (GC_FREE_SEGMENTS): Disable this until we have made
4702 freeing of segment work with the new GC scheme. (Thanks to
4703 Michael Livshin.) Oops, also happened to make GUILE_NEW_GC_SCHEME
4704 the default, but I'll let this change stay in CVS Guile since this
4705 code is not expected to contain serious bugs.
4706
4707 2000-03-16 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
4708
4709 * gc.c, gc.h (scm_map_free_list): Define also if GUILE_DEBUG is
4710 defined.
4711 (scm_free_list_length): New procedure (GUILE_DEBUG).
4712 Fixed a small but serious bug introduced by the previous change.
4713
4714 * gc.c (scm_gc_sweep): Moved variable n_objects to inner sweep
4715 loop and declare as register.
4716
4717 * gc.c (scm_gc_sweep): Sigh... forgot to clear private freelists
4718 after GC.
4719
4720 Wed Mar 15 08:27:04 2000 Greg J. Badros <gjb@cs.washington.edu>
4721
4722 * fluids.c: Docstring patch from Keisuke Nishida. Some
4723 reindentation, too, and a couple formals renamed. Should
4724 fluid-set! return UNSPECIFIED instead of a value?
4725
4726 Wed Mar 15 08:24:58 2000 Greg J. Badros <gjb@cs.washington.edu>
4727
4728 * Makefile.am: Separate out DOT_X_FILES and DOT_DOC_FILES, and
4729 generate the latter from the concrete listing of the former. Then
4730 make guile-procedures.txt depend on DOT_DOC_FILES instead of
4731 *.doc, so that rebuilding it works.
4732
4733 Wed Mar 15 08:12:14 2000 Greg J. Badros <gjb@cs.washington.edu>
4734
4735 * libguile.h: Include libguile/validate.h. Thanks Keisuke Nishida!
4736
4737 * guile-snarf.awk.in: Replace docstring line-ending \n" and \n\n"
4738 with nothing and \n, respectively. Thanks Keisuke Nishida for
4739 noticing this problem.
4740
4741 2000-03-15 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4742
4743 * __scm.h (GUILE_NEW_GC_SCHEME): Define this if you want to test a
4744 new way of allocating heap. It makes Guile fast, but still
4745 contains bugs.
4746
4747 * gc.c, gc.h, pairs.h, init.c: Implementation of a new way of
4748 allocating heap. The basic idea is to trigger GC every Nth
4749 allocated cell and grow heap when free list runs out. The scheme
4750 has been extended so that GC isn't triggered until all remaining
4751 cells are used. The implementation is also prepared for
4752 development in the direction of POSIX threads.
4753
4754 * gc.c (SCM_EXPHEAP): In order to grow by a factor of 1.5,
4755 SCM_EXPHEAP should return half of the heap size.
4756
4757 2000-03-14 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
4758
4759 The following change to init.c is only enabled if Guile was
4760 configured with --enable-guile-debug.
4761
4762 * init.c (scm_i_getenv_int): New function.
4763 (scm_boot_guile_1): Use the environment variables
4764 GUILE_INIT_HEAP_SIZE, GUILE_INIT_HEAP_SIZE2 to select heap size if
4765 they exist. (This may be replaced by a Scheme level mechanism in
4766 the future.)
4767
4768 * objprop.c (s_scm_set_object_property_x): Use scm_assq instead of
4769 scm_assoc. (Thanks to Keisuke Nishida.)
4770
4771 2000-03-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4772
4773 * eval.c, lang.c, lang.h (scm_lisp_nil, scm_lisp_t): Renamed from
4774 scm_nil, scm_t. (Thanks to Keisuke Nishida.)
4775
4776 2000-03-14 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
4777
4778 * init.c (scm_boot_guile_1): Use same initial segment size for
4779 1-word and 2-word segments. Having the smaller size causes Guile
4780 to GC too often. Obviously something needs to be done to allow
4781 for a smaller 2-word segment without this to happen. (The amount
4782 of heap for each type should be automatically adapted to the
4783 application somehow.)
4784
4785 [Almost all of these changes should be documented in the NEWS
4786 file.]
4787
4788 * gc.h (scm_freelist_t): New type.
4789
4790 * pairs.h (SCM_NEWCELL, SCM_NEWCELL2): Use new style freelists.
4791
4792 * gc.c (SCM_INIT_HEAP_SIZE): Changed from 32768 --> 40000 so that
4793 all of Guile basics fits into one segment and there suitable room
4794 for work.
4795 (SCM_EXPHEAP): Now takes an argument. Grow by a factor of 1.5
4796 instead of 2.
4797 (scm_freelist, scm_freelist2): Now of type scm_freelist_t.
4798 Freelists now contains information about object span, cells
4799 collected and amount of cells in heap segments belonging to the
4800 list.
4801 (scm_heap_size, scm_gc_cells_collected): Removed.
4802
4803 * init.c (scm_boot_guile_1): Make 2-word segment 8K (512 cells).
4804
4805 * Makefile.am (libguile_la_LDFLAGS): Bumped library version
4806 number.
4807
4808 * __scm.h eq.c, eval.c, gc.c, gc.h, gh_data, hash.c, numbers.c,
4809 numbers.h, objects.c, ramap.c, random.c, unif.c, unif.h: Extensive
4810 rewrite of handling of real and complex numbers.
4811 (SCM_FLOATS, SCM_SINGLES): These #ifdef conditionals have been
4812 removed along with the support for floats. (Float vectors are
4813 still supported.)
4814
4815 * tags.h (scm_tcs_bignums): Removed.
4816 (scm_tc16_bigpos, scm_tc16_bigneg): Replaced by scm_tc16_big.
4817 Use SCM_BIGSIGN(x) to test for sign!
4818 (scm_tc16_big): The new bignum type.
4819 (SCM_REAL_PART, SCM_IMAG_PART): Removed.
4820
4821 * numbers.h (SCM_BIGSIGN): Sign moved to bit 16.
4822 (scm_makdbl): Deprecated.
4823 (SCM_NEWREAL, SCM_NEWCOMPLEX): New macros.
4824 (SCM_SINGP): Deprecated.
4825 (SCM_FLO): Removed.
4826 (SCM_INEXP, SCM_CPLXP): Deprecated.
4827 (SCM_INEXACTP, SCM_COMPLEXP): New macros.
4828 (SCM_COMPLEX_REAL, SCM_COMPLEX_IMAG): Renamed from
4829 SCM_REAL, SCM_IMAG (and now only valid for complex numbers).
4830 (SCM_REAL, SCM_IMAG): New, *deprecated*, selectors which work both
4831 for doubles and complex numbers.
4832 (SCM_REAL_VALUE): New selector for doubles.
4833 (scm_double_t, scm_complex_t): New types.
4834 (scm_dbl): Removed.
4835
4836 * numbers.c (scm_floprint, scm_floequal): Removed.
4837 (scm_print_real, scm_print_complex, scm_real_equalp,
4838 scm_complex_equalp): New functions.
4839
4840 * unif.c (scm_makflo): Removed.
4841
4842 * smob.h (SCM_SMOB_PREDICATE): New macro.
4843 (SCM_NEWSMOB2, SCM_RETURN_NEWSMOB2, SCM_NEWSMOB3,
4844 SCM_RETURN_NEWSMOB3): New macros.
4845
4846 1999-11-21 Michael Livshin <mlivshin@bigfoot.com>
4847
4848 The following changes implement primitive support for double cells
4849 (i.e. four-word cells) and change the representation of some
4850 things to multi-cells instead of cons+malloc. (Applied and
4851 modified by mdj.)
4852
4853 * pairs.h (SCM_NEWCELL2): double-cell variants of SCM_NEWCELL.
4854 (SCM_CELL_WORD, SCM_CELL_WORDLOC, SCM_SET_CELL_WORD): primitive
4855 multi-cell access macros (used by the ones below).
4856 (SCM_CELL_WORD[0-3], SCM_SET_CELL_WORD[0-3]): multi-cell access
4857 macros.
4858
4859 * gc.c (scm_freelist2): multi-cell freelists.
4860 (inner_map_free_list): map_free_list, parameterized on ncells.
4861 "nn cells in segment mm" was misleading for ncells > 1; changed to
4862 "objects". still print cells too, though.
4863 (scm_map_free_list): rewritten using inner_map_free_list.
4864 (scm_check_freelist): get freelist as parameter, since now we have
4865 more than one.
4866 (scm_debug_newcell2): multi-cell variants of
4867 scm_debug_newcell.
4868 (scm_gc_for_newcell): take ncells and freelist pointer as
4869 parameters.
4870 (scm_gc_mark): add case for tc7_pws (procedures with setters are
4871 now double cells).
4872 (scm_gc_sweep): don't free the float data, since it's not malloced
4873 anymore.
4874 (init_heap_seg): didn't understand what n_new_objects stood for,
4875 so changed to n_new_cells.
4876 (make_initial_segment): new function, makes an initial segment
4877 according to given ncells.
4878 (scm_init_storage): call make_initial_segment, for ncells={1,2,3}.
4879
4880 * numbers.c (scm_makdbl): no malloc'ing needed, so the
4881 {DEFER,ALLOW}_INTS thing removed.
4882
4883 * numbers.h (struct scm_dbl): changed to represent a double cell,
4884 with the number in the second half.
4885
4886 * dynwind.c: changed the wind-guards representation to double
4887 cell.
4888
4889 * procs.c, procs.h: changed the procedure-with-setter representation
4890 to double cell.
4891
4892 * async.c, async.h: made async representation a double cell.
4893
4894 * dynl.c: made dynamic_obj representation a double cell.
4895
4896 2000-03-13 Gary Houston <ghouston@arglist.com>
4897
4898 * ports.c (flush_void_port): renamed to flush_port_default.
4899 (end_input_void_port): renamed to end_input_default.
4900
4901 * init.c (scm_standard_stream_to_port): create a void port instead
4902 of opening /dev/null if the standard file descriptors are bad.
4903 advantages: no portability problems, doesn't waste a file descriptor,
4904 simplifies the code (thanks to Marius for the idea).
4905
4906 * vports.c (s_scm_make_soft_port): call scm_port_non_buffer.
4907
4908 * void ports: make reading from a void port give EOF instead of
4909 segv:
4910 * ports.c (s_scm_sys_make_void_port): modified docstring.
4911 (fill_input_void_port): new proc.
4912 (scm_init_ports): set up fill_input_void_port.
4913 * ports.c (scm_port_non_buffer): new proc.
4914 (scm_void_port): call scm_port_non_buffer.
4915
4916 * fports.c (scm_setvbuf): docstring: remove the fcntl documentation
4917 which was incorrectly appended.
4918
4919 2000-03-13 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4920
4921 * guile-doc-snarf.in: Don't use absolute path for `sed'. (Note
4922 that we can't use autoconf for this. Autoconf itself relies on
4923 the existence of `sed' somewhere on your path.) (Thanks to Dirk
4924 Herrman.)
4925
4926 2000-03-13 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
4927
4928 * Makefile.am (libguile_la_SOURCES): Moved iselect.c here from
4929 EXTRA_libguile_la_SOURCES.
4930
4931 * iselect.h: Always declare scm_internal_select.
4932
4933 * iselect.c (scm_internal_select): Added SCM_ASYNC_TICK at the
4934 end. Also let scm_internal_select be a real function also when
4935 not using threads.
4936
4937 * __scm.h (SCM_TICK): Oops! Forgot to put SCM_ASYNC_TICK here...
4938
4939 2000-03-13 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4940
4941 * __scm.h (SCM_ALLOW_INTS, SCM_REALLOW_INTS): Removed call to
4942 SCM_ASYNC_TICK. (This is a preparation for POSIX threads support,
4943 and kind of an experiment: Will this cause problems?)
4944
4945 Sun Mar 12 13:26:30 2000 Greg J. Badros <gjb@cs.washington.edu>
4946
4947 * Makefile.am: Added *.doc to DISTCLEANFILES.
4948
4949 2000-03-12 Gary Houston <ghouston@arglist.com>
4950
4951 * fports.c (scm_fdes_to_port): call fcntl F_GETFL to test that
4952 the fdes is valid before doing anything else. check that
4953 the file descriptor supports the modes required.
4954 (scm_fport_buffer_add): don't throw an error if fstat doesn't
4955 work: just use the default buffer size.
4956
4957 * throw.c: change an outdated comment about scm_internal_catch
4958 BODY: it doesn't take a jumpbuf arg.
4959
4960 * init.c (scm_standard_stream_to_port): install a handler in case
4961 scm_fdes_to_port throws an error. don't check here whether the
4962 file descriptor is valid, since scm_fdes_to_port will do that.
4963 set the revealed count depending on whether the port got the
4964 standard file descriptor.
4965 (stream_body_data): new type.
4966 (stream_body, stream_handler): new procs.
4967
4968 2000-03-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
4969
4970 * stacks.c, stacks.h, struct.c, tags.h, unif.c (scm_bits_t):
4971 Renamed from SCMWORD.
4972
4973 * tags.h (SCM_NCELLP): Removed (SCMWORD).
4974
4975 * arbiters.c (SCM_ARB_LOCKED): Use SCM_UNPACK_CAR.
4976
4977 * async.c, boolean.h, debug.c, dynl.c, dynwind.c, eval.c, eval.h,
4978 feature.h, filesys.h, fluids.h, fports.c, fports.h, gc.c, gc.h,
4979 hash.c, keywords.h, macros.c, numbers.c, numbers.h, objects.c,
4980 objects.h, options.c, pairs.h, ports.c, ports.h, print.c,
4981 procs.h, ramap.c, read.c, smob.c, smob.h, srcprop.h, stacks.c,
4982 stacks.h, strports.c, struct.c, struct.h, tag.c, tags.h,
4983 throw.c, unif.c, unif.h, variable.h, vectors.h, weaks.c,
4984 weaks.h (SCM_PACK, SCM_UNPACK, SCM_UNPACK_CAR): Renamed from
4985 SCM_ASSCM, SCM_ASWORD, SCM_CARW).
4986
4987 * numbers.h (SCM_SRS, SCM_INUM): Corrected SCM_ASSCM/ASWORD fixes.
4988
4989 * alist.c, eval.c, net_db.c, posix.c, print.c, snarf.h, struct.c,
4990 tags.h: Fixed copyright notices.
4991
4992 * struct.c, coop-threads.c: SCM_ASSCM/ASWORD fixes.
4993
4994 2000-03-12 Marius Vollmer <mvo@zagadka.ping.de>
4995
4996 * init.c (scm_standard_stream_to_port): Check whether the file
4997 descriptor is valid and substitute "/dev/null" when not.
4998
4999 2000-03-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
5000
5001 * coop-defs.h (struct timespec): Conditionally defined.
5002
5003 * coop.c (coop_condition_variable_timed_wait_mutex): Use ETIMEDOUT
5004 instead of ETIME.
5005
5006 * readline.c (match_paren): Bugfix: First arg to select is not
5007 number of descriptors but the number of the highest descriptor +
5008 1.
5009
5010 This is a preliminary attempt at a cleanup of the threads support
5011 code. It moves things to better places, makes arguments more
5012 consistent with the POSIX API (which is used in GNOME's glib), and
5013 adds new functionality.
5014
5015 * readline.c (scm_init_readline): Added new arg to scm_init_mutex.
5016
5017 * coop-defs.h (scm_mutex_trylock): New macro: alias for
5018 coop_mutex_trylock.
5019 (scm_cond_init): Changed definition to
5020 coop_new_condition_variable_init.
5021
5022 * coop.c: #include <errno.h>
5023 (coop_timeout_qinsert): Moved here from iselect.c
5024 (coop_new_mutex_init, coop_new_condition_variable_init): New
5025 functions. The strange names are temporary. Use scm_mutex_init
5026 and scm_cond_init instead.
5027 (coop_mutex_trylock): New function. Uses errno.h:EBUSY. errno.h
5028 is ANSI C, but should we check for individual error codes in
5029 configure.in?
5030 (coop_condition_variable_timed_wait_mutex): New function.
5031 (coop_key_create, coop_setspecific, coop_getspecific,
5032 coop_key_delete): New functions.
5033
5034 * iselect.c (coop_timout_qinsert): Moved to coop.c
5035
5036 2000-03-11 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
5037
5038 * pairs.h (SCM_SETAND_CAR, SCM_SETAND_CDR, SCM_SETOR_CAR,
5039 SCM_SETOR_CDR): Corrected SCM_ASSCM/WORD fixes.
5040
5041 * tags.h (SCM_VOIDP_TEST): Renamed from VOIDP_TEST.
5042 Layout cleanups.
5043
5044 * objects.h (SCM_CLASS_FLAGS, SCM_OBJ_CLASS_FLAGS,
5045 SCM_SET_CLASS_INSTANCE_SIZE), struct.h (SCM_STRUCT_VTABLE_DATA),
5046 proc.h (SCM_CLOSCAR): SCM_ASSCM/WORD fixes.
5047
5048 * eval.c (scm_lookupcar1): Inserted SCM_ASWORD in expressions
5049 dealing with ilocs.
5050
5051 2000-03-11 Dale P. Smith <dpsm@en.com>, applied by Greg J. Badros, <gjb@cs.washington.edu>
5052
5053 * numbers.c (scm_copy_big_dec, scm_copy_smaller, scm_big_ior,
5054 scm_big_xor, scm_big_and, scm_big_test): Added new lowlevel bignum
5055 logical functions from SCM.
5056
5057 (logand, logior, logxor, logtest, logbit?): Extended scheme
5058 logical functions to use bignums from SCM.
5059
5060 (lognot): Removed call to `SCM_VALIDATE_INUM' that prevented
5061 lognot from using bignums.
5062
5063 Thu Mar 9 11:33:25 2000 Greg J. Badros <gjb@cs.washington.edu>
5064
5065 * vectors.h (SCM_VELTS_AS_STACKITEMS): Added this macro to help in
5066 eliminating some warnings.
5067
5068 * unif.c, strports.c, print.c, options.c: Fix some warnings on
5069 mis-use of SCM/long
5070
5071 * gc.c, gc.h: Added scm_return_first_int(), and added comment re:
5072 what the scm_return_first* functions do.
5073
5074 2000-03-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>, applied by Greg J. Badros, <gjb@cs.washington.edu>
5075
5076 * libguile/*.[ch]: make a distinction between SCM as a generic
5077 name for a Scheme object (now a void*), and SCM as 32 bit word for
5078 storing tags and immediates (now a long int). Introduced
5079 SCM_ASWORD and SCM_ASSCM for conversion. Fixed various dubious
5080 code in the process: arbiter.c (use macros), unif.c (scm_array_p),
5081
5082 Wed Mar 8 10:15:59 2000 Greg J. Badros <gjb@cs.washington.edu>
5083
5084 * numbers.c: Use SCM_VALIDATE_LONG_COPY, and longs, not ints, in
5085 various logXXX primitives. Thanks Eric Moore!
5086
5087 Tue Mar 7 08:05:22 2000 Greg J. Badros <gjb@cs.washington.edu>
5088
5089 * run-test, remaining-docs-needed: Added these scripts. The
5090 second one is only temporary until the docstring additions are
5091 complete. run-test may best live on, but is here mostly for
5092 convenience and awareness for now.
5093
5094 * hash.c: Docs, minor cleanup patch from Dirk Herrman.
5095
5096 Thu Mar 2 16:06:58 2000 Greg J. Badros <gjb@cs.washington.edu>
5097
5098 * error.h, error.c: Added `scm_wrong_type_arg_msg' to support
5099 displaying the expected type. Use SCM_LISTn in a couple places
5100 instead of scm_cons-ing by hand.
5101
5102 * __scm.h: Added SCM_ASSERT_TYPE macro.
5103
5104 * validate.h, scm_validate.h: Added the former, as a renamed
5105 version of the latter with SCM_ASSERT_TYPE used in
5106 SCM_MAKE_VALIDATE (instead of just SCM_ASSERT)
5107
5108 * Makefile.am: Rename scm_validate.h to validate.h.
5109
5110 * *.c, *.h: Include validate.h, not scm_validate.h (old name's
5111 prefix was superfluous).
5112
5113 Thu Mar 2 15:33:12 2000 Greg J. Badros <gjb@cs.washington.edu>
5114
5115 * hashtab.c: Improved documentation for lots of functions. Added
5116 handwritten docs for `hash-fold'.
5117
5118 Thu Mar 2 15:13:25 2000 Greg J. Badros <gjb@cs.washington.edu>
5119
5120 * list.c: Added hand-written docs for `del{q,v,ete}1!'.
5121
5122 Thu Mar 2 12:38:30 2000 Greg J. Badros <gjb@cs.washington.edu>
5123
5124 * list.c: Moved append docs to append! Thanks Dirk Hermann. Also,
5125 added append docs from R4RS.
5126
5127 * strings.c: Docstring typo fix, + eliminate unneeded IMP tests.
5128 Thanks Dirk Hermann!
5129
5130 * chars.h: Provide SCM_CHARP, SCM_CHAR, SCM_MAKE_CHAR and
5131 deprecate SCM_ICHRP, SCM_ICHR, SCM_MAKICHR. Thanks Dirk Hermann!
5132
5133 * *.h, *.c: Use SCM_CHARP, SCM_CHAR, SCM_MAKE_CHAR throughout.
5134 Drop use of SCM_P for function prototypes... assume an ANSI C
5135 compiler. Thanks Dirk Hermann!
5136
5137 Sat Feb 19 12:20:12 2000 Greg J. Badros <gjb@cs.washington.edu>
5138
5139 * ports.c: Made `set-port-column!' and `set-port-line!' each
5140 return SCM_UNSPECIFIED instead of a (not-scheme-object) integer
5141 that caused a seg fault. Also fixed `set-port-column!'s
5142 docstring. Thanks Han-Wen Nienhuys for finding the bug!
5143
5144 Sun Feb 13 19:11:42 2000 Greg J. Badros <gjb@cs.washington.edu>
5145
5146 * arbiters.c, eq.c, gc.c, guardians.c, list.c, ports.c, print.c,
5147 regex-posix.c, scmsigs.c, stime.c, strings.c, variable.c, stime.c,
5148 strings.c, variable.c: Added lots of documentation, cleaned up
5149 some existing documentation. Occasionally changed formal params
5150 to match docs. Also folded an #ifdef into the inners of a
5151 primitive instead of having two copies of the primitive
5152 (`get-internal-real-time', from stime.c)
5153
5154 Sun Feb 13 18:12:19 2000 Greg J. Badros <gjb@cs.washington.edu>
5155
5156 * ports.c: Added docs for primitives missing them. Written by
5157 hand.
5158
5159 Sun Feb 13 09:40:36 2000 Greg J. Badros <gjb@cs.washington.edu>
5160
5161 * guile-doc-snarf.in: Use ${AWK} -f guile-func-name-check, not
5162 just execing guile-func-name-check. Thanks Michael Livshin!
5163
5164 Thu Feb 10 11:43:23 2000 Greg J. Badros <gjb@cs.washington.edu>
5165
5166 * guile-snarf.awk.in: Tweak to work with Sun/HP awk, removed some
5167 dead code. Patch from Michael Livshin.
5168
5169 * guile-doc-snarf.in: Tweak to work with Sun/HP sh. Patch from
5170 Michael Livshin.
5171
5172 2000-02-09 Gary Houston <ghouston@arglist.com>
5173
5174 * init.c (scm_init_standard_ports): when stdout is a tty, make the
5175 current-output-port unbuffered by default. this is less confusing
5176 for interactive use. it was line-buffered because of a
5177 performance problem with unbuffered ports, but I think it will be
5178 OK now.
5179
5180 2000-02-08 Gary Houston <ghouston@arglist.com>
5181
5182 * __scm.h: don't define long_long or ulong_long if HAVE_LONG_LONGS
5183 is not defined.
5184
5185 * stime.c (scm_localtime, scm_mktime): if neither HAVE_TM_ZONE nor
5186 HAVE_TZNAME are defined, use an empty string instead of giving two
5187 spurious compile-time errors.
5188
5189 Tue Feb 8 13:57:46 2000 Greg J. Badros <gjb@cs.washington.edu>
5190
5191 * ports.c: Doc patches from Richard Kim. Pasted from MIT Scheme.
5192 Thanks Richard!
5193
5194 Mon Feb 7 09:07:31 2000 Greg J. Badros <gjb@cs.washington.edu>
5195
5196 * macros.c: Doc patches from Richard Kim. Pasted from scm.texi.
5197
5198 Sun Feb 6 20:26:21 2000 Greg J. Badros <gjb@cs.washington.edu>
5199
5200 * pairs.c: Doc patches from Richard Kim. Pasted from MIT Scheme
5201 (which is GNU GPL'd).
5202
5203 2000-01-31 Gary Houston <ghouston@arglist.com>
5204
5205 * strings.h: don't use SCM_P. don't include <string.h>.
5206 * error.c, gh_data.c, ports.c, script.c, strop.c: include <string.h>.
5207
5208 * strings.c (scm_string_ref): make the 2nd argument compulsory.
5209 previously it defaulted to zero for no good reason that I can see.
5210 use a local variable for SCM_INUM (k). replace
5211 SCM_VALIDATE_INUM_DEF with SCM_VALIDATE_INUM_COPY.
5212
5213 (scm_makfromstr): cosmetic changes.
5214
5215 (scm_string): Accept only chars in the list, not strings, for
5216 conformance to R5RS (particularly for list->string, which is
5217 supposed to be the inverse of string->list.) remove
5218 SCM_DEFER_INTS/SCM_ALLOW_INTS, which is unnecessary since
5219 scm_makstr handles the cell allocation. when reporting wrong-type
5220 arg, don't report the position as 1.
5221
5222 * posix.c (scm_init_posix): intern PIPE_BUF if it's defined.
5223
5224 2000-01-29 Gary Houston <ghouston@arglist.com>
5225
5226 * posix.c (scm_pipe): rewrote the docstring.
5227
5228 * filesys.c (scm_select, retrieve_select_type, get_element,
5229 fill_select_type, set_element): modified so that Scheme
5230 "select" tests port buffers for the ability to provide input
5231 or accept output. Previously only the underlying file descriptors
5232 were checked. Rewrote the docstring.
5233
5234 Thu Jan 27 10:14:25 2000 Greg J. Badros <gjb@cs.washington.edu>
5235
5236 * vectors.c, symbols.c, strorder.c: Documentation cut and pasted
5237 from Gregg Reynolds. Thanks Gregg!
5238
5239 Thu Jan 27 09:59:38 2000 Greg J. Badros <gjb@cs.washington.edu>
5240
5241 * strop.c (scm_i_index): Obfuscated commented-out SCM_DEFINE by
5242 adding "x" prefix to the line so that guile-func-name-check
5243 doesn't complain unnecessarily.
5244
5245 Wed Jan 26 17:33:52 2000 Greg J. Badros <gjb@cs.washington.edu>
5246
5247 * throw.c: Factor out an #ifdef/#else/#endif choice more finely
5248 for maintainability.
5249
5250 * strop.c: Documentation added by Gregg A. Reynolds. Pasted in
5251 from qdocs, RnRs.
5252
5253 Wed Jan 26 10:02:11 2000 Greg J. Badros <gjb@cs.washington.edu>
5254
5255 * tag.c: Added doc for `tag', but mark as deprecated since Mikael
5256 suggests removing tag.c altogether (and using a new `class-of'
5257 instead).
5258
5259 * strings.c: Added documentation from Gregg A. Reynolds. Edited
5260 a bit by me to use FOO instead of @var{foo} and to have the
5261 summary come before preconditions on input. Also dropped trailing
5262 (rnrs) note.
5263
5264 * gsubr.c: Do not use SCM_DEFINE for `gsubr-apply'. Register the
5265 function with scm_make_subr_opt w/ last arg of 0 so it is not
5266 visible at the Scheme level. Mikael says that this is the right
5267 thing because the first arg to the proc is the guts of a compiled
5268 closure and shouldn't be exposed to the Scheme level.
5269
5270 Tue Jan 25 17:15:47 2000 Greg J. Badros <gjb@cs.washington.edu>
5271
5272 * sort.c: typo in comment fixed.
5273
5274 * keywords.c: Added documentation.
5275
5276 * guardians.c: Added documentation (could be better).
5277
5278 * gc.c: Added docs for gc-set-debug-check-freelist.
5279
5280 * eq.c: Added docs for eq?, eqv? equal? abridged from R4RS.
5281
5282 * boolean.c: Added docs for `not', `boolean?' (by hand).
5283
5284 Tue Jan 25 13:28:56 2000 Greg J. Badros <gjb@cs.washington.edu>
5285
5286 * random.c: Added documentation, from SLIB page:
5287 http://angela.ctrl-c.liu.se/~calle/scheme/slib_toc.html
5288
5289 Mon Jan 24 17:50:20 2000 Greg J. Badros <gjb@cs.washington.edu>
5290
5291 * variable.c, version.c: Added documentation, written by hand
5292 since I could not find anything already written that was
5293 relevant.
5294
5295 2000-01-23 Gary Houston <ghouston@arglist.com>
5296
5297 * filesys.c (scm_chown): omit port/fdes support if HAVE_FCHOWN is
5298 not defined (thanks to Richard Y. Kim).
5299
5300 Thu Jan 20 13:00:38 2000 Greg J. Badros <gjb@cs.washington.edu>
5301
5302 * Makefile.in: Removed, this is auto-generated.
5303
5304 Thu Jan 20 11:33:47 2000 Dirk Hermann <dirk@ida.ing.tu-bs.de> --applied 01/20/00 gjb
5305
5306 * list.c: Put some variable initialization code at the point of
5307 declaration; Added a comment for list*; Formatting changes.
5308
5309 * load.c: use SCM_NNULLP to make sure the end of a list is not
5310 reached yet.
5311
5312 2000-01-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
5313
5314 * backtrace.c (scm_display_error_message): Bugfix: Don't use
5315 result of scm_list_p as C boolean.
5316 (scm_display_error_message, scm_set_print_params_x): Use new
5317 validation macros. (Thanks to Dirk Herrmann.)
5318
5319 * net_db.c (scm_resolv_error): Cast result from hstrerror.
5320
5321 * strports.c (st_end_input): Inserted parenthesis to get operator
5322 grouping correct.
5323
5324 * list.h (scm_init_list): Removed SCM_P around prototypes.
5325
5326 * fports.c, list.c, numbers.c, ports.c, stime.c, symbols.c,
5327 filesys.c, posix.c: Converted docstrings to ANSI C format and
5328 escaped " occurring inside string literals.
5329
5330 Tue Jan 18 13:21:08 2000 Mikael Djurfeldt <mdj@r11n07-s.pdc.kth.se>
5331
5332 * posix.c (scm_mknod): Escape " occuring inside docstring.
5333
5334 2000-01-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
5335
5336 * alist.c, chars.c, debug.c, dynl.c, dynwind.c, error.c, eval.c,
5337 evalext.c, filesys.c, gc.c, hash.c, hashtab.c, ioext.c,
5338 keywords.c, list.c, load.c, macros.c, net_db.c, numbers.c,
5339 objprop.c, ports.c, posix.c, print.c, procprop.c, procs.c,
5340 ramap.c, regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c,
5341 stacks.c, stime.c, strings.c, strop.c, strports.c, struct.c,
5342 symbols.c, throw.c, unif.c, vectors.c, version.c, vports.c,
5343 weaks.c: Converted docstrings to ANSI C format.
5344
5345 * filesys.c (scm_chmod), simpos.c (scm_system), version
5346 (scm_version), vports (scm_make_soft_port): Escape " occuring
5347 inside docstring.
5348
5349 Mon Jan 17 11:41:22 2000 Greg J. Badros <gjb@cs.washington.edu>
5350
5351 * scm_validate.h: Added SCM_VALIDATE_ULONG_COPY,
5352 SCM_VALIDATE_LONG_COPY
5353
5354 * numbers.c: Use SCM_VALIDATE_ULONG_COPY, instead of
5355 SCM_VALIDATE_INUM_COPY to let bigger numbers be used. Rename a
5356 couple of formal arguments (and fix their uses) to make arguments
5357 match the documentation.
5358
5359 2000-01-14 <mstachow@alum.mit.edu>
5360
5361 * Makefile.am: Augment path when running guile-doc-snarf so
5362 guile-func-name-check is found.
5363
5364 Fri Jan 14 09:34:55 2000 Greg J. Badros <gjb@cs.washington.edu>
5365
5366 * scm_validate.h (SCM_NUM2LONG_DEF): Fix this macro to just use
5367 def, not SCM_MAKINUM(def); thanks Janis Bzerins!
5368
5369 Wed Jan 12 00:06:53 2000 Greg J. Badros <gjb@cs.washington.edu>
5370
5371 * net_db.c (s_scm_inet_makeaddr): Use SCM_NUM2ULONG since that's
5372 the way guile-1.3.4 worked, but #if 0 out the version using
5373 SCM_VALIDATE_INUM_COPY for stricter testing.
5374
5375 Tue Jan 11 18:24:18 2000 Greg J. Badros <gjb@cs.washington.edu>
5376
5377 * guile-doc-snarf.in: Use new $fullfilename for running
5378 guile-func-name-check, and put "$fullfilename" and "$filename" in
5379 quotes at uses to make sure re-splitting on whitespace does not
5380 occur (so filenames w/ embedded whitespace would work okay, though
5381 I sure hope we never have to deal with that! :-) ). Thanks to
5382 Mikael for pointing out the source_dir != build_dir was broken.
5383
5384 Tue Jan 11 17:42:40 2000 Greg J. Badros <gjb@cs.washington.edu>
5385
5386 * scm_validate.h: Added SCM_NUM2LONG_DEF macro. Make
5387 SCM_OUT_OF_RANGE use SCM_MAKINUM, not scm_long2num. Added
5388 SCM_COERCE_ROSTRING macro. Added SCM_VALIDATE_NONEMPTYLIST
5389 macro. Fix SCM_VALIDATE_STRINGORSUBSTR macro to not use SLOPPY
5390 variants.
5391
5392 * ports.c (scm_port_closed_p): Validate that the arg is a PORT,
5393 then return whether it's an open port (was validating that it was
5394 an open port -- this was a bug I introduced back in December, but
5395 my careful reading of diffs caught it).
5396
5397 * numbers.c: Recombine the two conditional-compilation paths for
5398 all the log* primitives -- they were split based on #ifndef
5399 scm_long2num; factored out a SCM_LOGOP_RETURN macro, and fixed
5400 some bugs and inconsistencies in the two sets of implementations.
5401 (scm_lognot) Fixed *atrocious* re-use of a SCM as an integer!
5402
5403 * ioext.c: Use SCM_ASSERT_RANGE in a couple places, and
5404 SCM_VALIDATE_INUM_COPY once where it should've been used.
5405
5406 * fluids.c (scm_internal_with_fluids): Use
5407 SCM_VALIDATE_LIST_COPYLEN.
5408
5409 * filesys.c: Use SCM_NUM2LONG instead of SCM_VALIDATE_INUM_COPY;
5410 this is questionable as it relaxes type safety, but other changes
5411 were useful and all SCM_NUM2LONG's should probably be
5412 revisited. Use SCM_OUT_OF_RANGE, SCM_WRONG_TYPE_ARG.
5413
5414 * evalext.c: line-break change on 1 line.
5415
5416 * eval.c (nconc2last): Takes a non-empty list as its first
5417 argument, not just a list.
5418
5419 * dynl.c: Use new SCM_COERCE_ROSTRING macro.
5420
5421 Tue Jan 11 15:44:23 2000 Greg J. Badros <gjb@cs.washington.edu>
5422
5423 * dynl.c, feature.c, filesys.c, fports.c, list.c, load.c,
5424 net_db.c, sort.c, stacks.c, unif.c: Use SCM_WTA, SCM_MISC_ERROR
5425 where possible.
5426
5427 * symbols.c (scm_sysintern0): Fixed the function name in a
5428 scm_misc_error invocation.
5429
5430 * print.c (scm_simple_format): Do not need SCM_COERCE_SUBSTR, and
5431 use scm_return_first to ward off latent GC bug that Mikael caught.
5432
5433 * async.c: Use SCM_VALIDATE_ASYNC_COPY one place where it wasn't
5434 used before but should've been.
5435
5436 2000-01-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
5437
5438 * snarf.h (SCM_PROC1): Replaced SCM (*) (...) with
5439 SCM_FUNC_CAST_ARBITRARY_ARGS.
5440
5441 Tue Jan 11 13:44:07 2000 Greg J. Badros <gjb@cs.washington.edu>
5442
5443 * guile-func-name-check.in: Added this script to statically check
5444 #define FUNC_NAME, #undef FUNC_NAME in the source.
5445
5446 * sort.c, posix.c: Fix #undef FUNC_NAME lines to not have trailing
5447 redundant comment, semicolon; caught by new guile-func-name-check
5448 script.
5449
5450 * debug.c: Fix mistaken #define FUNC_NAME for scm_make_iloc.
5451 Caught by new guile-func-name-check-script.
5452
5453 * Makefile.am: Added guile-func-name-check to bin_SCRIPTS
5454
5455 * ramap.c: Fix #if 0'd out code to be syntactically acceptable to
5456 guile-func-name-check.
5457
5458 * guile-doc-snarf.in: Run guile-func-name-check on the file before
5459 doing the snarf.
5460
5461 Tue Jan 11 11:31:10 2000 Greg J. Badros <gjb@cs.washington.edu>
5462
5463 * fports.c, ports.c, ports.h, strports.c, vports.c: Make write
5464 port function take const void*, not void*.
5465
5466 Tue Jan 11 11:18:07 2000 Greg J. Badros <gjb@cs.washington.edu>
5467
5468 * scm_validate.h, chars.c, ports.c, print.c, read.c, strings.c,
5469 strop.c: Use SCM_VALIDATE_ICHR, SCM_VALIDATE_ICHR_COPY instead of
5470 SCM_VALIDATE_CHAR, SCM_VALIDATE_CHAR_COPY. Change made for
5471 consistency with the other macros dealing with immediate
5472 characters. (Similar to INT -> INUM change a week or so ago).
5473
5474 Tue Jan 11 10:41:46 2000 Greg J. Badros <gjb@cs.washington.edu>
5475
5476 * dynl.c, error.c, eval.c, feature.c, filesys.c, fports.c, list.c, load.c,
5477 net_db.c, read.c, socket.c: Update error messages to use ~A for
5478 %s, ~S for %S to work with new `simple-format' format and be
5479 standardized better.
5480
5481 * print.h, print.c (scm_simple_format): Added `simple-format'
5482 primitive. It's the old scm_display_error, with ARGS now a rest
5483 parameter, and the destination first instead of last (and a couple
5484 new capabilities inspired by `format' -- #t as destination means
5485 current-output-port, #f means return the formatted text as a
5486 string.
5487
5488 * gh.h, gh_data.c, ports.h, ports.c: Added some missing const specifications.
5489
5490 * backtrace.c (scm_display_error_message): Rewrote to use
5491 scm_simple_format() procedure.
5492
5493 * __scm.h: Added commented-out #define of GUILE_DEBUG_FREELIST
5494
5495 2000-01-09 Marius Vollmer <mvo@zagadka.ping.de>
5496
5497 Finally applied the libltdl patch from Thomas Tanner, with slight
5498 modifications.
5499
5500 * DYNAMIC-LINKING: Removed because it is obsolete.
5501 * dynl.c: Use ANSI prototypes.
5502 (sysdep_dynl_link): Use lt_dlopenext instead of lt_dlopen.
5503 * scmconfig.h.in: Do not change, as it is automatically generated.
5504
5505 1999-07-25 Thomas Tanner <tanner@ffii.org>
5506
5507 * dynl-dl.c, dynl-dld.c, dynl-shl.c, dynl-vms.c: deleted
5508 (obsolete)
5509 * Makefile.am: likewise, add INCLTDL (libltdl headers) to
5510 INCLUDES, set dlpreopened files in LDFLAGS, link libguile
5511 against libltdl
5512 * dynl.c: use libltdl if DYNAMIC_LINKING is enabled,
5513 * guile.c: register preloaded modules
5514 * scmconfig.h.in: remove obsolete symbols
5515
5516 2000-01-09 Gary Houston <ghouston@arglist.com>
5517
5518 * These changes should make it unnecessary to call tzset from
5519 Scheme after modifying the TZ environment variable, even if the
5520 system date facilities cache the value.
5521 * stime.c (setzone, scm_localtime): added comments.
5522 (tzset): don't define a noop tzset macro if HAVE_TZSET not defined.
5523 (setzone): don't call tzset.
5524 (restorezone): call tzset only if HAVE_TZSET is defined.
5525 (scm_tzset): don't define if HAVE_TZSET not defined. Change the
5526 doc string to indicate that this procedure isn't likely to do
5527 anything useful.
5528 (scm_localtime, scm_strftime, scm_mktime): call tzset if
5529 LOCALTIME_CACHE is defined.
5530
5531 2000-01-09 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
5532
5533 * posix.c (scm_sync): Return SCM_UNSPECIFIED.
5534
5535 2000-01-09 Gary Houston <ghouston@arglist.com>
5536
5537 * eval.c: define scm_unbound_variable_key ('unbound-variable).
5538 scm_lookupcar1: throw an error with key 'unbound-variable instead
5539 of 'misc-error when an unbound variable is encountered.
5540
5541 * filesys.c (scm_mkdir, scm_rmdir, scm_getcwd, scm_select,
5542 scm_symlink, scm_readlink, scm_lstat),
5543 posix.c (scm_setpgid, scm_setsid, scm_ctermid, scm_tcgetpgrp,
5544 scm_tcsetpgrp, scm_uname, scm_setlocale, scm_mknod, scm_nice,
5545 scm_sync),
5546 simpos.c (scm_system),
5547 stime.c (scm_times, scm_strptime):
5548 move the HAVE_XXX feature tests out of the procedure bodies.
5549 don't use SCM_SYSMISSING.
5550 scm_validate.h (SCM_SYSMISSING): removed.
5551 error.h, error.c (scm_sysmissing): comment that this is deprecated.
5552 see ChangeLog entry for 1999-12-28.
5553
5554 Sat Jan 8 19:52:04 2000 Greg J. Badros <gjb@cs.washington.edu>
5555
5556 * scm_validate.h (SCM_VALIDATE_BOOL_COPY): Fix typo.
5557
5558 Sat Jan 8 17:06:46 2000 Greg J. Badros <gjb@cs.washington.edu>
5559
5560 * backtrace.c: Fix spelling typo in a comment.
5561
5562 * snarf.h: Use new SCM_DOCS macro to encapsulate the non SCM_INIT
5563 text. Reformatted some of the expansions.
5564
5565 Fri Jan 7 15:50:46 2000 Greg J. Badros <gjb@cs.washington.edu>
5566
5567 * scm_validate.h (SCM_OUT_OF_RANGE): Use scm_out_of_range_pos to
5568 report the position of the argument.
5569
5570 * error.h, error.c (scm_out_of_range_pos): Added this function to
5571 take extra "pos" argument, the position number of the errant
5572 argument.
5573
5574 * debug.c: Use SCM_OUT_OF_RANGE instead of scm_out_of_range.
5575
5576 * snarf.h: Use SCM_HERE and SCM_INIT as names, not SCM_NOTSNARF
5577 and SCM_SNARFING. Also put the %%% in the SCM_INIT since Mikael
5578 prefers that and I'm reasonably indifferent.
5579
5580 Fri Jan 7 15:03:32 2000 Greg J. Badros <gjb@cs.washington.edu>
5581
5582 * snarf.h: Factor out differences between C++ and non-C++ into
5583 SCM_FUNC_CAST_ARBITRARY_ARGS macro. Modify all the snarf macro
5584 definitions to use SCM_NOTSNARF and SCM_SNARFING macros (like
5585 Mikael's macros, below, but changed names and SCM_SNARFING no
5586 longer expands to include %%% -- that must appear in the argument
5587 so that the token appears at the call-site as a reminder).
5588
5589 2000-01-07 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
5590
5591 * snarf.h (SCM_INSITU, SCM_INIT): New snarf macros for use in user
5592 snarf macro definitions.
5593
5594 2000-01-06 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
5595
5596 * chars.c (scm_integer_to_char): Use Greg's nice
5597 SCM_VALIDATE_INUM_RANGE macro for argument checking for closer
5598 adherence to R5RS.
5599
5600 Thu Jan 6 11:48:49 2000 Greg J. Badros <gjb@cs.washington.edu>
5601
5602 * *.c, snarf.h: Replace GUILE_PROC1 with SCM_DEFINE1 throughout.
5603
5604 Thu Jan 6 11:22:53 2000 Greg J. Badros <gjb@cs.washington.edu>
5605
5606 * Makefile.am (ETAGS_ARGS): Switch to SCM_DEFINE, SCM_DEFINE1
5607 instead of GUILE_PROC.
5608
5609 Thu Jan 6 11:21:49 2000 Greg J. Badros <gjb@cs.washington.edu>
5610
5611 * alist.c: Do not report mismatch errors on some uses of `tmp' (do
5612 this by using SCM_ARG2 instead of `2' in the SCM_VALIDATE_CONS
5613 macro call.
5614
5615 Thu Jan 6 09:54:33 2000 Dirk Herrmann <dirk@ida.ing.tu-bs.de> --gjb applied
5616
5617 * scm_validate.h: Remove some redundant NIMP tests.
5618
5619 * alist.c: minimize scope of the tmp variables, and initialize
5620 them when declared. The strange SCM_NIMP tests are replaced by
5621 SCM_CONSP tests that more closely reflect the intended semantics.
5622 However, we don't get a performance penalty here, because the
5623 SCM_CONSP test was performed by the ALISTCELL test anyway. * The
5624 extremely ugly use of ASRTGO macros was removed: The calls to
5625 ASRTGO were not encapsulated by "#ifndef SCM_RECKLESS", but got a
5626 label parameter that only exists when SCM_RECKLESS is not defined.
5627 This works, because ASRTGO itself is defined in a way that it only
5628 makes use of the label parameter if SCM_RECKLESS is not defined
5629 (shudder!). Does guile make at all use of the possibility to
5630 define SCM_RECKLESS? * Codesize is likely to be reduced, since
5631 instead of two calls to SCM_ASSERT performed by the ALISTCELL test
5632 we now only get one test.
5633
5634 * list.c: Use SCM_NNULLP, not SCM_NIMP as appropriate. Also use
5635 SCM_NULLP instead of SCM_IMP. Drop use of "register" keyword on
5636 some variables in `list?'. Fix `reverse' and `reverse!'
5637 primitives to handle improper lists better.
5638
5639 Wed Jan 5 11:24:53 2000 Greg J. Badros <gjb@cs.washington.edu>
5640
5641 * *.[ch]: Whitespace changes -- added space after SCM_VALIDATE_*
5642 macros and SCM_DEFINE macros to match GNU coding standards.
5643
5644 Wed Jan 5 11:04:24 2000 Greg J. Badros <gjb@cs.washington.edu>
5645
5646 * *.[ch]: Replace GUILE_PROC w/ SCM_DEFINE.
5647
5648 Wed Jan 5 10:59:06 2000 Greg J. Badros <gjb@cs.washington.edu>
5649
5650 * *.[ch]: Replace SCM_VALIDATE_INT w/ SCM_VALIDATE_INUM for
5651 better consistency with the names of other SCM_VALIDATE_ macros
5652 and better conformance to guile naming policy.
5653
5654 Wed Jan 5 10:50:39 2000 Greg J. Badros <gjb@cs.washington.edu>
5655
5656 * ports.c (s_scm_close_all_ports_except): Use SCM_ARG1 in a
5657 SCM_VALIDATE instead of 1 to avoid a check on the argument (since
5658 it's not the actual name of the formal).
5659
5660 * guile-snarf.awk.in: Do argument/number mismatch checking and
5661 print warnings in an Emacs compile-mode parseable format.
5662
5663 * struct.c: Use SCM_ASSERT_RANGE instead of SCM_ASSERT w/
5664 SCM_OUTOFRANGE as 3rd argument.
5665
5666 * random.c: Fix argument/number mismatch (that I introduced :-( ).
5667
5668 * __scm.h: Do not #define SCM_ARG* when snarfing;
5669 lets us distinguish between 1 and SCM_ARG1 when snarfing as only
5670 the former (using the number) requires the argument to match the
5671 formal in the current argument snarfing check.
5672
5673 * snarf.h: Give new definition of SCM_ASSERT when in
5674 snarfing mode to output a lexically-identifiable sequence that the
5675 guile-snarf.awk script uses to verify argument/position matching.
5676
5677 * ramap.c: Remove extraneous #undef FUNC_NAME.
5678
5679 Wed Jan 5 08:36:38 2000 Greg J. Badros <gjb@cs.washington.edu>
5680
5681 * guile-doc-snarf.awk.in: Removed -- guile-snarf.awk.in is the
5682 current version of the same functionality; it writes the .x output
5683 to stdout instead of directly into the file.
5684
5685 Wed Jan 5 08:15:04 2000 Greg J. Badros <gjb@cs.washington.edu>
5686
5687 * unif.c, symbols.c, strings.c, stacks.c, random.c, print.c,
5688 posix.c: Eliminated a bunch of SCM_NIMP(..)s that are now
5689 redundant with the safer macros. Patch from Dirk Hermann applied
5690 by hand. Thanks Dirk!
5691
5692 * scm_validate.h: Added SCM_VALIDATE_VECTOR_OR_DVECTOR for some
5693 uses in random.c.
5694
5695 * ramap.c: whitespace change.
5696
5697 Tue Jan 4 14:21:35 2000 Greg J. Badros <gjb@cs.washington.edu>
5698
5699 * options.c, objects.c, keywords.c, gc.c: Some redundant SCM_NIMP
5700 removals from Dirk Hermann.
5701
5702 * alist.c: Rename formals to match the parameter names in the
5703 documentation, updates to documentation. Thanks Dirk Hermann!
5704
5705 2000-01-04 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
5706
5707 * eval.c (SCM_CEVAL): Reverse order of
5708 scm_stack_checking_enabled_p and SCM_STACK_OVERFLOW_P
5709 (Thanks to Brad Knotwell.)
5710
5711 Mon Jan 3 08:30:02 2000 Greg Harvey <Greg.Harvey@thezone.net> (applied --01/03/00 gjb)
5712
5713 * gc.c (scm_debug_newcell): Added SCM_SETCAR of the newly
5714 allocated cell.
5715
5716 * pairs.h: Added a comment about the need for the SCM_SETCAR in
5717 SCM_NEWCELL macro.
5718
5719 Mon Jan 3 08:25:19 2000 Greg J. Badros <gjb@cs.washington.edu>
5720
5721 * dynl-vms.c, debug.c, coop-threads.c, backtrace.c, eval.c: More
5722 SCM_NIMP tests that were redundant are now eliminated. Patches
5723 from Dirk Hermann applied by hand.
5724
5725 The ChangeLog continues in the file: "ChangeLog-1996-1999"