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