* Get rid of calls to SCM_ROSTRINGP.
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
66460dfb
DH
12000-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
2
3 * environments.c (obarray_replace, obarray_retrieve,
4 obarray_remove): Don't use '==' to compare SCM objects.
5
6 * posix.c (scm_getgroups): Don't create a redundant string.
7
0f87853a
DH
82000-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
9
10 * symbols.c (scm_sym2vcell, scm_sym2ovcell_soft,
11 scm_intern_symbol, scm_unintern_symbol): Symbol objects already
12 hold their hash values, no need to recompute them.
13
14 (scm_intern_obarray_soft): Speed up search for a matching symbol
15 by comparing the hash values first.
16
a3a32939
DH
172000-10-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
18
19 * unif.c (scm_make_uve, scm_dimensions_to_uniform_array): Don't
20 allow vectors longer than SCM_LENGTH_MAX. This removes the
21 SCM_HUGE_LENGTH trick, i. e. storing a vector length greater than
22 SCM_LENGTH_MAX at the beginning of the vector's memory. Since not
23 all of guile's code was implemented to be aware of this trick, it
24 is unlikely that it was used anyway. We can implement such a
25 feature more cleanly by using double cells for uniform vector
26 types.
27
28 (scm_shap2ra): Replace SCM_IMP and SCM_NIMP tests by more
29 straightforward predicates.
30
31 (scm_dimensions_to_uniform_array): Require that for dimensions
32 given as lower-bound/upper-bound pairs the upper-bound is never
33 less than the lower bound.
34
a6d9e5ab
DH
352000-10-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
36
37 * dynl.c (scm_dynamic_link, scm_dynamic_func, scm_dynamic_call,
38 scm_dynamic_args_call), filesys.c (scm_chown, scm_chmod,
39 scm_open_fdes, scm_stat, scm_link, scm_rename, scm_delete_file,
40 scm_mkdir, scm_rmdir, scm_opendir, scm_chdir, scm_symlink,
41 scm_readlink, scm_lstat, scm_copy_file), fports.c (scm_open_file),
42 ioext.c (scm_read_delimited_x, scm_fdopen), load.c
43 (scm_primitive_load, scm_parse_path, scm_search_path,
44 scm_sys_search_load_path, scm_primitive_load_path), net_db.c
45 (scm_inet_aton, scm_gethost, scm_getnet, scm_getproto,
46 scm_getserv), numbers.c (scm_string_to_number), ports.c
47 (scm_truncate_file, scm_sys_make_void_port), posix.c
48 (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
49 environ_list_to_c, scm_execle, scm_utime, scm_access,
50 scm_setlocale, scm_mknod), regex-posix.c (scm_make_regexp),
51 simpos.c (scm_system, scm_getenv), socket.c (scm_fill_sockaddr,
52 scm_send, scm_sendto), stime.c (scm_strftime, scm_strptime),
53 strop.c (scm_i_index, scm_string_null_p, scm_string_to_list),
54 strports.c (scm_mkstrport), symbols.c
55 (scm_string_to_obarray_symbol), vports.c (scm_make_soft_port):
56 Don't accept symbols as input parameters. Use SCM_STRING_LENGTH
57 instead of SCM_ROLENGTH.
58
59 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
60 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
61 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
62 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
63 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
64 (scm_fdopen), net_db.c (scm_inet_aton, scm_gethost, scm_getnet,
65 scm_getproto, scm_getserv), ports.c (scm_truncate_file,
66 scm_sys_make_void_port), posix.c (scm_getpwuid, scm_getgrgid,
67 scm_execl, scm_execlp, scm_execle, scm_utime, scm_access,
68 scm_setlocale, scm_mknod), regex-posix.c (scm_make_regexp,
69 scm_regexp_exec), simpos.c (scm_system, scm_getenv), stime.c
70 (setzone, scm_strftime, scm_strptime), vports.c
71 (scm_make_soft_port): Use SCM_STRING_COERCE_0TERMINATION_X to
72 make sure the characters of a string are followed by a \0.
73 Further, use SCM_STRING_CHARS instead of SCM_ROCHARS on the
74 resulting string.
75
76 * dynl.c (scm_make_argv_from_stringlist), posix.c
77 (scm_convert_exec_args): Aligned to match each other.
78
79 * dynl.c (scm_coerce_rostring): Removed.
80
81 (scm_dynamic_func): Changed the comment to reflect that the
82 function name has to be a string. Further, hide implementation
83 details from the scheme comment.
84
85 * error (scm_error_scm): Don't accept a symbol as message
86 parameter. Fix substring handling.
87
88 * posix.c (environ_list_to_c): Use memcpy to copy environment
89 strings. Handle substrings which don't have a trailing \0.
90
91 * symbols.h (SCM_LENGTH, SCM_ROLENGTH, SCM_SUBSTRP,
92 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_COERCE_SUBSTR):
93 Deprecated.
94
95 * unif.h (SCM_HUGE_LENGTH): Deprecated.
96
97 * validate.h (SCM_VALIDATE_ROSTRING, SCM_VALIDATE_ROSTRING_COPY,
98 SCM_VALIDATE_NULLORROSTRING_COPY): Deprecated.
99
e9bfab50
DH
1002000-10-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
101
102 * random.c: Include unif.h.
103
104 * strings.h (SCM_STRING_COERCE_0TERMINATION_X): Added. This is
105 intended to replace the macro SCM_COERCE_SUBSTR. Such a macro
106 will be necessary, even after copy-on-write strings will be added
107 to guile, but the current naming is inappropriate.
108
109 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
110 scm_string_less_p, scm_string_ci_less_p): Don't accept symbols as
111 input parameters. Further, the functions that test for equality
112 are rewritten to compare from back to front, the others are also a
113 little bit more polished.
114
14f1d9fe
MD
1152000-10-25 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
116
117 This change merges the GOOPS code into Guile. However, GOOPS
118 is still not initialized until someone asks for the module.
119 We need to optimize GOOPS initialization time before initializing
120 it together with the rest of libguile. We also need to add the
121 C API + primitive methods. Then we can start using it to
122 modularize Guile, implement a real exception system etc.
123
124 * goops.c, objects.c, objects.h, eval.c (scm_make_extended_class,
125 scm_make_port_classes, scm_change_object_class,
126 scm_memoize_method): Changed to ordinary functions (was plugin
127 slots).
128
129 * goops.c (wrap_init, scm_wrap_object): Unconditionally use
130 SCM_STRUCT_GC_CHAIN.
131 (scm_goops_version): Removed.
132 (scm_oldfmt): and all uses of it: Removed.
133 (scm_shared_array_root, scm_shared_array_offset,
134 scm_shared_array_increments): Removed.
135 (scm_init_goops): No need to support two arg mutex init.
136 Removed #include "versiondat.h", #include "goops.h".
137
138 * goops.h: Removed various superfluous conditions.
f4553de8
MD
139 Renamed class --> cls, new --> newinst in order to accomodate
140 C++.
14f1d9fe
MD
141
142 * init.c (scm_init_guile_1): Call the goops module registration
143 function.
144 Added #include "libguile/goops.h".
145
146 * Makefile.am (libguile_la_SOURCES): Added goops.c
147 (DOT_X_FILES): Added goops.x
148 (DOT_DOC_FILES): Added goops.doc
149 (modinclude_HEADERS): Added goops.h
150
1b9be268
DH
1512000-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
152
153 * gc.c (scm_igc): Remove references to scm_vector_set_length_x.
154
155 (scm_gc_sweep): SCM_CONTREGS is never NULL.
156
157 * gc.c (scm_gc_sweep), vectors.c (scm_make_vector): Don't
158 allocate/free memory for zero length vectors.
159
160 * vectors.[ch] (scm_vector_set_length_x): Deprecated.
161
d1ca2c64
DH
1622000-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
163
164 * alist.c (scm_assq_ref): Add a suggestion about how to deal with
165 this function when the API gets reviewed.
166
167 * async.c (SET_ASYNC_GOT_IT): Use SCM_TYP16 instead of doing bit
168 operations directly.
169
170 * dynl.c (scm_coerce_rostring), filesys.c (scm_link,
171 scm_copy_file), fports (scm_open_file), hash.c (scm_hasher),
172 posix.c (scm_getpwuid), print.c (scm_iprin1), simpos.c
173 (scm_system), strings.c (scm_string_ref, scm_substring,
174 scm_string_append), strop.c (scm_string_copy), struct.c
175 (scm_make_struct_layout), symbols.c (scm_gensym, scm_gentemp),
176 symbols.h (SCM_COERCE_SUBSTR): Use SCM_STRING_LENGTH instead of
177 SCM_ROLENGTH if the object is known to be a string or substring.
178
179 * eval.c (scm_lookupcar): Use SCM_ITAG7 instead of doing bit
180 operations directly.
181
182 * filesys.c (scm_dirname, scm_basename): Don't create shared
183 substrings as these are going to disappear from guile.
184
185 * gc.c (scm_gc_sweep): Use SCM_UVECTOR_LENGTH instead of
186 SCM_HUGE_LENGTH. (The SCM_HUGE_LENGTH mechanism does not work
187 correctly anyway.)
188
189 * gc.h (SCM_FREEP, SCM_NFREEP): Deprecated.
190
191 * read.c (scm_flush_ws): Don't compare SCM values directly.
192
193 * root.c (scm_make_root), root.h (scm_root_state): Removed
194 system_transformer and top_level_lookup_closure_var from struct.
195 (Since eval is now R5RS, binary compatibility is not granted
196 anyway.)
197
198 * simpos.c (scm_system): Fix condition.
199
200 * strings.c (scm_string_length, scm_string_ref, scm_substring,
201 scm_string_append), strop.c (scm_string_copy), struct.c
202 (scm_make_struct_layout, scm_make_vtable_vtable), symbols.c
203 (scm_gensym, scm_gentemp): Replace SCM_VALIDATE_STRINGORSUBSTR
204 with SCM_VALIDATE_STRING, since they do the same thing.
205
206 * strings.h (scm_make_shared_substring): Deprecated.
207
208 * tags.h (SCM_ITAG7): Added.
209
210 * validated.h (SCM_VALIDATE_STRINGORSUBSTR): Deprecated.
211
f8fa3e38
MV
2122000-10-20 Marius Vollmer <mvo@zagadka.ping.de>
213
214 * init.c (scm_init_guile_1, invoke_main_func): Call
215 scm_load_startup_files in scm_init_guile_1, not in
216 invoke_main_func.
217
0100535b
MV
2182000-10-18 Marius Vollmer <mvo@zagadka.ping.de>
219
c6ba6ce6 220 * print.c (grow_ref_stack): Pass a INUM to scm_make_vector as the
31535422 221 size, not a naked int. Thanks to Brad Knotwell!
c6ba6ce6 222
0100535b
MV
223 * gc_os_dep.c (GC_noop1, GC_bool, TRUE, FALSE, VOLATILE):
224 Definitions copied from Boehm collector.
225
daa6ba18
DH
2262000-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
227
228 * list.[ch] (scm_sloppy_memq, scm_sloppy_memv, scm_sloppy_member):
229 Deprecated.
230
231 (scm_memq, scm_memv, scm_member): Inline the sloppy code.
232
a8a11001
DH
2332000-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
234
235 * alloca.c: Fixed include file path. Thanks to Bruce Korb for
236 the bug report.
237
66ca9392
MV
2382000-10-11 Marius Vollmer <mvo@zagadka.ping.de>
239
240 * gc_os_dep.c: Added real implementation based on code from Boehms
241 collector. This is not well tested yet.
242
243 * gc.h (scm_get_stack_base): Added prototype.
244 * init.c (scm_get_stack_base): Removed prototype.
245
b7ead2ae
DH
2462000-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
247
248 * random.c (scm_seed_to_random_state): Replace SCM_LENGTH with
249 the appropriate SCM_<type>_LENGTH macro.
250
251 (vector_scale, vector_sum_squares, scm_random_solid_sphere_x,
252 scm_random_normal_vector_x): Use scm_uniform_vector_length to
253 determine the length of a vector object generically.
254
b226e5f6
DH
2552000-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
256
257 * ramap.c (scm_array_fill_int, scm_array_index_map_x): Replace
258 SCM_LENGTH with the appropriate SCM_<type>_LENGTH macro.
259
260 (scm_ra_matchp, scm_ramapc, ramap, rafe, scm_array_index_map_x,
261 raeql_1, raeql): Use scm_uniform_vector_length to determine the
262 length of a vector object generically.
263
74014c46
DH
2642000-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
265
266 * unif.c (scm_make_uve, scm_uniform_vector_length, scm_array_p,
267 scm_transpose_array, scm_array_contents, scm_ra2contig,
268 scm_uniform_array_read_x, scm_uniform_array_write, scm_bit_count,
269 scm_bit_position, scm_bit_set_star_x, scm_bit_count_star,
270 scm_bit_invert_x, scm_array_to_list, scm_raprin1): Replace
271 SCM_LENGTH with the appropriate SCM_<type>_LENGTH macro.
272
273 (scm_array_dimensions, scm_make_shared_array, scm_enclose_array,
274 scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x,
275 scm_array_contents, scm_uniform_array_read_x,
276 scm_uniform_array_write, scm_list_to_uniform_array, rapr1): Use
277 scm_uniform_vector_length to determine the length of a vector
278 object generically.
279
280 (scm_bit_count, scm_bit_set_star_x, scm_bit_count_star,
281 scm_bit_invert_x): Eliminated dummy type dispatch.
282
283 (scm_ra2contig): Fixed array vector access.
284
b5c2579a
DH
2852000-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
286
287 * unif.h (SCM_BITVECTOR_P, SCM_BITVECTOR_BASE): Added.
288
289 * eval.c (iqq, SCM_CEVAL, SCM_APPLY, check_map_args, scm_map,
290 scm_for_each, scm_copy_tree), gc.c (scm_igc, scm_gc_mark,
291 scm_gc_sweep), gh_data.c (gh_scm2chars), sort.c
292 (scm_restricted_vector_sort_x, scm_sorted_p, scm_sort_x,
293 scm_sort, scm_stable_sort_x, scm_stable_sort), vectors.c
294 (scm_vector_length, scm_vector_ref, scm_vector_set_x,
295 scm_vector_to_list, scm_vector_fill_x, scm_vector_equal_p,
296 scm_vector_move_left_x, scm_vector_move_right_x, ): Replace
297 SCM_LENGTH with the appropriate SCM_<type>_LENGTH macro.
298
299 * gc.c (scm_gc_sweep): Use SCM_BITVECTOR_BASE for bitvectors.
300
301 * sort.c (scm_restricted_vector_sort_x, scm_sorted_p): Eliminated
302 dummy type dispatch.
303
304 (scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort):
305 Eliminated redundant NIM test.
306
9fd38a3d
DH
3072000-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
308
309 * filesys.c (fill_select_type, retrieve_select_type, scm_select),
310 gh_data.c (gh_set_substr, gh_scm2chars, gh_scm2shorts,
311 gh_scm2longs, gh_scm2floats, gh_scm2doubles, gh_symbol2newstr),
312 stime.c (bdtime2c), symbols.c (scm_sym2vcell, scm_sym2ovcell_soft,
313 scm_intern_obarray_soft, scm_symbol_to_string, scm_intern_symbol,
314 scm_unintern_symbol, copy_and_prune_obarray, scm_builtin_bindings,
315 scm_builtin_weak_bindings), validate.h (SCM_VALIDATE_VECTOR_LEN):
316 Replace SCM_LENGTH with the appropriate SCM_<type>_LENGTH macro.
317
318 * filesys.c (scm_dirname, scm_basename), gh_data.c (gh_scm2newstr,
319 gh_get_substr), posix.c (scm_putenv), regex-posix.c
320 (scm_regexp_exec), stime.c (setzone), symbols.c
321 (scm_string_to_symbol): Don't accept symbols as input parameters
322 any more.
323
bfa974f0
DH
3242000-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
325
326 * continuations.c (scm_make_cont, copy_stack_and_call,
327 scm_dynthrow), environments.c (obarray_enter, obarray_replace,
328 obarray_retrieve, obarray_remove, obarray_remove_all,
329 leaf_environment_fold), fluids.c (grow_fluids, scm_copy_fluids,
330 scm_fluid_ref, scm_fluid_set_x), hash.c (scm_hasher), hashtab.c
331 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x,
332 scm_hash_fn_remove_x, scm_internal_hash_fold), ioext.c
333 (scm_read_delimited_x), objects.c (scm_mcache_lookup_cmethod,
334 scm_make_subclass_object), ports.c (scm_unread_string), socket.c
335 (scm_recv, scm_recvfrom), stacks.c (scm_make_stack, scm_stack_id,
336 scm_last_stack_frame), strings.c (scm_string_length,
337 scm_string_set_x), strop.c (scm_substring_move_x,
338 scm_substring_fill_x, scm_string_fill_x, scm_string_upcase_x,
339 scm_string_downcase_x, scm_string_capitalize_x), struct.c
340 (scm_struct_init, scm_struct_vtable_p, scm_make_struct,
341 scm_make_vtable_vtable, scm_struct_ref, scm_struct_set_x), weaks.c
342 (scm_mark_weak_vector_spines, scm_scan_weak_vectors): Replace
343 SCM_LENGTH with the appropriate SCM_<type>_LENGTH macro.
344
b17004b8
DH
3452000-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
346
347 * print.c (make_print_state, scm_iprin1): Replace SCM_LENGTH with
348 the appropriate SCM_<type>_LENGTH macro.
349
350 (grow_ref_stack): Don't call scm_vector_set_length_x to resize
351 the print stack.
352
aa3188a7
DH
3532000-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
354
355 * numbers.c (big2str): Avoid redundant copying.
356
357 (scm_bigprint): Use SCM_STRING_LENGTH instead of SCM_LENGTH.
358
94115ae3
DH
3592000-10-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
360
361 * numbers.c (big2str), read.c (scm_grow_tok_buf), strports.c
362 (st_resize_port): Don't call scm_vector_set_length_x to resize
363 strings.
364
365 * read.c (scm_lreadr, scm_read_token): Use SCM_STRING_LENGTH for
366 string arguments (instead of SCM_LENGTH).
367
2d349e67
DH
3682000-10-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
369
370 * continuations.h (SCM_CONTINUATION_LENGTH), strings.h
371 (SCM_STRING_LENGTH), symbols.h (SCM_SYMBOL_LENGTH), unif.h
372 (SCM_UVECTOR_LENGTH, SCM_BITVECTOR_LENGTH), vectors.h
373 (SCM_VECTOR_LENGTH): Added as replacements for SCM_LENGTH.
374
4fd03f43
MV
3752000-10-02 Marius Vollmer <mvo@zagadka.ping.de>
376
377 * coop-defs.h (coop_key_create): Don't use the C++ keyword
378 `destructor' in prototype. Thanks to Martin Baulig!
379
77cd7f80
ML
3802000-10-02 Michael Livshin <mlivshin@bigfoot.com>
381
382 * guile-func-name-check.in: now should not confuse SCO nawk
383 anymore. thanks to Bruce Korb for the fix!
384
ed0e0e30
GH
3852000-10-01 Gary Houston <ghouston@arglist.com>
386
0d26a8bc 387 * net_db.c: declare inet_aton only if HAVE_INET_ATON is not
ed0e0e30
GH
388 defined. thanks to Han-Wen Nienhuys.
389
e655d034
GH
3902000-09-30 Gary Houston <ghouston@arglist.com>
391
392 * filesys.c (scm_stat2scm), posix.c (s_scm_mknod): don't use
393 S_ISSOCK or S_IFSOCK if not defined. thanks to Bruce Korb.
394
6ec589e2
NJ
3952000-09-29 Neil Jerram <neil@ossau.uklinux.net>
396
9d29e990
NJ
397 * Makefile.am (guile-procedures.txt): Insert a new rule such that
398 the output from guile-snarf.awk is processed by makeinfo to
399 produce guile-procedures.txt.
400
401 * guile-snarf.awk.in: Modify the way we snarf docstrings such that
402 the output is Texinfo-compliant and suitable for post-processing
403 with makeinfo. (Trim leading "./" from C file name if
404 present; reformat procedure prototype line in @deffn format;
405 improve representation of args to show optional and rest args;
406 explicitly quote quotation marks where they are used inside an AWK
407 regexp.)
408
6ec589e2
NJ
409 * net_db.c (scm_inet_ntoa): Docstring fix: missing newline
410 inserted.
411
412 * hashtab.c (scm_hashx_create_handle_x, scm_hashx_ref): Insert
413 spaces between C parameters so that the snarfer doesn't coalesce
414 them all into a single very long-named parameter.
415
4162000-09-27 Neil Jerram <neil@ossau.uklinux.net>
417
418 * list.c (scm_append): Use @example texinfo markup in docstring.
419
bbe4e612
DH
4202000-09-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
421
422 * strings.c (scm_string, scm_make_string, scm_string_set_x,
423 scm_string_append), strop.c (scm_string_upcase_x,
424 scm_string_downcase_x), strports.c (st_resize_port), symbols.c
425 (scm_sym2vcell, scm_sym2ovcell_soft, scm_intern_obarray_soft,
426 scm_intern_symbol, scm_unintern_symbol), unif.c (scm_cvref,
427 scm_uniform_vector_ref, scm_array_set_x, rapr1): Replace calls to
428 SCM_UCHARS with SCM_STRING_UCHARS or SCM_SYMBOL_UCHARS.
429
430 * symbols.h (SCM_UCHARS): Deprecated.
431
405aaef9
DH
4322000-09-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
433
434 * gc.c (scm_gc_sweep): Replace SCM_CHARS by SCM_COMPLEX_MEM.
435
436 * numbers.h (SCM_COMPLEX_MEM): Added as a replacement for
437 SCM_CHARS.
438
439 (SCM_COMPLEX_REAL, SCM_COMPLEX_IMAG): Use it.
440
441 * ramap.c (scm_array_fill_int, racp, raeql_1): Replace SCM_CHARS
442 with SCM_STRING_CHARS or SCM_UVECTOR_BASE.
443
444 (racp): Fix: Make sure that src and dst types match.
445
446 * read.c (scm_grow_tok_buf, scm_lreadr, scm_read_token): Replace
447 SCM_CHARS with SCM_STRING_CHARS.
448
449 * symbols.h (SCM_CHARS): Deprecated.
450
451 * unif.c (scm_enclose_array, scm_uniform_vector_ref, scm_cvref,
452 scm_array_set_x, scm_uniform_array_read_x, rapr1, freera,
453 scm_uniform_array_write): Replace SCM_CHARS with
454 SCM_STRING_CHARS, SCM_UVECTOR_BASE or SCM_ARRAY_MEM.
455
456 * unif.h (SCM_ARRAY_MEM): Added as a replacement for SCM_CHARS.
457
458 (SCM_ARRAY_V, SCM_ARRAY_BASE, SCM_ARRAY_DIMS): Use it.
459
460 * validate.h (SCM_COERCE_ROSTRING): Removed.
461
06ee04b2
DH
4622000-09-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
463
464 * gc.c (scm_igc): : Eliminate references to SCM_LENGTH and
465 SCM_CHARS from comment.
466
467 (scm_gc_mark, scm_gc_sweep): Replace SCM_CHARS with
468 SCM_SYMBOL_CHARS or SCM_CCLO_BASE or SCM_UVECTOR_BASE or
469 SCM_BDIGITS, and replace SCM_VELTS with SCM_VECTOR_BASE or
470 SCM_CONTREGS, according to the corresponding types.
471
472 (scm_gc_sweep): Simplify sweeping of uniform vectors.
473
74cc8503
DH
4742000-09-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
475
476 * procs.h (SCM_CCLO_LENGTH, SCM_SET_CCLO_LENGTH, SCM_CCLO_BASE,
477 SCM_SET_CCLO_BASE, SCM_CCLO_REF, SCM_CCLO_SET, SCM_CCLO_SUBR,
478 SCM_SET_CCLO_SUBR): Added resp. changed such that none of the
479 macros SCM_CHARS, SCM_SETCHARS, SCM_VELTS and SCM_LENGTH have to
480 be used with compiled closures any more.
481
482 * procs.c (scm_makcclo), gsubr.h (SCM_GSUBR_TYPE, SCM_GSUBR_PROC):
483 Replace uses of SCM_CHARS, SCM_SETCHARS and SCM_VELTS with regards
484 to compiled closures.
485
486 * gsubr.h (SCM_SET_GSUBR_TYPE, SCM_SET_GSUBR_PROC): Added.
487
488 * gsubr.c (scm_make_gsubr): Use them.
489
9eb364fc
DH
4902000-09-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
491
492 * numbers.c (scm_adjbig): Use SCM_BDIGITS instead of SCM_CHARS.
493
494 (big2str, scm_bigprint): Use SCM_STRING_CHARS instead of
495 SCM_CHARS.
496
497 * vectors.c (scm_vector_set_length_x): Distinguish between
498 strings, scheme vectors and uniform vectors, thus getting rid of
499 references to SCM_CHARS. (The code still needs improvement.)
500
3db4adfc
DH
5012000-09-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
502
503 * eval.c (scm_m_letrec1, SCM_CEVAL, SCM_APPLY): Use
504 SCM_STRING_U?CHARS or SCM_SYMBOL_U?CHARS instead of SCM_U?CHARS.
505
506 * unif.h (SCM_UVECTOR_BASE), vectors.h (SCM_VECTOR_BASE): Added
507 as replacements for SCM_CHARS and SCM_VELTS.
508
a002f1a2
DH
5092000-09-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
510
511 * continuations.c (scm_make_cont, scm_dynthrow), print.c
512 (scm_iprin1), stacks.c (scm_make_stack, scm_stack_id,
513 scm_last_stack_frame): For continuations, use SCM_CONTREGS
514 instead of SCM_CHARS.
515
516 * coop-threads.c (scm_threads_mark_stacks): Eliminate references
517 to SCM_LENGTH and SCM_CHARS from comments.
518
519 * dynl.c (scm_dynamic_link, scm_dynamic_func), symbols.h
520 (SCM_ROCHARS, SCM_ROUCHARS): Cleanly distinguish between string
521 and symbol arguments.
522
523 * hash.c (scm_hasher), keywords.c (prin_keyword), objects.c
524 (scm_make_subclass_object), print.c (scm_iprin1), regex-posix.c
525 (scm_regexp_error_msg), stime.c (bdtime2c, scm_strftime), struct.c
526 (scm_struct_init, scm_struct_vtable_p, scm_struct_ref,
527 scm_struct_set_x): Use SCM_STRING_U?CHARS or SCM_SYMBOL_U?CHARS
528 instead of SCM_U?CHARS.
529
530 * strings.h (SCM_STRING_UCHARS): Added as a replacement for
531 SCM_UCHARS for string arguments.
532
533 * strorder.c: Include strings.h and symbols.h.
534
535 * symbols.h: Replaced SCM_CHARS in comment.
536
537 (SCM_SYMBOL_UCHARS): Added as a replacement for SCM_UCHARS for
538 symbol arguments.
539
540 (SCM_SLOPPY_SUBSTRP): Deprecated.
541
542 * tags.h: Fixed comments not to reference SCM_LENGTH or
543 SCM_CHARS.
544
1660782e
DH
5452000-09-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
546
547 * gc.c (scm_gc_mark, scm_gc_sweep), tags.h: Removed the
548 scm_tc7_lvector type tag.
549
f151f912
DH
5502000-09-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
551
552 * eval.c (scm_m_define), evalext.c (scm_m_undefine): Removed dead
553 code.
554
555 * gc.c (scm_gc_sweep): Use SCM_STRING_CHARS or SCM_SYMBOL_CHARS
556 instead of SCM_CHARS.
557
86c991c2
DH
5582000-09-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
559
560 * backtrace.c (display_frame_expr), environments.c
561 (print_observer, print_leaf_environment, print_eval_environment,
562 print_import_environment, print_export_environment), gh_data.c
563 (gh_set_substr, gh_symbol2newstr), keywords.c
564 (scm_make_keyword_from_dash_symbol), ports.c (scm_drain_input),
565 posix.c (scm_mknod), print.c (scm_iprin1), regexp-posix.c
566 (scm_regexp_error_msg), script.c (scm_compile_shell_switches),
567 simpos.c (scm_getenv), socket.c (scm_recv, scm_recvfrom),
568 strings.c (scm_makfromstr), strop.c (scm_substring_move_x,
569 scm_substring_fill_x, scm_string_capitalize_x), symbols.c
570 (scm_symbol_to_string), unif.c (scm_make_uve, scm_array_p),
571 validate.h (SCM_VALIDATE_STRING_COPY): Use SCM_STRING_CHARS or
572 SCM_SYMBOL_CHARS instead of SCM_CHARS.
573
c1aef037
DH
5742000-09-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
575
576 * strings.h (SCM_STRING_CHARS): Added, should be used instead of
577 SCM_CHARS whenever the argument is known to be a string.
578
579 (SCM_SLOPPY_STRINGP): Deprecated.
580
581 * symbols.h (SCM_SYMBOL_CHARS): Added, should be used instead of
582 SCM_CHARS whenever the argument is known to be a symbol.
583
1bee0e70
NJ
5842000-09-22 Neil Jerram <neil@ossau.uklinux.net>
585
586 * struct.c (scm_make_struct): Fix texinfo warning in docstring by
587 using @pxref rather than @xref.
588
589 * root.c (scm_call_with_dynamic_root): Fix texinfo warning in
590 docstring by using @code for (thunk) rather than @var.
591
f7b0a8d1 5922000-09-20 Marius Vollmer <mvo@zagadka.ping.de>
216b559a 593
f7b0a8d1
MV
594 * numbers.c (scm_istr2flo): Throw an `out of range' error when
595 exponent is too large instead of returning `#f'. The rationale is
596 that in this case the string represents a valid number but we
597 can't deal with it.
216b559a 598
0f8c9efa
DH
5992000-09-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
600
601 * symbols.c (scm_intern_obarray_soft,
602 scm_sysintern0_no_module_lookup): Make sure that symbol
603 properties initially form an empty list. Thanks to Keisuke
604 Nishida for pointing this out.
605
5a2a5407
DH
6062000-09-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
607
608 * throw.c (scm_handle_by_message): Added a FIXME comment.
609
610 (scm_ithrow): Removed some redundant tests. When compiling on
611 gcc, always add the GCSE bug workaround.
612
57b74422
GH
6132000-09-14 Gary Houston <ghouston@arglist.com>
614
615 * print.c (scm_iprin1): write the ascii delete character as #\del
616 instead of '#\', so it can be read back. like in SCM.
617
02821239
MD
6182000-09-12 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
619
620 * symbols.c (duplicate_string): Don't try to copy the byte after
621 the string. This might not be `\0' and might even not be
622 allocated memory.
623
8e93e199
DH
6242000-09-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
625
626 * symbols.c (scm_symbol_p): Eliminate redundant SCM_IMP test.
627
28b06554
DH
6282000-09-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
629
630 This patch unifies the formerly distinct ssymbol and msymbol types
631 to a common symbol type scm_tc7_symbol. The representation of the
632 new symbol type uses a double cell with the following layout:
633 <type/length, chars, raw_hash, prop-pair>, where the car of
634 prop-pair holds the symbol's function property and the cdr of
635 prop-pair holds the symbol's other properties. In the long run,
636 these properties will be removed. Then, the generic property
637 functions will be uses.
638
639 * eval.c (SCM_CEVAL), objects.c (scm_class_of), print.c
640 (scm_iprin1), tag.c (scm_tag): Use scm_tc7_symbol instead of
641 scm_tc7_ssymbol, scm_tc7_msymbol or scm_tcs_symbols.
642
643 * gc.c (scm_gc_mark): Mark the symbols property pair.
644
645 (scm_gc_sweep): There are no symbol slots any more.
646
647 * hash.c (scm_hasher): Instead of re-calculating the hash value
648 of a symbol, use the raw_hash value stored in the symbol itself.
649
650 * properties.h: Fix typo.
651
652 * strings.[ch] (scm_makstr, scm_makfromstr): The slot parameter
653 is not used any more.
654
655 * symbols.[ch] (scm_strhash): Deprecated, replaced by a macro.
656
657 (scm_intern_obarray_soft): Made softness parameter unsigned.
658
659 (scm_string_hash): New function with the same functionality as
660 scm_strhash had before, except that the hash value is not adjusted
661 to a hash table size. Instead, the 'raw' hash value is returned.
662
663 * symbols.c (duplicate_string): New static convenience function.
664
665 (scm_sym2vcell, scm_sym2ovcell_soft, scm_intern_obarray_soft):
666 Renamed local variable from scm_hash to hash.
667
668 (scm_intern_obarray_soft): Don't check for a negative softness
669 any more. When generating symbol cells, use the new layout and
670 store the raw hash value in the symbol's cell.
671
672 (scm_symbol_to_string): Removed unnecessary cast.
673
674 (scm_intern_symbol, scm_unintern_symbol): Use scm_string_hash to
675 determine the hash values.
676
677 (msymbolize): Removed.
678
679 (scm_symbol_fref, scm_symbol_pref, scm_symbol_fset_x,
680 scm_symbol_pset_x, scm_symbol_hash): No need to distinguish
681 between different symbol types any more.
682
683 (scm_symbol_hash): Comment fixed.
684
685 * symbols.h: Comment about the distinction between ssymbols and
686 msymbols removed.
687
688 (SCM_SYMBOLP, SCM_ROSTRINGP): No need to distinguish between
689 different symbol types any more.
690
691 (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Added.
692
693 (SCM_SYMBOL_FUNC, SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS,
694 SCM_SET_SYMBOL_PROPS, SCM_SYMBOL_HASH, SCM_SET_SYMBOL_HASH): Use
695 the new symbol cell layout.
696
697 * tags.h (scm_tc7_ssymbol, scm_tc7_msymbol, scm_tcs_symbols):
698 Deprecated.
699
302f229e
MD
7002000-09-12 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
701
702 * symbols.h (scm_gentemp): Declared.
703
704 * symbols.c (scm_gensym): Reimplemented. Now only takes one
705 optional argument which should be a *string*.
706 (scm_gentemp): Reimplemented and moved from boot-9.scm.
707
5bcdfa2e
KN
7082000-09-10 Keisuke Nishida <kxn30@po.cwru.edu>
709
710 * modules.c: Use applicable smobs for eval closures instead of
711 compiled closures. Include "libguile/smob.h".
712 (f_eval_closure): Removed.
713 (scm_eval_closure_tag): New variable.
714 (scm_eval_closure_lookup): Renamed from eval_closure.
715 This function now takes a smob instead of a compiled closure.
716 (scm_standard_eval_closure): Create a smob instead of a compiled
717 closure.
718 (scm_init_modules): Initialize the eval closure type as a smob.
719 * modules.h (SCM_EVAL_CLOSURE_P): New macro.
720 (scm_eval_closure_tag, scm_eval_closure_lookup): Declare.
721 * symbols.c: Include "libguile/smob.h".
722 (scm_sym2vcell): Call scm_eval_closure_lookup directly if THUNK
723 is an eval closure.
724
370646da
MD
7252000-09-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
726
4c7cb8ba
MD
727 * Makefile.am (.x.doc): Bugfix: Added $(srcdir) to path in order
728 to allow for builds in separate tree.
729
370646da
MD
730 * symbols.c (scm_gensym): Bugfixed my previous bugfix. (Thanks to
731 Dale P. Smith.)
732
3cbe8373
KN
7332000-09-10 Keisuke Nishida <kxn30@po.cwru.edu>
734
735 * eval.c (SCM_APPLY): Fixed bugs in the applicable-smob calls.
736
a2d47b23
DH
7372000-09-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
738
739 * environments.c (obarray_enter, obarray_retrieve,
740 obarray_remove): Make sure the hash value is a valid obarray
741 index.
742
743 (obarray_enter, obarray_remove): Documentation improved.
744
745 (obarray_replace): Added.
746
747 (leaf_environment_define, leaf_environment_undefine): Cleaned up
748 and optimized.
749
a2550d0e
MD
7502000-09-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
751
752 * symbols.c (scm_gensym): Check that argument is a symbol, not a
370646da 753 string. (Thanks to Ralf Mattes.)
a2550d0e 754
f0cb8787
MV
7552000-09-05 Marius Vollmer <mvo@zagadka.ping.de>
756
757 * init.c: Include "libguile/properties.h".
758
759 * gh_data.c (gh_scm2char): Validate that argument is a character.
760
4c199a26
DH
7612000-08-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
762
763 * environments.h (SCM_IMPORT_ENVIRONMENT_P,
764 SCM_EXPORT_ENVIRONMENT_P): Before fetching the environment
765 functions, make sure that we really got an environment.
766
9e9e264f
MD
7672000-09-03 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
768
769 * validate.h (SCM_VALIDATE_NUMBER_DEF_COPY): New macro.
770
468fbf58
MV
7712000-09-03 Marius Vollmer <mvo@zagadka.ping.de>
772
773 * Makefile.am (.x.doc): Pretend to create .doc files from .x files
774 and give explicit dependencies for .x files that depend on
775 generated files. This allows parallel builds. Thanks to Matthias
776 Koeppe!
777
7782000-08-27 Marius Vollmer <mvo@zagadka.ping.de>
779
780 * Makefile.am: Added gc_os_dep.c, properties.c, properties.x,
781 properties.h and properties.doc in the suitable places.
782
783 * init.h (scm_init_guile): New prototype.
784
785 * init.c (scm_init_guile, scm_init_guile_1): New interface for
786 initializing Guile that does return to the caller.
787 (scm_boot_guile_1): Use scm_init_guile_1 to initialize Guile.
788 Do not establish a catch-all, this is no longer needed.
789
790 * root.h (scm_properties_whash): New `sys_protect', used in
791 properties.c.
792
793 * throw.c (scm_ithrow): Perform catch-all handling here when no
794 suitable handler has been found. That way, we don't have to rely
795 on the user establishing a catch-all, which might be difficult for
796 him if he is using scm_init_guile instead of scm_boot_guile.
797
11768c04
NJ
7982000-09-03 Neil Jerram <neil@ossau.uklinux.net>
799
800 * vectors.c (scm_vector): Docstring: add @deffnx line for
801 list->vector.
802
803 * unif.c (scm_uniform_vector_ref): Docstring: add @deffnx line for
804 array-ref.
805 (scm_array_set_x): Docstring: add @deffnx line for
806 uniform-array-set!.
807
808 * symbols.c (scm_symbol_to_string): Docstring: complete an
809 incomplete Texinfo reference to a node in r4rs.texi.
810 (scm_symbol_to_string): Escape double quotes correctly within
811 docstring.
812
813 * struct.c (scm_make_struct, scm_make_vtable_vtable): Docstring
814 fixes: `@dots' changed to `@dots{}'.
815
816 * strop.c (scm_substring_move_x): Docstring: add @deffnx lines for
817 substring-move-left! and substring-move-right!.
818
819 * strings.c (scm_string): Docstring: add @deffnx line for
820 list->string.
821
822 * stime.c (scm_strptime): Fix spelling mistake in docstring.
823 (scm_current_time): Docstring fix: insert missing newline.
824
825 * socket.c (scm_recvfrom): Docstring format fix: missing newline
826 inserted.
827
828 * ramap.c (scm_array_copy_x): Docstring: add @deffnx line for
829 array-copy-in-order!.
830 (scm_array_map_x): Docstring: add @deffnx line for
831 array-map-in-order!.
832
833 * posix.c (scm_mknod): Docstring format fix: missing newlines
834 inserted.
835
836 * modules.c (scm_interaction_environment): Docstring fix: add
837 newlines.
838
839 * eval.c (scm_cons_source): Added newly written docstring.
840
eacb9dc2
ML
8412000-09-03 Michael Livshin <mlivshin@bigfoot.com>
842
843 the following changes let Guile get rid of the `allocated' cell
844 state.
845
846 * smob.c (scm_smob_prehistory): don't init the "allocated" smob
847 type.
848
849 * tags.h (scm_tc16_allocated): removed.
850
851 * gc.h: removed now-obsolete comments about the `allocated' cell
852 state.
853 (SCM_NEWCELL): don't change cell type to `allocated'.
854 (SCM_NEWCELL2): ditto.
855
856 * gc.c (scm_mark_locations): mark freecells too, and don't worry
857 about any possible false positives.
858 (scm_debug_newcell): don't change cell type to `allocated'.
859 (scm_debug_newcell2): ditto.
860 (scm_gc_for_newcell): ditto.
861 (scm_gc_mark): remove the tc16_allocated case.
862
69b5f65a
MD
8632000-08-26 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
864
adf9e959
MD
865 * gdbint.c (gdb_print): Removed superfluous macro definition.
866
0745d387
MD
867 * objects.c (scm_init_objects), print.c (scm_init_print), struct.c
868 (scm_init_struct): First arg to scm_make_vtable_vtable should be a
869 string, not a symbol. (`make-vtable-vtable' needs to append this
870 string to another string and then pass it through
871 `make-struct-layout'.)
872
873 * stacks.c (scm_init_stacks): Pass a string, not a layout object,
874 to scm_make_vtable_vtable. (Thanks to Dale P. Smith.)
875
876 * struct.c (scm_make_struct_layout): Removed reference to
877 "read-only string" in comment; Check that argument is a string.
878 (scm_make_vtable_vtable): Check that argument is a string.
879
69b5f65a
MD
880 * environments.c (scm_init_environments): All internal includes in
881 libguile must use the prefix "libguile/" in path names since inly
882 the top-level source directory is on the include list. (That, in
883 turn, is because we want to distinguish between system header
884 files and hedares files internal to libguile.)
885
886 * strings.c (scm_make_shared_substring, scm_read_only_string_p):
887 Deprecated.
888 (scm_string_length, scm_string_ref, scm_substring,
889 scm_string_append): Don't accept symbols as arguments (R5RS).
890
92ccc1f1
NJ
8912000-08-25 Neil Jerram <neil@ossau.uklinux.net>
892
893 * ports.c (scm_set_port_column_x): Fix docstring so that it
894 mentions set-port-line! rather than set-port-column! twice.
895
896 * guardians.c (scm_make_guardian): Remove spurious . from doc string.
897
5d3e2388
DH
8982000-08-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
899
900 * Makefile.am: Added all necessary environments.* files.
901
902 * init.c: Include environments.h.
903
904 (scm_boot_guile_1): Initialize the environments.
905
906 * environments.[ch]: Added. Most of the credit for these files
907 goes to Jost Boekemeier.
908
28819f62
MD
9092000-08-25 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
910
167d89cf 911 * procprop.c: #include "libguile/smob.h"; handle applicable smobs.
28819f62 912
14fb1c83
KN
9132000-08-24 Keisuke Nishida <kxn30@po.cwru.edu>
914
915 * smob.h (scm_smob_descriptor): Added `apply' and `gsubr_type'.
916 * smob.c (scm_make_smob_type): Initialize `apply' and `gsubr_type'.
917 (scm_set_smob_apply): New function.
918 (scm_smob_apply_0, scm_smob_apply_1, scm_smob_apply_2,
919 scm_smob_apply_3): New functions.
920 * eval.c (SCM_CEVAL, SCM_APPLY): Added dispatch for applicable smobs.
28819f62 921 * procs.c (scm_procedure_p): Check applicable smobs.
14fb1c83 922
665fc4e6
MD
9232000-08-24 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
924
925 * Makefile.am (BUILT_SOURCES): Experimentally added scmconfig.h
926 also here. (This is supposed to make sure that scmconfig.h is
927 built before all sources in order to prevent that everything has
928 to be rebuilt again. Hope it works---I'm just guessing. :)
929
930 * fluids.c (scm_fluid_set_x): Return SCM_UNSPECIFIED.
931
38525772
MD
9322000-08-23 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
933
934 * gc.c (scm_gc_mark): Don't use GUILE_DEBUG flag to compile in
935 extra tests. (GUILE_DEBUG is only supposed to make extra
936 debugging functions available.)
937
ca55e62c
ML
9382000-08-21 Michael Livshin <mlivshin@bigfoot.com>
939
940 * gc.h (SCM_GC_CARD_N_CELLS): change to be a nice non-confusing
941 constant.
942
005b5978
ML
9432000-08-19 Michael Livshin <mlivshin@bigfoot.com>
944
d8d4d493
ML
945 * gc.c (scm_gc_sweep): added a `continue' statement that have
946 fallen through the cracks in the merge. thanks to Shuji Narazaki!
947
005b5978
ML
948 * gc.h: removed some stuff that broke compilation for people and
949 wasn't actually needed anyway.
950
cdbc7418
NJ
9512000-08-18 Neil Jerram <neil@ossau.uklinux.net>
952
55892d87
NJ
953 * filesys.c (scm_fcntl): Docstring fix - missing newlines inserted.
954
d46e4713
NJ
955 * net_db.c (scm_gethost, scm_getnet, scm_getproto, scm_sethost,
956 scm_setnet, setproto, setserv): Argument names changed to match
957 doc string.
005b5978 958
d46e4713
NJ
959 * feature.c (scm_program_arguments): New docstring.
960
961 * simpos.c (scm_getenv): Reflow docstring.
962
cdbc7418
NJ
963 * eq.c (scm_eq_p, scm_eqv_p, scm_equal_p): Add texinfo markup to
964 docstrings.
005b5978 965
cdbc7418
NJ
966 * chars.c (scm_char*): Docstring fixes - texinfo markup.
967
9682000-08-18 Neil Jerram <neil@ossau.uklinux.net>
969
970 * boolean.c (scm_not, scm_boolean_p): Docstring fixes - add
971 texinfo markup and remove trailing newlines.
972
dc16aa36
ML
9732000-08-17 Michael Livshin <mlivshin@bigfoot.com>
974
975 this changes the Guile GC to use cards (aka "chunklets").
005b5978 976 (most of the ideas and some of the code are by Greg Harvey, though
bbe6d8db
ML
977 the code is probably unrecognizable now. the original chunklet
978 proposal, way back, is by Dale Jordan).
dc16aa36
ML
979
980 * tags.h: (SCM_GCTYPE16, SCM_GCCDR, SCM_GC[8]MARKP,
981 SCM_SETGC[8]MARK, SCM_CLRGC[8]MARK): moved from here into gc.h.
982 some (most) of these are probably going to be deprecated.
983
984 * gc.h (SCM_MARKEDP): simplified, there are no different mark bit
985 locations anymore.
986 (SCM_GC_CARD_*, SCM_C_BVEC_*): lots of new macros to deal with
987 cards and bvecs (bit-vectors).
988
989 * gc.c: (scm_default_init_heap_size_*): defined to take cards into
990 account, but keeping more or less the same values as previously.
991 added some simple helper macros.
992 (CLUSTER_SIZE_IN_BYTES, ALIGNMENT_SLACK): defined to take cards
993 into account.
994 (BVEC_*, scm_mark_space_t, current_mark_space, mark_space_ptr,
995 current_mark_space_offset, mark_space_head, get_bvec,
996 clear_mark_space): new functions and supporting variables, types
997 and macros that implement mark space management.
998 (scm_igc): clear the mark space (all of it) before beginning the
999 mark phase.
1000 (scm_gc_mark): changed the tests for rogue cells, much simplified
1001 throughout (no different mark bit locations to worry about now).
1002 (scm_mark_locations): don't consider card header cells.
1003 (scm_cellp): ditto.
1004 (scm_gc_sweep): simplified.
1005 (init_heap_seg): changed to take cards into account.
1006
83238bc1
ML
10072000-08-16 Michael Livshin <mlivshin@bigfoot.com>
1008
1009 * stime.c (scm_c_get_internal_run_time): new function, same as
1010 scm_get_internal_run_time but returns a long. it's used by the GC
1011 for timekeeping, since with scm_get_internal_run_time there is a
1012 (extremely theoretical) possibility of consing.
1013 (scm_get_internal_run_time): redefined in terms of
1014 scm_c_get_internal_run_time.
1015
1016 * stime.h: added prototype for scm_c_get_internal_run_time.
1017
1018 * gc.c (scm_gc_stats): add more obscure stats, such as: mark time,
1019 sweep time, total marked cells, total swept cells, and number of
1020 times GC was invoked.
1021 (gc_start_stats): renamed from scm_gc_start, made static, taught
1022 to init the new stats.
1023 (gc_end_stats): renamed from scm_gc_end, made static, taught to
1024 calculate the new stats.
1025 (scm_igc): don't call gc_start_stats unless we are sure that we
1026 are indeed going to collect. also, added some timekeeping between
1027 the mark and sweep phases.
1028 (scm_gc_sweep): count number of cells we sweep as we go.
1029
1030 * gc.h: removed prototypes for scm_gc_{start,end}.
1031
a94da0e0
MD
10322000-08-13 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
1033
1034 * alist.c (scm_assq, scm_assv, scm_assoc): Report argument type
1035 error for the alist rather than the sublist where the type
1036 mismatch is discovered.
1037
2a2a730b
NJ
10382000-08-13 Neil Jerram <neil@ossau.uklinux.net>
1039
1040 * root.c (s_scm_call_with_dynamic_root): Docstring fix - rogue
1041 newline.
83238bc1 1042
f0a7af1a
NJ
10432000-08-12 Neil Jerram <neil@ossau.uklinux.net>
1044
2a2a730b
NJ
1045 * numbers.c (scm_ash): Docstring fix - missing newlines.
1046
1047 * ports.c (scm_port_filename): Docstring fix - missing newline.
1048
1049 * strports.c (scm_eval_string): Docstring fix - missing newline.
1050
ee826bae
NJ
1051 * vports.c (s_scm_make_soft_port): Docstring updated so that
1052 example is correct.
1053
1670bef9
NJ
1054 * strop.c: Docstring fixes - quotation marks and backslashes
1055 needed quoting.
1056
f0a7af1a
NJ
1057 * numbers.c (s_scm_logand): Docstring fix - "@end lisp" inserted.
1058
872e0c72
NJ
10592000-08-11 Neil Jerram <neil@ossau.uklinux.net>
1060
1061 * macros.c: Remove surplus newlines from end of docstrings.
1062
1063 * list.c (scm_list_tail): Add @deffnx line to docstring for
1064 list-cdr-ref.
83238bc1 1065
872e0c72
NJ
1066 * keywords.c: Docstring improvements in conjunction with new
1067 reference manual doc on keywords.
1068
1069 * error.c (scm_error_scm): Fix texinfo syntax error in
1070 docstring. (@code(~S) should be @code{~S}.)
1071
1072 * dynl.c: Remove surplus newlines from end of docstrings.
1073
3a33a9b1
MD
10742000-08-11 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
1075
1076 * eval.c (scm_eval): Backward incompatible change: Now takes an
1077 environment specifier as second arg. `eval' hereby becomes R5RS
1078 compatible.
1079 (scm_i_eval_x, scm_i_eval): New functions (replace
1080 scm_eval_3).
1081 (scm_eval2, scm_eval_3): Deprecated.
1082 (scm_top_level_lookup_closure_var): Deprecated.
1083
1084 * eval.h: #include "struct.h".
1085
1086 * evalext.c (scm_definedp): Have to work before module system is
1087 booted.
1088
1089 * modules.h (SCM_MODULEP, SCM_VALIDATE_MODULE,
1090 SCM_MODULE_OBARRAY, SCM_MODULE_USES, SCM_MODULE_BINDER,
1091 SCM_MODULE_EVAL_CLOSURE): New macros.
1092 (scm_module_index_obarray, scm_module_index_uses,
1093 scm_module_index_binder, scm_module_index_eval_closure): New
1094 constants; #include "validate.h".
83238bc1 1095
3a33a9b1
MD
1096 * modules.c (scm_module_tag, scm_module_system_booted_p): New
1097 globals.
1098 (scm_post_boot_init_modules): Initialize scm_module_tag.
1099 (scm_interaction_environment): New primitive.
1100
1101 * symbols.c (scm_can_use_top_level_lookup_closure_var): Removed.
1102 #include "modules.h".
1103
1104 * strports.c (scm_eval_string): Evaluate in
1105 scm_interaction_environment ().
1106
1107 * script.c (scm_shell): Pass scm_the_root_module () as second arg
1108 to new scm_eval_x.
1109
1110 * load.c (load): Use `scm_selected_module' to compute second arg
1111 to new scm_i_eval_x; Don't call it if module system hasn't booted.
1112 (scm_read_and_eval_x): Deprecated.
1113 #include "modules.h".
1114
1115 * debug.c (scm_local_eval): Use scm_i_eval and scm_i_eval_x.
1116 (scm_start_stack): Use scm_i_eval.
1117
1118 * strports.c: #include "modules.h".
1807c7b8
MD
1119
1120 * print.c (scm_simple_format): Be case-insensitive for ~A and ~S
1121 directives.
1122
1a2f1b90
MD
11232000-08-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
1124
1125 The following changes are intended to ensure that struct instances
1126 are freed before their vtables. It's optimized for the most
1127 common case, which is freeing of struct instances.
1128
1129 * gc.c (scm_gc_mark, scm_gc_sweep): Remove vcell = 1 magic.
1130 (scm_structs_to_free): New variable.
1131 (scm_gc_sweep): Hook up structs to free on the scm_structs_to_free
1132 chain.
1133
1134 * struct.h (SCM_STRUCT_GC_CHAIN, SCM_SET_STRUCT_GC_CHAIN): New
1135 macros.
1136 (scm_structs_to_free, scm_struct_prehistory): Declare.
1137
1138 * struct.c (scm_make_struct, scm_make_vtable_vtable): Structs
1139 handles are now double cells; Initialize SCM_STRUCT_GC_CHAIN to
1140 0.
1141 (scm_struct_gc_init, scm_free_structs): New GC C hooks.
1142 (scm_struct_prehistory): Install them.
1143
1144 * init.c (scm_boot_guile_1): Call scm_struct_prehistory.
1145
b054684d
MV
11462000-08-06 Marius Vollmer <mvo@zagadka.ping.de>
1147
1148 * read.c (scm_flush_ws): Include filename in error message when it
1149 is not `#f'.
1150
7ca38734
MV
11512000-08-05 Marius Vollmer <mvo@zagadka.ping.de>
1152
1153 * iselect.c: Include <unistd.h>. Thanks to Bertrand Petit!
1154
b62cc1c2
MD
11552000-08-02 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
1156
89e941f1
MD
1157 * struct.c (scm_make_struct_layout, scm_make_struct,
1158 scm_make_vtable_vtable): Updated documentation.
1159
b62cc1c2
MD
1160 * print.c (scm_simple_format): Bugfix: Coerce port before using
1161 it.
1162
3bc0c6df
GH
11632000-07-31 Gary Houston <ghouston@arglist.com>
1164
cdaf0a20 1165 * net_db.c: declare h_errno only if HAVE_H_ERRNO is not defined
3bc0c6df
GH
1166 (thanks to Richard Kim for the bug report).
1167
3ccd1860
MV
11682000-07-30 Marius Vollmer <mvo@zagadka.ping.de>
1169
1170 * alist.c (scm_assq_remove_x, scm_assv_remove_x,
1171 scm_assoc_remove_x): Use scm_delq1_x instead of scm_delq_x, since
1172 using the latter is pointless.
1173
11102992
DH
11742000-07-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
1175
1176 * gc.c (scm_gc_sweep): Renamed local variable from 'free' to
1177 'free_struct_data' to avoid confusion with stdlib's 'free'.
1178
a75923bb
DH
11792000-07-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
1180
1181 * vectors.c (scm_make_vector): Fix the initialization order of
1182 the vector such that the type cell is initialized last.
1183
f7620510
DH
11842000-07-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
1185
1186 * struct.[ch] (scm_struct_init): Made static. Fixed not to rely
1187 on the struct cell to be fully initialized.
1188
1189 * struct.c (scm_make_struct, scm_make_vtable_vtable): Fix the
1190 initialization order of the struct such that the type cell is
1191 initialized last.
1192
17dd060d
MV
11932000-07-25 Marius Vollmer <mvo@zagadka.ping.de>
1194
1195 * alist.c (scm_assq_remove_x, scm_assv_remove_x,
1196 scm_assoc_remove_x): Remove only the first cell with a matching
1197 key, not all.
1198
b73bde31
MV
11992000-07-24 Marius Vollmer <mvo@zagadka.ping.de>
1200
1201 * stime.c (scm_strftime): Recognize a return value of zero from
1202 strftime as buffer overflow and take care to detect a valid zero
1203 length result regardless. Thanks to David Barts!
1204
e85da7d9
MV
12052000-07-23 Marius Vollmer <mvo@zagadka.ping.de>
1206
1207 * alist.c (scm_assq_remove_x, scm_assv_remove_x,
1208 scm_assoc_remove_x): Remove all cells whose key is eq, eqv, or
1209 equal (respectively) to the argument key, not all cells that are
1210 eq, eqv, or equal to the first cell with the argument key. Thanks
1211 to Neil Jerram!
83238bc1 1212
78a3503e
DH
12132000-07-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1214
1215 * gc.h (SCM_FREE_CELL_CDR, SCM_SET_FREE_CELL_CDR), hooks.c
1216 (make_hook), modules.c (OBARRAY, USES, BINDER): Pack and unpack
1217 SCM values appropriately.
1218
1219 * modules.c (scm_standard_eval_closure): Don't pass an inum to
1220 scm_makcclo, but rather a long value.
1221
62850ef3
DH
12222000-07-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1223
1224 read.c (scm_lreadrecparen), srcprop.c (scm_set_source_property_x):
1225 SCM_SETCDR and SCM_WHASHSET macros don't deliver a return value.
1226 Thanks to Han-Wen Nienhuys for the bug report.
1227
cc4feeca
DH
12282000-07-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1229
1230 * root.[ch] (scm_call_catching_errors): Deprecated.
1231
1232 * root.c (scm_init_root): Initialize the root smob type using the
1233 standard initialization functions.
1234
007e7c35
MV
12352000-07-17 Marius Vollmer <mvo@zagadka.ping.de>
1236
1237 * eval.c (unmemocopy): Don't rely on V being a list of at least
1238 one element. Thanks to Bill Schottstaedt!
1239
9d47a1e6
ML
12402000-07-15 Michael Livshin <mlivshin@bigfoot.com>
1241
1242 * gc.c (scm_done_free): new.
1243 expanded comments about scm_done_malloc.
1244
1245 * gc.h: added prototype for scm_done_free
1246
406c7d90
DH
12472000-07-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
1248
1249 * gc.h (scm_take_stdin): Removed.
1250
1251 * gc.h (SCM_VALIDATE_CELL): Delegate cell checks to function
1252 scm_assert_cell_valid to allow extensions to the checking
1253 functionality without need to recompile everything.
1254
1255 * gc.[ch] (scm_assert_cell_valid, scm_set_debug_cell_accesses_x):
1256 Added as conditionally compiled functions for the case that
1257 SCM_DEBUG_CELL_ACCESSES is enabled.
1258
1259 * gc.c (debug_cells_p): Added to indicate whether compile-time
1260 included cell access debugging is run-time enabled.
1261
1262 * gc.[ch] (scm_gc_running_p): Added to indicate that scm_igc is
1263 being executed. Intended to be used instead of scm_gc_heap_lock
1264 at most places.
1265
1266 * error.c (scm_error), gdbint.c (SCM_GC_P): Use scm_gc_running_p
1267 instead of scm_gc_heap_lock.
1268
1269 * gc.c (scm_igc): Set scm_gc_running_p to true while running.
1270
1271 * gc.c (scm_mark_locations): Don't mark free cells.
1272
1273 * weaks.c (scm_scan_weak_vectors): Use SCM_FREE_CELL_P instead of
1274 SCM_FREEP.
1275
c4da09e2
DH
12762000-07-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
1277
1278 * gc.c (scm_mark_locations): Minimized some variable scopes and
1279 simplified the code a bit.
1280
3f5d82cd
DH
12812000-07-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
1282
1283 * gc.h (SCM_SET_FREE_CELL_TYPE, SCM_SET_FREE_CELL_CDR,
1284 SCM_FREE_CELL_P, SCM_FREE_CELL_CDR): Added since free cells
1285 should not be accessed via SCM_C[AD]R. Further, using dedicated
1286 macros to access free cells allows all other cell accessing macros
1287 to treat acesses to free cells as errors, thus enabling better
1288 error checks for cell accesses. SCM_FREE_CELL_P is supposed to
1289 replace SCM_FREEP some time.
1290
1291 * gc.h (SCM_NEWCELL, SCM_NEWCELL2), gc.c (map_free_list,
1292 free_list_length, scm_check_freelist, scm_debug_newcell,
1293 scm_debug_newcell2, freelist_length, scm_gc_for_newcell,
1294 scm_gc_mark, scm_gc_sweep, init_heap_seg): Only use the dedicated
1295 cell accessors when accessing free cells.
1296
f706a58b
DH
12972000-07-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
1298
1299 * gc.h (SCM_CELL_WORD, SCM_CELL_OBJECT): Treat the referenced
1300 object as const in order to make the compiler warn about code like
1301 SCM_CELL_WORD (x, n) = y. Instead, SCM_SET_CELL_WORD (x, n, y)
1302 should be used.
1303
1304 (SCM_CELL_WORD_LOC, SCM_CARLOC, SCM_CDRLOC): Return the address
1305 as an address to a non-const object, since these macros are used
1306 to allow direct write access to objects.
1307
cbaadf02
DH
13082000-07-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
1309
1310 * hashtab.c (scm_hash_fn_create_handle_x): Signal an error if the
1311 given hash table has no slots.
1312
a6c12a04
DH
13132000-07-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
1314
b6efc951
DH
1315 * gc.c (policy_on_error): Added in order to allow alloc_some_heap
1316 to react to malloc failures in a context dependent way.
1317
1318 (scm_check_freelist): No need to flush streams before abort().
1319
1320 (scm_gc_for_newcell): Try to allocate new memory in three phases:
1321 grow heap if preferred, if still no memory available collect
1322 garbage, if still no memory available grow heap.
1323
1324 (heap_segment_table_size): Added to always reflect the actual
1325 size of the heap segment table, because scm_n_heap_segs may differ
1326 from the heap segment table size.
1327
1328 (alloc_some_heap): In case of malloc failure, react according to
1329 the new policy_on_error parameter (either return to caller or
1330 abort immediately). Further, keep heap_segment_table_size up to
1331 date.
1332
1333 (scm_init_storage): Initialize heap_segment_table_size.
1334
13352000-07-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
1336
1337 * gh.h: Don't include <stdio.h>. Thanks to Han-Wen Nienhuys for
a6c12a04
DH
1338 the hint.
1339
b63a956d
DH
13402000-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
1341
1342 * __scm.h (SCM_OUTOFRANGE, SCM_NALLOC, SCM_HUP_SIGNAL,
1343 SCM_INT_SIGNAL, SCM_FPE_SIGNAL, SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL,
1344 SCM_ALRM_SIGNAL, SCM_GC_SIGNAL, SCM_TICK_SIGNAL, SCM_SIG_ORD,
1345 SCM_ORD_SIG, SCM_NUM_SIGS): Re-introduce these as deprecated
1346 symbols.
1347
1348 * error.c (scm_wta): Re-introduce dispatching for SCM_OUTOFRANGE
1349 and SCM_NALLOC, but as a deprecated feature.
1350
a75a7aff
MD
13512000-06-30 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1352
38ec519c
MD
1353 * debug.c: Added #include fluids.h.
1354
a75a7aff
MD
1355 * numbers.c (scm_gr_p, scm_leq_p, scm_geq_p): Turned into
1356 primitive generics. (Thanks to Nicolas Neuss.)
1357
c7387918
DH
13582000-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
1359
1360 * gc.c (alloc_some_heap): Use scm_memory_error to indicate a
1361 failed attempt to get additional memory from the system.
1362
1363 (scm_gc_for_newcell): Changed the control structure to make the
1364 behaviour explicit for the case that gc is not able to free any
1365 cells.
1366
685c0d71
DH
13672000-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
1368
1369 * __scm.h (SCM_OUTOFRANGE): Removed.
1370
1371 * error.c (scm_wta): Removed sick dispatch code for range
1372 errors. (More sick dispatches still to be removed.)
1373
1374 * hashtab.c (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x,
1375 scm_hash_fn_remove_x): Eliminate redundant test for if unsigned
1376 value is non-negative. Use scm_out_of_range to signal range
1377 errors.
1378
1379 * hooks.c (make_hook), unif.c (scm_aind): Use scm_out_of_range to
1380 signal range errors.
1381
1382 * list.c (scm_list_ref, scm_list_set_x, scm_list_cdr_set_x): Fix
1383 error reporting (now uses original input parameter to report wrong
1384 type argument errors). Use SCM_OUT_OF_RANGE to report range
1385 errors and SCM_WRONG_TYPE_ARG to report type errors.
1386
1387 * strings.c (scm_substring): Make range checks for negative
1388 values explicit (former behaviour relied on an implicit
1389 conversion from signed to unsigned). Don't use SCM_ASSERT for
1390 range checks.
1391
1392 * unif.c (scm_aind, scm_transpose_array, scm_bit_set_star_x,
1393 scm_bit_count_star): Use scm_out_of_range to signal range
1394 errors.
1395
1396 * unif.c (scm_transpose_array, scm_bit_position), vectors.c
1397 (scm_vector_ref, scm_vector_set_x, scm_vector_move_left_x,
1398 scm_vector_move_right_x): Use SCM_ASSERT_RANGE to check ranges.
1399
fdf25853
DH
14002000-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
1401
1402 * validate.h (SCM_VALIDATE_INUM_MIN_COPY,
1403 SCM_VALIDATE_INUM_MIN_DEF_COPY, SCM_VALIDATE_INUM_RANGE_COPY):
1404 Perform all range checks based on the input value. The former way
1405 of using the value that is assigned to the target variable fails
1406 if the assignment to the target variable itself can change the
1407 value because of type conversion.
1408
1409 (SCM_ASSERT_RANGE): Use scm_out_of_range to signal range errors.
1410
627df128
MD
14112000-06-30 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1412
1413 * gc.c (scm_gc_for_newcell): Behave gracefully also if scm_igc
1414 doesn't yield any new cells. In theory this could happen if all
1415 cells allocated with NEWCELL are either in use or conservatively
1416 marked and all cluster spine cells are conservatively marked.
1417 (Thanks to Dirk.)
1418
2500356c
DH
14192000-06-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
1420
1421 * __scm.h (SCM_NALLOC): Removed.
1422
1423 * error.c (scm_wta): Removed sick dispatch code for memory
1424 errors. (More sick dispatches still to be removed.)
1425
1426 * numbers.c (scm_mkbig, scm_adjbig), ports.c (scm_make_port_type),
1427 random.c (scm_i_copy_rstate, scm_c_make_rstate), smob.c
1428 (scm_make_smob_type), srcprop.c (scm_make_srcprops), vectors.c
1429 (scm_vector_set_length_x): Now using scm_memory_error to signal
1430 memory errors.
1431
9b166f12
DH
14322000-06-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
1433
1434 * __scm.h: Removed some commented code and fixed some comments.
1435
1436 (SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL, SCM_BUS_SIGNAL,
1437 SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL, SCM_TICK_SIGNAL,
1438 SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS): Removed.
1439
1440 * async.c: Removed some commented code.
1441
acf4331f
DH
14422000-06-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
1443
1444 * gc.c (scm_gc_mark, scm_gc_sweep, scm_must_malloc,
1445 scm_must_realloc, scm_must_free, alloc_some_heap): Use the
1446 appropriate error signalling function.
1447
fc3d7778
DH
14482000-06-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
1449
1450 * root.h (scm_first_type): Removed.
1451
14522000-06-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
0a7a7445
DH
1453
1454 * gc.c (MIN_GC_YIELD): Removed.
1455
150c200b
ML
14562000-06-28 Michael Livshin <mlivshin@bigfoot.com>
1457
1458 * gc.c (scm_gc_for_newcell): don't try to do GC if it's blocked,
1459 allocate instead.
1460
939794ce
DH
14612000-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
1462
1463 * async.c (scm_gc_async, scm_gc_vcell, scm_sys_gc_async_thunk):
1464 Moved to gc.c.
1465
1466 (scm_init_async): Moved initialization for scm_gc_async and
1467 scm_gc_vcell to gc.c. Moved initialization of scm_asyncs here
1468 from gc.c.
1469
1470 * async.h (scm_gc_async): Not globally visible any more.
1471
1472 * gc.c (scm_gc_stats): Made callable even from within regions
1473 where gc is blocked.
1474
1475 (scm_gc_end): Eliminate the hardcoding of the marking of the
1476 scm_gc_async from the gc core.
1477
1478 (scm_init_storage): Don't initialize the scm_asyncs list here.
1479 This is now done in asyncs.c.
1480
1481 (scm_gc_vcell): Moved here from async.c.
1482
1483 (gc_async): Renamed from scm_gc_async, moved here from async.c
1484 and made static.
1485
1486 (gc_async_thunk): Renamed from scm_sys_gc_async_thunk and moved
1487 here from async.c.
1488
1489 (mark_gc_async): New hook function for scm_after_gc_c_hook.
1490
1491 (scm_init_gc): Added initialization of scm_gc_vcell and
1492 gc_async. Further, add mark_gc_async to scm_after_gc_c_hook.
1493
1494 * init.c (scm_boot_guile_1): scm_init_gc requires asyncs to be
1495 initialized.
1496
12acbbef
DH
14972000-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
1498
1499 * gc.c (scm_igc): Removed commented code that once was intended
1500 to unprotect struct types with no instances.
1501
1502 * root.h (scm_type_obj_list): Removed.
1503
73ea78af
DH
15042000-06-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
1505
1506 * async.c (scm_init_async): Switch to standard way of smob
1507 initialization.
1508
7f40b48a
ML
15092000-06-21 Michael Livshin <mlivshin@bigfoot.com>
1510
1511 * guile-doc-snarf.in: use cut instead of sed, that's much much
83238bc1
ML
1512 faster. also, don't call basename more than needed. and, to gain
1513 a couple of microseconds more, don't call cat needlessly. (thanks
7f40b48a
ML
1514 to Brad Knotwell).
1515
3c6d9d71
DH
15162000-06-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1517
1518 * guile-snarf.awk.in, guile-snarf.in, snarf.h: Rename SCM__I to
1519 SCM_SNARF_INIT_START, SCM__D to SCM_SNARF_DOC_START, SCM__S to
1520 SCM_SNARF_DOCSTRING_START and SCM__E to SCM_SNARF_DOCSTRING_END.
1521
2b6e0d2b
MD
15222000-06-21 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1523
1524 * eval.c, eval.h (scm_top_level_lookup_closure_var): Added.
1525 #include "libguile/fluids.h".
1526
1527 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): New macro which replaces
1528 SCM_CDR (scm_top_level_lookup_closure_var) everywhere.
1529
1530 * root.h (scm_top_level_lookup_closure_var,
1531 scm_system_transformer): Removed. (It's no sense in having the
1532 *variable* be a "fluid".)
1533
1534 * root.c (mark_root): Removed marking of
1535 s->top_level_lookup_closure_var and s->system_transformer.
1536
1537 * modules.c (scm_selected_module): the_module is now a fluid.
1538
5bc9cbd2
MD
15392000-06-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1540
1541 * gc.h, tags.h: Be kind to compilers which must see hash signs in
1542 column 0. (Thanks to Ian Grant.)
1543
1544 * numbers.h: Put #ifdef HAVE_LONG_LONGS around declarations using
1545 the long_long type. (Thanks to Bernard Urban.)
1546
b5074b23
MD
15472000-06-20 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1548
1549 * gc.c, gc.h (scm_default_init_heap_size_1,
1550 scm_default_min_yield_1, scm_default_init_heap_size_2,
1551 scm_default_min_yield_2, scm_default_max_segment_size): New global
1552 variables. Can be customized by the application before booting
1553 Guile. (We might want to be able to control these parameters
1554 dynamically through the "options interface" in the future, but
1555 note that that is additional functionality. Here we're giving
1556 default values which the environment variables can override.)
1557
1558 * list.c (scm_cons_star): Updated comment.
1559
1560 * smob.h: Changed comments for scm_make_smob_type and
1561 scm_make_smob_type_mfpe, warning that the latter might be
1562 deprecated in a future release.
1563
0a9e521f
MD
15642000-06-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
1565
1566 * list.[ch] (scm_cons_star/cons*): Renamed from
1567 scm_list_star/list*.
1568
1569 * list.[ch] (scm_list_star/list*): Provided as a deprecated alias
1570 for scm_cons_star/cons*.
1571
1572 * gc.c (scm_protect_object): Updated comment.
1573
1574 * numbers.h (SCM_NEWREAL, SCM_NEWCOMPLEX): Removed.
1575
1576 * tags.h (SCM_UNPACK_CAR, SCM_NDOUBLE_CELLP): Removed.
1577
264871aa
MD
15782000-06-19 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1579
1580 * init.c, init.h (scm_initialized_p): Renamed from `initialized'
1581 and made global.
1582
1583 * gdbint.c (gdb_print): Print warning instead of calling scm_write
1584 if Guile isn't yet initialized.
1585
1586 * print.c (scm_current_pstate, scm_make_print_state): Simplified
1587 tests, using the assumption that Guile has been initialized.
1588
3785f317
GB
1589Sun Jun 18 14:45:21 2000 Greg J. Badros <gjb@cs.washington.edu>
1590
1591 * print.c (s_scm_current_pstate): Do not segfault when the
1592 print_state_pool is unitialized in `current-pstate', and better
1593 verify its state before altering it in scm_make_print_state().
1594
6732de1b
ML
15952000-06-18 Michael Livshin <mlivshin@bigfoot.com>
1596
1597 * scmsigs.c (s_scm_sigaction): guard the SIGIOT case with an
1598 #ifdef -- it's missing on at least one platform. (thanks to
1599 Jan Nieuwenhuizen).
1600
79494f15
DH
16012000-06-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
1602
1603 * list.c (list*): Added documentation from common-list.scm.
1604
6a199940
DH
16052000-06-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
1606
1607 * gc.c (scm_unprotect_object): The reference count is guaranteed
1608 to be a positive number.
1609
3243bcc0
MD
16102000-06-15 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1611
1612 * eval.c: Updated comment above scm_map.
1613
26c9c3ce
MD
16142000-06-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1615
1616 * gc.c (scm_protect_object): Avoid looking up the object handle
1617 twice.
1618 (scm_unprotect_object): Abort if scm_unprotect_object is called on
1619 an unprotected object.
1620
2dd6a83a
ML
16212000-06-14 Michael Livshin <mlivshin@bigfoot.com>
1622
1623 * gc.c (scm_unprotect_object): fix a nasty typo bug (thanks to
1624 Dirk Herrmann).
1625
97ebbbca
MD
16262000-06-14 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1627
43fbd20f
MD
1628 * socket.c (scm_getsockopt): Changed type for `optlen' from int to
1629 size_t.
1630 (scm_accept, scm_getsockname, scm_getpeername, scm_recvfrom):
1631 Ditto for `tmp_size'.
1632 (scm_addr_buffer_size): Changed type from int to size_t.
1633
1634 * random.c: #include <string.h>. (Needed by memcpy.)
1635
97ebbbca
MD
1636 * guile-snarf.awk.in: Replace the dot_doc_file arg with "-",
1637 indicating stdin, instead of "" and don't reset ARGC. This is a
1638 workaround for `nawk' in AIX 4.3 on RS6000 but, as far as I know,
1639 it is correct, and perhaps even better.
1640
14d72d48
GH
16412000-06-14 Gary Houston <ghouston@arglist.com>
1642
1643 * scmsigs.c (scm_init_scmsigs): if HAVE_SIGINTERRUPT is not
1644 defined, add SA_RESTART to the sigaction flags correctly
1645 (thanks to Dale P. Smith).
1646
d99783cb
MD
16472000-06-13 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1648
010d1e9d
MD
1649 * strings.c: #include <string.h>. (Thanks to Bill Schottstaedt.)
1650
1651 * net_db.c (scm_resolv_error): Only use macro NETDB_INTERNAL if
1652 defined. It isn't on sgi irix 5.3. (Thanks to Bill Schottstaedt.)
1653
d99783cb
MD
1654 * Makefile.am (.c.doc): Pipe output (the .x contents) to /dev/null.
1655
c47e8cc1
MD
16562000-06-13 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1657
e36a0870
MD
1658 * fports.c (scm_setvbuf): Use `free' instead of `scm_must_free'
1659 since read and write buffers are allocated by `malloc'.
1660
c47e8cc1
MD
1661 * Makefile.am: Removed old test code.
1662
1663 * gh_test_c.c, gh_test_repl.c: Removed.
1664
341f78c9
MD
16652000-06-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1666
a8861fa0
MD
1667 * iselect.c (SCM_NLONGBITS): Add workaround for the Sun 4.2
1668 compiler.
1669
1670 * inet_aton.c (inet_aton): Cast init value for `cp'.
1671
1672 * ramap.c (s_scm_array_fill_x): Cast `ve' properly in case
1673 `scm_tc7_uvect'.
1674
1675 * symbols.c (scm_intern_obarray_soft,
1676 scm_sysintern0_no_module_lookup): Cast `name' to unsigned char ptr
1677 in calls to scm_strhash.
1678
1679 * strports.c (st_resize_port): Substituted SCM_UCHARS for
1680 SCM_CHARS.
1681 (st_write): Cast argument to strncpy to char ptr.
1682 (scm_mkstrport): Substituted SCM_ROUCHARS for SCM_ROCHARS.
1683 (scm_strport_to_string): Cast argument to scm_makfromstr to char
1684 ptr.
1685
1686 * ports.c (scm_ungetc): Cast value to unsigned char ptr before
1687 storing in putback_buf.
1688 (scm_unread_string): Substituted SCM_ROCHARS for SCM_ROUCHARS.
1689
1690 * ioext.c (s_scm_read_line): Cast result of call to
1691 scm_do_read_line to unsigned char ptr.
1692
d230c130
MD
1693 * gdbint.c (SEND_STRING): Cast argument to char pointer.
1694
1695 * fports.c (fport_flush): Declare `ptr' as unsigned char (was
1696 char).
1697
9c8dca4e
MD
1698 * Makefile.am (DOT_DOC_FILES): List doc-files explicitly. (We
1699 shouldn't use Make rules which aren't supported by most Make
1700 programs.)
d230c130
MD
1701 (OMIT_DEPENDENCIES): Defined to "libguile.h ltdl.h". (We don't
1702 want these dependencies recorded, since they would get bogus
1703 relative paths; libguile.h is only used in gh.h and guile.c.)
9c8dca4e
MD
1704 (EXTRA_DOT_X_FILES, EXTRA_DOT_DOC_FILES): New variables.
1705 (guile-procedures.txt): Depend on EXTRA_DOT_DOC_FILES.
1706 (modinclude_HEADERS): Removed kw.h.
1707
69fc343a
MD
1708 * guile-snarf.in: Change regexp "^SCM__I" --> "^ *SCM__I".
1709 (The preprocessor might insert spaces before the identifier.)
1710
341f78c9
MD
1711 * snarf.h (SCM_SNARF_HERE, SCM_SNARF_INIT, SCM_SNARF_DOCS):
1712 Renamed from SCM_HERE, SCM_INIT, SCM_DOCS.
1713
1714 * smob.h (scm_smobfuns): Removed deprecated type.
1715
1716 * smob.c, smob.h (scm_newsmob): Removed deprecated function.
1717 (Replaced by `scm_make_smob_type'.)
1718
1719 * keywords.c (scm_tc16_kw): Removed deprecated type.
1720 (Replaced by scm_tc16_keyword.)
1721
341f78c9
MD
1722 * kw.h: Removed deprecated header file.
1723
1724 * evalext.c (serial-map): Removed deprected alias for scm_map.
1725 (Has been replaced by `map-in-order'.)
1726
1727 * ramap.c (serial-array-copy!, serial-array-map!): Removed
1728 depracted aliases. (Replaced by `array-copy-in-order!' and
1729 `array-map-in-order'.)
1730
4f60fa74
MD
17312000-06-11 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1732
1733 * gc.h (SCM_VALIDATE_CELL): Rewritten.
1734 (SCM_CELL_WORD, SCM_CELL_OBJECT, SCM_SET_CELL_WORD,
1735 SCM_SET_CELL_OBJECT): Use new version of SCM_VALIDATE_CELL.
1736 (Thanks to Han-Wen Nienhuys.)
1737
adb2c53b
ML
17382000-06-10 Michael Livshin <mlivshin@bigfoot.com>
1739
1740 * guile-doc-snarf.in: don't pipe the CPP output right into sed --
1741 write it to the temp file first and check the CPP return code.
1742 (I introduced this bug earlier, and this probably caused people
1743 with non-GNU C preprocessors to get empty *.x files and not to
1744 have the build fail right away...).
1745
1746 * scmsigs.c (s_scm_sigaction): guard the SIGSYS case with an ifdef
1747 -- at least my libc5-based Linux system doesn't define SIGSYS.
1748
0abbd8f4
MD
17492000-06-08 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1750
aa169af8
MD
1751 * snarf.h, guile-snarf.awk.in, guile-snarf.in: Replaced snarf
1752 markers with identifiers (SCM__I, SCM__D, SCM__S, SCM__E).
1753 (Thanks to Bernard Urban.)
0abbd8f4 1754
a6596faa
MD
17552000-06-06 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1756
1757 * modules.c (scm_system_module_env_p): Fixed detection of system
1758 modules.
1759
c29ee3e5
MV
17602000-06-06 Marius Vollmer <mvo@zagadka.ping.de>
1761
1762 * scmsigs.c (scm_sigaction): Silently ignore setting handlers for
1763 `program error signals' because they can't currently be handled by
1764 Scheme code.
1765
2d9cdf4e
DH
17662000-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
1767
1768 * procs.h (SCM_SET_SUBRF): Added.
1769
1770 * procs.c (scm_make_subr_opt): Don't assign to SCM_SUBRF, use
1771 SCM_SET_SUBRF instead. Thanks to Bernard Urban for the bug
1772 report.
1773
4b479d98
DH
17742000-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
1775
1776 * gc.h (SCM_CARLOC, SCM_CDRLOC): Don't take the address of a SCM
1777 value.
1778
1779 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x,
1780 scm_merge_list_step): Don't take the address of SCM_CAR. Use
1781 SCM_CARLOC instead. Thanks to Bernard Urban for the bug report.
1782
9a09deb1
DH
17832000-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
1784
1785 * boolean.h (SCM_TRUE_P): Removed, as people might use it as a
1786 replacement for !SCM_FALSEP.
1787
1788 * backtrace.c (display_error_body), boolean.h (SCM_BOOLP), gc.c
1789 (scm_unhash_name), gh_data.c (gh_module_lookup), load.c
1790 (scm_primitive_load), print.c (scm_simple_format), procs.c
1791 (scm_procedure_documentation), procs.h (SCM_TOP_LEVEL), ramap.c
1792 (scm_array_fill_int), scmsigs.c (scm_sigaction), stacks.c
1793 (narrow_stack, scm_make_stack, scm_stack_id), symbols.c
1794 (scm_string_to_obarray_symbol), throw.c (scm_catch,
1795 scm_lazy_catch, scm_ithrow), unif.c (scm_make_uve, scm_array_p,
1796 scm_array_set_x, scm_bit_set_star_x, scm_bit_count_star),
1797 validate.h (SCM_VALIDATE_BOOL_COPY, SCM_VALIDATE_PROC): Replace
1798 uses of SCM_TRUE_P (x) with SCM_EQ_P (x, SCM_BOOL_T).
1799
2c4fc472
MD
18002000-06-04 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1801
542bfe1d
MD
1802 * eval.c (scm_badformalsp): New static function.
1803 (SCM_CEVAL): Check arguments for procedure-with-setter closures.
1804 (Thanks to Keisuke Nishida.)
1805
2c4fc472
MD
1806 The major reason for Guile's slow loading speed has been the fact
1807 that a chain of Scheme level procedures has been evaluated for
1808 every top-level symbol lookup during the first pass through the
1809 code.
83238bc1 1810
2c4fc472
MD
1811 The following is a kludge which I suggested four years ago, and
1812 which I've repeatedly suggested since. Personally, I've never
1813 been bothered by Guile's slow loading speed, so I thought I would
1814 let someone else do it...
1815
1816 But since the new environments will be included first in
1817 Guile-1.5, I thought it would make people happy to get the kludge
1818 into 1.4.
83238bc1 1819
2c4fc472
MD
1820 * modules.c: Added #include "libguile/vectors.h";
1821 Added #include "libguile/hashtab.h";
1822 Added #include "libguile/struct.h";
1823 Added #include "libguile/variable.h";
1824 Capture Scheme level `module-make-local-var!' to be used in the
1825 standard eval closure.
1826 (scm_standard_eval_closure): New primitive.
1827
1828 * modules.h (scm_standard_eval_closure): Declare.
1829
1830 * eval.c (scm_lookupcar): Test for !SCM_CONSP (SCM_CAR (env))
1831 instead of SCM_TRUE (scm_procedurep (SCM_CAR (env))).
1832
1833 * symbols.c (scm_sym2vcell): Bypass dispatch in the evaluator for
1834 standard eval closures.
1835
1836 * variable.c: Code layout fixes.
1837
96372e45
MD
18382000-06-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1839
1840 * Makefile.am: Added LIBS line to libpath which accidentally
1841 disappeared in the change of 2000-06-01.
1842 (Thanks to Dale P. Smith.)
1843
cc0bb1ef
MD
18442000-06-03 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1845
6784d5c0
MD
1846 * scmsigs.c (scm_segfault): Removed. (Was probably added by
1847 mistake since it is not mentioned in ChangeLog.)
1848
cc0bb1ef
MD
1849 * gc.h (SCM_VALIDATE_CELL): Cast result to (void) in order to
1850 avoid compiler warnings in gcc. (Does this work for other
1851 compilers?)
1852
f8d4d8e5
MD
18532000-06-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1854
4ecf5aa3
MD
1855 * gc.h (SCM_VALIDATE_CELL): Don't "use" the value returned by
1856 abort ().
1857 (SCM_CARLOC, SCM_CDRLOC): Define directly instead of using
1858 SCM_CELL_OBJECT_0 and SCM_CELL_OBJECT_1. It's not correct to take
1859 the address of these expressions since they use SCM_VALIDATE_CELL.
1860 (Thanks to Bernard Urban.)
1861
f8d4d8e5
MD
1862 * dynl.c: Changed #include <ltdl.h> --> #include
1863 "libltdl/ltdl.h". (Thanks to Bill Schottstaedt.)
1864
b6fae158
CB
18652000-06-01 Craig Brozefsky <craig@red-bean.com>
1866
1867 * Makefile.am: libguile_la_LDFLAGS gets -version-info args
1868 from GUILE-VERSION definition of LIBGUILE version. Added to
1869 libpath.h definitions for guileversion and libguileversion which
1870 both get their values from GUILE-VERSION definition.
1871
7272f6d8
DH
18722000-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
1873
1874 * numbers.h (SCM_BIGP): Don't use SCM_SMOB_PREDICATE in header
1875 file: Code using numbers should not be required to include
1876 smob.h.
1877
b2728432
DH
18782000-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
1879
1880 * coop-threads.c.cygnus, coop-threads.h.cygnus, fsu-pthreads.h,
1881 mit-pthreads.c, mit-pthreads.h: Deleted.
1882
1883 * Makefile.am (EXTRA_DIST), scmsigs.c, threads.[ch]: Drop
1884 references to deleted files and fsu/mit thread support in
1885 general.
1886
f8eaf8b9
DH
18872000-05-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
1888
1889 * hooks.c (symbol_name, scm_create_hook): Restored the original
1890 behaviour of scm_create_hook. Changing it was bad as Carl
1891 R. Witty has pointed out.
1892
1893 * gc.c (scm_init_gc): We can still rely on scm_create_hook to
1894 protect the object.
1895
e11f8b42
DH
18962000-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
1897
1898 * gc.c (scm_init_gc): Protect scm_after_gc_hook, since this will
1899 soon not be done by scm_create_hook any longer.
1900
1901 * hooks.c (make_hook, print_hook, scm_create_hook,
1902 scm_make_hook_with_name, scm_make_hook), hooks.h (SCM_HOOK_NAME,
1903 SCM_HOOK_PROCEDURES, SCM_SET_HOOK_PROCEDURES,
1904 scm_make_hook_with_name), init.c (scm_boot_guile_1): Hooks no
1905 longer have names. As an intermediate solution, the name
1906 predicate is emulated via object properties, but use of this
1907 feature is deprecated.
1908
1909 * hooks.h (scm_free_hook): Removed, as it is never defined.
1910
47457e8a
DH
19112000-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1912
894a712b
DH
1913 * numbers.[ch] (SCM_POSFIXABLE, SCM_NEGFIXABLE, SCM_FIXABLE):
1914 Un-deprecated since otherwise user code can't determine whether a
1915 number fits into an inum any longer. The names should be changed
1916 some time, though.
1917
1918 * numbers.c (scm_big2inum): Eliminated use of SCM_UNEGFIXABLE.
1919
1920 * tags.h (SCM_UNPACK_CAR): Deprecated.
1921
19222000-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1923
1924 * filesys.h (SCM_OPDIRP), fluids.h (SCM_FLUIDP, SCM_FLUID_NUM),
47457e8a
DH
1925 fports.h (SCM_OPFPORTP, SCM_OPINFPORTP, SCM_OPOUTFPORTP), hooks.h
1926 (SCM_HOOK_ARITY), keywords.h (SCM_KEYWORDP, SCM_KEYWORDSYM),
83238bc1 1927 numbers.h (SCM_NUMP, SCM_BIGSIGN, SCM_BDIGITS, SCM_NUMDIGS):
47457e8a
DH
1928 Replace SCM_UNPACK_CAR appropriately. Don't access cells via
1929 SCM_{SET}?C[AD]R unless they are known to be cons cells.
1930
1931 * gc.c (scm_heap_seg_data_t, scm_mark_locations, scm_cellp,
1932 init_heap_seg): Remove unused struct member variable 'valid'.
1933
f9a64404
DH
19342000-05-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
1935
1936 * fports.c (fport_write), ports.c (scm_markstream, scm_port_mode,
1937 scm_print_port_mode), ports.h (SCM_OPPORTP, SCM_OPINPORTP,
1938 SCM_OPOUTPORTP, SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP),
1939 procs.h (SCM_CLOSCAR), unif.h (SCM_ARRAY_NDIM, SCM_ARRAY_CONTP),
1940 variable.h (SCM_VARIABLEP): Replace SCM_UNPACK_CAR
1941 appropriately.
1942
206d3de3
DH
19432000-05-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
1944
1945 * gc.c (free_list_length), hash.c (scm_hasher), macros.c
1946 (scm_macro_type), objects.c (scm_class_of), options.c
1947 (scm_options), print.c (scm_iprin1), strports.c (st_seek), throw.c
1948 (SCM_LAZY_CATCH_P): Replace SCM_UNPACK_CAR appropriately.
1949
445f675c
DH
19502000-05-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
1951
1952 * eval.c (scm_macroexp, SCM_CEVAL, scm_force), tags.h: Replace
1953 SCM_UNPACK_CAR with SCM_CELL_TYPE or SCM_CELL_WORD_0.
1954
1955 * eval.c (scm_force): Add documentation.
1956
1957 * eval.c (scm_force, scm_cons_source): Don't access cells via
1958 SCM_{SET}?C[AD]R unless they are known to be cons cells.
1959
6ba93e5e
DH
19602000-05-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
1961
1962 * strings.h (SCM_NSTRINGP, SCM_NRWSTRINGP), tags.h
1963 (SCM_NDOUBLE_CELLP), vectors.h (SCM_NVECTORP): Deprecated.
1964
1965 * gc.c (scm_igc), gc.h (SCM_PTR_MASK, SCM_PTR_LT): Removed #ifdef
1966 nosve #endif conditionally compiled code.
1967
fe517a7d
ML
19682000-05-23 Michael Livshin <mlivshin@bigfoot.com>
1969
1970 * gc.c (scm_heap_seg_data_t): fixed comment for the `span' member.
1971
a564e775
ML
19722000-05-22 Michael Livshin <mlivshin@bigfoot.com>
1973
1974 * guile-doc-snarf.in: put the preprocessed file through sed to
cf00e803
ML
1975 trim all lines to 1024 chars. I hope it doesn't break anybody's
1976 sed. we'll see. (note: this is lossy trimming, i.e. the spill
1977 isn't wrapped around but actually chopped off. this seemed to me
1978 safe because the current snarfer doesn't understand multi-line
1979 cookies anyway. in the long term, it would be nice not to depend
1980 on AWK for anything.)
a564e775 1981
83238bc1 1982 * gc.h (SCM_[SET_]CELL_{WORD,OBJECT}, SCM_VALIDATE_CELL): reverted
a564e775
ML
1983 the previous change to this macros, after deciding to torture the
1984 snarfer instead.
1985
686765af
ML
19862000-05-21 Michael Livshin <mlivshin@bigfoot.com>
1987
1988 * gc.h (SCM_[SET_]CELL_{WORD,OBJECT}, SCM_VALIDATE_CELL): brought
cebd4392
ML
1989 the yucky, ugly and nasty conditional compilation back. sorry,
1990 but it was either that or requiring GAWK to build Guile.
1991 (lots of places): removed the code that implemented the old GC
1992 scheme.
686765af
ML
1993
1994 * init.c (scm_boot_guile_1): removed the code conditioned on
1995 !GUILE_NEW_GC_SCHEME.
1996
1997 * __scm.h: (GUILE_NEW_GC_SCHEME): removed.
1998
1999 * gc.c (scm_protect_object, scm_unprotect_object): change the
2000 implementation to more efficient (at least in the time complexity
2001 sense). the calls should now also be thread-safe -- I suspect
2002 that people expect them to be. (thanks to Han-Wen Nienhuys)
cebd4392
ML
2003 (lots of places): removed the code that implemented the old GC
2004 scheme.
686765af
ML
2005
2006 * hashtab.c (scm_hash_fn_create_handle_x): add missing
cebd4392
ML
2007 SCM_REALLOW_INTS before return. I really wonder about the
2008 possible interactions between hashtables, threads & GC. it
83238bc1 2009 doesn't look healthy at all.
686765af 2010
44e47754
DH
20112000-05-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
2012
2013 * unif.c (scm_bit_count): Fixed the parameter checks. Thanks to
2014 Dale P. Smith.
2015
46d53380
DH
20162000-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
2017
2018 * __scm.h (SCM_DEBUG_CELL_ACCESSES), gc.h (SCM_): Added as a new
2019 debug option to verify all accesses to cells actually access
2020 objects on the heap.
2021
2022 * gc.h (SCM_VALIDATE_CELL): Added. Only performs validation if
2023 SCM_DEBUG_CELL_ACCESSES is set to 1.
2024
2025 (SCM_CELL_WORD, SCM_CELL_OBJECT, SCM_SET_CELL_WORD,
2026 SCM_SET_CELL_OBJECT): Use SCM_VALIDATE_CELL to check every cell
2027 that is accessed.
2028
1a548472
DH
20292000-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
2030
2031 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs,
2032 gh_scm2floats, gh_scm2doubles): Change !SCM_NIMP to SCM_IMP.
2033
2034 * gc.c (scm_cellp): Fixed and simplified.
2035
2036 * throw.c (JBJMPBUF, SETJBJMPBUF, SCM_JBDFRAME, SCM_SETJBDFRAME,
2037 make_jmpbuf, scm_init_throw): Now using double cells to represent
2038 jump buffers when using debug extensions.
2039
2040 (freejb): Removed.
2041
bcee10dd
DH
20422000-05-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2043
2044 * gh.h gh_data.c gh_funcs.c (gh_new_procedure*, gh_chars2byvect,
2045 gh_shorts2svect, gh_longs2ivect, gh_ulongs2uvect, gh_floats2fvect,
2046 gh_doubles2dvect, gh_doubles2scm, gh_define, gh_lookup,
2047 gh_module_lookup): Accept const pointers as parameters.
2048
2049 * gh.h gh_data.c (gh_int2scmb): Deprecated.
2050
20512000-05-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
af45e3b0
DH
2052
2053 * __scm.h (SCM_DEBUG_REST_ARGUMENT): Renamed from
2054 SCM_DEBUG_REST_ARGUMENTS in order to clarify that we don't test
2055 the actual arguments in the list, but rather the rest argument as
2056 a list of arguments.
2057
2058 * validate.h (SCM_VALIDATE_REST_ARGUMENT): Added.
2059
2060 * async.c (scm_noop), eval.c (scm_map, scm_for_each), list.c
2061 (scm_list_star, scm_append, scm_append_x), ports.c
2062 (scm_close_all_ports_except), ramap.c (scm_array_map_x,
2063 scm_array_for_each), regex-posix.c (scm_make_regexp), stacks.c
2064 (scm_make_stack), strings.c (scm_string_append), struct.c
2065 (scm_make_struct, scm_make_vtable_vtable): Validate rest arguments.
2066
2067 * dynl.c (DYNL_GLOBAL, sysdep_dynl_link, kw_global, sym_global,
2068 scm_dynamic_link, scm_init_dynamic_linking), dynl.h
2069 (scm_dynamic_link): Removed possibility to pass flags to
2070 scm_dynamic_link, as it had no effect anyway.
2071
2072 * filesys.c (scm_fcntl): Made single optional rest argument into
2073 a standard optional argument.
2074
2075 * hooks.c (scm_run_hook): A list of rest arguments is never
2076 SCM_UNBNDP.
2077
2078 * list.c (scm_append, scm_append_x), stacks.c (scm_make_stack),
2079 strings.c (scm_string_append): Don't perform half-hearted checks
2080 to see whether the rest argument forms a proper list any more, use
2081 SCM_VALIDATE_REST_ARGUMENTS instead.
2082
2083 * ports.c (scm_close_all_ports_except): Accept empty list of rest
2084 arguments.
2085
2086 * posix.c (scm_convert_exec_args), print.c (scm_simple_format):
2087 Simplify verification of rest argument.
2088
2089 * stacks.c (scm_make_stack), stacks.h (scm_make_stack), throw.c
2090 (ss_handler, handler_message): Make first mandatory rest argument
83238bc1 2091 of scm_make_stack into a standard mandatory argument.
af45e3b0
DH
2092
2093 * unif.c (scm_transpose_array, scm_enclose_array,
2094 scm_array_in_bounds_p), unif.h (scm_transpose_array,
2095 scm_enclose_array, scm_array_in_bounds_p): Make first mandatory
2096 rest argument into a standard mandatory argument.
2097
c8a54c4b
DH
20982000-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
2099
2100 * __scm.h: Added SCM_DEBUG as default debug option. (Thanks to
2101 Keisuke Nishida for the suggestion.) Added debug option
2102 SCM_DEBUG_REST_ARGUMENTS.
2103
2104 * eval.c (scm_map, scm_for_each): Make sure all lists have the
2105 same length. Also, removed redundant parameter checks.
2106
56100716
DH
21072000-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2108
2109 * Makefile.am: Let 'make clean' remove *.x and *.doc files.
2110
2111 * __scm.h: Improved explanation of giving options to make.
2112
2113 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS), tags.h
2114 (SCM_STRICT_TYPING, SCM_DEBUG_TYPING_STRICTNESS): Renamed
2115 SCM_STRICT_TYPING to SCM_DEBUG_TYPING_STRICTNESS and moved the
2116 corresponding declaration and comment to __scm.h.
2117
2118 * _scm.h (errno), gc.h (SCM_CELLPTR, SCM_PTR_LT), numbers.c
2119 (scm_remainder, scm_modulo), numbers.h (SCM_SRS, SCM_MAKINUM,
2120 SCM_INUM): Removed conditionally compiled code for Turbo C.
2121
2122 * gdbint.c (gdb_maybe_valid_type_p): Eliminated call to scm_tag.
2123 That check can be assumed to be redundant except for very rare
2124 conditions that actually indicate broken heap data.
2125
3c9f20f8
DH
21262000-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2127
2128 * numbers.c (scm_logcount, scm_integer_length): Reordered
2129 dispatch sequence.
2130
8536a982
GH
21312000-05-15 Gary Houston <ghouston@arglist.com>
2132
2133 * stime.c (scm_strftime): don't reset TZ if zone is an empty
2134 string. append a "0" to the zone for TZ.
c8a54c4b 2135
78166ad5
DH
21362000-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
2137
2138 * numbers.c (scm_logbit_p, scm_bit_extract): Reordered dispatch
2139 sequence.
2140
2141 (scm_bit_extract): Fixed handling of bignums.
2142
f5f2dcff
DH
21432000-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
2144
2145 * async.c (scm_sys_gc_async_thunk), chars.h (SCM_ICHRP, SCM_ICHR,
2146 SCM_MAKICHR), continuations.h (SCM_SETJMPBUF), error.c
2147 (scm_sysmissing), error.h (scm_sysmissing), evalext.c
2148 ('serial-map), ioext.c (scm_fseek), ioext.h (scm_fseek),
2149 keywords.c (scm_tc16_kw, scm_init_keywords), ports.h (SCM_CRDY,
2150 SCM_INPORTP, SCM_OUTPORTP), ramap.c ('serial-array-copy!,
2151 'serial-array-map!), smob.c (scm_newsmob), smob.h (scm_smobfuns,
2152 scm_newsmob), tag.c (scm_tag), tag.h (scm_tag), tags.h
2153 (scm_tc16_flo, scm_tc_flo, scm_tc_dblr, scm_tc_dblc): Wrapped
2154 deprecated code between #if (SCM_DEBUG_DEPRECATED == 0) #endif.
2155
2156 * fports.c (scm_fport_buffer_add), ports.c (scm_input_port_p,
2157 scm_output_port_p), print.c (scm_get_print_state), validate.h
2158 (SCM_VALIDATE_CHAR): Replace use of deprecated macros
2159 SCM_INPORTP, SCM_OUTPORTP, SCM_ICHRP by SCM_INPUT_PORT_P,
2160 SCM_OUTPUT_PORT_P, SCM_CHARP, respectively.
2161
07ccd85d
GH
21622000-05-14 Gary Houston <ghouston@arglist.com>
2163
32f1b9fd
GH
2164 * stime.c (scm_strftime): if HAVE_TM_ZONE is not defined, hack the
2165 TZ environment variable so that the %Z format returns the zone
2166 from the input vector instead of the system default.
2167
07ccd85d
GH
2168 from Keisuke Nishida:
2169 * fports.c (scm_setvbuf): minor docstring fix.
2170 * ports.h (scm_generic_fgets): obsolete prototype deleted.
2171
3a9809df
DH
21722000-05-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
2173
2174 * __scm.h: Added new section for debugging options.
2175
2176 (SCM_DEBUG_DEPRECATED): If 1, no deprecated code is included to
2177 help developers to get rid of references to deprecated code.
2178
2179 * numbers.[ch] (SCM_POSFIXABLE, SCM_NEGFIXABLE, SCM_UNEGFIXABLE,
2180 SCM_FIXABLE, SCM_FLOBUFLEN): These macros are no longer provided
2181 as part of the interface and are marked as deprecated in the
2182 header file.
2183
2184 * numbers.c (scm_make_real, scm_make_complex): Inlined the
2185 corresponding macros SCM_NEWREAL and SCM_NEWCOMPLEX,
2186 respectively.
2187
2188 * numbers.h (SCM_NEWREAL, SCM_NEWCOMPLEX, SCM_INEXP, SCM_CPLXP,
2189 SCM_REAL, SCM_IMAG, SCM_REALPART, scm_makdbl, SCM_SINGP,
2190 SCM_NO_BIGDIG, SCM_NUM2DBL, scm_dblproc): Deprecated.
2191
e828cb75
DH
21922000-05-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
2193
2194 * gc.h (scm_cell, SCM_CELL_WORD, SCM_CELL_OBJECT,
2195 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT): Scheme cells now consist
2196 of two scm_bits_t values instead of two SCM values, because it is
2197 legal for cell entries to hold values that are not scheme objects.
2198
2199 (SCM_SETAND_CAR, SCM_SETAND_CDR, SCM_SETOR_CAR, SCM_SETOR_CDR):
2200 Use SCM_SETC[AD]R to modify contents of pairs.
2201
5986c47d
DH
22022000-05-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
2203
2204 * numbers.c (IS_INF, isfinite): Added FIXME comment.
2205
2206 (scm_abs, scm_magnitude): Make these two independent of each
2207 other. scm_abs now reports an error if given a complex argument.
2208
2209 (scm_istr2flo, scm_integer_p). Use SCM_REAL_VALUE instead of
2210 SCM_REALPART if the object is known to be real.
2211
2212 (scm_init_numbers): No need to use SCM_NEWREAL macro for speed
2213 here.
2214
2215 * numbers.h (SCM_SINGP): Set to 0 instead of SCM_BOOL_F.
2216
eb42e2f0
DH
22172000-05-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
2218
2219 * eq.c (scm_eqv_p): Separate handling of real and complex
2220 values. Remove #ifdef SCM_BIGDIG #endif test.
2221
2222 * eval.c (SCM_CEVAL, SCM_APPLY), gh_data.c (gh_scm2floats,
2223 gh_scm2doubles), hash.c (scm_hasher), ramap.c (scm_array_fill_int,
2224 ramap_rp, scm_array_map_x), random.c (vector_scale,
2225 vector_sum_squares), unif.c (scm_make_uve, scm_array_p,
2226 scm_array_set_x): Use SCM_REAL_VALUE instead of SCM_REALPART if
2227 the object is known to be real. Use SCM_COMPLEXP instead of
2228 deprecated SCM_CPLXP. Use SCM_INEXACTP instead of deprecated
2229 SCM_INEXP.
2230
7235ee58
DH
22312000-05-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
2232
2233 * numbers.c: No need to include unif.h.
2234
2235 (IS_INF): Returned to old test for now: x == x + 1 will not work
2236 for large numbers due to rounding errors.
2237 Thanks to Kalle Olavi Niemitalo.
2238
bb628794
DH
22392000-05-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
2240
2241 * numbers.c (scm_divbigdig): Removed outdated comment.
2242
2243 (scm_number_to_string, scm_string_to_number, scm_number_p,
2244 scm_real_p, scm_integer_p, scm_inexact_p, scm_gr_p, scm_leq_p,
2245 scm_geq_p, scm_make_rectangular, scm_make_polar,
2246 scm_inexact_to_exact): Added comments.
2247
2248 (add1, scm_init_numbers): Removed add1.
2249
98cb6e75
DH
22502000-05-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
2251
2252 * numbers.c (IS_INF): The new test is x == x + 1. The old test
2253 x == x/2 did not work for zero values. Thanks to Han-Wen Nienhuys
2254 and Ivan Toshkov.
2255
2256 (scm_number_to_string, scm_sum, scm_difference, scm_two_doubles,
2257 scm_num2long, scm_num2long_long, scm_num2ulong): Reordered
2258 dispatch sequence.
2259
c45c2b6b
MV
22602000-05-09 Marius Vollmer <mvo@zagadka.ping.de>
2261
2262 * scmsigs.c (take_signal): Execute SCM_ASYNC_TICK for SIGSEGV,
2263 SIGILL and SIGBUS signals. These signals are not continuable and
2264 must be handled for real right away.
2265
c2ff8ab0
DH
22662000-05-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
2267
2268 * numbers.c (scm_zero_p, scm_positive_p, scm_negative_p,
2269 scm_real_part, scm_imag_part, scm_magnitude,
2270 scm_inexact_to_exact): Reordered dispatch sequence.
2271
1a450153
DH
22722000-05-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
2273
2274 * feature.c: No need to include "libguile/smob.h"
2275
2276 (scm_loc_features, features, scm_add_feature, scm_init_feature):
2277 Removed variable 'scm_loc_features' as a pointer to the SCM value
2278 holding the features list. Using variable 'features' instead,
2279 which holds the interned pair. Thus, SCM_SETCDR can be used
2280 instead of pointer trickery.
2281
665aeda3
DH
22822000-05-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
2283
2284 * alist.c (scm_acons): Use SCM{_SET}?_CELL_OBJECT as long as a
2285 cell is not known to be a valid pair.
2286
ab66ae47
DH
22872000-05-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
2288
2289 * eval.c (ASRTSYNTAX, scm_m_body, scm_m_letrec1): Removed
2290 ASRTSYNTAX. Using SCM_ASSYNT instead.
2291
2292 (scm_m_body): Don't create a redundant cons cell.
2293
2294 (scm_m_do): Removed redundant test 'bodycheck'.
2295
2296 (bodycheck): Removed.
2297
2298 * stacks.c (stack_depth, read_frame, read_frames): Removed
2299 redundant calculation of size, minimized some variable scopes.
2300
4983cbe4
DH
23012000-05-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
2302
2303 * pairs.c (scm_cons, scm_cons2): Use SCM{_SET}?_CELL_OBJECT as
2304 long as a cell is not known to be a valid pair.
2305
2306 (scm_pair_p): Eliminated redundant SCM_IMP test.
2307
44d3cb0d
DH
23082000-05-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
2309
2310 * eval.c (scm_m_body, scm_macroexp, unmemocopy, scm_eval_args,
2311 scm_deval_args): Eliminated redundant SCM_IMP tests.
2312
2313 * hashtab.c (scm_ihashx, scm_sloppy_assx, scm_delx_x), weaks.c
2314 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
2315 scm_make_doubly_weak_hash_table): Fixed critical sections.
2316 Thanks to Keisuke Nishida.
2317
9a00c9fc
DH
23182000-05-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
2319
2320 * numbers.c (scm_logand, scm_logior, scm_logxor, scm_logtest):
2321 Fixed some goto-related initialization bugs (introduced by me).
2322
b82c6ce0
DH
23232000-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
2324
2325 * numbers.h (SCM_INUM0): Uses SCM_MAKINUM instead of SCM_PACK.
2326
2327 * dynl.c (dynl_obj, DYNL_OBJ, get_dynl_obj): Removed.
2328
2329 (DYNL_FILENAME, DYNL_HANDLE): Use SCM_CELL... macros instead of
2330 pointer trickery.
2331
2332 (SET_DYNL_HANDLE): Added.
2333
2334 (scm_dynamic_object_p): Simplified.
2335
2336 (scm_dynamic_unlink, scm_dynamic_func): Changed comment. Deliver
2337 better error message when accessing unlinked dynamic objects.
2338 Eliminated call to get_dynl_obj.
2339
106428b3
MV
23402000-05-03 Marius Vollmer <mvo@zagadka.ping.de>
2341
7eea5296 2342 * scmsigs.c (orig_handlers) [!HAVE_SIGACTION]: Fix declaration to
106428b3
MV
2343 be an array of function pointers instead of being a pointer to an
2344 array returning function. Thanks to Kalle Olavi Niemitalo!
2345
f4c627b3
DH
23462000-05-03 Dirk Herrmann <D.Herrmann@tu-bs.de>
2347
2348 * numbers.c (scm_divbigbig, scm_divbigint), numbers.h
2349 (scm_divbigbig, scm_divbigint): Don't return zero any more to
2350 indicate that a division has a remainder, return SCM_UNDEFINED
2351 instead. It is improbable that anyone actually used these
2352 functions outside of numbers.c. For this reason and due to the
2353 change in behaviour the functions are static now. Thus, if
2354 surprisingly there are users of these functions they will at least
2355 get alarmed.
2356
2357 * numbers.c: Removed #ifdef SCM_BIGDIG #endif in those functions,
2358 that already have a clean dispatch order. Note: SCM_BIGDIG is
2359 always defined.
2360
2361 * numbers.c (scm_inexact_p): Simplified.
2362
2363 * numbers.c (scm_num_eq_p, scm_less_p, scm_max, scm_min,
2364 scm_product, scm_num2dbl, scm_angle): Reordered dispatch
2365 sequence, thereby fixing some comparisons of SCM values with
2366 integer constants.
2367
2368 * numbers.c (scm_divide): Division by zero of inums leads to an
2369 error now. (Formerly, an infinite number was returned.)
2370
2371 Respect the fact, that scm_divbigbig does now return SCM_UNDEFINED
2372 if a division has a remainder.
2373
3a6e6616
GH
23742000-05-02 Gary Houston <ghouston@arglist.com>
2375
2376 * Makefile.am (INCLUDES): add ${INCLTDL} (thanks to Tim Mooney).
2377
f8de44c1
DH
23782000-05-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
2379
2380 * numbers.c (scm_logtest, scm_division): Reordered dispatch
2381 sequence, thereby fixing some comparisons of SCM values with
2382 integer constants.
2383
2384 * numbers.h (scm_makdbl): Mark as deprecated at the point of
2385 declaration.
2386
2387 * eval.c (SCM_CEVAL, SCM_APPLY), gh_data.c (gh_double2scm,
2388 gh_doubles2scm), numbers.c (scm_istr2flo, scm_max, scm_min,
2389 scm_sum, scm_difference, scm_product, scm_divide, scm_sys_expt,
2390 scm_sys_atan2, scm_make_rectangular, scm_make_polar,
2391 scm_real_part, scm_imag_part, scm_magnitude, scm_angle,
2392 scm_long2num, scm_long_long2num, scm_ulong2num), ramap.c
2393 (ramap_rp, scm_array_map_x), random.c (scm_random,
2394 scm_random_uniform, scm_random_normal_vector_x, scm_random_exp),
2395 struct.c (scm_struct_ref), unif.c (scm_array_to_list): Replace
2396 call to scm_makdbl with a call to scm_make_real or
2397 scm_make_complex, depending on whether the imaginary part is known
2398 to be zero.
2399
7f5fa419
GH
24002000-05-01 Gary Houston <ghouston@arglist.com>
2401
0607c109
GH
2402 * scmsigs.c: fix the definition of orig_handlers for the case
2403 that HAVE_SIGACTION is not defined (thanks to
2404 Kalle Olavi Niemitalo).
2405
7f5fa419
GH
2406 * Makefile.am: remove include_HEADERS (was libguile.h)
2407 libguile.h: moved to top level directory.
2408
09fb7599
DH
24092000-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
2410
2411 * numbers.c (SCM_SWAP): Moved to the top of the file to allow for
2412 a wider use.
2413
2414 * numbers.c (scm_modulo, scm_gcd, scm_lcm, scm_logand, scm_logior,
2415 scm_logxor): Reordered dispatch sequence, thereby fixing some
2416 comparisons of SCM values with integer constants.
2417
2418 * number.c (scm_logtest): Removed some redundant SCM_{N}?IMP
83238bc1 2419 tests.
09fb7599 2420
89a7e495
DH
24212000-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
2422
2423 * numbers.c (scm_quotient, scm_remainder): Removed code that was
2424 conditionally compiled based on BADIVSGNS. BADIVSGNS does not
2425 occur anywhere else throughout guile.
2426
2427 * numbers.c (scm_quotient): Fixed parameter number in error
2428 message.
2429
2430 * numbers.c (scm_remainder): Reordered dispatch sequence.
2431
a4fbabb3
GH
24322000-04-25 Gary Houston <ghouston@arglist.com>
2433
2434 * posix.c (scm_execlp): docstring fix (thanks to Martin
2435 Grabmueller).
2436
09e4d064
DH
24372000-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
2438
2439 * eval.c (undef_object): Made into a local static variable
2440 (suggested by Jost Boekemeier).
2441
e59bb516
DH
24422000-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
2443
2444 * pairs.c (cxrs, scm_init_pairs): Simplify initialization of
2445 c[ad]+r functions.
2446
2447 * procs.c (scm_init_iprocs), procs.h (scm_subr, scm_iproc,
2448 scm_dsubr, scm_init_iprocs): Removed.
2449
2450 * procs.h (SCM_SUBRF, SCM_DSUBRF): Access the cell words
2451 directly instead of casting a cell to a C struct.
2452
820920e6
MD
24532000-04-22 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2454
2455 Better modularization of GC extensions through new C level GC
2456 hooks:
83238bc1 2457
820920e6
MD
2458 * weaks.c (scm_weaks_prehistory): New function: Add
2459 scm_weak_vector_gc_init to scm_before_mark_c_hook; Add
2460 scm_mark_weak_vector_spines to scm_before_sweep_c_hook.
2461 (scm_scan_weak_vectors): New function; added to
2462 scm_after_sweep_c_hook.
2463
2464 * weaks.h (scm_weak_vectors, scm_weaks_prehistory): Added
2465 declarations.
2466
2467 * guardians.h (scm_guardian_gc_init, scm_guardian_zombify): Are
2468 now static.
2469
2470 * guardians.c (scm_guardian_gc_init): Turned into a hook function
2471 and added to scm_before_mark_c_hook.
2472 (scm_guardian_zombify): Turned into a hook function and added to
2473 scm_before_sweep_c_hook.
2474
2475 * async.c (scm_sys_gc_async_thunk): Run after-gc-hook.
2476 Added #include "libguile/gc.h".
2477
2478 * gc.h: Added #include "libguile/hooks.h".
2479
2480 * gc.c: Removed #include "libguile/guardians.h".
2481 (scm_before_gc_c_hook, scm_before_mark_c_hook,
2482 scm_before_sweep_c_hook, scm_after_sweep_c_hook,
2483 scm_after_gc_c_hook): New C level hooks.
2484 (scm_after_gc_hook): New Scheme level hook.
2485 (scm_gc_sweep): Moved scanning of weak vectors to weaks.c.
2486 (scm_igc): Moved initialization of scm_weak_vectors and the call
2487 to scm_guardian_gc_init to respective module.
2488 (scm_mark_weak_vector_spines): Moved to weaks.c;
2489 Call to scm_guardian_zombify moved to guardians.c;
2490 Run scm_before_gc_c_hook, scm_before_sweep_c_hook,
2491 scm_after_gc_c_hook at appropriate places.
2492 (scm_init_gc): Initialize scm_after_gc_hook.
2493
2494 * hooks.c, hooks.h (scm_make_hook_with_name): Removed deprecated
2495 function.
2496
2497 * init.c (scm_boot_guile_1): Added `scm_init_hooks'.
2498
2499 * Makefile.am: Added hooks.c, hooks.h, hooks.x.
2500
2501 * feature.c, feature.h: Broke out hook code into separate files.
2502
2503 * hooks.c, hooks.h: New files.
9764c29b 2504
a0599745
MD
2505 * *.*: Change includes so that they always use the "prefixes"
2506 libguile/, qt/, guile-readline/, or libltdl/.
2507 (Thanks to Tim Mooney.)
2508
2509 * Makefile.am (INCLUDES): Removed THREAD_CPPFLAGS and INCLTDL.
2510 (DEFS): Added. automake adds -I options to DEFS, and we don't
2511 want that.
2512 Removed all -I options except for the root source directory and
2513 the root build directory.
2514
f4b0c568
MD
2515 * numbers.c (scm_odd_p, scm_even_p): Use SCM_WRONG_TYPE_ARG
2516 instead of SCM_ASSERT (0, ...). (Some compilers will complain
2517 about control reaching end of function otherwise, and, besides,
2518 the new code is not less clear.)
2519
9764c29b 2520 * gc.c (scm_must_malloc, scm_must_realloc, scm_must_free): Added
83238bc1 2521 calls to malloc debugging functions.
9764c29b
MD
2522
2523 * init.c (scm_boot_guile_1): Added calls to debug-malloc init
2524 functions.
2525
2526 * Makefile.am: Added debug-malloc.c, debug-malloc.h,
2527 debug-malloc.x.
2528
2529 * debug-malloc.c, debug-malloc.h: New files.
2530
4219f20d
DH
25312000-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
2532
2533 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p): Added
2534 documentation strings.
2535
2536 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p, scm_abs,
2537 scm_quotient): Reordered dispatch sequence to first handle
2538 immediates, second handle bignums and finally handle generic
2539 functions respectively signal wrong type arguments. Hopefully
2540 this will allow for easier separation when goops is integrated.
2541
195e6201
DH
25422000-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
2543
2544 * gc.c (which_seg): Use SCM2PTR to convert a non immediate SCM
2545 variable into a pointer to a heap cell.
2546
2547 * gc.c (scm_mark_locations, scm_cellp, init_heap_seg,
2548 scm_unhash_name): Remove redundant cast to SCM_CELLPTR.
2549
9e882eec
DH
25502000-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
2551
2552 * print.c (scm_iprin1): Don't assign zero to SCM values, use
2553 SCM_UNDEFINED instead.
2554
2555 * weaks.c (scm_make_weak_vector): Fix assignment of zero to a
2556 vector element. (Still to be improved)
2557
3201d763
DH
25582000-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
2559
2560 * eval.c (undef_cell): Removed, replaced by:
2561
2562 (undef_object): Added to replace undef_cell.
2563
2564 (scm_lookupcar, scm_lookupcar1): Use undef_object.
2565
2566 * eval.c (scm_lookupcar, scm_lookupcar1, scm_m_atfop,
2567 scm_m_atbind, CHECK_EQVISH, SCM_CEVAL), procs.h (SCM_SETCODE):
2568 Don't perform arithmetic operations with SCM values.
2569
2570 * eval.c (scm_lookupcar, scm_lookupcar1, scm_m_atfop,
2571 scm_m_atbind, scm_eval_args, scm_deval_args, SCM_CEVAL): Use
2572 symbolic names for the tc3 type codes.
2573
2574 * eval.c (scm_m_define, SCM_CEVAL, SCM_APPLY): Remove redundant
2575 cast to SCM.
2576
2577 * eval.c (scm_eval_args, scm_deval_args, SCM_CEVAL): Made the
2578 access of the struct vcell element explicit.
2579
f7c38587
MD
25802000-04-19 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2581
2582 * struct.c (scm_struct_free_light, scm_struct_free_standard,
2583 scm_struct_free_entity): Use `scm_must_free' instead of `free'.
2584
2585 * procs.c (scm_make_subr_opt): Tell scm_must_realloc that we're
2586 realloc:ing scm_subr_table ("what" instead of "who").
2587
2588 * numbers.c (scm_adjbig): Ditto.
2589
e8293eb6
GB
2590Tue Apr 18 08:22:41 2000 Greg J. Badros <gjb@cs.washington.edu>
2591
83238bc1
ML
2592 * validate.h: Do not cast to (unsigned) in SCM_VALIDATE_INUM_RANGE
2593 when testing high-end of the range. Mikael Djurfeldt noticed this
e8293eb6
GB
2594 anomaly -- thanks Mikael!
2595
baa702c8
DH
25962000-04-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2597
2598 * unif.c (l2ra): Don't eliminate the call to scm_array_set_x
2599 itself, as was done in the previous 'patch'. (Thanks to Radey
2600 Shouman)
2601
fee7ef83
DH
26022000-04-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2603
2604 * options.c (scm_options), read.c (recsexpr): Remove redundant
2605 SCM_IMP test.
2606
2607 * print.c (scm_iprin1): Made the access of the struct vcell
2608 element explicit.
2609
2610 * print.h (SCM_PRINT_CLOSURE): Added call to SCM_PACK.
2611
2612 * ramap.c (scm_ra_eqp, ra_compare), unif.c
2613 (scm_uniform_vector_ref, scm_cvref, rapr1): Separated accesses to
2614 unsigned long and signed long arrays and clarified the way the
2615 access is performed.
2616
2617 * ramap.c (scm_array_map_x, raeql), read.c (scm_lreadr), stacks.c
2618 (narrow_stack), unif.c (scm_cvref, scm_uniform_array_read_x,
2619 scm_raprin1): Use SCM_EQ_P to compare SCM values.
2620
2621 * strings.c (scm_makstr): Treat the msymbol slots as a field of
2622 scm_bits_t values.
2623
2624 * struct.h (SCM_SET_VTABLE_DESTRUCTOR): Treat the struct data as
2625 a field of scm_bits_t values.
2626
2627 * unif.c (l2ra): Don't test result of scm_array_set_x against
2628 zero: It is always SCM_UNSPECIFIED.
2629
9d0633a8
MD
26302000-04-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2631
2632 * script.c (scm_compile_shell_switches): Also enable
2633 record-positions when given the --debug option. (Thanks to Diego
2634 Dainese.)
2635
230d095f
DH
26362000-04-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2637
2638 * print.c (ENTER_NESTED_DATA, print_circref, scm_iprlist):
2639 Compare SCM's with SCM_EQ_P.
2640
2641 * print.c (scm_make_print_state), srcprop.c
2642 (scm_source_properties): Use valid scheme object to initialize
2643 SCM variable.
2644
2645 * print.c (scm_iprin1): Remove redundant calls to SCM_UNPACK.
2646
c8045e8d
DH
26472000-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
2648
2649 * struct.c (scm_alloc_struct, scm_struct_free_0,
2650 scm_struct_free_light, scm_struct_free_standard,
2651 scm_struct_free_entity, scm_make_struct, scm_make_vtable_vtable),
2652 struct.h (scm_struct_free_t, scm_alloc_struct, scm_struct_free_0,
2653 scm_struct_free_light, scm_struct_free_standard,
2654 scm_struct_free_entity): Struct data regions (and thus also
2655 vtable data regions) are now C arrays of scm_bits_t elements.
2656
2657 * gc.c (scm_gc_mark, scm_gc_sweep, scm_unhash_name): Made the
2658 mixup of glocs and structs explicit.
2659
2660 * gc.c (scm_unprotect_object): Compare SCM's with SCM_EQ_P.
2661
b0c54567
DH
26622000-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
2663
2664 * eval.c (scm_unmemocar): Use macros to test for gloc cell.
2665 Minimize scope of variable 'ir'.
2666
2667 * eval.h (SCM_IFRAME, SCM_IDIST), weaks.h (SCM_IS_WHVEC_ANY):
2668 Added missing call to SCM_UNPACK.
2669
b9c90f11
MD
26702000-04-17 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2671
7aac9824 2672 * validate.h (SCM_VALIDATE_INUM_RANGE_COPY,
2891588b 2673 SCM_VALIDATE_NUMBER_COPY): New macros.
b9c90f11 2674
9ae58e2d
MD
26752000-04-16 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2676
2677 * script.c (scm_compile_shell_switches): Added --debug option.
2678
49e12eb3
MD
26792000-04-16 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2680
2681 * vectors.c (scm_vector_set_x): Return SCM_UNSPECIFIED (as
2682 specified by R5RS).
2683
7c1e0b12
MD
26842000-04-15 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2685
2686 * ports.h (SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P): New macros.
2687 (SCM_INPORTP, SCM_OUTPORTP): Marked as deprecated.
2688
2689 * validate.h (SCM_VALIDATE_INPUT_PORT, SCM_VALIDATE_OUTPUT_PORT):
2690 New macros.
2691 Cleanup of code layout.
2692
2693 * ports.c, ports.h (close-input-port, close-output-port): New R5RS
2694 procedures.
2695
01c8a3dd
DH
26962000-04-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
2697
2698 * continuations.c (scm_make_cont, scm_dynthrow): Completely
2699 separated implementations for defined (CHEAP_CONTINUATIONS) and
2700 !defined (CHEAP_CONTINUATIONS). Also, now using memcpy for stack
2701 copying.
2702
2703 * continuations.c (grow_stack): Renamed from grow_throw.
2704
2705 * continuations.c (copy_stack_and_call): New static function.
2706
2707 * continuations.c (scm_dynthrow): Simplified and made static.
2708
2709 * continuations.h (scm_dynthrow): Made static.
2710
553f4414
MD
27112000-04-13 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2712
2713 * unif.c, unif.h (shared-array-root, shared-array-offset,
2714 shared-array-increments): New primitives.
2715
cf551a2b
DH
27162000-04-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
2717
2718 * gc.c (scm_gc_sweep): Simplify the computation of freed memory
2719 size for msymbols.
2720
2721 * symbols.h (SCM_SLOTS, SCM_SYMBOL_FUNC, SCM_SYMBOL_PROPS,
2722 SCM_SYMBOL_HASH): The msymbol slots are now a field of scm_bits_t
2723 values.
2724
2725 * symbols.h (SCM_SET_SYMBOL_FUNC, SCM_SET_SYMBOL_PROPS): New
2726 macros.
2727
2728 symbols.c (scm_intern_obarray_soft, msymbolize, scm_symbol_fset_x,
2729 scm_symbol_pset_x): Use them.
2730
83238bc1 2731 * symbols.c (scm_symbol_hash): Unpack to access SCM raw data.
cf551a2b 2732
12a8b769
DH
27332000-04-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
2734
2735 * ports.c (scm_port_print): The port data is read as raw data.
2736
2737 * ports.h (SCM_TC2PTOBNUM, SCM_PTOBNUM): Fix SCM/scm_bits_t
2738 mismatch.
2739
d8c40b9f
DH
27402000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
2741
2742 * eval.c (SCM_CEVAL), objects.c (scm_mcache_lookup_cmethod,
2743 scm_make_subclass_object), objects.h (SCM_CLASS_FLAGS,
2744 SCM_ENTITY_PROCEDURE, SCM_ENTITY_SETTER), struct.c
2745 (scm_struct_init, scm_struct_vtable_p, scm_make_struct,
2746 scm_struct_ref, scm_struct_set_x), struct.h (SCM_STRUCT_DATA):
2747 The struct data is now an array of scm_bits_t variables.
2748
2749 * objects.h (SCM_SET_ENTITY_PROCEDURE): New macro.
2750
cf551a2b 2751 objects.c (scm_set_object_procedure_x): Use it.
d8c40b9f
DH
2752
2753 * struct.c (scm_struct_init): Unused variable 'data' removed.
2754
2755 (scm_struct_vtable_p): Redundant SCM_IMP tests removed.
2756
1c3e63f0
DH
27572000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
2758
2759 * objects.h (SCM_OBJ_CLASS_FLAGS, SCM_OBJ_CLASS_REDEF), struct.h
2760 (SCM_STRUCT_VTABLE_DATA, SCM_STRUCT_LAYOUT, SCM_STRUCT_VTABLE,
2761 SCM_STRUCT_PRINTER): The struct vtable data is now an array of
2762 scm_bits_t variables.
2763
2764 * struct.h (SCM_SET_STRUCT_LAYOUT): New macro.
2765
cf551a2b 2766 struct.c (scm_make_vtable_vtable): Use it.
1c3e63f0 2767
bc66755e
DH
27682000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
2769
2770 * symbols.c (scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
2771 scm_intern_obarray_soft, scm_sysintern0,
2772 scm_string_to_obarray_symbol, scm_intern_symbol,
2773 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
2774 scm_symbol_bound_p, scm_symbol_set_x): Don't use C operators to
2775 compare SCM values.
2776
828865c3
DH
27772000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
2778
2779 * numbers.c (scm_quotient, scm_modulo): Reordered to handle the
2780 case of immediate numbers parameters first. Also, only use
2781 decoded numbers for numerical comparison.
83238bc1 2782
1cf49a85
MD
27832000-04-10 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
2784
2785 * objects.h: Don't redeclare scm_call_generic_0 and
2786 scm_apply_generic. (Thanks to Tal Tversky.)
2787
dba97178
DH
27882000-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
2789
2790 * hash.c (scm_hasher): Use symbolic names for the tc3 constants.
2791 Unpack SCM value to use it as a switch parameter. Don't cast SCM
2792 values to int values.
2793
3da01fa3
MD
27942000-04-10 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2795
2796 * coop.c (mother): Handled EINTR (the wait has been interrupted by
2797 a signal).
2798
451e591c
DH
27992000-04-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
2800
2801 * __scm.h (SCM_WTA_DISPATCH_[012n]): To test whether a SCM value
2802 contains a raw zero value it has to be unpacked.
2803
2804 * debug.c (with_traps_inner, scm_with_traps): Passing SCM values
2805 via void * requires unpacking / packing.
2806
2807 * stacks.h (SCM_STACKP): Remove unnecessary SCM_NIMP test and use
2808 SCM_EQ_P to compare SCM values.
2809
2810 * stacks.h (SCM_FRAME_VOID_P, SCM_FRAME_REAL_P, SCM_FRAME_PROC_P,
2811 SCM_FRAME_EVAL_ARGS_P, SCM_FRAME_OVERFLOW_P): Remove unnecessary
2812 call to SCM_UNPACK.
2813
2814 * tags.h (SCM_NECONSP): Define in terms of SCM_ECONSP
2815
2816 * tags.h (SCM_ECONSP): Clarify the test for glocs. This is still
2817 quite ugly.
2818
e94e3f21
ML
28192000-04-05 Michael Livshin <mlivshin@bigfoot.com>
2820
2821 * async.[ch]: unexpose low-level async access macros (thanks to
2822 Dirk Herrmann).
2823
2824 * validate.h: move async validation macros to async.c (nobody else
2825 needs them anyway), and rename them.
2826
843e4e9d
ML
28272000-04-04 Michael Livshin <mlivshin@bigfoot.com>
2828
2829 * async.h: kill the scm_async_t struct. having a heap cell
2830 pretending to be a C struct is not helthy, and is not needed here
2831 anyway, as asyncs happily fit in one heap cell.
2832
2833 * async.c: reflect the fact that asyncs are now represented by
2834 single heap cell each.
2835
873c35ee
GH
28362000-04-04 Gary Houston <ghouston@arglist.com>
2837
2838 * error.c (scm_syserror): save errno before doing anything else,
2839 since it's used in two expressions and may get mutated (thanks to
2840 Dirk Herrmann).
2841
4260a7fc
DH
28422000-04-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
2843
2844 * debug.c (scm_procedure_source, scm_procedure_environment),
2845 gsubr.c (scm_make_gsubr_with_generic, scm_gsubr_apply), procs.c
2846 (scm_procedure, scm_setter): Return valid scheme value as dummy.
2847
2848 * filesys.c (scm_readdir, scm_rewinddir, scm_closedir,
2849 scm_dir_print, scm_dir_free), numbers.h (SCM_COMPLEX_REAL,
2850 SCM_COMPLEX_IMAG), regex-posix.h (SCM_RGX), throw.c (JBJMPBUF,
2851 SETJBJMPBUF, JBJMPBUF, SETJBJMPBUF, freejb, print_lazy_catch,
2852 scm_ithrow), unif.c (scm_uniform_vector_ref, scm_cvref,
2853 scm_array_set_x, rapr1), unif.h (SCM_ARRAY_V, SCM_ARRAY_BASE),
2854 vectors.h (SCM_VELTS, SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS): Use
2855 SCM_{SET_}?CELL_WORD* to access cell entries with raw data.
2856
2857 * filesys.c (scm_closedir), numbers.c (scm_addbig), numbers.h
2858 (SCM_SETNUMDIGS), throw.c (JBACTIVE, SCM_JBDFRAME,
2859 SCM_SETJBDFRAME): Read and modify data bits in cell entry #0 using
2860 SCM_{SET_}?CELL_WORD_0.
2861
2862 * filesys.c (fill_select_type, retrieve_select_type, scm_select),
2863 numbers.c (scm_gcd, scm_lcm, scm_integer_expt, scm_zero_p,
2864 scm_product, scm_divide), posix.c (scm_getgrgid), ramap.c
2865 (scm_array_fill_int, racp), throw.c (scm_catch, scm_lazy_catch,
2866 scm_ithrow), unif.c (scm_make_uve, scm_array_p,
2867 scm_transpose_array, scm_array_set_x, scm_bit_set_star_x,
2868 scm_bit_count_star, l2ra), variable.c (prin_var,
2869 scm_make_variable, scm_make_undefined_variable,
2870 scm_builtin_variable), vectors.c (scm_vector_set_length_x),
2871 vports.c (sf_flush, sf_close): Don't use C operators to compare
2872 SCM values.
2873
2874 * numbers.c (scm_odd_p, scm_even_p), variable.c (prin_var): Must
2875 unpack SCM values to access their raw contents.
2876
2877 * numbers.c (big2str): Eliminate unnecessary casts to SCM.
2878
2879 * numbers.h (SCM_NEWREAL), regex-posix.h (SCM_RGXP), vports.c
2880 (scm_make_soft_port): Use SCM_{SET_}?CELL_TYPE to access the cell
2881 type information.
2882
2883 * throw.c (printjb): Eliminated unnecessary unpack.
2884
2885 * variable.c (make_vcell_variable): Smob data is of type
2886 scm_bits_t.
2887
5b15c3b4
MD
28882000-04-04 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2889
2890 * print.c: Removed promise to rewrite printer code before next
2891 release. :)
2892
395c8567
MD
28932000-04-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
2894
2895 * iselect.c (add_fd_sets): Insert empty statement after label.
2896 (Thanks to Tim Mooney.)
2897
50fecba9
ML
28982000-04-03 Michael Livshin <mlivshin@bigfoot.com>
2899
2900 * guardians.c (scm_guardian_zombify): mark all zombies in a
2901 separate loop after processing all the currently known live
2902 guardians, so as to not introduce order dependencies (thanks to
f6e2fd8b 2903 Gary Houston). note that the order problems are still there if
843e4e9d 2904 some guardians are themselves zombies, but that's a sick case that
f6e2fd8b
ML
2905 I'm not going to worry about.
2906 also, make another outer loop to process zombified
50fecba9
ML
2907 guardians (which are uncovered while marking zombies).
2908
54778cd3
DH
29092000-04-03 Dirk Herrmann <D.Herrmann@tu-bs.de>
2910
2911 * evalext.c (scm_definedp, scm_m_undefine), gc.c
2912 (scm_mark_weak_vector_spines, scm_gc_sweep), hashtab.c
2913 (scm_hashq_ref, scm_hashv_ref, scm_hash_ref, scm_hashx_ref),
2914 keywords.c (scm_make_keyword_from_dash_symbol), lang.c
2915 (scm_nil_eq), lang.h (SCM_NILP, SCM_NIL2EOL), load.c
2916 (scm_primitive_load), modules.c (scm_module_full_name), objects.c
2917 (scm_class_of, scm_mcache_lookup_cmethod, scm_make_class_object),
2918 ports.c (scm_close_all_ports_except), ports.h (SCM_EOF_OBJECT_P),
2919 print.c (scm_iprin1, scm_prin1, scm_iprlist, scm_simple_format),
2920 print.h (SCM_PRINT_STATE_P), procprop.c (scm_i_procedure_arity,
2921 scm_stand_in_scm_proc, scm_procedure_property,
2922 scm_set_procedure_property_x), procs.c
2923 (scm_procedure_documentation), read.c (scm_lreadr, scm_lreadparen,
2924 scm_lreadrecparen, scm_read_hash_extend), script.c
2925 (scm_compile_shell_switches), srcprop.c (scm_source_property,
2926 scm_set_source_property_x), srcprop.h (SCM_WHASHFOUNDP), stacks.c
2927 (read_frame, NEXT_FRAME, read_frames, narrow_stack,
2928 scm_make_stack, scm_stack_id), strop.c (scm_i_index,
2929 scm_string_index, scm_string_rindex), struct.c (scm_struct_init),
2930 validate.h (SCM_VALIDATE_BOOL_COPY, SCM_VALIDATE_INUM_DEF,
2931 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_PROC,
2932 SCM_VALIDATE_ARRAY): Don't use C operators to compare SCM values.
2933
2934 * feature.c (make_hook), keywords.c
2935 (scm_make_keyword_from_dash_symbol), macros.c (scm_makacro,
2936 scm_makmacro, scm_makmmacro), print.c (scm_iprin1,
2937 scm_printer_apply, scm_port_with_print_state): Smob data is of type
2938 scm_bits_t.
2939
2940 * feature.c (print_hook), gc.c (scm_object_address), hash.c
2941 (scm_ihashq, scm_ihashv), print.c (scm_iprin1, scm_ipruk), smob.c
843e4e9d 2942 (freeprint), struct.c (scm_print_struct): Must unpack
54778cd3
DH
2943 SCM values to access their raw contents.
2944
2945 * fluids.c (apply_thunk, scm_with_fluids), hashtab.c (fold_proc,
2946 scm_hash_fold), load.c (load, scm_primitive_load): Passing SCM
2947 values via void * requires unpacking / packing.
2948
2949 * fports.c (scm_fport_buffer_add, scm_setvbuf), procs.h
2950 (SCM_SUBRNUM, SCM_SET_SUBRNUM), srcprop.h (SRCPROPBRK, SRCBRKP):
2951 Read and modify data bits in cell entry #0 using
2952 SCM_{SET_}?CELL_WORD_0.
2953
2954 * fports.c (scm_fdes_to_port), gc.c (scm_gc_for_newcell,
2955 scm_gc_sweep, init_heap_seg), init.c (start_stack), ports.c
2956 (scm_void_port), procs.c (scm_make_subr_opt,
2957 scm_make_procedure_with_setter), root.c (scm_internal_cwdr),
2958 smob.c (scm_make_smob), strports.c (scm_mkstrport): Use
2959 SCM_SET_CELL_TYPE to write the cell type information.
2960
2961 * gc.c (scm_gc_mark): Use SCM_CELL_OBJECT* to access SCM values
2962 from cells that are no scheme pairs.
2963
2964 * gc.c (scm_gc_sweep), mallocs.c (prinmalloc), mallocs.h
2965 (SCM_MALLOCDATA, SCM_SETMALLOCDATA), print.c (scm_ipruk), random.h
2966 (SCM_RSTATE), root.h (SCM_ROOT_STATE), smob.c (scm_smob_free),
2967 srcprop.c (freesrcprops), srcprop.h (SRCPROPPOS, SRCPROPFNAME,
2968 SRCPROPCOPY, SRCPROPPLIST), struct.c (scm_make_struct,
2969 scm_make_vtable_vtable): Use SCM_{SET_}?CELL_WORD* to access cell
2970 entries with raw data.
2971
2972 * gc.c (scm_init_storage), sort.c (applyless), strop.c
2973 (scm_string_to_list): Eliminate unnecessary casts to SCM.
2974
2975 * mallocs.c (scm_malloc_obj): Store result of malloc as raw
2976 data.
2977
2978 * ports.c (scm_close_all_ports_except): Duplicate documentation
2979 text removed.
2980
2981 * print.c (scm_iprin1): Use SCM_ITAG3.
2982
2983 * procs.h (SCM_SET_SUBRNUM): Fix shift direction.
2984
2985 * snarf.h (SCM_GPROC, SCM_GPROC1, SCM_SYMBOL, SCM_GLOBAL_SYMBOL,
2986 SCM_KEYWORD, SCM_GLOBAL_KEYWORD, SCM_VCELL, SCM_GLOBAL_VCELL,
2987 SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT): Don't initialize globals
2988 and static variables at their point of declaration, but rather in
2989 the init function.
2990
2991 * tags.h (SCM_PACK): Automatically cast to scm_bits_t.
2992
abeed821
GH
29932000-04-02 Gary Houston <ghouston@arglist.com>
2994
2995 * guardians.c (TCONC_IN, scm_make_guardian): set the CDR of the
2996 empty tconc pair to SCM_EOL instead of SCM_BOOL_F, avoiding the
2997 use of an improper list (which breaks g_print. g_print isn't
2998 used).
2999 guardians.c: Added more comments and modified the make-guardian
3000 docstring. Reordered a few procedures.
3001
cf498326
DH
30022000-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
3003
3004 * eval.c (scm_lookupcar1, scm_lookupcar, scm_m_case, scm_m_cond,
3005 scm_m_lambda, iqq, scm_m_define, scm_m_expand_body, unmemocopy,
3006 SCM_CEVAL), procs.h (SCM_TOP_LEVEL): Don't use C operators to
3007 compare SCM values.
3008
3009 (scm_makprom): Smob data is of type scm_bits_t.
3010
cffcab30
DH
30112000-03-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
3012
3013 * backtrace.c (display_error_body), debug.c (scm_procedure_source,
3014 scm_reverse_lookup), dynl.c (scm_dynamic_link): Don't use C
3015 operators to compare SCM values.
3016
3017 * debug.c (scm_make_debugobj), debug.h (SCM_DEBUGOBJ_FRAME,
3018 SCM_SET_DEBUGOBJ_FRAME): Update SCM_{SET_}?DEBUGOBJ_FRAME to
3019 access raw cell data with SCM_{SET_}?CELL_WORD_1.
3020
3021 * debug.c (scm_make_debugobj): Don't use SCM_SETCAR to set types.
3022
3023 * debug.c (scm_make_memoized), dynl.c (scm_dynamic_link): Smob
3024 data is of type scm_bits_t.
3025
7fa93bf8
DH
30262000-03-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
3027
3028 * gdbint.c (gdb_maybe_valid_type_p), guardians.c (TCONC_EMPTYP,
3029 scm_guardian_zombify): Use SCM_EQ_P to compare SCM values.
3030
3031 * guardians.c (GUARDIAN): Use SCM_CELL_WORD_1 for raw data.
3032
74a16888
DH
30332000-03-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
3034
3035 * ports.h (scm_port): Change type of stream member to scm_bits_t.
3036
3037 * gdbint.c (unmark_port, remark_port), ports.c (scm_markstream),
3038 strports.c (st_resize_port, scm_mkstrport), vports (sf_flush,
3039 sf_write, sf_fill_input, sf_close, scm_make_soft_port): Since
3040 streams are now of type scm_bits_t, SCM streams have to be
3041 unpacked/packed.
3042
3043 * ports.h (SCM_SETPTAB_ENTRY, SCM_SETSTREAM): Cast input to
3044 scm_bits_t.
3045
b6cc0ef6
MD
30462000-03-31 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3047
6a878357
MD
3048 * coop-defs.h (struct coop_t): Added `sto'-field again because of
3049 binary compatibility---let's remove it next time we alter some
3050 major structure.
3051
b6cc0ef6
MD
3052 * coop.c (coop_quitting_p, coop_cond_create, coop_mutex_create,
3053 coop_mother, coop_child): New variables.
3054 (mother): New function.
3055 (coop_create): New thread spawning mechanism which uses a "mother
3056 thread". The "dummy" pthreads aren't healthy enough to give birth
3057 to new threads since Linux threads thinks they are asleep.
3058
3059 * coop-defs.h (struct coop_t): Removed dummy_mutex.
3060
3061 * coop-defs.h, coop-threads.c (struct coop_t): Eliminate
3062 `sto'-field when GUILE_PTHREAD_COMPAT is enabled.
3063
843524cc
DH
30642000-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
3065
3066 * arbiters.c (scm_make_arbiter), async.c (scm_async), dynwind.c
3067 (scm_internal_dynamic_wind): Smob data is always of type
3068 scm_bits_t.
3069
3070 * arbiters.c (SCM_ARB_LOCKED, SCM_LOCK_ARB, SCM_UNLOCK_ARB):
3071 Access the locking information in cell entry 0 with
3072 SCM_{SET_}?CELL_WORD_0 instead of SCM_*CAR.
3073
3074 * async.c (scm_run_asyncs): Use SCM_NULLP to test for the empty
3075 list.
3076
3077 * dynwind.c (scm_dowinds): Use SCM_EQ_P to compare SCM values.
3078
3079 * ports.h (SCM_PTAB_ENTRY, SCM_SETPTAB_ENTRY): Access the ptab
3080 entry data using SCM_{SET_}?CELL_WORD_1 instead of SCM_{SET}?CDR.
3081
fbd485ba
DH
30822000-03-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
3083
3084 * alist.c (scm_sloppy_assq, scm_assq), eq.c (scm_eq_p, scm_eqv_p,
3085 scm_equal_p), list.c (scm_ilength, scm_last_pair, scm_reverse,
3086 scm_sloppy_memq, scm_delq_x, scm_delq1_x), tags.h (SCM_UNBNDP):
3087 Don't use C operators == and != to compare SCM values, use
3088 SCM_EQ_P instead.
3089
3090 * boolean.c (scm_boolean_p): Use SCM_BOOLP to determine whether a
3091 SCM value is equal to #t or #f.
3092
3093 * eq.c (scm_eqv_p, scm_equal_p): Don't use SCM_CAR to access the
3094 cell type entry of non immediate objects of unknown type. Use
3095 SCM_CELL_TYPE instead.
3096
3097 * gh_data.c (gh_scm2bool, gh_module_lookup), list.c
3098 (scm_sloppy_memv, scm_sloppy_member, scm_delv_x, scm_delete_x,
3099 scm_delv1_x, scm_delete1_x), scmsigs.c (scm_sigaction): Use
3100 SCM_FALSEP and SCM_TRUE_P to compare SCM values against #f and
3101 #t.
3102
3103 * list.c (scm_listify): Use SCM_UNBNDP to test for an unbound
3104 scheme value.
3105
64e3bf6c
MD
31062000-03-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3107
0208baa0
MD
3108 * coop-threads.c (scm_call_with_new_thread, scm_spawn_thread,
3109 scm_make_mutex, scm_make_condition_variable): Cast data to
3110 scm_bits_t in SCM_SET_CELL_WORD and SCM_NEWSMOB macros.
3111
64e3bf6c
MD
3112 * coop.c (coop_create): Set `specific' field, not `data' to NULL.
3113
94113249
DH
31142000-03-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
3115
3116 * smob.h (SCM_NEWSMOB, SCM_NEWSMOB2, SCM_NEWSMOB3, SCM_SMOB_DATA,
3117 SCM_SET_SMOB_DATA, SCM_TC2SMOBNUM, SCM_SMOBNUM): To access smob
3118 data, use SCM_{SET_}?CELL_TYPE or SCM_{SET_}?WORD_[1-3].
3119
3120 Note that this implies that smob data has always to be passed as
3121 values of type scm_bits_t.
3122
1978b33e
MD
31232000-03-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3124
3125 * threads.c (scm_init_threads): Pass 0 size to scm_make_smob_type
3126 for scm_tc16_thread. As the current COOP threads are written, GC
3127 is not supposed to manage storage for threads.
3128
3129 * error.c (scm_error): Don't try to throw an error if
3130 scm_gc_heap_lock is true.
3131
3132 * coop.c (coop_finish): New function. Called at exit.
3133 (coop_aborthelp): Free thread structures when threads die.
3134 Finished LinuxThreads compatibility support => COOP threads now
3135 mesh with LinuxThreads.
843e4e9d 3136
1978b33e
MD
3137 * coop-threads.c (scm_call_with_new_thread, scm_spawn_thread):
3138 Changed SETCDR --> SET_CELL_WORD_1.
3139
3140 * coop-threads.c (scheme_launch_thread): Set word 1 of handle to 0
3141 when thread dies.
3142
dd039d6d
DH
31432000-03-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
3144
3145 * boolean.h (SCM_TRUE_P): New macro.
3146
3147 * boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP), pairs.h
3148 (SCM_NULLP, SCM_NNULLP): Use SCM_EQ_P to compare SCM values.
3149
8b3bda20
DH
31502000-03-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
3151
3152 * continuations.h (SCM_CONTREGS, SCM_SET_CONTREGS): New macros to
3153 access continuation data.
3154
3155 (SCM_SETJMPBUF): Deprecated. Use SCM_SET_CONTREGS instead.
3156
3157 (SCM_JMPBUF, SCM_DYNENV, SCM_THROW_VALUE, SCM_BASE, SCM_SEQ,
3158 SCM_DFRAME): Use SCM_CONTREGS instead of SCM_CHARS to access
3159 continuation data.
3160
843e4e9d 3161 * continuations.c (scm_make_cont), init.c (start_stack),
8b3bda20
DH
3162 root.c (scm_internal_cwdr): Use SCM_SET_CONTREGS instead of
3163 SCM_SETJMPBUF.
3164
3210f49a
DH
31652000-03-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
3166
3167 * symbols.h (SCM_LENGTH, SCM_SETLENGTH): Access the length field
3168 of strings and symbols by using SCM_{SET_}?CELL_WORD_0.
3169
3170 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS): Use SCM_{SET_}?CELL_WORD_1
3171 to access the char * field of strings and symbols.
3172
2d67e390
DH
31732000-03-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
3174
3175 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Use SCM_SET_CELL_TYPE to set
3176 the type entry of a new cell. Added a comment about things to
3177 remember when updating the list of free cells.
3178
3179 (SCM_FREEP, SCM_MARKEDP): Use SCM_CELL_TYPE to access the type
3180 entry of a cell.
3181
76a369d9
DH
31822000-03-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
3183
3184 * pairs.h (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): Use
3185 SCM_CELL_OBJECT and SCM_SET_CELL_OBJECT. This change implies that
3186 with strict type checking enabled these macros will only work if
3187 given valid SCM parameters.
3188
3210f49a 3189 (SCM_GCCDR): Moved to tags.h.
76a369d9
DH
3190
3191 * tags.h (SCM_GCCDR): Moved here from pairs.h.
3192
2549a709
DH
31932000-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
3194
3195 * tags.h (SCM2PTR, PTR2SCM): Moved to gc.h.
3196
3197 * pairs.h (scm_cell, SCM_CELLPTR, SCM_CELL_WORD*, SCM_CELL_OBJECT*,
3198 SCM_SET_CELL_WORD*, SCM_SET_CELL_OBJECT*, SCM_CELL_TYPE,
3199 SCM_SET_CELL_TYPE, SCM_PTR_LT, SCM_PTR_MASK, SCM_PTR_GT,
3200 SCM_PTR_LE, SCM_PTR_GE, SCM_CELL_WORD_LOC, SCM_NEWCELL,
3201 SCM_NEWCELL2): Moved to gc.h.
3202
3203 (SCM_CARLOC, SCM_CDRLOC, SCM_SETAND_CAR, SCM_SETAND_CDR,
3204 SCM_SETOR_CAR, SCM_SETOR_CDR): Moved to gc.h. These names should
3205 be changed, though, since the macros are not only pair related.
3206
3207 (SCMPTR): Deleted.
3208
3209 * gc.h (SCM2PTR, PTR2SCM, scm_cell, SCM_CELLPTR, SCM_CELL_WORD*,
3210 SCM_CELL_OBJECT*, SCM_SET_CELL_WORD*, SCM_SET_CELL_OBJECT*,
3211 SCM_CELL_TYPE, SCM_SET_CELL_TYPE, SCM_PTR_LT, SCM_PTR_MASK,
3212 SCM_PTR_GT, SCM_PTR_LE, SCM_PTR_GE, SCM_CELL_WORD_LOC,
3213 SCM_NEWCELL, SCM_NEWCELL2, SCM_CARLOC, SCM_CDRLOC, SCM_SETAND_CAR,
3214 SCM_SETAND_CDR, SCM_SETOR_CAR, SCM_SETOR_CDR): Moved here from
3215 tags.h and pairs.h.
3216
8d3356e7
DH
32172000-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
3218
3219 * tags.h (SCM_STRICT_TYPING): New macro that, if defined,
3220 activates strict compile time type checking for variables of
3221 type SCM.
3222 (SCM, SCM_PACK, SCM_UNPACK): Define according to whether
3223 SCM_STRICT_TYPING or SCM_VOIDP_TEST are defined.
3224 (SCM_EQ_P): Defined as a macro equivalent for eq?.
3225
96f6f4ae
DH
32262000-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
3227
3228 * tags.h (SCM_POINTERS_MUNGED): Removed.
3229
3230 * gc.c (scm_gc_sweep, init_heap_seg): Removed use of
3231 SCM_POINTERS_MUNGED, thus fixing some illegal casts to SCM.
3232
0cbaaf0b
DH
32332000-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
3234
3235 * pairs.h (SCM_CELL_OBJECT, SCM_CELL_OBJECT_[0-3],
3236 SCM_SET_CELL_OBJECT, SCM_SET_CELL_OBJECT_[0-3], SCM_CELL_TYPE,
3237 SCM_SET_CELL_TYPE): Added a set of low level macros for accessing
3238 cell entries.
3239 (SCM_CELL_WORD_[0-3]): Renamed from the SCM_CELL_WORD[0-3].
3240
3241 * procs.h, procs.c: Instead of SCM_{SET_}?CELL_WORD[12], use the
3242 newly introduced SCM_{SET_}?CELL_OBJECT_[12] macros.
3243
7284d584
MD
32442000-03-23 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3245
3246 * tags.h: Disabled definition of SCM_VOIDP_TEST.
3247
3248 Defining SCM as void * introduces problems which haven't been
3249 handled yet. Developers who work with these issues can enable it
3250 in their working copies.
3251
3252 Disabling this definition exposes a set of newly introduced and
3253 older misuses of types which causes warning messages during
3254 compilation. We'll fix this successively.
3255
3256 * gc.c (scm_mark_locations): Changed * (SCM **) X --> * (SCM *) X
3257 in order to obtain a value of type SCM.
3258 (scm_cellp): Updated with new changes to scm_mark_locations.
3259
3260 * continuations.h (SCM_SETJMPBUF): Cast second arg into SCM.
3261
2f9055ea
MD
3262 * continuations.c (scm_make_cont): Removed cast of size_t into
3263 long.
3264
7284d584
MD
3265 * symbols.h (SCM_SETCHARS): Cast second arg into SCM.
3266
f81e080b
DH
32672000-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
3268
3269 * numbers.h (SCM_SETNUMDIGS): Use SCM_BIGSIZEFIELD macro for
3270 shifting, not constant. Thanks to Dale P. Smith.
3271
3272 * numbers.c (scm_sum, scm_difference): Don't test a SCM value
3273 for being less than zero. Decode it to a C value first. Again,
3274 thank you Dale.
3275
1ff2fa6e
DH
32762000-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
3277
3278 * numbers.h, ramap.c, struct.h, vectors.h: Don't use SCM2PTR for
3279 non scheme values. If raw data is stored in SCM variables, it has
3280 to be accessed using SCM_UNPACK until a better solution is found.
3281
3920465b
MD
32822000-03-22 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3283
6f29dc6d
MD
3284 * tags.h (SCM_ECONSP, SCM_NECONSP): More corrections of
3285 pointer-arithmetic induced by the SCM_PACK/UNPACK change.
3286
3287 * print.c (scm_iprin1): SCM_PACK/UNPACK corrections.
3288
3289 * gc.c (scm_gc_sweep): SCM_PACK/UNPACK corrections.
3290
3291 * eval.c (SCM_CEVAL, scm_unmemocar): SCM_PACK/UNPACK corrections.
3292
3293 * dynwind.c (scm_swap_bindings): SCM_PACK/UNPACK corrections.
3294
3920465b
MD
3295 * async.c, __scm.h: Removed lots of the old async click logic. It
3296 is possible to reinsert it by defining GUILE_OLD_ASYNC_CLICK in
3297 __scm.h. Let's try this out and dump the old code after the
3298 threads reorganization.
3299 (set-tick-rate, set-switch-rate): Conditionally removed.
3300
90cca6f9
MD
33012000-03-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3302
3303 * gc.c (scm_gc_mark): Bugfix 1: The recent SCM_PACK/UNPACK change
3304 made SCM values into pointers. This turned an arithmetic
3305 computation of the address of the vcell into a pointer-arithmetic
3306 one, thereby screwing up marking of structs.
3307 Bugfix 2: Removed incompletely introduced loop variable `j' used
3308 when protecting the tail array of a struct.
3309
8246bf3e
DH
33102000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
3311
3312 * struct.h (SCM_STRUCT_DATA): Don't cast SCM values to pointers.
3313
95c9e176
DH
33142000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
3315
3316 * symbols.h, symbols.c (scm_strhash): Declare the string
3317 parameter as constant, since it is not modified.
3318
3319 * symbols.c (scm_intern_obarray_soft,
3320 scm_sysintern0_no_module_lookup): Can now pass constant strings
3321 to scm_strhash without need for casting.
3322
7352d0b2
DH
33232000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
3324
3325 * vectors.h (SCM_VELTS, SCM_VELTS_AS_STACKITEMS): Don't cast SCM
3326 values to pointers. Use SCM2PTR instead.
3327
b00c8cdc 33282000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
9b139b4e
DH
3329
3330 * async.c (scm_set_tick_rate, scm_set_switch_rate): Don't unpack
3331 results of SCM_INUM.
3332
df2d5178
MD
33332000-03-21 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3334
bd54e664
MD
3335 * init.c (scm_boot_guile_1): Renamed GUILE_GC_TRIGGER_1 -->
3336 GUILE_MIN_YIELD_1, GUILE_GC_TRIGGER_2 --> GUILE_MIN_YIELD_2.
3337 GUILE_MIN_YIELD_X now take *positive* fractions of heap size.
3338
3339 * gc.c, gc.h (SCM_MIN_YIELD_1, SCM_MIN_YIELD_2,
3340 min_yield_fraction, min_yield, adjust_min_yield): Renamed from
3341 SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2, gc_trigger_fraction,
3342 gc_trigger, adjust_gc_trigger.
3343
df2d5178
MD
3344 * gc.c (alloc_some_heap): Further improvement of minimal heap size
3345 prediction.
3346 (SCM_MAX): New macro.
3347 (scm_freelist_t): New field: collected_1. Previous amount of
3348 collected cells.
3349 (gc_sweep_freelist_finish): Trigger based on two last values of
3350 freelist->collected to avoid unnecessary allocation due to
3351 temporary peaks.
bd54e664
MD
3352 (SCM_INIT_HEAP_SIZE_1, SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2):
3353 Adjusted to 45000 cells, 40% and 40%. Gives quick startup
3354 without extra heap allocation.
df2d5178 3355
f2961ccd
DH
33562000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
3357
3358 * numbers.h (SCM_MAKINUM): The parameter to SCM_MAKINUM should
3359 already be a C value. No need to unpack it.
3360
3210f49a 3361 * numbers.c (scm_long_long2num): Cast the parameter to scm_bits_t
f2961ccd
DH
3362 if we know it fits into an inum.
3363
3364 * ramap.c (ramap_rp): An scm_tc7_[ui]vect object does point to a
3365 field of long values. In contrast, SCM_VELTS accesses a field of
3366 SCM values.
3367
7b4cc831
MD
33682000-03-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3369
f1d316dd
MD
3370 * gc.c (scm_gc_stats): Inserted explanation of local_scm_mtrigger
3371 etc.
80770ddc
MD
3372 (scm_gc_yield_1): New variable: Holds previous yield. Used to
3373 make better judgements.
f1083dd7
MD
3374 (gc_sweep_freelist_finish): Inserted explanation of use of
3375 gc_trigger.
f1d316dd
MD
3376
3377 * print.h, stacks.h, options.c, options.h: Changed C++
3378 commentaries to C.
7b4cc831 3379
7a710745
DH
33802000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
3381
3382 * tags.h (SCM2PTR, PTR2SCM): Use SCM_PACK / SCM_UNPACK correctly.
3383
3384 * numbers.h (SCM_INUMP, SCM_MAKINUM, SCM_INUM0, SCM_COMPLEX_REAL,
3385 SCM_COMPLEX_IMAG, SCM_NUMP, SCM_BDIGITS): Use SCM_PACK /
3386 SCM_UNPACK / SCM2PTR correctly.
3387
1ef20c80
MD
33882000-03-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3389
3390 * gc.c (adjust_gc_trigger): Improved documentation.
3391 (alloc_some_heap): Since gc_trigger is used against
3392 freelist->collected, this is the value which should be used to
3393 predict minimum growth.
3394
b464b970
DH
33952000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
3396
3397 * eval.h: Fix mixup of packed/unpacked SCM values. (Thanks
3398 Thien-Thi Nguyen for the patch.)
3399
3ab9f56e
DH
34002000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
3401
3402 * numbers.c (scm_ash): Fixed typing problems with the second
3403 parameter and added some documentation. (Thanks Thien-Thi Nguyen
3404 for indicating the problem.)
3405
05bc3265
MD
34062000-03-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3407
78a4915a
MD
3408 * gc.c, gc.h (scm_gc_yield): New variable.
3409 (adjust_gc_trigger): Use scm_gc_yield.
3410 (alloc_some_heap): Use scm_gc_yield instead of
3411 scm_gc_cells_collected.
3412
05bc3265
MD
3413 * coop-threads.c: Addd #include "root.h", #include "strings.h".
3414
3415 * debug.c: Added #include "root.h". (Thanks to Thien-Thi Nguyen.)
3416
3417 * gc.c (scm_gc_for_newcell, adjust_gc_trigger): Improved GC
3418 trigger adjustmeant: Take yield (freed cells) for all freelists
3419 into account.
3420 (SCM_INIT_HEAP_SIZE_1, SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2): Tuned
3421 to 50000 cell heap with 45% trigger.
3422 (scm_gc_cells_collected): Reintroduced.
3423 (SCM_HEAP_SIZE): New macro.
3424 (scm_gc_sweep): Reintroduced correct computation of
3425 scm_cells_allocated.
3426 (scm_freelist_t): Corrected commentary for field `cluster_size':
3427 Clustersize counts objects, not cells; New member
3428 `clusters_allocated'.
3429
89e00824
ML
34302000-03-19 Michael Livshin <mlivshin@bigfoot.com>
3431
3432 * *.[hc]: add Emacs magic at the end of file, to ensure GNU
3433 indentation style.
3434
afcfc5bb
MD
34352000-03-19 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3436
3437 * threads.h: Added #include "libguile/throw.h". (Thanks to
3438 Thien-Thi Nguyen.)
3439
a00c95d9
ML
34402000-03-18 Michael Livshin <mlivshin@bigfoot.com>
3441
50fecba9
ML
3442 * tags.h: (SCM_DOUBLE_CELLP, SCM_NDOUBLE_CELLP): new macros (bad
3443 names, anyone got any better ones?)
a00c95d9
ML
3444
3445 * gc.h: (typedef struct scm_freelist_t) remove from here.
3446
50fecba9 3447 * gc.c: (CELL_UP, CELL_DN) made these macros take additional
a00c95d9
ML
3448 parameter (the span).
3449 (CLUSTER_SIZE_IN_BYTES, ALIGNMENT_SLACK) new macros.
50fecba9 3450 (typedef struct scm_freelist_t) moved here from gc.h, it had no
a00c95d9
ML
3451 business being externally visible.
3452 (typedef struct scm_heap_seg_data_t) renamed from
3453 scm_heap_seg_data, to be style-compliant.
3454 (scm_mark_locations) if the possible pointer points to a
50fecba9
ML
3455 double-cell, check that it's properly aligned.
3456 (init_heap_seg) align double-cells properly, work with the
3457 assumption that the segment size divides cleanly by cluster size.
a00c95d9
ML
3458 (round_to_cluster_size) new function.
3459 (alloc_some_heap, make_initial_segment) use round_to_cluster_size
3460 to satisfy the new init_heap_seg invariant.
3461
28b3236d
DH
34622000-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
3463
3464 * _scm.h: Don't include async.h everywhere...
3465
3466 * eq.c eval.c iselect.c: ... only include it here.
3467
ba11fd4c
DH
34682000-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
3469
3470 * _scm.h: Don't include root.h everywhere...
3471
3472 * async.c continuations.c eq.c eval.c evalext.c feature.c gc.c
3473 gdbint.c gsubr.c ioext.c keywords.c lang.c load.c macros.c
3474 numbers.c objprop.c ports.c print.c procprop.c ramap.c read.c
3475 srcprop.c stackchk.c stacks.c strports.c symbols.c unif.c
3476 variable.c vectors.c vports.c: ... only include it here.
3477
7ab3fdd5
DH
34782000-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
3479
3480 * _scm.h: Don't include strings.h everywhere...
3481
3482 * backtrace.c dynl.c error.c feature.c filesys.c fports.c gc.c
3483 gdbint.c ioext.c load.c net_db.c numbers.c objects.c options.c
3484 ports.c posix.c print.c procs.c random.c read.c regex-posix.c
3485 simpos.c socket.c stacks.c stime.c strop.c strports.c struct.c
3486 symbols.c unif.c vectors.c version.c vports.c: ... only include it
3487 here.
3488
f04d8caf
DH
34892000-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
3490
3491 * _scm.h: Don't include ports.h everywhere...
3492
3493 * arbiters.c backtrace.c debug.c dynl.c dynwind.c eval.c feature.c
3494 fluids.c gc.c gdbint.c guardians.c hash.c keywords.c mallocs.c
3495 numbers.c objects.c print.c read.c root.c smob.c srcprop.c
3496 stackchk.c strports.c struct.c throw.c variable.c: ... only
3497 include it here.
3498
003d1fd0
DH
34992000-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
3500
3501 * _scm.h: Don't include vectors.h everywhere...
3502
3503 * eq.c eval.c filesys.c gc.c gsubr.c guardians.c hash.c hashtab.c
3504 keywords.c net_db.c numbers.c objects.c posix.c print.c procprop.c
3505 procs.c ramap.c random.c read.c scmsigs.c socket.c sort.c stime.c
3506 strports.c symbols.c unif.c vports.c weaks.c: ... only include it
3507 here.
3508
0fa27efa
DH
35092000-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
3510
3511 * genio.h: removed. (Only content was '/* delete me */'.)
3512
3513 * Makefile.am arbiters.c backtrace.c debug.c dynl.c dynwind.c
3514 error.c filesys.c fluids.c gc.c gsubr.c guardians.c keywords.c
3515 libguile.h mallocs.c numbers.c print.c random.c read.c root.c
3516 srcprop.c stackchk.c struct.c threads.c throw.c variable.c:
3517 Removed reference to genio.h
3518
148f31de
MD
35192000-03-17 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3520
3521 * gc.c, gc.h: Cleanup of the change of 2000-03-15.
3522 Cluster sizes are now independent of GC trigger values.
3523 GUILE_GC_TRIGGER_n can now specify a relative trigger value:
3524 A negative integer gives fraction of total heap size in percent.
1eb489a2 3525 (SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2): Default values set to -40.
148f31de
MD
3526
3527 * init.c (scm_boot_guile_1): Introduced new variable
3528 GUILE_MAX_SEGMENT_SIZE; New environment variable names:
3529 GUILE_INIT_SEGMENT_SIZE_1, GUILE_GC_TRIGGER_1,
3530 GUILE_INIT_SEGMENT_SIZE_2, GUILE_GC_TRIGGER_2
3531
6d0f81dd 35322000-03-16 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
a00c95d9 3533
6d0f81dd
MD
3534 * __scm.h (GC_FREE_SEGMENTS): Disable this until we have made
3535 freeing of segment work with the new GC scheme. (Thanks to
bc2c8d98
MD
3536 Michael Livshin.) Oops, also happened to make GUILE_NEW_GC_SCHEME
3537 the default, but I'll let this change stay in CVS Guile since this
3538 code is not expected to contain serious bugs.
a00c95d9 3539
17351a6f 35402000-03-16 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
c5133dc9 3541
6c7c449e
MD
3542 * gc.c, gc.h (scm_map_free_list): Define also if GUILE_DEBUG is
3543 defined.
5a551542
MD
3544 (scm_free_list_length): New procedure (GUILE_DEBUG).
3545 Fixed a small but serious bug introduced by the previous change.
3546
17351a6f
MD
3547 * gc.c (scm_gc_sweep): Moved variable n_objects to inner sweep
3548 loop and declare as register.
6c7c449e 3549
c5133dc9
MD
3550 * gc.c (scm_gc_sweep): Sigh... forgot to clear private freelists
3551 after GC.
3552
3820581c
GB
3553Wed Mar 15 08:27:04 2000 Greg J. Badros <gjb@cs.washington.edu>
3554
3555 * fluids.c: Docstring patch from Keisuke Nishida. Some
3556 reindentation, too, and a couple formals renamed. Should
3557 fluid-set! return UNSPECIFIED instead of a value?
3558
3559Wed Mar 15 08:24:58 2000 Greg J. Badros <gjb@cs.washington.edu>
3560
3561 * Makefile.am: Separate out DOT_X_FILES and DOT_DOC_FILES, and
a00c95d9 3562 generate the latter from the concrete listing of the former. Then
3820581c
GB
3563 make guile-procedures.txt depend on DOT_DOC_FILES instead of
3564 *.doc, so that rebuilding it works.
3565
dd6390bf
GB
3566Wed Mar 15 08:12:14 2000 Greg J. Badros <gjb@cs.washington.edu>
3567
3568 * libguile.h: Include libguile/validate.h. Thanks Keisuke Nishida!
3569
3570 * guile-snarf.awk.in: Replace docstring line-ending \n" and \n\n"
3571 with nothing and \n, respectively. Thanks Keisuke Nishida for
3572 noticing this problem.
3573
4fdb0ae2
MD
35742000-03-15 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3575
3576 * __scm.h (GUILE_NEW_GC_SCHEME): Define this if you want to test a
3577 new way of allocating heap. It makes Guile fast, but still
3578 contains bugs.
3579
3580 * gc.c, gc.h, pairs.h, init.c: Implementation of a new way of
3581 allocating heap. The basic idea is to trigger GC every Nth
3582 allocated cell and grow heap when free list runs out. The scheme
3583 has been extended so that GC isn't triggered until all remaining
3584 cells are used. The implementation is also prepared for
3585 development in the direction of POSIX threads.
3586
3587 * gc.c (SCM_EXPHEAP): In order to grow by a factor of 1.5,
3588 SCM_EXPHEAP should return half of the heap size.
3589
3d8d1283
MD
35902000-03-14 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3591
5f4edb86
MD
3592 The following change to init.c is only enabled if Guile was
3593 configured with --enable-guile-debug.
a00c95d9 3594
5f4edb86
MD
3595 * init.c (scm_i_getenv_int): New function.
3596 (scm_boot_guile_1): Use the environment variables
3597 GUILE_INIT_HEAP_SIZE, GUILE_INIT_HEAP_SIZE2 to select heap size if
3598 they exist. (This may be replaced by a Scheme level mechanism in
3599 the future.)
3600
3d8d1283 3601 * objprop.c (s_scm_set_object_property_x): Use scm_assq instead of
90e77861 3602 scm_assoc. (Thanks to Keisuke Nishida.)
3d8d1283 3603
b0e37c83
MD
36042000-03-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3605
3606 * eval.c, lang.c, lang.h (scm_lisp_nil, scm_lisp_t): Renamed from
2b260c0f 3607 scm_nil, scm_t. (Thanks to Keisuke Nishida.)
b0e37c83 3608
16d35552
MD
36092000-03-14 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3610
5ebf0091
MD
3611 * init.c (scm_boot_guile_1): Use same initial segment size for
3612 1-word and 2-word segments. Having the smaller size causes Guile
3613 to GC too often. Obviously something needs to be done to allow
3614 for a smaller 2-word segment without this to happen. (The amount
3615 of heap for each type should be automatically adapted to the
3616 application somehow.)
3617
31ed4cff
MD
3618 [Almost all of these changes should be documented in the NEWS
3619 file.]
3620
cf2c7413
MD
3621 * gc.h (scm_freelist_t): New type.
3622
3623 * pairs.h (SCM_NEWCELL, SCM_NEWCELL2): Use new style freelists.
3624
3625 * gc.c (SCM_INIT_HEAP_SIZE): Changed from 32768 --> 40000 so that
3626 all of Guile basics fits into one segment and there suitable room
3627 for work.
3628 (SCM_EXPHEAP): Now takes an argument. Grow by a factor of 1.5
3629 instead of 2.
3630 (scm_freelist, scm_freelist2): Now of type scm_freelist_t.
3631 Freelists now contains information about object span, cells
3632 collected and amount of cells in heap segments belonging to the
3633 list.
3634 (scm_heap_size, scm_gc_cells_collected): Removed.
3635
3636 * init.c (scm_boot_guile_1): Make 2-word segment 8K (512 cells).
3637
16d35552
MD
3638 * Makefile.am (libguile_la_LDFLAGS): Bumped library version
3639 number.
3640
cf2c7413 3641 * __scm.h eq.c, eval.c, gc.c, gc.h, gh_data, hash.c, numbers.c,
16d35552
MD
3642 numbers.h, objects.c, ramap.c, random.c, unif.c, unif.h: Extensive
3643 rewrite of handling of real and complex numbers.
3644 (SCM_FLOATS, SCM_SINGLES): These #ifdef conditionals have been
3645 removed along with the support for floats. (Float vectors are
3646 still supported.)
3647
3648 * tags.h (scm_tcs_bignums): Removed.
3649 (scm_tc16_bigpos, scm_tc16_bigneg): Replaced by scm_tc16_big.
3650 Use SCM_BIGSIGN(x) to test for sign!
3651 (scm_tc16_big): The new bignum type.
3652 (SCM_REAL_PART, SCM_IMAG_PART): Removed.
3653
3654 * numbers.h (SCM_BIGSIGN): Sign moved to bit 16.
3655 (scm_makdbl): Deprecated.
3656 (SCM_NEWREAL, SCM_NEWCOMPLEX): New macros.
3657 (SCM_SINGP): Deprecated.
3658 (SCM_FLO): Removed.
3659 (SCM_INEXP, SCM_CPLXP): Deprecated.
3660 (SCM_INEXACTP, SCM_COMPLEXP): New macros.
3661 (SCM_COMPLEX_REAL, SCM_COMPLEX_IMAG): Renamed from
3662 SCM_REAL, SCM_IMAG (and now only valid for complex numbers).
3663 (SCM_REAL, SCM_IMAG): New, *deprecated*, selectors which work both
3664 for doubles and complex numbers.
3665 (SCM_REAL_VALUE): New selector for doubles.
3666 (scm_double_t, scm_complex_t): New types.
3667 (scm_dbl): Removed.
3668
3669 * numbers.c (scm_floprint, scm_floequal): Removed.
3670 (scm_print_real, scm_print_complex, scm_real_equalp,
3671 scm_complex_equalp): New functions.
3672
3673 * unif.c (scm_makflo): Removed.
3674
3675 * smob.h (SCM_SMOB_PREDICATE): New macro.
3676 (SCM_NEWSMOB2, SCM_RETURN_NEWSMOB2, SCM_NEWSMOB3,
3677 SCM_RETURN_NEWSMOB3): New macros.
3678
36791999-11-21 Michael Livshin <mlivshin@bigfoot.com>
3680
3681 The following changes implement primitive support for double cells
3682 (i.e. four-word cells) and change the representation of some
3683 things to multi-cells instead of cons+malloc. (Applied and
3684 modified by mdj.)
3685
3686 * pairs.h (SCM_NEWCELL2): double-cell variants of SCM_NEWCELL.
3687 (SCM_CELL_WORD, SCM_CELL_WORDLOC, SCM_SET_CELL_WORD): primitive
3688 multi-cell access macros (used by the ones below).
3689 (SCM_CELL_WORD[0-3], SCM_SET_CELL_WORD[0-3]): multi-cell access
3690 macros.
3691
3692 * gc.c (scm_freelist2): multi-cell freelists.
3693 (inner_map_free_list): map_free_list, parameterized on ncells.
3694 "nn cells in segment mm" was misleading for ncells > 1; changed to
3695 "objects". still print cells too, though.
3696 (scm_map_free_list): rewritten using inner_map_free_list.
3697 (scm_check_freelist): get freelist as parameter, since now we have
3698 more than one.
3699 (scm_debug_newcell2): multi-cell variants of
3700 scm_debug_newcell.
3701 (scm_gc_for_newcell): take ncells and freelist pointer as
3702 parameters.
3703 (scm_gc_mark): add case for tc7_pws (procedures with setters are
3704 now double cells).
3705 (scm_gc_sweep): don't free the float data, since it's not malloced
3706 anymore.
3707 (init_heap_seg): didn't understand what n_new_objects stood for,
3708 so changed to n_new_cells.
3709 (make_initial_segment): new function, makes an initial segment
3710 according to given ncells.
3711 (scm_init_storage): call make_initial_segment, for ncells={1,2,3}.
3712
3713 * numbers.c (scm_makdbl): no malloc'ing needed, so the
3714 {DEFER,ALLOW}_INTS thing removed.
3715
3716 * numbers.h (struct scm_dbl): changed to represent a double cell,
3717 with the number in the second half.
16d35552
MD
3718
3719 * dynwind.c: changed the wind-guards representation to double
3720 cell.
3721
3722 * procs.c, procs.h: changed the procedure-with-setter representation
3723 to double cell.
3724
3725 * async.c, async.h: made async representation a double cell.
3726
16d35552 3727 * dynl.c: made dynamic_obj representation a double cell.
a00c95d9 3728
b70ecbd0
GH
37292000-03-13 Gary Houston <ghouston@arglist.com>
3730
3731 * ports.c (flush_void_port): renamed to flush_port_default.
3732 (end_input_void_port): renamed to end_input_default.
3733
3734 * init.c (scm_standard_stream_to_port): create a void port instead
3735 of opening /dev/null if the standard file descriptors are bad.
3736 advantages: no portability problems, doesn't waste a file descriptor,
3737 simplifies the code (thanks to Marius for the idea).
3738
3739 * vports.c (s_scm_make_soft_port): call scm_port_non_buffer.
3740
3741 * void ports: make reading from a void port give EOF instead of
3742 segv:
3743 * ports.c (s_scm_sys_make_void_port): modified docstring.
3744 (fill_input_void_port): new proc.
3745 (scm_init_ports): set up fill_input_void_port.
3746 * ports.c (scm_port_non_buffer): new proc.
3747 (scm_void_port): call scm_port_non_buffer.
3748
3749 * fports.c (scm_setvbuf): docstring: remove the fcntl documentation
3750 which was incorrectly appended.
3751
fdc7ea2d
MD
37522000-03-13 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3753
3754 * guile-doc-snarf.in: Don't use absolute path for `sed'. (Note
3755 that we can't use autoconf for this. Autoconf itself relies on
26fba922 3756 the existence of `sed' somewhere on your path.) (Thanks to Dirk
fdc7ea2d 3757 Herrman.)
a00c95d9 3758
68933ba3
MD
37592000-03-13 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3760
b44a555a
MD
3761 * Makefile.am (libguile_la_SOURCES): Moved iselect.c here from
3762 EXTRA_libguile_la_SOURCES.
3763
3764 * iselect.h: Always declare scm_internal_select.
3765
3766 * iselect.c (scm_internal_select): Added SCM_ASYNC_TICK at the
3767 end. Also let scm_internal_select be a real function also when
3768 not using threads.
3769
68933ba3
MD
3770 * __scm.h (SCM_TICK): Oops! Forgot to put SCM_ASYNC_TICK here...
3771
c7f6ea11
MD
37722000-03-13 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
3773
3774 * __scm.h (SCM_ALLOW_INTS, SCM_REALLOW_INTS): Removed call to
3775 SCM_ASYNC_TICK. (This is a preparation for POSIX threads support,
3776 and kind of an experiment: Will this cause problems?)
3777
62dbc244
GB
3778Sun Mar 12 13:26:30 2000 Greg J. Badros <gjb@cs.washington.edu>
3779
3780 * Makefile.am: Added *.doc to DISTCLEANFILES.
3781
4f2f645d
GH
37822000-03-12 Gary Houston <ghouston@arglist.com>
3783
3784 * fports.c (scm_fdes_to_port): call fcntl F_GETFL to test that
3785 the fdes is valid before doing anything else. check that
3786 the file descriptor supports the modes required.
3787 (scm_fport_buffer_add): don't throw an error if fstat doesn't
3788 work: just use the default buffer size.
3789
3790 * throw.c: change an outdated comment about scm_internal_catch
3791 BODY: it doesn't take a jumpbuf arg.
3792
3793 * init.c (scm_standard_stream_to_port): install a handler in case
3794 scm_fdes_to_port throws an error. don't check here whether the
3795 file descriptor is valid, since scm_fdes_to_port will do that.
3796 set the revealed count depending on whether the port got the
3797 standard file descriptor.
3798 (stream_body_data): new type.
3799 (stream_body, stream_handler): new procs.
3800
7f782a0a
MD
38012000-03-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3802
67673f75
MD
3803 * stacks.c, stacks.h, struct.c, tags.h, unif.c (scm_bits_t):
3804 Renamed from SCMWORD.
3805
3806 * tags.h (SCM_NCELLP): Removed (SCMWORD).
3807
f1267706 3808 * arbiters.c (SCM_ARB_LOCKED): Use SCM_UNPACK_CAR.
67673f75 3809
74a426ae
MD
3810 * async.c, boolean.h, debug.c, dynl.c, dynwind.c, eval.c, eval.h,
3811 feature.h, filesys.h, fluids.h, fports.c, fports.h, gc.c, gc.h,
3812 hash.c, keywords.h, macros.c, numbers.c, numbers.h, objects.c,
3813 objects.h, options.c, pairs.h, ports.c, ports.h, print.c,
3814 procs.h, ramap.c, read.c, smob.c, smob.h, srcprop.h, stacks.c,
3815 stacks.h, strports.c, struct.c, struct.h, tag.c, tags.h,
3816 throw.c, unif.c, unif.h, variable.h, vectors.h, weaks.c,
f1267706 3817 weaks.h (SCM_PACK, SCM_UNPACK, SCM_UNPACK_CAR): Renamed from
74a426ae
MD
3818 SCM_ASSCM, SCM_ASWORD, SCM_CARW).
3819
7f782a0a
MD
3820 * numbers.h (SCM_SRS, SCM_INUM): Corrected SCM_ASSCM/ASWORD fixes.
3821
3822 * alist.c, eval.c, net_db.c, posix.c, print.c, snarf.h, struct.c,
3823 tags.h: Fixed copyright notices.
3824
3825 * struct.c, coop-threads.c: SCM_ASSCM/ASWORD fixes.
0cd87628 3826
7f782a0a 38272000-03-12 Marius Vollmer <mvo@zagadka.ping.de>
a00c95d9 3828
0cd87628
MV
3829 * init.c (scm_standard_stream_to_port): Check whether the file
3830 descriptor is valid and substitute "/dev/null" when not.
a00c95d9 3831
f3b5e185
MD
38322000-03-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3833
3834 * coop-defs.h (struct timespec): Conditionally defined.
3835
3836 * coop.c (coop_condition_variable_timed_wait_mutex): Use ETIMEDOUT
3837 instead of ETIME.
38eca29b
MD
3838
3839 * readline.c (match_paren): Bugfix: First arg to select is not
3840 number of descriptors but the number of the highest descriptor +
3841 1.
3842
3843 This is a preliminary attempt at a cleanup of the threads support
3844 code. It moves things to better places, makes arguments more
3845 consistent with the POSIX API (which is used in GNOME's glib), and
3846 adds new functionality.
a00c95d9 3847
38eca29b
MD
3848 * readline.c (scm_init_readline): Added new arg to scm_init_mutex.
3849
3850 * coop-defs.h (scm_mutex_trylock): New macro: alias for
3851 coop_mutex_trylock.
3852 (scm_cond_init): Changed definition to
3853 coop_new_condition_variable_init.
a00c95d9 3854
38eca29b
MD
3855 * coop.c: #include <errno.h>
3856 (coop_timeout_qinsert): Moved here from iselect.c
3857 (coop_new_mutex_init, coop_new_condition_variable_init): New
3858 functions. The strange names are temporary. Use scm_mutex_init
3859 and scm_cond_init instead.
3860 (coop_mutex_trylock): New function. Uses errno.h:EBUSY. errno.h
3861 is ANSI C, but should we check for individual error codes in
3862 configure.in?
3863 (coop_condition_variable_timed_wait_mutex): New function.
3864 (coop_key_create, coop_setspecific, coop_getspecific,
7f782a0a 3865 coop_key_delete): New functions.
38eca29b
MD
3866
3867 * iselect.c (coop_timout_qinsert): Moved to coop.c
3868
32e1616c
MD
38692000-03-11 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
3870
3871 * pairs.h (SCM_SETAND_CAR, SCM_SETAND_CDR, SCM_SETOR_CAR,
3872 SCM_SETOR_CDR): Corrected SCM_ASSCM/WORD fixes.
3873
3874 * tags.h (SCM_VOIDP_TEST): Renamed from VOIDP_TEST.
3875 Layout cleanups.
3876
3877 * objects.h (SCM_CLASS_FLAGS, SCM_OBJ_CLASS_FLAGS,
3878 SCM_SET_CLASS_INSTANCE_SIZE), struct.h (SCM_STRUCT_VTABLE_DATA),
3879 proc.h (SCM_CLOSCAR): SCM_ASSCM/WORD fixes.
3880
3881 * eval.c (scm_lookupcar1): Inserted SCM_ASWORD in expressions
3882 dealing with ilocs.
3883
d5c39069
GB
38842000-03-11 Dale P. Smith <dpsm@en.com>, applied by Greg J. Badros, <gjb@cs.washington.edu>
3885
3886 * numbers.c (scm_copy_big_dec, scm_copy_smaller, scm_big_ior,
3887 scm_big_xor, scm_big_and, scm_big_test): Added new lowlevel bignum
3888 logical functions from SCM.
3889
3890 (logand, logior, logxor, logtest, logbit?): Extended scheme
3891 logical functions to use bignums from SCM.
3892
3893 (lognot): Removed call to `SCM_VALIDATE_INUM' that prevented
3894 lognot from using bignums.
3895
3e892913
GB
3896Thu Mar 9 11:33:25 2000 Greg J. Badros <gjb@cs.washington.edu>
3897
a00c95d9 3898 * vectors.h (SCM_VELTS_AS_STACKITEMS): Added this macro to help in
3e892913
GB
3899 eliminating some warnings.
3900
3901 * unif.c, strports.c, print.c, options.c: Fix some warnings on
3902 mis-use of SCM/long
3903
3904 * gc.c, gc.h: Added scm_return_first_int(), and added comment re:
3905 what the scm_return_first* functions do.
3906
7ac030d6
GB
39072000-03-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>, applied by Greg J. Badros, <gjb@cs.washington.edu>
3908
3909 * libguile/*.[ch]: make a distinction between SCM as a generic
3910 name for a Scheme object (now a void*), and SCM as 32 bit word for
3911 storing tags and immediates (now a long int). Introduced
3912 SCM_ASWORD and SCM_ASSCM for conversion. Fixed various dubious
3913 code in the process: arbiter.c (use macros), unif.c (scm_array_p),
a00c95d9 3914
f635d2d4
GB
3915Wed Mar 8 10:15:59 2000 Greg J. Badros <gjb@cs.washington.edu>
3916
3917 * numbers.c: Use SCM_VALIDATE_LONG_COPY, and longs, not ints, in
3918 various logXXX primitives. Thanks Eric Moore!
3919
9eaa7fb6
GB
3920Tue Mar 7 08:05:22 2000 Greg J. Badros <gjb@cs.washington.edu>
3921
3922 * run-test, remaining-docs-needed: Added these scripts. The
3923 second one is only temporary until the docstring additions are
3924 complete. run-test may best live on, but is here mostly for
3925 convenience and awareness for now.
3926
3927 * hash.c: Docs, minor cleanup patch from Dirk Herrman.
3928
49673698
GB
3929Thu Mar 2 16:06:58 2000 Greg J. Badros <gjb@cs.washington.edu>
3930
3931 * error.h, error.c: Added `scm_wrong_type_arg_msg' to support
3932 displaying the expected type. Use SCM_LISTn in a couple places
3933 instead of scm_cons-ing by hand.
3934
3935 * __scm.h: Added SCM_ASSERT_TYPE macro.
3936
3937 * validate.h, scm_validate.h: Added the former, as a renamed
3938 version of the latter with SCM_ASSERT_TYPE used in
3939 SCM_MAKE_VALIDATE (instead of just SCM_ASSERT)
3940
3941 * Makefile.am: Rename scm_validate.h to validate.h.
3942
3943 * *.c, *.h: Include validate.h, not scm_validate.h (old name's
3944 prefix was superfluous).
3945
417bdef8
GB
3946Thu Mar 2 15:33:12 2000 Greg J. Badros <gjb@cs.washington.edu>
3947
3948 * hashtab.c: Improved documentation for lots of functions. Added
3949 handwritten docs for `hash-fold'.
3950
3951Thu Mar 2 15:13:25 2000 Greg J. Badros <gjb@cs.washington.edu>
3952
3953 * list.c: Added hand-written docs for `del{q,v,ete}1!'.
3954
26a760c6
GB
3955Thu Mar 2 12:38:30 2000 Greg J. Badros <gjb@cs.washington.edu>
3956
a00c95d9 3957 * list.c: Moved append docs to append! Thanks Dirk Hermann. Also,
26a760c6
GB
3958 added append docs from R4RS.
3959
3960 * strings.c: Docstring typo fix, + eliminate unneeded IMP tests.
3961 Thanks Dirk Hermann!
3962
3963 * chars.h: Provide SCM_CHARP, SCM_CHAR, SCM_MAKE_CHAR and
3964 deprecate SCM_ICHRP, SCM_ICHR, SCM_MAKICHR. Thanks Dirk Hermann!
a00c95d9 3965
26a760c6
GB
3966 * *.h, *.c: Use SCM_CHARP, SCM_CHAR, SCM_MAKE_CHAR throughout.
3967 Drop use of SCM_P for function prototypes... assume an ANSI C
3968 compiler. Thanks Dirk Hermann!
3969
898942f8
GB
3970Sat Feb 19 12:20:12 2000 Greg J. Badros <gjb@cs.washington.edu>
3971
3972 * ports.c: Made `set-port-column!' and `set-port-line!' each
3973 return SCM_UNSPECIFIED instead of a (not-scheme-object) integer
3974 that caused a seg fault. Also fixed `set-port-column!'s
3975 docstring. Thanks Han-Wen Nienhuys for finding the bug!
3976
84a3df2c
GB
3977Sun Feb 13 19:11:42 2000 Greg J. Badros <gjb@cs.washington.edu>
3978
3979 * arbiters.c, eq.c, gc.c, guardians.c, list.c, ports.c, print.c,
a00c95d9 3980 regex-posix.c, scmsigs.c, stime.c, strings.c, variable.c, stime.c,
84a3df2c
GB
3981 strings.c, variable.c: Added lots of documentation, cleaned up
3982 some existing documentation. Occasionally changed formal params
3983 to match docs. Also folded an #ifdef into the inners of a
3984 primitive instead of having two copies of the primitive
3985 (`get-internal-real-time', from stime.c)
3986
3987Sun Feb 13 18:12:19 2000 Greg J. Badros <gjb@cs.washington.edu>
3988
3989 * ports.c: Added docs for primitives missing them. Written by
3990 hand.
3991
3f557de6
GB
3992Sun Feb 13 09:40:36 2000 Greg J. Badros <gjb@cs.washington.edu>
3993
3994 * guile-doc-snarf.in: Use ${AWK} -f guile-func-name-check, not
3995 just execing guile-func-name-check. Thanks Michael Livshin!
3996
ddcccdb3
GB
3997Thu Feb 10 11:43:23 2000 Greg J. Badros <gjb@cs.washington.edu>
3998
3999 * guile-snarf.awk.in: Tweak to work with Sun/HP awk, removed some
4000 dead code. Patch from Michael Livshin.
4001
4002 * guile-doc-snarf.in: Tweak to work with Sun/HP sh. Patch from
4003 Michael Livshin.
4004
720e8692
GH
40052000-02-09 Gary Houston <ghouston@arglist.com>
4006
4007 * init.c (scm_init_standard_ports): when stdout is a tty, make the
4008 current-output-port unbuffered by default. this is less confusing
4009 for interactive use. it was line-buffered because of a
4010 performance problem with unbuffered ports, but I think it will be
4011 OK now.
4012
43ff3170
GH
40132000-02-08 Gary Houston <ghouston@arglist.com>
4014
4015 * __scm.h: don't define long_long or ulong_long if HAVE_LONG_LONGS
4016 is not defined.
4017
4018 * stime.c (scm_localtime, scm_mktime): if neither HAVE_TM_ZONE nor
4019 HAVE_TZNAME are defined, use an empty string instead of giving two
4020 spurious compile-time errors.
4021
4ba47302
GB
4022Tue Feb 8 13:57:46 2000 Greg J. Badros <gjb@cs.washington.edu>
4023
4024 * ports.c: Doc patches from Richard Kim. Pasted from MIT Scheme.
4025 Thanks Richard!
4026
09a617f7
GB
4027Mon Feb 7 09:07:31 2000 Greg J. Badros <gjb@cs.washington.edu>
4028
4029 * macros.c: Doc patches from Richard Kim. Pasted from scm.texi.
4030
9dbcf010
GB
4031Sun Feb 6 20:26:21 2000 Greg J. Badros <gjb@cs.washington.edu>
4032
4033 * pairs.c: Doc patches from Richard Kim. Pasted from MIT Scheme
4034 (which is GNU GPL'd).
4035
bd9e24b3
GH
40362000-01-31 Gary Houston <ghouston@arglist.com>
4037
4038 * strings.h: don't use SCM_P. don't include <string.h>.
4039 * error.c, gh_data.c, ports.c, script.c, strop.c: include <string.h>.
a00c95d9 4040
bd9e24b3
GH
4041 * strings.c (scm_string_ref): make the 2nd argument compulsory.
4042 previously it defaulted to zero for no good reason that I can see.
4043 use a local variable for SCM_INUM (k). replace
4044 SCM_VALIDATE_INUM_DEF with SCM_VALIDATE_INUM_COPY.
4045
4046 (scm_makfromstr): cosmetic changes.
4047
4048 (scm_string): Accept only chars in the list, not strings, for
4049 conformance to R5RS (particularly for list->string, which is
4050 supposed to be the inverse of string->list.) remove
4051 SCM_DEFER_INTS/SCM_ALLOW_INTS, which is unnecessary since
4052 scm_makstr handles the cell allocation. when reporting wrong-type
4053 arg, don't report the position as 1.
4054
4055 * posix.c (scm_init_posix): intern PIPE_BUF if it's defined.
4056
28d77376
GH
40572000-01-29 Gary Houston <ghouston@arglist.com>
4058
ae1b098b
GH
4059 * posix.c (scm_pipe): rewrote the docstring.
4060
28d77376
GH
4061 * filesys.c (scm_select, retrieve_select_type, get_element,
4062 fill_select_type, set_element): modified so that Scheme
4063 "select" tests port buffers for the ability to provide input
4064 or accept output. Previously only the underlying file descriptors
4065 were checked. Rewrote the docstring.
a00c95d9 4066
7f1497ce
GB
4067Thu Jan 27 10:14:25 2000 Greg J. Badros <gjb@cs.washington.edu>
4068
4069 * vectors.c, symbols.c, strorder.c: Documentation cut and pasted
4070 from Gregg Reynolds. Thanks Gregg!
4071
2288ff9b
GB
4072Thu Jan 27 09:59:38 2000 Greg J. Badros <gjb@cs.washington.edu>
4073
4074 * strop.c (scm_i_index): Obfuscated commented-out SCM_DEFINE by
4075 adding "x" prefix to the line so that guile-func-name-check
4076 doesn't complain unnecessarily.
4077
349af6dd
GB
4078Wed Jan 26 17:33:52 2000 Greg J. Badros <gjb@cs.washington.edu>
4079
4080 * throw.c: Factor out an #ifdef/#else/#endif choice more finely
4081 for maintainability.
4082
4083 * strop.c: Documentation added by Gregg A. Reynolds. Pasted in
4084 from qdocs, RnRs.
4085
a28eb127
GB
4086Wed Jan 26 10:02:11 2000 Greg J. Badros <gjb@cs.washington.edu>
4087
a00c95d9 4088 * tag.c: Added doc for `tag', but mark as deprecated since Mikael
a28eb127
GB
4089 suggests removing tag.c altogether (and using a new `class-of'
4090 instead).
4091
4092 * strings.c: Added documentation from Gregg A. Reynolds. Edited
4093 a bit by me to use FOO instead of @var{foo} and to have the
a00c95d9 4094 summary come before preconditions on input. Also dropped trailing
a28eb127
GB
4095 (rnrs) note.
4096
4097 * gsubr.c: Do not use SCM_DEFINE for `gsubr-apply'. Register the
4098 function with scm_make_subr_opt w/ last arg of 0 so it is not
4099 visible at the Scheme level. Mikael says that this is the right
4100 thing because the first arg to the proc is the guts of a compiled
4101 closure and shouldn't be exposed to the Scheme level.
4102
ac2259fc
GB
4103Tue Jan 25 17:15:47 2000 Greg J. Badros <gjb@cs.washington.edu>
4104
4105 * sort.c: typo in comment fixed.
4106
4107 * keywords.c: Added documentation.
4108
4109 * guardians.c: Added documentation (could be better).
4110
4111 * gc.c: Added docs for gc-set-debug-check-freelist.
4112
4113 * eq.c: Added docs for eq?, eqv? equal? abridged from R4RS.
4114
4115 * boolean.c: Added docs for `not', `boolean?' (by hand).
a00c95d9 4116
d928e0b4
GB
4117Tue Jan 25 13:28:56 2000 Greg J. Badros <gjb@cs.washington.edu>
4118
4119 * random.c: Added documentation, from SLIB page:
4120 http://angela.ctrl-c.liu.se/~calle/scheme/slib_toc.html
4121
4122Mon Jan 24 17:50:20 2000 Greg J. Badros <gjb@cs.washington.edu>
4123
4124 * variable.c, version.c: Added documentation, written by hand
4125 since I could not find anything already written that was
4126 relevant.
4127
d831b039
GH
41282000-01-23 Gary Houston <ghouston@arglist.com>
4129
a00c95d9 4130 * filesys.c (scm_chown): omit port/fdes support if HAVE_FCHOWN is
d831b039
GH
4131 not defined (thanks to Richard Y. Kim).
4132
88ec97ad
GB
4133Thu Jan 20 13:00:38 2000 Greg J. Badros <gjb@cs.washington.edu>
4134
4135 * Makefile.in: Removed, this is auto-generated.
4136
078e9092
GB
4137Thu Jan 20 11:33:47 2000 Dirk Hermann <dirk@ida.ing.tu-bs.de> --applied 01/20/00 gjb
4138
4139 * list.c: Put some variable initialization code at the point of
4140 declaration; Added a comment for list*; Formatting changes.
4141
4142 * load.c: use SCM_NNULLP to make sure the end of a list is not
4143 reached yet.
4144
e7a96050
MD
41452000-01-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4146
a177af34
MD
4147 * backtrace.c (scm_display_error_message): Bugfix: Don't use
4148 result of scm_list_p as C boolean.
4149 (scm_display_error_message, scm_set_print_params_x): Use new
4150 validation macros. (Thanks to Dirk Herrmann.)
4151
d06bcb02
MD
4152 * net_db.c (scm_resolv_error): Cast result from hstrerror.
4153
4154 * strports.c (st_end_input): Inserted parenthesis to get operator
4155 grouping correct.
4156
4157 * list.h (scm_init_list): Removed SCM_P around prototypes.
4158
4159 * fports.c, list.c, numbers.c, ports.c, stime.c, symbols.c,
4160 filesys.c, posix.c: Converted docstrings to ANSI C format and
e7a96050
MD
4161 escaped " occurring inside string literals.
4162
682eefe9
MD
4163Tue Jan 18 13:21:08 2000 Mikael Djurfeldt <mdj@r11n07-s.pdc.kth.se>
4164
4165 * posix.c (scm_mknod): Escape " occuring inside docstring.
4166
56cfe22b
MD
41672000-01-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4168
4169 * alist.c, chars.c, debug.c, dynl.c, dynwind.c, error.c, eval.c,
4170 evalext.c, filesys.c, gc.c, hash.c, hashtab.c, ioext.c,
4171 keywords.c, list.c, load.c, macros.c, net_db.c, numbers.c,
4172 objprop.c, ports.c, posix.c, print.c, procprop.c, procs.c,
4173 ramap.c, regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c,
4174 stacks.c, stime.c, strings.c, strop.c, strports.c, struct.c,
4175 symbols.c, throw.c, unif.c, vectors.c, version.c, vports.c,
4176 weaks.c: Converted docstrings to ANSI C format.
a00c95d9 4177
56cfe22b
MD
4178 * filesys.c (scm_chmod), simpos.c (scm_system), version
4179 (scm_version), vports (scm_make_soft_port): Escape " occuring
4180 inside docstring.
4181
fcb1720f
GB
4182Mon Jan 17 11:41:22 2000 Greg J. Badros <gjb@cs.washington.edu>
4183
4184 * scm_validate.h: Added SCM_VALIDATE_ULONG_COPY,
4185 SCM_VALIDATE_LONG_COPY
4186
4187 * numbers.c: Use SCM_VALIDATE_ULONG_COPY, instead of
4188 SCM_VALIDATE_INUM_COPY to let bigger numbers be used. Rename a
4189 couple of formal arguments (and fix their uses) to make arguments
4190 match the documentation.
4191
b9af3d0e
MS
41922000-01-14 <mstachow@alum.mit.edu>
4193
4194 * Makefile.am: Augment path when running guile-doc-snarf so
4195 guile-func-name-check is found.
4196
153511a7
GB
4197Fri Jan 14 09:34:55 2000 Greg J. Badros <gjb@cs.washington.edu>
4198
4199 * scm_validate.h (SCM_NUM2LONG_DEF): Fix this macro to just use
4200 def, not SCM_MAKINUM(def); thanks Janis Bzerins!
4201
59d5245f
GB
4202Wed Jan 12 00:06:53 2000 Greg J. Badros <gjb@cs.washington.edu>
4203
4204 * net_db.c (s_scm_inet_makeaddr): Use SCM_NUM2ULONG since that's
4205 the way guile-1.3.4 worked, but #if 0 out the version using
4206 SCM_VALIDATE_INUM_COPY for stricter testing.
4207
95aec69f
GB
4208Tue Jan 11 18:24:18 2000 Greg J. Badros <gjb@cs.washington.edu>
4209
4210 * guile-doc-snarf.in: Use new $fullfilename for running
4211 guile-func-name-check, and put "$fullfilename" and "$filename" in
4212 quotes at uses to make sure re-splitting on whitespace does not
a00c95d9 4213 occur (so filenames w/ embedded whitespace would work okay, though
95aec69f
GB
4214 I sure hope we never have to deal with that! :-) ). Thanks to
4215 Mikael for pointing out the source_dir != build_dir was broken.
4216
b7ac2837
GB
4217Tue Jan 11 17:42:40 2000 Greg J. Badros <gjb@cs.washington.edu>
4218
4219 * scm_validate.h: Added SCM_NUM2LONG_DEF macro. Make
4220 SCM_OUT_OF_RANGE use SCM_MAKINUM, not scm_long2num. Added
4221 SCM_COERCE_ROSTRING macro. Added SCM_VALIDATE_NONEMPTYLIST
4222 macro. Fix SCM_VALIDATE_STRINGORSUBSTR macro to not use SLOPPY
4223 variants.
4224
4225 * ports.c (scm_port_closed_p): Validate that the arg is a PORT,
4226 then return whether it's an open port (was validating that it was
4227 an open port -- this was a bug I introduced back in December, but
4228 my careful reading of diffs caught it).
4229
4230 * numbers.c: Recombine the two conditional-compilation paths for
4231 all the log* primitives -- they were split based on #ifndef
4232 scm_long2num; factored out a SCM_LOGOP_RETURN macro, and fixed
4233 some bugs and inconsistencies in the two sets of implementations.
4234 (scm_lognot) Fixed *atrocious* re-use of a SCM as an integer!
4235
4236 * ioext.c: Use SCM_ASSERT_RANGE in a couple places, and
4237 SCM_VALIDATE_INUM_COPY once where it should've been used.
4238
4239 * fluids.c (scm_internal_with_fluids): Use
4240 SCM_VALIDATE_LIST_COPYLEN.
4241
4242 * filesys.c: Use SCM_NUM2LONG instead of SCM_VALIDATE_INUM_COPY;
4243 this is questionable as it relaxes type safety, but other changes
4244 were useful and all SCM_NUM2LONG's should probably be
4245 revisited. Use SCM_OUT_OF_RANGE, SCM_WRONG_TYPE_ARG.
4246
4247 * evalext.c: line-break change on 1 line.
4248
4249 * eval.c (nconc2last): Takes a non-empty list as its first
4250 argument, not just a list.
4251
4252 * dynl.c: Use new SCM_COERCE_ROSTRING macro.
4253
4254Tue Jan 11 15:44:23 2000 Greg J. Badros <gjb@cs.washington.edu>
4255
4256 * dynl.c, feature.c, filesys.c, fports.c, list.c, load.c,
4257 net_db.c, sort.c, stacks.c, unif.c: Use SCM_WTA, SCM_MISC_ERROR
4258 where possible.
4259
4260 * symbols.c (scm_sysintern0): Fixed the function name in a
4261 scm_misc_error invocation.
4262
4263 * print.c (scm_simple_format): Do not need SCM_COERCE_SUBSTR, and
4264 use scm_return_first to ward off latent GC bug that Mikael caught.
4265
4266 * async.c: Use SCM_VALIDATE_ASYNC_COPY one place where it wasn't
4267 used before but should've been.
4268
d61f6b02
MD
42692000-01-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
4270
4271 * snarf.h (SCM_PROC1): Replaced SCM (*) (...) with
4272 SCM_FUNC_CAST_ARBITRARY_ARGS.
4273
88423ab1
GB
4274Tue Jan 11 13:44:07 2000 Greg J. Badros <gjb@cs.washington.edu>
4275
4276 * guile-func-name-check.in: Added this script to statically check
4277 #define FUNC_NAME, #undef FUNC_NAME in the source.
4278
4279 * sort.c, posix.c: Fix #undef FUNC_NAME lines to not have trailing
4280 redundant comment, semicolon; caught by new guile-func-name-check
4281 script.
4282
4283 * debug.c: Fix mistaken #define FUNC_NAME for scm_make_iloc.
4284 Caught by new guile-func-name-check-script.
4285
4286 * Makefile.am: Added guile-func-name-check to bin_SCRIPTS
4287
4288 * ramap.c: Fix #if 0'd out code to be syntactically acceptable to
4289 guile-func-name-check.
4290
a00c95d9 4291 * guile-doc-snarf.in: Run guile-func-name-check on the file before
88423ab1
GB
4292 doing the snarf.
4293
7f15e635
GB
4294Tue Jan 11 11:31:10 2000 Greg J. Badros <gjb@cs.washington.edu>
4295
4296 * fports.c, ports.c, ports.h, strports.c, vports.c: Make write
4297 port function take const void*, not void*.
4298
bf121b59
GB
4299Tue Jan 11 11:18:07 2000 Greg J. Badros <gjb@cs.washington.edu>
4300
4301 * scm_validate.h, chars.c, ports.c, print.c, read.c, strings.c,
4302 strop.c: Use SCM_VALIDATE_ICHR, SCM_VALIDATE_ICHR_COPY instead of
4303 SCM_VALIDATE_CHAR, SCM_VALIDATE_CHAR_COPY. Change made for
4304 consistency with the other macros dealing with immediate
4305 characters. (Similar to INT -> INUM change a week or so ago).
4306
7965d98f
GB
4307Tue Jan 11 10:41:46 2000 Greg J. Badros <gjb@cs.washington.edu>
4308
4309 * dynl.c, error.c, eval.c, feature.c, filesys.c, fports.c, list.c, load.c,
4310 net_db.c, read.c, socket.c: Update error messages to use ~A for
4311 %s, ~S for %S to work with new `simple-format' format and be
4312 standardized better.
4313
4314 * print.h, print.c (scm_simple_format): Added `simple-format'
4315 primitive. It's the old scm_display_error, with ARGS now a rest
a00c95d9 4316 parameter, and the destination first instead of last (and a couple
7965d98f
GB
4317 new capabilities inspired by `format' -- #t as destination means
4318 current-output-port, #f means return the formatted text as a
4319 string.
4320
4321 * gh.h, gh_data.c, ports.h, ports.c: Added some missing const specifications.
4322
4323 * backtrace.c (scm_display_error_message): Rewrote to use
4324 scm_simple_format() procedure.
4325
4326 * __scm.h: Added commented-out #define of GUILE_DEBUG_FREELIST
4327
f73d2411
MV
43282000-01-09 Marius Vollmer <mvo@zagadka.ping.de>
4329
4330 Finally applied the libltdl patch from Thomas Tanner, with slight
4331 modifications.
4332
4333 * DYNAMIC-LINKING: Removed because it is obsolete.
4334 * dynl.c: Use ANSI prototypes.
4335 (sysdep_dynl_link): Use lt_dlopenext instead of lt_dlopen.
4336 * scmconfig.h.in: Do not change, as it is automatically generated.
a00c95d9 4337
f73d2411
MV
4338 1999-07-25 Thomas Tanner <tanner@ffii.org>
4339
4340 * dynl-dl.c, dynl-dld.c, dynl-shl.c, dynl-vms.c: deleted
4341 (obsolete)
4342 * Makefile.am: likewise, add INCLTDL (libltdl headers) to
4343 INCLUDES, set dlpreopened files in LDFLAGS, link libguile
4344 against libltdl
4345 * dynl.c: use libltdl if DYNAMIC_LINKING is enabled,
4346 * guile.c: register preloaded modules
4347 * scmconfig.h.in: remove obsolete symbols
4348
38c1d3c4
GH
43492000-01-09 Gary Houston <ghouston@arglist.com>
4350
4351 * These changes should make it unnecessary to call tzset from
4352 Scheme after modifying the TZ environment variable, even if the
4353 system date facilities cache the value.
4354 * stime.c (setzone, scm_localtime): added comments.
4355 (tzset): don't define a noop tzset macro if HAVE_TZSET not defined.
4356 (setzone): don't call tzset.
4357 (restorezone): call tzset only if HAVE_TZSET is defined.
4358 (scm_tzset): don't define if HAVE_TZSET not defined. Change the
4359 doc string to indicate that this procedure isn't likely to do
4360 anything useful.
4361 (scm_localtime, scm_strftime, scm_mktime): call tzset if
4362 LOCALTIME_CACHE is defined.
4363
9359d657
MD
43642000-01-09 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
4365
4366 * posix.c (scm_sync): Return SCM_UNSPECIFIED.
4367
f25f761d
GH
43682000-01-09 Gary Houston <ghouston@arglist.com>
4369
4370 * eval.c: define scm_unbound_variable_key ('unbound-variable).
4371 scm_lookupcar1: throw an error with key 'unbound-variable instead
4372 of 'misc-error when an unbound variable is encountered.
4373
a00c95d9 4374 * filesys.c (scm_mkdir, scm_rmdir, scm_getcwd, scm_select,
f25f761d
GH
4375 scm_symlink, scm_readlink, scm_lstat),
4376 posix.c (scm_setpgid, scm_setsid, scm_ctermid, scm_tcgetpgrp,
4377 scm_tcsetpgrp, scm_uname, scm_setlocale, scm_mknod, scm_nice,
4378 scm_sync),
a00c95d9 4379 simpos.c (scm_system),
f25f761d
GH
4380 stime.c (scm_times, scm_strptime):
4381 move the HAVE_XXX feature tests out of the procedure bodies.
4382 don't use SCM_SYSMISSING.
4383 scm_validate.h (SCM_SYSMISSING): removed.
4384 error.h, error.c (scm_sysmissing): comment that this is deprecated.
4385 see ChangeLog entry for 1999-12-28.
4386
a4dd2611
GB
4387Sat Jan 8 19:52:04 2000 Greg J. Badros <gjb@cs.washington.edu>
4388
4389 * scm_validate.h (SCM_VALIDATE_BOOL_COPY): Fix typo.
4390
4391Sat Jan 8 17:06:46 2000 Greg J. Badros <gjb@cs.washington.edu>
4392
4393 * backtrace.c: Fix spelling typo in a comment.
4394
4395 * snarf.h: Use new SCM_DOCS macro to encapsulate the non SCM_INIT
4396 text. Reformatted some of the expansions.
4397
5ac36451
GB
4398Fri Jan 7 15:50:46 2000 Greg J. Badros <gjb@cs.washington.edu>
4399
4400 * scm_validate.h (SCM_OUT_OF_RANGE): Use scm_out_of_range_pos to
4401 report the position of the argument.
4402
a00c95d9 4403 * error.h, error.c (scm_out_of_range_pos): Added this function to
5ac36451 4404 take extra "pos" argument, the position number of the errant
a00c95d9 4405 argument.
5ac36451
GB
4406
4407 * debug.c: Use SCM_OUT_OF_RANGE instead of scm_out_of_range.
4408
4409 * snarf.h: Use SCM_HERE and SCM_INIT as names, not SCM_NOTSNARF
4410 and SCM_SNARFING. Also put the %%% in the SCM_INIT since Mikael
4411 prefers that and I'm reasonably indifferent.
4412
4413Fri Jan 7 15:03:32 2000 Greg J. Badros <gjb@cs.washington.edu>
4414
4415 * snarf.h: Factor out differences between C++ and non-C++ into
4416 SCM_FUNC_CAST_ARBITRARY_ARGS macro. Modify all the snarf macro
4417 definitions to use SCM_NOTSNARF and SCM_SNARFING macros (like
4418 Mikael's macros, below, but changed names and SCM_SNARFING no
4419 longer expands to include %%% -- that must appear in the argument
4420 so that the token appears at the call-site as a reminder).
4421
088bb1d4
MD
44222000-01-07 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
4423
4424 * snarf.h (SCM_INSITU, SCM_INIT): New snarf macros for use in user
4425 snarf macro definitions.
4426
636480e6
MD
44272000-01-06 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4428
4429 * chars.c (scm_integer_to_char): Use Greg's nice
4430 SCM_VALIDATE_INUM_RANGE macro for argument checking for closer
4431 adherence to R5RS.
4432
7c5628e2
GB
4433Thu Jan 6 11:48:49 2000 Greg J. Badros <gjb@cs.washington.edu>
4434
4435 * *.c, snarf.h: Replace GUILE_PROC1 with SCM_DEFINE1 throughout.
4436
2cc0f8cb
GB
4437Thu Jan 6 11:22:53 2000 Greg J. Badros <gjb@cs.washington.edu>
4438
4439 * Makefile.am (ETAGS_ARGS): Switch to SCM_DEFINE, SCM_DEFINE1
4440 instead of GUILE_PROC.
4441
4442Thu Jan 6 11:21:49 2000 Greg J. Badros <gjb@cs.washington.edu>
4443
a00c95d9 4444 * alist.c: Do not report mismatch errors on some uses of `tmp' (do
2cc0f8cb
GB
4445 this by using SCM_ARG2 instead of `2' in the SCM_VALIDATE_CONS
4446 macro call.
4447
9179dcdd
GB
4448Thu Jan 6 09:54:33 2000 Dirk Herrmann <dirk@ida.ing.tu-bs.de> --gjb applied
4449
4450 * scm_validate.h: Remove some redundant NIMP tests.
4451
4452 * alist.c: minimize scope of the tmp variables, and initialize
4453 them when declared. The strange SCM_NIMP tests are replaced by
4454 SCM_CONSP tests that more closely reflect the intended semantics.
4455 However, we don't get a performance penalty here, because the
4456 SCM_CONSP test was performed by the ALISTCELL test anyway. * The
4457 extremely ugly use of ASRTGO macros was removed: The calls to
4458 ASRTGO were not encapsulated by "#ifndef SCM_RECKLESS", but got a
4459 label parameter that only exists when SCM_RECKLESS is not defined.
4460 This works, because ASRTGO itself is defined in a way that it only
4461 makes use of the label parameter if SCM_RECKLESS is not defined
4462 (shudder!). Does guile make at all use of the possibility to
4463 define SCM_RECKLESS? * Codesize is likely to be reduced, since
4464 instead of two calls to SCM_ASSERT performed by the ALISTCELL test
4465 we now only get one test.
4466
4467 * list.c: Use SCM_NNULLP, not SCM_NIMP as appropriate. Also use
4468 SCM_NULLP instead of SCM_IMP. Drop use of "register" keyword on
4469 some variables in `list?'. Fix `reverse' and `reverse!'
4470 primitives to handle improper lists better.
4471
15b33280
GB
4472Wed Jan 5 11:24:53 2000 Greg J. Badros <gjb@cs.washington.edu>
4473
4474 * *.[ch]: Whitespace changes -- added space after SCM_VALIDATE_*
4475 macros and SCM_DEFINE macros to match GNU coding standards.
4476
ca8cd130
GB
4477Wed Jan 5 11:04:24 2000 Greg J. Badros <gjb@cs.washington.edu>
4478
4479 * *.[ch]: Replace GUILE_PROC w/ SCM_DEFINE.
4480
fb764465
GB
4481Wed Jan 5 10:59:06 2000 Greg J. Badros <gjb@cs.washington.edu>
4482
4483 * *.[ch]: Replace SCM_VALIDATE_INT w/ SCM_VALIDATE_INUM for
4484 better consistency with the names of other SCM_VALIDATE_ macros
4485 and better conformance to guile naming policy.
4486
4487Wed Jan 5 10:50:39 2000 Greg J. Badros <gjb@cs.washington.edu>
4488
4489 * ports.c (s_scm_close_all_ports_except): Use SCM_ARG1 in a
4490 SCM_VALIDATE instead of 1 to avoid a check on the argument (since
4491 it's not the actual name of the formal).
1e484823
GB
4492
4493 * guile-snarf.awk.in: Do argument/number mismatch checking and
4494 print warnings in an Emacs compile-mode parseable format.
4495
4496 * struct.c: Use SCM_ASSERT_RANGE instead of SCM_ASSERT w/
4497 SCM_OUTOFRANGE as 3rd argument.
4498
4499 * random.c: Fix argument/number mismatch (that I introduced :-( ).
4500
4501 * __scm.h: Do not #define SCM_ARG* when snarfing;
4502 lets us distinguish between 1 and SCM_ARG1 when snarfing as only
4503 the former (using the number) requires the argument to match the
4504 formal in the current argument snarfing check.
4505
4506 * snarf.h: Give new definition of SCM_ASSERT when in
a00c95d9 4507 snarfing mode to output a lexically-identifiable sequence that the
1e484823
GB
4508 guile-snarf.awk script uses to verify argument/position matching.
4509
4510 * ramap.c: Remove extraneous #undef FUNC_NAME.
4511
53fc4636
GB
4512Wed Jan 5 08:36:38 2000 Greg J. Badros <gjb@cs.washington.edu>
4513
4514 * guile-doc-snarf.awk.in: Removed -- guile-snarf.awk.in is the
a00c95d9 4515 current version of the same functionality; it writes the .x output
53fc4636
GB
4516 to stdout instead of directly into the file.
4517
4518Wed Jan 5 08:15:04 2000 Greg J. Badros <gjb@cs.washington.edu>
4519
4520 * unif.c, symbols.c, strings.c, stacks.c, random.c, print.c,
4521 posix.c: Eliminated a bunch of SCM_NIMP(..)s that are now
4522 redundant with the safer macros. Patch from Dirk Hermann applied
4523 by hand. Thanks Dirk!
4524
4525 * scm_validate.h: Added SCM_VALIDATE_VECTOR_OR_DVECTOR for some
4526 uses in random.c.
4527
4528 * ramap.c: whitespace change.
4529
3b5345d9
GB
4530Tue Jan 4 14:21:35 2000 Greg J. Badros <gjb@cs.washington.edu>
4531
4532 * options.c, objects.c, keywords.c, gc.c: Some redundant SCM_NIMP
4533 removals from Dirk Hermann.
4534
4535 * alist.c: Rename formals to match the parameter names in the
4536 documentation, updates to documentation. Thanks Dirk Hermann!
4537
169aec65
MD
45382000-01-04 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
4539
db62436e
MD
4540 * eval.c (SCM_CEVAL): Reverse order of
4541 scm_stack_checking_enabled_p and SCM_STACK_OVERFLOW_P
4542 (Thanks to Brad Knotwell.)
169aec65 4543
da43d822
GB
4544Mon Jan 3 08:30:02 2000 Greg Harvey <Greg.Harvey@thezone.net> (applied --01/03/00 gjb)
4545
4546 * gc.c (scm_debug_newcell): Added SCM_SETCAR of the newly
a00c95d9 4547 allocated cell.
da43d822
GB
4548
4549 * pairs.h: Added a comment about the need for the SCM_SETCAR in
4550 SCM_NEWCELL macro.
4551
4552Mon Jan 3 08:25:19 2000 Greg J. Badros <gjb@cs.washington.edu>
4553
4554 * dynl-vms.c, debug.c, coop-threads.c, backtrace.c, eval.c: More
4555 SCM_NIMP tests that were redundant are now eliminated. Patches
4556 from Dirk Hermann applied by hand.
4557
339999c7 4558The ChangeLog continues in the file: "ChangeLog-1996-1999"