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