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