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