* coop.c (mother): Handled EINTR (the wait has been interrupted by
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
451e591c
DH
12000-04-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
2
3 * __scm.h (SCM_WTA_DISPATCH_[012n]): To test whether a SCM value
4 contains a raw zero value it has to be unpacked.
5
6 * debug.c (with_traps_inner, scm_with_traps): Passing SCM values
7 via void * requires unpacking / packing.
8
9 * stacks.h (SCM_STACKP): Remove unnecessary SCM_NIMP test and use
10 SCM_EQ_P to compare SCM values.
11
12 * stacks.h (SCM_FRAME_VOID_P, SCM_FRAME_REAL_P, SCM_FRAME_PROC_P,
13 SCM_FRAME_EVAL_ARGS_P, SCM_FRAME_OVERFLOW_P): Remove unnecessary
14 call to SCM_UNPACK.
15
16 * tags.h (SCM_NECONSP): Define in terms of SCM_ECONSP
17
18 * tags.h (SCM_ECONSP): Clarify the test for glocs. This is still
19 quite ugly.
20
e94e3f21
ML
212000-04-05 Michael Livshin <mlivshin@bigfoot.com>
22
23 * async.[ch]: unexpose low-level async access macros (thanks to
24 Dirk Herrmann).
25
26 * validate.h: move async validation macros to async.c (nobody else
27 needs them anyway), and rename them.
28
843e4e9d
ML
292000-04-04 Michael Livshin <mlivshin@bigfoot.com>
30
31 * async.h: kill the scm_async_t struct. having a heap cell
32 pretending to be a C struct is not helthy, and is not needed here
33 anyway, as asyncs happily fit in one heap cell.
34
35 * async.c: reflect the fact that asyncs are now represented by
36 single heap cell each.
37
873c35ee
GH
382000-04-04 Gary Houston <ghouston@arglist.com>
39
40 * error.c (scm_syserror): save errno before doing anything else,
41 since it's used in two expressions and may get mutated (thanks to
42 Dirk Herrmann).
43
4260a7fc
DH
442000-04-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
45
46 * debug.c (scm_procedure_source, scm_procedure_environment),
47 gsubr.c (scm_make_gsubr_with_generic, scm_gsubr_apply), procs.c
48 (scm_procedure, scm_setter): Return valid scheme value as dummy.
49
50 * filesys.c (scm_readdir, scm_rewinddir, scm_closedir,
51 scm_dir_print, scm_dir_free), numbers.h (SCM_COMPLEX_REAL,
52 SCM_COMPLEX_IMAG), regex-posix.h (SCM_RGX), throw.c (JBJMPBUF,
53 SETJBJMPBUF, JBJMPBUF, SETJBJMPBUF, freejb, print_lazy_catch,
54 scm_ithrow), unif.c (scm_uniform_vector_ref, scm_cvref,
55 scm_array_set_x, rapr1), unif.h (SCM_ARRAY_V, SCM_ARRAY_BASE),
56 vectors.h (SCM_VELTS, SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS): Use
57 SCM_{SET_}?CELL_WORD* to access cell entries with raw data.
58
59 * filesys.c (scm_closedir), numbers.c (scm_addbig), numbers.h
60 (SCM_SETNUMDIGS), throw.c (JBACTIVE, SCM_JBDFRAME,
61 SCM_SETJBDFRAME): Read and modify data bits in cell entry #0 using
62 SCM_{SET_}?CELL_WORD_0.
63
64 * filesys.c (fill_select_type, retrieve_select_type, scm_select),
65 numbers.c (scm_gcd, scm_lcm, scm_integer_expt, scm_zero_p,
66 scm_product, scm_divide), posix.c (scm_getgrgid), ramap.c
67 (scm_array_fill_int, racp), throw.c (scm_catch, scm_lazy_catch,
68 scm_ithrow), unif.c (scm_make_uve, scm_array_p,
69 scm_transpose_array, scm_array_set_x, scm_bit_set_star_x,
70 scm_bit_count_star, l2ra), variable.c (prin_var,
71 scm_make_variable, scm_make_undefined_variable,
72 scm_builtin_variable), vectors.c (scm_vector_set_length_x),
73 vports.c (sf_flush, sf_close): Don't use C operators to compare
74 SCM values.
75
76 * numbers.c (scm_odd_p, scm_even_p), variable.c (prin_var): Must
77 unpack SCM values to access their raw contents.
78
79 * numbers.c (big2str): Eliminate unnecessary casts to SCM.
80
81 * numbers.h (SCM_NEWREAL), regex-posix.h (SCM_RGXP), vports.c
82 (scm_make_soft_port): Use SCM_{SET_}?CELL_TYPE to access the cell
83 type information.
84
85 * throw.c (printjb): Eliminated unnecessary unpack.
86
87 * variable.c (make_vcell_variable): Smob data is of type
88 scm_bits_t.
89
5b15c3b4
MD
902000-04-04 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
91
92 * print.c: Removed promise to rewrite printer code before next
93 release. :)
94
395c8567
MD
952000-04-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
96
97 * iselect.c (add_fd_sets): Insert empty statement after label.
98 (Thanks to Tim Mooney.)
99
50fecba9
ML
1002000-04-03 Michael Livshin <mlivshin@bigfoot.com>
101
102 * guardians.c (scm_guardian_zombify): mark all zombies in a
103 separate loop after processing all the currently known live
104 guardians, so as to not introduce order dependencies (thanks to
f6e2fd8b 105 Gary Houston). note that the order problems are still there if
843e4e9d 106 some guardians are themselves zombies, but that's a sick case that
f6e2fd8b
ML
107 I'm not going to worry about.
108 also, make another outer loop to process zombified
50fecba9
ML
109 guardians (which are uncovered while marking zombies).
110
54778cd3
DH
1112000-04-03 Dirk Herrmann <D.Herrmann@tu-bs.de>
112
113 * evalext.c (scm_definedp, scm_m_undefine), gc.c
114 (scm_mark_weak_vector_spines, scm_gc_sweep), hashtab.c
115 (scm_hashq_ref, scm_hashv_ref, scm_hash_ref, scm_hashx_ref),
116 keywords.c (scm_make_keyword_from_dash_symbol), lang.c
117 (scm_nil_eq), lang.h (SCM_NILP, SCM_NIL2EOL), load.c
118 (scm_primitive_load), modules.c (scm_module_full_name), objects.c
119 (scm_class_of, scm_mcache_lookup_cmethod, scm_make_class_object),
120 ports.c (scm_close_all_ports_except), ports.h (SCM_EOF_OBJECT_P),
121 print.c (scm_iprin1, scm_prin1, scm_iprlist, scm_simple_format),
122 print.h (SCM_PRINT_STATE_P), procprop.c (scm_i_procedure_arity,
123 scm_stand_in_scm_proc, scm_procedure_property,
124 scm_set_procedure_property_x), procs.c
125 (scm_procedure_documentation), read.c (scm_lreadr, scm_lreadparen,
126 scm_lreadrecparen, scm_read_hash_extend), script.c
127 (scm_compile_shell_switches), srcprop.c (scm_source_property,
128 scm_set_source_property_x), srcprop.h (SCM_WHASHFOUNDP), stacks.c
129 (read_frame, NEXT_FRAME, read_frames, narrow_stack,
130 scm_make_stack, scm_stack_id), strop.c (scm_i_index,
131 scm_string_index, scm_string_rindex), struct.c (scm_struct_init),
132 validate.h (SCM_VALIDATE_BOOL_COPY, SCM_VALIDATE_INUM_DEF,
133 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_PROC,
134 SCM_VALIDATE_ARRAY): Don't use C operators to compare SCM values.
135
136 * feature.c (make_hook), keywords.c
137 (scm_make_keyword_from_dash_symbol), macros.c (scm_makacro,
138 scm_makmacro, scm_makmmacro), print.c (scm_iprin1,
139 scm_printer_apply, scm_port_with_print_state): Smob data is of type
140 scm_bits_t.
141
142 * feature.c (print_hook), gc.c (scm_object_address), hash.c
143 (scm_ihashq, scm_ihashv), print.c (scm_iprin1, scm_ipruk), smob.c
843e4e9d 144 (freeprint), struct.c (scm_print_struct): Must unpack
54778cd3
DH
145 SCM values to access their raw contents.
146
147 * fluids.c (apply_thunk, scm_with_fluids), hashtab.c (fold_proc,
148 scm_hash_fold), load.c (load, scm_primitive_load): Passing SCM
149 values via void * requires unpacking / packing.
150
151 * fports.c (scm_fport_buffer_add, scm_setvbuf), procs.h
152 (SCM_SUBRNUM, SCM_SET_SUBRNUM), srcprop.h (SRCPROPBRK, SRCBRKP):
153 Read and modify data bits in cell entry #0 using
154 SCM_{SET_}?CELL_WORD_0.
155
156 * fports.c (scm_fdes_to_port), gc.c (scm_gc_for_newcell,
157 scm_gc_sweep, init_heap_seg), init.c (start_stack), ports.c
158 (scm_void_port), procs.c (scm_make_subr_opt,
159 scm_make_procedure_with_setter), root.c (scm_internal_cwdr),
160 smob.c (scm_make_smob), strports.c (scm_mkstrport): Use
161 SCM_SET_CELL_TYPE to write the cell type information.
162
163 * gc.c (scm_gc_mark): Use SCM_CELL_OBJECT* to access SCM values
164 from cells that are no scheme pairs.
165
166 * gc.c (scm_gc_sweep), mallocs.c (prinmalloc), mallocs.h
167 (SCM_MALLOCDATA, SCM_SETMALLOCDATA), print.c (scm_ipruk), random.h
168 (SCM_RSTATE), root.h (SCM_ROOT_STATE), smob.c (scm_smob_free),
169 srcprop.c (freesrcprops), srcprop.h (SRCPROPPOS, SRCPROPFNAME,
170 SRCPROPCOPY, SRCPROPPLIST), struct.c (scm_make_struct,
171 scm_make_vtable_vtable): Use SCM_{SET_}?CELL_WORD* to access cell
172 entries with raw data.
173
174 * gc.c (scm_init_storage), sort.c (applyless), strop.c
175 (scm_string_to_list): Eliminate unnecessary casts to SCM.
176
177 * mallocs.c (scm_malloc_obj): Store result of malloc as raw
178 data.
179
180 * ports.c (scm_close_all_ports_except): Duplicate documentation
181 text removed.
182
183 * print.c (scm_iprin1): Use SCM_ITAG3.
184
185 * procs.h (SCM_SET_SUBRNUM): Fix shift direction.
186
187 * snarf.h (SCM_GPROC, SCM_GPROC1, SCM_SYMBOL, SCM_GLOBAL_SYMBOL,
188 SCM_KEYWORD, SCM_GLOBAL_KEYWORD, SCM_VCELL, SCM_GLOBAL_VCELL,
189 SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT): Don't initialize globals
190 and static variables at their point of declaration, but rather in
191 the init function.
192
193 * tags.h (SCM_PACK): Automatically cast to scm_bits_t.
194
abeed821
GH
1952000-04-02 Gary Houston <ghouston@arglist.com>
196
197 * guardians.c (TCONC_IN, scm_make_guardian): set the CDR of the
198 empty tconc pair to SCM_EOL instead of SCM_BOOL_F, avoiding the
199 use of an improper list (which breaks g_print. g_print isn't
200 used).
201 guardians.c: Added more comments and modified the make-guardian
202 docstring. Reordered a few procedures.
203
cf498326
DH
2042000-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
205
206 * eval.c (scm_lookupcar1, scm_lookupcar, scm_m_case, scm_m_cond,
207 scm_m_lambda, iqq, scm_m_define, scm_m_expand_body, unmemocopy,
208 SCM_CEVAL), procs.h (SCM_TOP_LEVEL): Don't use C operators to
209 compare SCM values.
210
211 (scm_makprom): Smob data is of type scm_bits_t.
212
cffcab30
DH
2132000-03-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
214
215 * backtrace.c (display_error_body), debug.c (scm_procedure_source,
216 scm_reverse_lookup), dynl.c (scm_dynamic_link): Don't use C
217 operators to compare SCM values.
218
219 * debug.c (scm_make_debugobj), debug.h (SCM_DEBUGOBJ_FRAME,
220 SCM_SET_DEBUGOBJ_FRAME): Update SCM_{SET_}?DEBUGOBJ_FRAME to
221 access raw cell data with SCM_{SET_}?CELL_WORD_1.
222
223 * debug.c (scm_make_debugobj): Don't use SCM_SETCAR to set types.
224
225 * debug.c (scm_make_memoized), dynl.c (scm_dynamic_link): Smob
226 data is of type scm_bits_t.
227
7fa93bf8
DH
2282000-03-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
229
230 * gdbint.c (gdb_maybe_valid_type_p), guardians.c (TCONC_EMPTYP,
231 scm_guardian_zombify): Use SCM_EQ_P to compare SCM values.
232
233 * guardians.c (GUARDIAN): Use SCM_CELL_WORD_1 for raw data.
234
74a16888
DH
2352000-03-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
236
237 * ports.h (scm_port): Change type of stream member to scm_bits_t.
238
239 * gdbint.c (unmark_port, remark_port), ports.c (scm_markstream),
240 strports.c (st_resize_port, scm_mkstrport), vports (sf_flush,
241 sf_write, sf_fill_input, sf_close, scm_make_soft_port): Since
242 streams are now of type scm_bits_t, SCM streams have to be
243 unpacked/packed.
244
245 * ports.h (SCM_SETPTAB_ENTRY, SCM_SETSTREAM): Cast input to
246 scm_bits_t.
247
b6cc0ef6
MD
2482000-03-31 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
249
6a878357
MD
250 * coop-defs.h (struct coop_t): Added `sto'-field again because of
251 binary compatibility---let's remove it next time we alter some
252 major structure.
253
b6cc0ef6
MD
254 * coop.c (coop_quitting_p, coop_cond_create, coop_mutex_create,
255 coop_mother, coop_child): New variables.
256 (mother): New function.
257 (coop_create): New thread spawning mechanism which uses a "mother
258 thread". The "dummy" pthreads aren't healthy enough to give birth
259 to new threads since Linux threads thinks they are asleep.
260
261 * coop-defs.h (struct coop_t): Removed dummy_mutex.
262
263 * coop-defs.h, coop-threads.c (struct coop_t): Eliminate
264 `sto'-field when GUILE_PTHREAD_COMPAT is enabled.
265
843524cc
DH
2662000-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
267
268 * arbiters.c (scm_make_arbiter), async.c (scm_async), dynwind.c
269 (scm_internal_dynamic_wind): Smob data is always of type
270 scm_bits_t.
271
272 * arbiters.c (SCM_ARB_LOCKED, SCM_LOCK_ARB, SCM_UNLOCK_ARB):
273 Access the locking information in cell entry 0 with
274 SCM_{SET_}?CELL_WORD_0 instead of SCM_*CAR.
275
276 * async.c (scm_run_asyncs): Use SCM_NULLP to test for the empty
277 list.
278
279 * dynwind.c (scm_dowinds): Use SCM_EQ_P to compare SCM values.
280
281 * ports.h (SCM_PTAB_ENTRY, SCM_SETPTAB_ENTRY): Access the ptab
282 entry data using SCM_{SET_}?CELL_WORD_1 instead of SCM_{SET}?CDR.
283
fbd485ba
DH
2842000-03-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
285
286 * alist.c (scm_sloppy_assq, scm_assq), eq.c (scm_eq_p, scm_eqv_p,
287 scm_equal_p), list.c (scm_ilength, scm_last_pair, scm_reverse,
288 scm_sloppy_memq, scm_delq_x, scm_delq1_x), tags.h (SCM_UNBNDP):
289 Don't use C operators == and != to compare SCM values, use
290 SCM_EQ_P instead.
291
292 * boolean.c (scm_boolean_p): Use SCM_BOOLP to determine whether a
293 SCM value is equal to #t or #f.
294
295 * eq.c (scm_eqv_p, scm_equal_p): Don't use SCM_CAR to access the
296 cell type entry of non immediate objects of unknown type. Use
297 SCM_CELL_TYPE instead.
298
299 * gh_data.c (gh_scm2bool, gh_module_lookup), list.c
300 (scm_sloppy_memv, scm_sloppy_member, scm_delv_x, scm_delete_x,
301 scm_delv1_x, scm_delete1_x), scmsigs.c (scm_sigaction): Use
302 SCM_FALSEP and SCM_TRUE_P to compare SCM values against #f and
303 #t.
304
305 * list.c (scm_listify): Use SCM_UNBNDP to test for an unbound
306 scheme value.
307
64e3bf6c
MD
3082000-03-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
309
0208baa0
MD
310 * coop-threads.c (scm_call_with_new_thread, scm_spawn_thread,
311 scm_make_mutex, scm_make_condition_variable): Cast data to
312 scm_bits_t in SCM_SET_CELL_WORD and SCM_NEWSMOB macros.
313
64e3bf6c
MD
314 * coop.c (coop_create): Set `specific' field, not `data' to NULL.
315
94113249
DH
3162000-03-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
317
318 * smob.h (SCM_NEWSMOB, SCM_NEWSMOB2, SCM_NEWSMOB3, SCM_SMOB_DATA,
319 SCM_SET_SMOB_DATA, SCM_TC2SMOBNUM, SCM_SMOBNUM): To access smob
320 data, use SCM_{SET_}?CELL_TYPE or SCM_{SET_}?WORD_[1-3].
321
322 Note that this implies that smob data has always to be passed as
323 values of type scm_bits_t.
324
1978b33e
MD
3252000-03-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
326
327 * threads.c (scm_init_threads): Pass 0 size to scm_make_smob_type
328 for scm_tc16_thread. As the current COOP threads are written, GC
329 is not supposed to manage storage for threads.
330
331 * error.c (scm_error): Don't try to throw an error if
332 scm_gc_heap_lock is true.
333
334 * coop.c (coop_finish): New function. Called at exit.
335 (coop_aborthelp): Free thread structures when threads die.
336 Finished LinuxThreads compatibility support => COOP threads now
337 mesh with LinuxThreads.
843e4e9d 338
1978b33e
MD
339 * coop-threads.c (scm_call_with_new_thread, scm_spawn_thread):
340 Changed SETCDR --> SET_CELL_WORD_1.
341
342 * coop-threads.c (scheme_launch_thread): Set word 1 of handle to 0
343 when thread dies.
344
dd039d6d
DH
3452000-03-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
346
347 * boolean.h (SCM_TRUE_P): New macro.
348
349 * boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP), pairs.h
350 (SCM_NULLP, SCM_NNULLP): Use SCM_EQ_P to compare SCM values.
351
8b3bda20
DH
3522000-03-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
353
354 * continuations.h (SCM_CONTREGS, SCM_SET_CONTREGS): New macros to
355 access continuation data.
356
357 (SCM_SETJMPBUF): Deprecated. Use SCM_SET_CONTREGS instead.
358
359 (SCM_JMPBUF, SCM_DYNENV, SCM_THROW_VALUE, SCM_BASE, SCM_SEQ,
360 SCM_DFRAME): Use SCM_CONTREGS instead of SCM_CHARS to access
361 continuation data.
362
843e4e9d 363 * continuations.c (scm_make_cont), init.c (start_stack),
8b3bda20
DH
364 root.c (scm_internal_cwdr): Use SCM_SET_CONTREGS instead of
365 SCM_SETJMPBUF.
366
3210f49a
DH
3672000-03-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
368
369 * symbols.h (SCM_LENGTH, SCM_SETLENGTH): Access the length field
370 of strings and symbols by using SCM_{SET_}?CELL_WORD_0.
371
372 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS): Use SCM_{SET_}?CELL_WORD_1
373 to access the char * field of strings and symbols.
374
2d67e390
DH
3752000-03-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
376
377 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Use SCM_SET_CELL_TYPE to set
378 the type entry of a new cell. Added a comment about things to
379 remember when updating the list of free cells.
380
381 (SCM_FREEP, SCM_MARKEDP): Use SCM_CELL_TYPE to access the type
382 entry of a cell.
383
76a369d9
DH
3842000-03-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
385
386 * pairs.h (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): Use
387 SCM_CELL_OBJECT and SCM_SET_CELL_OBJECT. This change implies that
388 with strict type checking enabled these macros will only work if
389 given valid SCM parameters.
390
3210f49a 391 (SCM_GCCDR): Moved to tags.h.
76a369d9
DH
392
393 * tags.h (SCM_GCCDR): Moved here from pairs.h.
394
2549a709
DH
3952000-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
396
397 * tags.h (SCM2PTR, PTR2SCM): Moved to gc.h.
398
399 * pairs.h (scm_cell, SCM_CELLPTR, SCM_CELL_WORD*, SCM_CELL_OBJECT*,
400 SCM_SET_CELL_WORD*, SCM_SET_CELL_OBJECT*, SCM_CELL_TYPE,
401 SCM_SET_CELL_TYPE, SCM_PTR_LT, SCM_PTR_MASK, SCM_PTR_GT,
402 SCM_PTR_LE, SCM_PTR_GE, SCM_CELL_WORD_LOC, SCM_NEWCELL,
403 SCM_NEWCELL2): Moved to gc.h.
404
405 (SCM_CARLOC, SCM_CDRLOC, SCM_SETAND_CAR, SCM_SETAND_CDR,
406 SCM_SETOR_CAR, SCM_SETOR_CDR): Moved to gc.h. These names should
407 be changed, though, since the macros are not only pair related.
408
409 (SCMPTR): Deleted.
410
411 * gc.h (SCM2PTR, PTR2SCM, scm_cell, SCM_CELLPTR, SCM_CELL_WORD*,
412 SCM_CELL_OBJECT*, SCM_SET_CELL_WORD*, SCM_SET_CELL_OBJECT*,
413 SCM_CELL_TYPE, SCM_SET_CELL_TYPE, SCM_PTR_LT, SCM_PTR_MASK,
414 SCM_PTR_GT, SCM_PTR_LE, SCM_PTR_GE, SCM_CELL_WORD_LOC,
415 SCM_NEWCELL, SCM_NEWCELL2, SCM_CARLOC, SCM_CDRLOC, SCM_SETAND_CAR,
416 SCM_SETAND_CDR, SCM_SETOR_CAR, SCM_SETOR_CDR): Moved here from
417 tags.h and pairs.h.
418
8d3356e7
DH
4192000-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
420
421 * tags.h (SCM_STRICT_TYPING): New macro that, if defined,
422 activates strict compile time type checking for variables of
423 type SCM.
424 (SCM, SCM_PACK, SCM_UNPACK): Define according to whether
425 SCM_STRICT_TYPING or SCM_VOIDP_TEST are defined.
426 (SCM_EQ_P): Defined as a macro equivalent for eq?.
427
96f6f4ae
DH
4282000-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
429
430 * tags.h (SCM_POINTERS_MUNGED): Removed.
431
432 * gc.c (scm_gc_sweep, init_heap_seg): Removed use of
433 SCM_POINTERS_MUNGED, thus fixing some illegal casts to SCM.
434
0cbaaf0b
DH
4352000-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
436
437 * pairs.h (SCM_CELL_OBJECT, SCM_CELL_OBJECT_[0-3],
438 SCM_SET_CELL_OBJECT, SCM_SET_CELL_OBJECT_[0-3], SCM_CELL_TYPE,
439 SCM_SET_CELL_TYPE): Added a set of low level macros for accessing
440 cell entries.
441 (SCM_CELL_WORD_[0-3]): Renamed from the SCM_CELL_WORD[0-3].
442
443 * procs.h, procs.c: Instead of SCM_{SET_}?CELL_WORD[12], use the
444 newly introduced SCM_{SET_}?CELL_OBJECT_[12] macros.
445
7284d584
MD
4462000-03-23 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
447
448 * tags.h: Disabled definition of SCM_VOIDP_TEST.
449
450 Defining SCM as void * introduces problems which haven't been
451 handled yet. Developers who work with these issues can enable it
452 in their working copies.
453
454 Disabling this definition exposes a set of newly introduced and
455 older misuses of types which causes warning messages during
456 compilation. We'll fix this successively.
457
458 * gc.c (scm_mark_locations): Changed * (SCM **) X --> * (SCM *) X
459 in order to obtain a value of type SCM.
460 (scm_cellp): Updated with new changes to scm_mark_locations.
461
462 * continuations.h (SCM_SETJMPBUF): Cast second arg into SCM.
463
2f9055ea
MD
464 * continuations.c (scm_make_cont): Removed cast of size_t into
465 long.
466
7284d584
MD
467 * symbols.h (SCM_SETCHARS): Cast second arg into SCM.
468
f81e080b
DH
4692000-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
470
471 * numbers.h (SCM_SETNUMDIGS): Use SCM_BIGSIZEFIELD macro for
472 shifting, not constant. Thanks to Dale P. Smith.
473
474 * numbers.c (scm_sum, scm_difference): Don't test a SCM value
475 for being less than zero. Decode it to a C value first. Again,
476 thank you Dale.
477
1ff2fa6e
DH
4782000-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
479
480 * numbers.h, ramap.c, struct.h, vectors.h: Don't use SCM2PTR for
481 non scheme values. If raw data is stored in SCM variables, it has
482 to be accessed using SCM_UNPACK until a better solution is found.
483
3920465b
MD
4842000-03-22 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
485
6f29dc6d
MD
486 * tags.h (SCM_ECONSP, SCM_NECONSP): More corrections of
487 pointer-arithmetic induced by the SCM_PACK/UNPACK change.
488
489 * print.c (scm_iprin1): SCM_PACK/UNPACK corrections.
490
491 * gc.c (scm_gc_sweep): SCM_PACK/UNPACK corrections.
492
493 * eval.c (SCM_CEVAL, scm_unmemocar): SCM_PACK/UNPACK corrections.
494
495 * dynwind.c (scm_swap_bindings): SCM_PACK/UNPACK corrections.
496
3920465b
MD
497 * async.c, __scm.h: Removed lots of the old async click logic. It
498 is possible to reinsert it by defining GUILE_OLD_ASYNC_CLICK in
499 __scm.h. Let's try this out and dump the old code after the
500 threads reorganization.
501 (set-tick-rate, set-switch-rate): Conditionally removed.
502
90cca6f9
MD
5032000-03-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
504
505 * gc.c (scm_gc_mark): Bugfix 1: The recent SCM_PACK/UNPACK change
506 made SCM values into pointers. This turned an arithmetic
507 computation of the address of the vcell into a pointer-arithmetic
508 one, thereby screwing up marking of structs.
509 Bugfix 2: Removed incompletely introduced loop variable `j' used
510 when protecting the tail array of a struct.
511
8246bf3e
DH
5122000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
513
514 * struct.h (SCM_STRUCT_DATA): Don't cast SCM values to pointers.
515
95c9e176
DH
5162000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
517
518 * symbols.h, symbols.c (scm_strhash): Declare the string
519 parameter as constant, since it is not modified.
520
521 * symbols.c (scm_intern_obarray_soft,
522 scm_sysintern0_no_module_lookup): Can now pass constant strings
523 to scm_strhash without need for casting.
524
7352d0b2
DH
5252000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
526
527 * vectors.h (SCM_VELTS, SCM_VELTS_AS_STACKITEMS): Don't cast SCM
528 values to pointers. Use SCM2PTR instead.
529
b00c8cdc 5302000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
9b139b4e
DH
531
532 * async.c (scm_set_tick_rate, scm_set_switch_rate): Don't unpack
533 results of SCM_INUM.
534
df2d5178
MD
5352000-03-21 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
536
bd54e664
MD
537 * init.c (scm_boot_guile_1): Renamed GUILE_GC_TRIGGER_1 -->
538 GUILE_MIN_YIELD_1, GUILE_GC_TRIGGER_2 --> GUILE_MIN_YIELD_2.
539 GUILE_MIN_YIELD_X now take *positive* fractions of heap size.
540
541 * gc.c, gc.h (SCM_MIN_YIELD_1, SCM_MIN_YIELD_2,
542 min_yield_fraction, min_yield, adjust_min_yield): Renamed from
543 SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2, gc_trigger_fraction,
544 gc_trigger, adjust_gc_trigger.
545
df2d5178
MD
546 * gc.c (alloc_some_heap): Further improvement of minimal heap size
547 prediction.
548 (SCM_MAX): New macro.
549 (scm_freelist_t): New field: collected_1. Previous amount of
550 collected cells.
551 (gc_sweep_freelist_finish): Trigger based on two last values of
552 freelist->collected to avoid unnecessary allocation due to
553 temporary peaks.
bd54e664
MD
554 (SCM_INIT_HEAP_SIZE_1, SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2):
555 Adjusted to 45000 cells, 40% and 40%. Gives quick startup
556 without extra heap allocation.
df2d5178 557
f2961ccd
DH
5582000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
559
560 * numbers.h (SCM_MAKINUM): The parameter to SCM_MAKINUM should
561 already be a C value. No need to unpack it.
562
3210f49a 563 * numbers.c (scm_long_long2num): Cast the parameter to scm_bits_t
f2961ccd
DH
564 if we know it fits into an inum.
565
566 * ramap.c (ramap_rp): An scm_tc7_[ui]vect object does point to a
567 field of long values. In contrast, SCM_VELTS accesses a field of
568 SCM values.
569
7b4cc831
MD
5702000-03-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
571
f1d316dd
MD
572 * gc.c (scm_gc_stats): Inserted explanation of local_scm_mtrigger
573 etc.
80770ddc
MD
574 (scm_gc_yield_1): New variable: Holds previous yield. Used to
575 make better judgements.
f1083dd7
MD
576 (gc_sweep_freelist_finish): Inserted explanation of use of
577 gc_trigger.
f1d316dd
MD
578
579 * print.h, stacks.h, options.c, options.h: Changed C++
580 commentaries to C.
7b4cc831 581
7a710745
DH
5822000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
583
584 * tags.h (SCM2PTR, PTR2SCM): Use SCM_PACK / SCM_UNPACK correctly.
585
586 * numbers.h (SCM_INUMP, SCM_MAKINUM, SCM_INUM0, SCM_COMPLEX_REAL,
587 SCM_COMPLEX_IMAG, SCM_NUMP, SCM_BDIGITS): Use SCM_PACK /
588 SCM_UNPACK / SCM2PTR correctly.
589
1ef20c80
MD
5902000-03-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
591
592 * gc.c (adjust_gc_trigger): Improved documentation.
593 (alloc_some_heap): Since gc_trigger is used against
594 freelist->collected, this is the value which should be used to
595 predict minimum growth.
596
b464b970
DH
5972000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
598
599 * eval.h: Fix mixup of packed/unpacked SCM values. (Thanks
600 Thien-Thi Nguyen for the patch.)
601
3ab9f56e
DH
6022000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
603
604 * numbers.c (scm_ash): Fixed typing problems with the second
605 parameter and added some documentation. (Thanks Thien-Thi Nguyen
606 for indicating the problem.)
607
05bc3265
MD
6082000-03-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
609
78a4915a
MD
610 * gc.c, gc.h (scm_gc_yield): New variable.
611 (adjust_gc_trigger): Use scm_gc_yield.
612 (alloc_some_heap): Use scm_gc_yield instead of
613 scm_gc_cells_collected.
614
05bc3265
MD
615 * coop-threads.c: Addd #include "root.h", #include "strings.h".
616
617 * debug.c: Added #include "root.h". (Thanks to Thien-Thi Nguyen.)
618
619 * gc.c (scm_gc_for_newcell, adjust_gc_trigger): Improved GC
620 trigger adjustmeant: Take yield (freed cells) for all freelists
621 into account.
622 (SCM_INIT_HEAP_SIZE_1, SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2): Tuned
623 to 50000 cell heap with 45% trigger.
624 (scm_gc_cells_collected): Reintroduced.
625 (SCM_HEAP_SIZE): New macro.
626 (scm_gc_sweep): Reintroduced correct computation of
627 scm_cells_allocated.
628 (scm_freelist_t): Corrected commentary for field `cluster_size':
629 Clustersize counts objects, not cells; New member
630 `clusters_allocated'.
631
89e00824
ML
6322000-03-19 Michael Livshin <mlivshin@bigfoot.com>
633
634 * *.[hc]: add Emacs magic at the end of file, to ensure GNU
635 indentation style.
636
afcfc5bb
MD
6372000-03-19 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
638
639 * threads.h: Added #include "libguile/throw.h". (Thanks to
640 Thien-Thi Nguyen.)
641
a00c95d9
ML
6422000-03-18 Michael Livshin <mlivshin@bigfoot.com>
643
50fecba9
ML
644 * tags.h: (SCM_DOUBLE_CELLP, SCM_NDOUBLE_CELLP): new macros (bad
645 names, anyone got any better ones?)
a00c95d9
ML
646
647 * gc.h: (typedef struct scm_freelist_t) remove from here.
648
50fecba9 649 * gc.c: (CELL_UP, CELL_DN) made these macros take additional
a00c95d9
ML
650 parameter (the span).
651 (CLUSTER_SIZE_IN_BYTES, ALIGNMENT_SLACK) new macros.
50fecba9 652 (typedef struct scm_freelist_t) moved here from gc.h, it had no
a00c95d9
ML
653 business being externally visible.
654 (typedef struct scm_heap_seg_data_t) renamed from
655 scm_heap_seg_data, to be style-compliant.
656 (scm_mark_locations) if the possible pointer points to a
50fecba9
ML
657 double-cell, check that it's properly aligned.
658 (init_heap_seg) align double-cells properly, work with the
659 assumption that the segment size divides cleanly by cluster size.
a00c95d9
ML
660 (round_to_cluster_size) new function.
661 (alloc_some_heap, make_initial_segment) use round_to_cluster_size
662 to satisfy the new init_heap_seg invariant.
663
28b3236d
DH
6642000-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
665
666 * _scm.h: Don't include async.h everywhere...
667
668 * eq.c eval.c iselect.c: ... only include it here.
669
ba11fd4c
DH
6702000-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
671
672 * _scm.h: Don't include root.h everywhere...
673
674 * async.c continuations.c eq.c eval.c evalext.c feature.c gc.c
675 gdbint.c gsubr.c ioext.c keywords.c lang.c load.c macros.c
676 numbers.c objprop.c ports.c print.c procprop.c ramap.c read.c
677 srcprop.c stackchk.c stacks.c strports.c symbols.c unif.c
678 variable.c vectors.c vports.c: ... only include it here.
679
7ab3fdd5
DH
6802000-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
681
682 * _scm.h: Don't include strings.h everywhere...
683
684 * backtrace.c dynl.c error.c feature.c filesys.c fports.c gc.c
685 gdbint.c ioext.c load.c net_db.c numbers.c objects.c options.c
686 ports.c posix.c print.c procs.c random.c read.c regex-posix.c
687 simpos.c socket.c stacks.c stime.c strop.c strports.c struct.c
688 symbols.c unif.c vectors.c version.c vports.c: ... only include it
689 here.
690
f04d8caf
DH
6912000-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
692
693 * _scm.h: Don't include ports.h everywhere...
694
695 * arbiters.c backtrace.c debug.c dynl.c dynwind.c eval.c feature.c
696 fluids.c gc.c gdbint.c guardians.c hash.c keywords.c mallocs.c
697 numbers.c objects.c print.c read.c root.c smob.c srcprop.c
698 stackchk.c strports.c struct.c throw.c variable.c: ... only
699 include it here.
700
003d1fd0
DH
7012000-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
702
703 * _scm.h: Don't include vectors.h everywhere...
704
705 * eq.c eval.c filesys.c gc.c gsubr.c guardians.c hash.c hashtab.c
706 keywords.c net_db.c numbers.c objects.c posix.c print.c procprop.c
707 procs.c ramap.c random.c read.c scmsigs.c socket.c sort.c stime.c
708 strports.c symbols.c unif.c vports.c weaks.c: ... only include it
709 here.
710
0fa27efa
DH
7112000-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
712
713 * genio.h: removed. (Only content was '/* delete me */'.)
714
715 * Makefile.am arbiters.c backtrace.c debug.c dynl.c dynwind.c
716 error.c filesys.c fluids.c gc.c gsubr.c guardians.c keywords.c
717 libguile.h mallocs.c numbers.c print.c random.c read.c root.c
718 srcprop.c stackchk.c struct.c threads.c throw.c variable.c:
719 Removed reference to genio.h
720
148f31de
MD
7212000-03-17 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
722
723 * gc.c, gc.h: Cleanup of the change of 2000-03-15.
724 Cluster sizes are now independent of GC trigger values.
725 GUILE_GC_TRIGGER_n can now specify a relative trigger value:
726 A negative integer gives fraction of total heap size in percent.
1eb489a2 727 (SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2): Default values set to -40.
148f31de
MD
728
729 * init.c (scm_boot_guile_1): Introduced new variable
730 GUILE_MAX_SEGMENT_SIZE; New environment variable names:
731 GUILE_INIT_SEGMENT_SIZE_1, GUILE_GC_TRIGGER_1,
732 GUILE_INIT_SEGMENT_SIZE_2, GUILE_GC_TRIGGER_2
733
6d0f81dd 7342000-03-16 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
a00c95d9 735
6d0f81dd
MD
736 * __scm.h (GC_FREE_SEGMENTS): Disable this until we have made
737 freeing of segment work with the new GC scheme. (Thanks to
bc2c8d98
MD
738 Michael Livshin.) Oops, also happened to make GUILE_NEW_GC_SCHEME
739 the default, but I'll let this change stay in CVS Guile since this
740 code is not expected to contain serious bugs.
a00c95d9 741
17351a6f 7422000-03-16 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
c5133dc9 743
6c7c449e
MD
744 * gc.c, gc.h (scm_map_free_list): Define also if GUILE_DEBUG is
745 defined.
5a551542
MD
746 (scm_free_list_length): New procedure (GUILE_DEBUG).
747 Fixed a small but serious bug introduced by the previous change.
748
17351a6f
MD
749 * gc.c (scm_gc_sweep): Moved variable n_objects to inner sweep
750 loop and declare as register.
6c7c449e 751
c5133dc9
MD
752 * gc.c (scm_gc_sweep): Sigh... forgot to clear private freelists
753 after GC.
754
3820581c
GB
755Wed Mar 15 08:27:04 2000 Greg J. Badros <gjb@cs.washington.edu>
756
757 * fluids.c: Docstring patch from Keisuke Nishida. Some
758 reindentation, too, and a couple formals renamed. Should
759 fluid-set! return UNSPECIFIED instead of a value?
760
761Wed Mar 15 08:24:58 2000 Greg J. Badros <gjb@cs.washington.edu>
762
763 * Makefile.am: Separate out DOT_X_FILES and DOT_DOC_FILES, and
a00c95d9 764 generate the latter from the concrete listing of the former. Then
3820581c
GB
765 make guile-procedures.txt depend on DOT_DOC_FILES instead of
766 *.doc, so that rebuilding it works.
767
dd6390bf
GB
768Wed Mar 15 08:12:14 2000 Greg J. Badros <gjb@cs.washington.edu>
769
770 * libguile.h: Include libguile/validate.h. Thanks Keisuke Nishida!
771
772 * guile-snarf.awk.in: Replace docstring line-ending \n" and \n\n"
773 with nothing and \n, respectively. Thanks Keisuke Nishida for
774 noticing this problem.
775
4fdb0ae2
MD
7762000-03-15 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
777
778 * __scm.h (GUILE_NEW_GC_SCHEME): Define this if you want to test a
779 new way of allocating heap. It makes Guile fast, but still
780 contains bugs.
781
782 * gc.c, gc.h, pairs.h, init.c: Implementation of a new way of
783 allocating heap. The basic idea is to trigger GC every Nth
784 allocated cell and grow heap when free list runs out. The scheme
785 has been extended so that GC isn't triggered until all remaining
786 cells are used. The implementation is also prepared for
787 development in the direction of POSIX threads.
788
789 * gc.c (SCM_EXPHEAP): In order to grow by a factor of 1.5,
790 SCM_EXPHEAP should return half of the heap size.
791
3d8d1283
MD
7922000-03-14 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
793
5f4edb86
MD
794 The following change to init.c is only enabled if Guile was
795 configured with --enable-guile-debug.
a00c95d9 796
5f4edb86
MD
797 * init.c (scm_i_getenv_int): New function.
798 (scm_boot_guile_1): Use the environment variables
799 GUILE_INIT_HEAP_SIZE, GUILE_INIT_HEAP_SIZE2 to select heap size if
800 they exist. (This may be replaced by a Scheme level mechanism in
801 the future.)
802
3d8d1283 803 * objprop.c (s_scm_set_object_property_x): Use scm_assq instead of
90e77861 804 scm_assoc. (Thanks to Keisuke Nishida.)
3d8d1283 805
b0e37c83
MD
8062000-03-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
807
808 * eval.c, lang.c, lang.h (scm_lisp_nil, scm_lisp_t): Renamed from
2b260c0f 809 scm_nil, scm_t. (Thanks to Keisuke Nishida.)
b0e37c83 810
16d35552
MD
8112000-03-14 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
812
5ebf0091
MD
813 * init.c (scm_boot_guile_1): Use same initial segment size for
814 1-word and 2-word segments. Having the smaller size causes Guile
815 to GC too often. Obviously something needs to be done to allow
816 for a smaller 2-word segment without this to happen. (The amount
817 of heap for each type should be automatically adapted to the
818 application somehow.)
819
31ed4cff
MD
820 [Almost all of these changes should be documented in the NEWS
821 file.]
822
cf2c7413
MD
823 * gc.h (scm_freelist_t): New type.
824
825 * pairs.h (SCM_NEWCELL, SCM_NEWCELL2): Use new style freelists.
826
827 * gc.c (SCM_INIT_HEAP_SIZE): Changed from 32768 --> 40000 so that
828 all of Guile basics fits into one segment and there suitable room
829 for work.
830 (SCM_EXPHEAP): Now takes an argument. Grow by a factor of 1.5
831 instead of 2.
832 (scm_freelist, scm_freelist2): Now of type scm_freelist_t.
833 Freelists now contains information about object span, cells
834 collected and amount of cells in heap segments belonging to the
835 list.
836 (scm_heap_size, scm_gc_cells_collected): Removed.
837
838 * init.c (scm_boot_guile_1): Make 2-word segment 8K (512 cells).
839
16d35552
MD
840 * Makefile.am (libguile_la_LDFLAGS): Bumped library version
841 number.
842
cf2c7413 843 * __scm.h eq.c, eval.c, gc.c, gc.h, gh_data, hash.c, numbers.c,
16d35552
MD
844 numbers.h, objects.c, ramap.c, random.c, unif.c, unif.h: Extensive
845 rewrite of handling of real and complex numbers.
846 (SCM_FLOATS, SCM_SINGLES): These #ifdef conditionals have been
847 removed along with the support for floats. (Float vectors are
848 still supported.)
849
850 * tags.h (scm_tcs_bignums): Removed.
851 (scm_tc16_bigpos, scm_tc16_bigneg): Replaced by scm_tc16_big.
852 Use SCM_BIGSIGN(x) to test for sign!
853 (scm_tc16_big): The new bignum type.
854 (SCM_REAL_PART, SCM_IMAG_PART): Removed.
855
856 * numbers.h (SCM_BIGSIGN): Sign moved to bit 16.
857 (scm_makdbl): Deprecated.
858 (SCM_NEWREAL, SCM_NEWCOMPLEX): New macros.
859 (SCM_SINGP): Deprecated.
860 (SCM_FLO): Removed.
861 (SCM_INEXP, SCM_CPLXP): Deprecated.
862 (SCM_INEXACTP, SCM_COMPLEXP): New macros.
863 (SCM_COMPLEX_REAL, SCM_COMPLEX_IMAG): Renamed from
864 SCM_REAL, SCM_IMAG (and now only valid for complex numbers).
865 (SCM_REAL, SCM_IMAG): New, *deprecated*, selectors which work both
866 for doubles and complex numbers.
867 (SCM_REAL_VALUE): New selector for doubles.
868 (scm_double_t, scm_complex_t): New types.
869 (scm_dbl): Removed.
870
871 * numbers.c (scm_floprint, scm_floequal): Removed.
872 (scm_print_real, scm_print_complex, scm_real_equalp,
873 scm_complex_equalp): New functions.
874
875 * unif.c (scm_makflo): Removed.
876
877 * smob.h (SCM_SMOB_PREDICATE): New macro.
878 (SCM_NEWSMOB2, SCM_RETURN_NEWSMOB2, SCM_NEWSMOB3,
879 SCM_RETURN_NEWSMOB3): New macros.
880
8811999-11-21 Michael Livshin <mlivshin@bigfoot.com>
882
883 The following changes implement primitive support for double cells
884 (i.e. four-word cells) and change the representation of some
885 things to multi-cells instead of cons+malloc. (Applied and
886 modified by mdj.)
887
888 * pairs.h (SCM_NEWCELL2): double-cell variants of SCM_NEWCELL.
889 (SCM_CELL_WORD, SCM_CELL_WORDLOC, SCM_SET_CELL_WORD): primitive
890 multi-cell access macros (used by the ones below).
891 (SCM_CELL_WORD[0-3], SCM_SET_CELL_WORD[0-3]): multi-cell access
892 macros.
893
894 * gc.c (scm_freelist2): multi-cell freelists.
895 (inner_map_free_list): map_free_list, parameterized on ncells.
896 "nn cells in segment mm" was misleading for ncells > 1; changed to
897 "objects". still print cells too, though.
898 (scm_map_free_list): rewritten using inner_map_free_list.
899 (scm_check_freelist): get freelist as parameter, since now we have
900 more than one.
901 (scm_debug_newcell2): multi-cell variants of
902 scm_debug_newcell.
903 (scm_gc_for_newcell): take ncells and freelist pointer as
904 parameters.
905 (scm_gc_mark): add case for tc7_pws (procedures with setters are
906 now double cells).
907 (scm_gc_sweep): don't free the float data, since it's not malloced
908 anymore.
909 (init_heap_seg): didn't understand what n_new_objects stood for,
910 so changed to n_new_cells.
911 (make_initial_segment): new function, makes an initial segment
912 according to given ncells.
913 (scm_init_storage): call make_initial_segment, for ncells={1,2,3}.
914
915 * numbers.c (scm_makdbl): no malloc'ing needed, so the
916 {DEFER,ALLOW}_INTS thing removed.
917
918 * numbers.h (struct scm_dbl): changed to represent a double cell,
919 with the number in the second half.
16d35552
MD
920
921 * dynwind.c: changed the wind-guards representation to double
922 cell.
923
924 * procs.c, procs.h: changed the procedure-with-setter representation
925 to double cell.
926
927 * async.c, async.h: made async representation a double cell.
928
16d35552 929 * dynl.c: made dynamic_obj representation a double cell.
a00c95d9 930
b70ecbd0
GH
9312000-03-13 Gary Houston <ghouston@arglist.com>
932
933 * ports.c (flush_void_port): renamed to flush_port_default.
934 (end_input_void_port): renamed to end_input_default.
935
936 * init.c (scm_standard_stream_to_port): create a void port instead
937 of opening /dev/null if the standard file descriptors are bad.
938 advantages: no portability problems, doesn't waste a file descriptor,
939 simplifies the code (thanks to Marius for the idea).
940
941 * vports.c (s_scm_make_soft_port): call scm_port_non_buffer.
942
943 * void ports: make reading from a void port give EOF instead of
944 segv:
945 * ports.c (s_scm_sys_make_void_port): modified docstring.
946 (fill_input_void_port): new proc.
947 (scm_init_ports): set up fill_input_void_port.
948 * ports.c (scm_port_non_buffer): new proc.
949 (scm_void_port): call scm_port_non_buffer.
950
951 * fports.c (scm_setvbuf): docstring: remove the fcntl documentation
952 which was incorrectly appended.
953
fdc7ea2d
MD
9542000-03-13 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
955
956 * guile-doc-snarf.in: Don't use absolute path for `sed'. (Note
957 that we can't use autoconf for this. Autoconf itself relies on
26fba922 958 the existence of `sed' somewhere on your path.) (Thanks to Dirk
fdc7ea2d 959 Herrman.)
a00c95d9 960
68933ba3
MD
9612000-03-13 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
962
b44a555a
MD
963 * Makefile.am (libguile_la_SOURCES): Moved iselect.c here from
964 EXTRA_libguile_la_SOURCES.
965
966 * iselect.h: Always declare scm_internal_select.
967
968 * iselect.c (scm_internal_select): Added SCM_ASYNC_TICK at the
969 end. Also let scm_internal_select be a real function also when
970 not using threads.
971
68933ba3
MD
972 * __scm.h (SCM_TICK): Oops! Forgot to put SCM_ASYNC_TICK here...
973
c7f6ea11
MD
9742000-03-13 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
975
976 * __scm.h (SCM_ALLOW_INTS, SCM_REALLOW_INTS): Removed call to
977 SCM_ASYNC_TICK. (This is a preparation for POSIX threads support,
978 and kind of an experiment: Will this cause problems?)
979
62dbc244
GB
980Sun Mar 12 13:26:30 2000 Greg J. Badros <gjb@cs.washington.edu>
981
982 * Makefile.am: Added *.doc to DISTCLEANFILES.
983
4f2f645d
GH
9842000-03-12 Gary Houston <ghouston@arglist.com>
985
986 * fports.c (scm_fdes_to_port): call fcntl F_GETFL to test that
987 the fdes is valid before doing anything else. check that
988 the file descriptor supports the modes required.
989 (scm_fport_buffer_add): don't throw an error if fstat doesn't
990 work: just use the default buffer size.
991
992 * throw.c: change an outdated comment about scm_internal_catch
993 BODY: it doesn't take a jumpbuf arg.
994
995 * init.c (scm_standard_stream_to_port): install a handler in case
996 scm_fdes_to_port throws an error. don't check here whether the
997 file descriptor is valid, since scm_fdes_to_port will do that.
998 set the revealed count depending on whether the port got the
999 standard file descriptor.
1000 (stream_body_data): new type.
1001 (stream_body, stream_handler): new procs.
1002
7f782a0a
MD
10032000-03-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1004
67673f75
MD
1005 * stacks.c, stacks.h, struct.c, tags.h, unif.c (scm_bits_t):
1006 Renamed from SCMWORD.
1007
1008 * tags.h (SCM_NCELLP): Removed (SCMWORD).
1009
f1267706 1010 * arbiters.c (SCM_ARB_LOCKED): Use SCM_UNPACK_CAR.
67673f75 1011
74a426ae
MD
1012 * async.c, boolean.h, debug.c, dynl.c, dynwind.c, eval.c, eval.h,
1013 feature.h, filesys.h, fluids.h, fports.c, fports.h, gc.c, gc.h,
1014 hash.c, keywords.h, macros.c, numbers.c, numbers.h, objects.c,
1015 objects.h, options.c, pairs.h, ports.c, ports.h, print.c,
1016 procs.h, ramap.c, read.c, smob.c, smob.h, srcprop.h, stacks.c,
1017 stacks.h, strports.c, struct.c, struct.h, tag.c, tags.h,
1018 throw.c, unif.c, unif.h, variable.h, vectors.h, weaks.c,
f1267706 1019 weaks.h (SCM_PACK, SCM_UNPACK, SCM_UNPACK_CAR): Renamed from
74a426ae
MD
1020 SCM_ASSCM, SCM_ASWORD, SCM_CARW).
1021
7f782a0a
MD
1022 * numbers.h (SCM_SRS, SCM_INUM): Corrected SCM_ASSCM/ASWORD fixes.
1023
1024 * alist.c, eval.c, net_db.c, posix.c, print.c, snarf.h, struct.c,
1025 tags.h: Fixed copyright notices.
1026
1027 * struct.c, coop-threads.c: SCM_ASSCM/ASWORD fixes.
0cd87628 1028
7f782a0a 10292000-03-12 Marius Vollmer <mvo@zagadka.ping.de>
a00c95d9 1030
0cd87628
MV
1031 * init.c (scm_standard_stream_to_port): Check whether the file
1032 descriptor is valid and substitute "/dev/null" when not.
a00c95d9 1033
f3b5e185
MD
10342000-03-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1035
1036 * coop-defs.h (struct timespec): Conditionally defined.
1037
1038 * coop.c (coop_condition_variable_timed_wait_mutex): Use ETIMEDOUT
1039 instead of ETIME.
38eca29b
MD
1040
1041 * readline.c (match_paren): Bugfix: First arg to select is not
1042 number of descriptors but the number of the highest descriptor +
1043 1.
1044
1045 This is a preliminary attempt at a cleanup of the threads support
1046 code. It moves things to better places, makes arguments more
1047 consistent with the POSIX API (which is used in GNOME's glib), and
1048 adds new functionality.
a00c95d9 1049
38eca29b
MD
1050 * readline.c (scm_init_readline): Added new arg to scm_init_mutex.
1051
1052 * coop-defs.h (scm_mutex_trylock): New macro: alias for
1053 coop_mutex_trylock.
1054 (scm_cond_init): Changed definition to
1055 coop_new_condition_variable_init.
a00c95d9 1056
38eca29b
MD
1057 * coop.c: #include <errno.h>
1058 (coop_timeout_qinsert): Moved here from iselect.c
1059 (coop_new_mutex_init, coop_new_condition_variable_init): New
1060 functions. The strange names are temporary. Use scm_mutex_init
1061 and scm_cond_init instead.
1062 (coop_mutex_trylock): New function. Uses errno.h:EBUSY. errno.h
1063 is ANSI C, but should we check for individual error codes in
1064 configure.in?
1065 (coop_condition_variable_timed_wait_mutex): New function.
1066 (coop_key_create, coop_setspecific, coop_getspecific,
7f782a0a 1067 coop_key_delete): New functions.
38eca29b
MD
1068
1069 * iselect.c (coop_timout_qinsert): Moved to coop.c
1070
32e1616c
MD
10712000-03-11 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1072
1073 * pairs.h (SCM_SETAND_CAR, SCM_SETAND_CDR, SCM_SETOR_CAR,
1074 SCM_SETOR_CDR): Corrected SCM_ASSCM/WORD fixes.
1075
1076 * tags.h (SCM_VOIDP_TEST): Renamed from VOIDP_TEST.
1077 Layout cleanups.
1078
1079 * objects.h (SCM_CLASS_FLAGS, SCM_OBJ_CLASS_FLAGS,
1080 SCM_SET_CLASS_INSTANCE_SIZE), struct.h (SCM_STRUCT_VTABLE_DATA),
1081 proc.h (SCM_CLOSCAR): SCM_ASSCM/WORD fixes.
1082
1083 * eval.c (scm_lookupcar1): Inserted SCM_ASWORD in expressions
1084 dealing with ilocs.
1085
d5c39069
GB
10862000-03-11 Dale P. Smith <dpsm@en.com>, applied by Greg J. Badros, <gjb@cs.washington.edu>
1087
1088 * numbers.c (scm_copy_big_dec, scm_copy_smaller, scm_big_ior,
1089 scm_big_xor, scm_big_and, scm_big_test): Added new lowlevel bignum
1090 logical functions from SCM.
1091
1092 (logand, logior, logxor, logtest, logbit?): Extended scheme
1093 logical functions to use bignums from SCM.
1094
1095 (lognot): Removed call to `SCM_VALIDATE_INUM' that prevented
1096 lognot from using bignums.
1097
3e892913
GB
1098Thu Mar 9 11:33:25 2000 Greg J. Badros <gjb@cs.washington.edu>
1099
a00c95d9 1100 * vectors.h (SCM_VELTS_AS_STACKITEMS): Added this macro to help in
3e892913
GB
1101 eliminating some warnings.
1102
1103 * unif.c, strports.c, print.c, options.c: Fix some warnings on
1104 mis-use of SCM/long
1105
1106 * gc.c, gc.h: Added scm_return_first_int(), and added comment re:
1107 what the scm_return_first* functions do.
1108
7ac030d6
GB
11092000-03-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>, applied by Greg J. Badros, <gjb@cs.washington.edu>
1110
1111 * libguile/*.[ch]: make a distinction between SCM as a generic
1112 name for a Scheme object (now a void*), and SCM as 32 bit word for
1113 storing tags and immediates (now a long int). Introduced
1114 SCM_ASWORD and SCM_ASSCM for conversion. Fixed various dubious
1115 code in the process: arbiter.c (use macros), unif.c (scm_array_p),
a00c95d9 1116
f635d2d4
GB
1117Wed Mar 8 10:15:59 2000 Greg J. Badros <gjb@cs.washington.edu>
1118
1119 * numbers.c: Use SCM_VALIDATE_LONG_COPY, and longs, not ints, in
1120 various logXXX primitives. Thanks Eric Moore!
1121
9eaa7fb6
GB
1122Tue Mar 7 08:05:22 2000 Greg J. Badros <gjb@cs.washington.edu>
1123
1124 * run-test, remaining-docs-needed: Added these scripts. The
1125 second one is only temporary until the docstring additions are
1126 complete. run-test may best live on, but is here mostly for
1127 convenience and awareness for now.
1128
1129 * hash.c: Docs, minor cleanup patch from Dirk Herrman.
1130
49673698
GB
1131Thu Mar 2 16:06:58 2000 Greg J. Badros <gjb@cs.washington.edu>
1132
1133 * error.h, error.c: Added `scm_wrong_type_arg_msg' to support
1134 displaying the expected type. Use SCM_LISTn in a couple places
1135 instead of scm_cons-ing by hand.
1136
1137 * __scm.h: Added SCM_ASSERT_TYPE macro.
1138
1139 * validate.h, scm_validate.h: Added the former, as a renamed
1140 version of the latter with SCM_ASSERT_TYPE used in
1141 SCM_MAKE_VALIDATE (instead of just SCM_ASSERT)
1142
1143 * Makefile.am: Rename scm_validate.h to validate.h.
1144
1145 * *.c, *.h: Include validate.h, not scm_validate.h (old name's
1146 prefix was superfluous).
1147
417bdef8
GB
1148Thu Mar 2 15:33:12 2000 Greg J. Badros <gjb@cs.washington.edu>
1149
1150 * hashtab.c: Improved documentation for lots of functions. Added
1151 handwritten docs for `hash-fold'.
1152
1153Thu Mar 2 15:13:25 2000 Greg J. Badros <gjb@cs.washington.edu>
1154
1155 * list.c: Added hand-written docs for `del{q,v,ete}1!'.
1156
26a760c6
GB
1157Thu Mar 2 12:38:30 2000 Greg J. Badros <gjb@cs.washington.edu>
1158
a00c95d9 1159 * list.c: Moved append docs to append! Thanks Dirk Hermann. Also,
26a760c6
GB
1160 added append docs from R4RS.
1161
1162 * strings.c: Docstring typo fix, + eliminate unneeded IMP tests.
1163 Thanks Dirk Hermann!
1164
1165 * chars.h: Provide SCM_CHARP, SCM_CHAR, SCM_MAKE_CHAR and
1166 deprecate SCM_ICHRP, SCM_ICHR, SCM_MAKICHR. Thanks Dirk Hermann!
a00c95d9 1167
26a760c6
GB
1168 * *.h, *.c: Use SCM_CHARP, SCM_CHAR, SCM_MAKE_CHAR throughout.
1169 Drop use of SCM_P for function prototypes... assume an ANSI C
1170 compiler. Thanks Dirk Hermann!
1171
898942f8
GB
1172Sat Feb 19 12:20:12 2000 Greg J. Badros <gjb@cs.washington.edu>
1173
1174 * ports.c: Made `set-port-column!' and `set-port-line!' each
1175 return SCM_UNSPECIFIED instead of a (not-scheme-object) integer
1176 that caused a seg fault. Also fixed `set-port-column!'s
1177 docstring. Thanks Han-Wen Nienhuys for finding the bug!
1178
84a3df2c
GB
1179Sun Feb 13 19:11:42 2000 Greg J. Badros <gjb@cs.washington.edu>
1180
1181 * arbiters.c, eq.c, gc.c, guardians.c, list.c, ports.c, print.c,
a00c95d9 1182 regex-posix.c, scmsigs.c, stime.c, strings.c, variable.c, stime.c,
84a3df2c
GB
1183 strings.c, variable.c: Added lots of documentation, cleaned up
1184 some existing documentation. Occasionally changed formal params
1185 to match docs. Also folded an #ifdef into the inners of a
1186 primitive instead of having two copies of the primitive
1187 (`get-internal-real-time', from stime.c)
1188
1189Sun Feb 13 18:12:19 2000 Greg J. Badros <gjb@cs.washington.edu>
1190
1191 * ports.c: Added docs for primitives missing them. Written by
1192 hand.
1193
3f557de6
GB
1194Sun Feb 13 09:40:36 2000 Greg J. Badros <gjb@cs.washington.edu>
1195
1196 * guile-doc-snarf.in: Use ${AWK} -f guile-func-name-check, not
1197 just execing guile-func-name-check. Thanks Michael Livshin!
1198
ddcccdb3
GB
1199Thu Feb 10 11:43:23 2000 Greg J. Badros <gjb@cs.washington.edu>
1200
1201 * guile-snarf.awk.in: Tweak to work with Sun/HP awk, removed some
1202 dead code. Patch from Michael Livshin.
1203
1204 * guile-doc-snarf.in: Tweak to work with Sun/HP sh. Patch from
1205 Michael Livshin.
1206
720e8692
GH
12072000-02-09 Gary Houston <ghouston@arglist.com>
1208
1209 * init.c (scm_init_standard_ports): when stdout is a tty, make the
1210 current-output-port unbuffered by default. this is less confusing
1211 for interactive use. it was line-buffered because of a
1212 performance problem with unbuffered ports, but I think it will be
1213 OK now.
1214
43ff3170
GH
12152000-02-08 Gary Houston <ghouston@arglist.com>
1216
1217 * __scm.h: don't define long_long or ulong_long if HAVE_LONG_LONGS
1218 is not defined.
1219
1220 * stime.c (scm_localtime, scm_mktime): if neither HAVE_TM_ZONE nor
1221 HAVE_TZNAME are defined, use an empty string instead of giving two
1222 spurious compile-time errors.
1223
4ba47302
GB
1224Tue Feb 8 13:57:46 2000 Greg J. Badros <gjb@cs.washington.edu>
1225
1226 * ports.c: Doc patches from Richard Kim. Pasted from MIT Scheme.
1227 Thanks Richard!
1228
09a617f7
GB
1229Mon Feb 7 09:07:31 2000 Greg J. Badros <gjb@cs.washington.edu>
1230
1231 * macros.c: Doc patches from Richard Kim. Pasted from scm.texi.
1232
9dbcf010
GB
1233Sun Feb 6 20:26:21 2000 Greg J. Badros <gjb@cs.washington.edu>
1234
1235 * pairs.c: Doc patches from Richard Kim. Pasted from MIT Scheme
1236 (which is GNU GPL'd).
1237
bd9e24b3
GH
12382000-01-31 Gary Houston <ghouston@arglist.com>
1239
1240 * strings.h: don't use SCM_P. don't include <string.h>.
1241 * error.c, gh_data.c, ports.c, script.c, strop.c: include <string.h>.
a00c95d9 1242
bd9e24b3
GH
1243 * strings.c (scm_string_ref): make the 2nd argument compulsory.
1244 previously it defaulted to zero for no good reason that I can see.
1245 use a local variable for SCM_INUM (k). replace
1246 SCM_VALIDATE_INUM_DEF with SCM_VALIDATE_INUM_COPY.
1247
1248 (scm_makfromstr): cosmetic changes.
1249
1250 (scm_string): Accept only chars in the list, not strings, for
1251 conformance to R5RS (particularly for list->string, which is
1252 supposed to be the inverse of string->list.) remove
1253 SCM_DEFER_INTS/SCM_ALLOW_INTS, which is unnecessary since
1254 scm_makstr handles the cell allocation. when reporting wrong-type
1255 arg, don't report the position as 1.
1256
1257 * posix.c (scm_init_posix): intern PIPE_BUF if it's defined.
1258
28d77376
GH
12592000-01-29 Gary Houston <ghouston@arglist.com>
1260
ae1b098b
GH
1261 * posix.c (scm_pipe): rewrote the docstring.
1262
28d77376
GH
1263 * filesys.c (scm_select, retrieve_select_type, get_element,
1264 fill_select_type, set_element): modified so that Scheme
1265 "select" tests port buffers for the ability to provide input
1266 or accept output. Previously only the underlying file descriptors
1267 were checked. Rewrote the docstring.
a00c95d9 1268
7f1497ce
GB
1269Thu Jan 27 10:14:25 2000 Greg J. Badros <gjb@cs.washington.edu>
1270
1271 * vectors.c, symbols.c, strorder.c: Documentation cut and pasted
1272 from Gregg Reynolds. Thanks Gregg!
1273
2288ff9b
GB
1274Thu Jan 27 09:59:38 2000 Greg J. Badros <gjb@cs.washington.edu>
1275
1276 * strop.c (scm_i_index): Obfuscated commented-out SCM_DEFINE by
1277 adding "x" prefix to the line so that guile-func-name-check
1278 doesn't complain unnecessarily.
1279
349af6dd
GB
1280Wed Jan 26 17:33:52 2000 Greg J. Badros <gjb@cs.washington.edu>
1281
1282 * throw.c: Factor out an #ifdef/#else/#endif choice more finely
1283 for maintainability.
1284
1285 * strop.c: Documentation added by Gregg A. Reynolds. Pasted in
1286 from qdocs, RnRs.
1287
a28eb127
GB
1288Wed Jan 26 10:02:11 2000 Greg J. Badros <gjb@cs.washington.edu>
1289
a00c95d9 1290 * tag.c: Added doc for `tag', but mark as deprecated since Mikael
a28eb127
GB
1291 suggests removing tag.c altogether (and using a new `class-of'
1292 instead).
1293
1294 * strings.c: Added documentation from Gregg A. Reynolds. Edited
1295 a bit by me to use FOO instead of @var{foo} and to have the
a00c95d9 1296 summary come before preconditions on input. Also dropped trailing
a28eb127
GB
1297 (rnrs) note.
1298
1299 * gsubr.c: Do not use SCM_DEFINE for `gsubr-apply'. Register the
1300 function with scm_make_subr_opt w/ last arg of 0 so it is not
1301 visible at the Scheme level. Mikael says that this is the right
1302 thing because the first arg to the proc is the guts of a compiled
1303 closure and shouldn't be exposed to the Scheme level.
1304
ac2259fc
GB
1305Tue Jan 25 17:15:47 2000 Greg J. Badros <gjb@cs.washington.edu>
1306
1307 * sort.c: typo in comment fixed.
1308
1309 * keywords.c: Added documentation.
1310
1311 * guardians.c: Added documentation (could be better).
1312
1313 * gc.c: Added docs for gc-set-debug-check-freelist.
1314
1315 * eq.c: Added docs for eq?, eqv? equal? abridged from R4RS.
1316
1317 * boolean.c: Added docs for `not', `boolean?' (by hand).
a00c95d9 1318
d928e0b4
GB
1319Tue Jan 25 13:28:56 2000 Greg J. Badros <gjb@cs.washington.edu>
1320
1321 * random.c: Added documentation, from SLIB page:
1322 http://angela.ctrl-c.liu.se/~calle/scheme/slib_toc.html
1323
1324Mon Jan 24 17:50:20 2000 Greg J. Badros <gjb@cs.washington.edu>
1325
1326 * variable.c, version.c: Added documentation, written by hand
1327 since I could not find anything already written that was
1328 relevant.
1329
d831b039
GH
13302000-01-23 Gary Houston <ghouston@arglist.com>
1331
a00c95d9 1332 * filesys.c (scm_chown): omit port/fdes support if HAVE_FCHOWN is
d831b039
GH
1333 not defined (thanks to Richard Y. Kim).
1334
88ec97ad
GB
1335Thu Jan 20 13:00:38 2000 Greg J. Badros <gjb@cs.washington.edu>
1336
1337 * Makefile.in: Removed, this is auto-generated.
1338
078e9092
GB
1339Thu Jan 20 11:33:47 2000 Dirk Hermann <dirk@ida.ing.tu-bs.de> --applied 01/20/00 gjb
1340
1341 * list.c: Put some variable initialization code at the point of
1342 declaration; Added a comment for list*; Formatting changes.
1343
1344 * load.c: use SCM_NNULLP to make sure the end of a list is not
1345 reached yet.
1346
e7a96050
MD
13472000-01-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1348
a177af34
MD
1349 * backtrace.c (scm_display_error_message): Bugfix: Don't use
1350 result of scm_list_p as C boolean.
1351 (scm_display_error_message, scm_set_print_params_x): Use new
1352 validation macros. (Thanks to Dirk Herrmann.)
1353
d06bcb02
MD
1354 * net_db.c (scm_resolv_error): Cast result from hstrerror.
1355
1356 * strports.c (st_end_input): Inserted parenthesis to get operator
1357 grouping correct.
1358
1359 * list.h (scm_init_list): Removed SCM_P around prototypes.
1360
1361 * fports.c, list.c, numbers.c, ports.c, stime.c, symbols.c,
1362 filesys.c, posix.c: Converted docstrings to ANSI C format and
e7a96050
MD
1363 escaped " occurring inside string literals.
1364
682eefe9
MD
1365Tue Jan 18 13:21:08 2000 Mikael Djurfeldt <mdj@r11n07-s.pdc.kth.se>
1366
1367 * posix.c (scm_mknod): Escape " occuring inside docstring.
1368
56cfe22b
MD
13692000-01-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1370
1371 * alist.c, chars.c, debug.c, dynl.c, dynwind.c, error.c, eval.c,
1372 evalext.c, filesys.c, gc.c, hash.c, hashtab.c, ioext.c,
1373 keywords.c, list.c, load.c, macros.c, net_db.c, numbers.c,
1374 objprop.c, ports.c, posix.c, print.c, procprop.c, procs.c,
1375 ramap.c, regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c,
1376 stacks.c, stime.c, strings.c, strop.c, strports.c, struct.c,
1377 symbols.c, throw.c, unif.c, vectors.c, version.c, vports.c,
1378 weaks.c: Converted docstrings to ANSI C format.
a00c95d9 1379
56cfe22b
MD
1380 * filesys.c (scm_chmod), simpos.c (scm_system), version
1381 (scm_version), vports (scm_make_soft_port): Escape " occuring
1382 inside docstring.
1383
fcb1720f
GB
1384Mon Jan 17 11:41:22 2000 Greg J. Badros <gjb@cs.washington.edu>
1385
1386 * scm_validate.h: Added SCM_VALIDATE_ULONG_COPY,
1387 SCM_VALIDATE_LONG_COPY
1388
1389 * numbers.c: Use SCM_VALIDATE_ULONG_COPY, instead of
1390 SCM_VALIDATE_INUM_COPY to let bigger numbers be used. Rename a
1391 couple of formal arguments (and fix their uses) to make arguments
1392 match the documentation.
1393
b9af3d0e
MS
13942000-01-14 <mstachow@alum.mit.edu>
1395
1396 * Makefile.am: Augment path when running guile-doc-snarf so
1397 guile-func-name-check is found.
1398
153511a7
GB
1399Fri Jan 14 09:34:55 2000 Greg J. Badros <gjb@cs.washington.edu>
1400
1401 * scm_validate.h (SCM_NUM2LONG_DEF): Fix this macro to just use
1402 def, not SCM_MAKINUM(def); thanks Janis Bzerins!
1403
59d5245f
GB
1404Wed Jan 12 00:06:53 2000 Greg J. Badros <gjb@cs.washington.edu>
1405
1406 * net_db.c (s_scm_inet_makeaddr): Use SCM_NUM2ULONG since that's
1407 the way guile-1.3.4 worked, but #if 0 out the version using
1408 SCM_VALIDATE_INUM_COPY for stricter testing.
1409
95aec69f
GB
1410Tue Jan 11 18:24:18 2000 Greg J. Badros <gjb@cs.washington.edu>
1411
1412 * guile-doc-snarf.in: Use new $fullfilename for running
1413 guile-func-name-check, and put "$fullfilename" and "$filename" in
1414 quotes at uses to make sure re-splitting on whitespace does not
a00c95d9 1415 occur (so filenames w/ embedded whitespace would work okay, though
95aec69f
GB
1416 I sure hope we never have to deal with that! :-) ). Thanks to
1417 Mikael for pointing out the source_dir != build_dir was broken.
1418
b7ac2837
GB
1419Tue Jan 11 17:42:40 2000 Greg J. Badros <gjb@cs.washington.edu>
1420
1421 * scm_validate.h: Added SCM_NUM2LONG_DEF macro. Make
1422 SCM_OUT_OF_RANGE use SCM_MAKINUM, not scm_long2num. Added
1423 SCM_COERCE_ROSTRING macro. Added SCM_VALIDATE_NONEMPTYLIST
1424 macro. Fix SCM_VALIDATE_STRINGORSUBSTR macro to not use SLOPPY
1425 variants.
1426
1427 * ports.c (scm_port_closed_p): Validate that the arg is a PORT,
1428 then return whether it's an open port (was validating that it was
1429 an open port -- this was a bug I introduced back in December, but
1430 my careful reading of diffs caught it).
1431
1432 * numbers.c: Recombine the two conditional-compilation paths for
1433 all the log* primitives -- they were split based on #ifndef
1434 scm_long2num; factored out a SCM_LOGOP_RETURN macro, and fixed
1435 some bugs and inconsistencies in the two sets of implementations.
1436 (scm_lognot) Fixed *atrocious* re-use of a SCM as an integer!
1437
1438 * ioext.c: Use SCM_ASSERT_RANGE in a couple places, and
1439 SCM_VALIDATE_INUM_COPY once where it should've been used.
1440
1441 * fluids.c (scm_internal_with_fluids): Use
1442 SCM_VALIDATE_LIST_COPYLEN.
1443
1444 * filesys.c: Use SCM_NUM2LONG instead of SCM_VALIDATE_INUM_COPY;
1445 this is questionable as it relaxes type safety, but other changes
1446 were useful and all SCM_NUM2LONG's should probably be
1447 revisited. Use SCM_OUT_OF_RANGE, SCM_WRONG_TYPE_ARG.
1448
1449 * evalext.c: line-break change on 1 line.
1450
1451 * eval.c (nconc2last): Takes a non-empty list as its first
1452 argument, not just a list.
1453
1454 * dynl.c: Use new SCM_COERCE_ROSTRING macro.
1455
1456Tue Jan 11 15:44:23 2000 Greg J. Badros <gjb@cs.washington.edu>
1457
1458 * dynl.c, feature.c, filesys.c, fports.c, list.c, load.c,
1459 net_db.c, sort.c, stacks.c, unif.c: Use SCM_WTA, SCM_MISC_ERROR
1460 where possible.
1461
1462 * symbols.c (scm_sysintern0): Fixed the function name in a
1463 scm_misc_error invocation.
1464
1465 * print.c (scm_simple_format): Do not need SCM_COERCE_SUBSTR, and
1466 use scm_return_first to ward off latent GC bug that Mikael caught.
1467
1468 * async.c: Use SCM_VALIDATE_ASYNC_COPY one place where it wasn't
1469 used before but should've been.
1470
d61f6b02
MD
14712000-01-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1472
1473 * snarf.h (SCM_PROC1): Replaced SCM (*) (...) with
1474 SCM_FUNC_CAST_ARBITRARY_ARGS.
1475
88423ab1
GB
1476Tue Jan 11 13:44:07 2000 Greg J. Badros <gjb@cs.washington.edu>
1477
1478 * guile-func-name-check.in: Added this script to statically check
1479 #define FUNC_NAME, #undef FUNC_NAME in the source.
1480
1481 * sort.c, posix.c: Fix #undef FUNC_NAME lines to not have trailing
1482 redundant comment, semicolon; caught by new guile-func-name-check
1483 script.
1484
1485 * debug.c: Fix mistaken #define FUNC_NAME for scm_make_iloc.
1486 Caught by new guile-func-name-check-script.
1487
1488 * Makefile.am: Added guile-func-name-check to bin_SCRIPTS
1489
1490 * ramap.c: Fix #if 0'd out code to be syntactically acceptable to
1491 guile-func-name-check.
1492
a00c95d9 1493 * guile-doc-snarf.in: Run guile-func-name-check on the file before
88423ab1
GB
1494 doing the snarf.
1495
7f15e635
GB
1496Tue Jan 11 11:31:10 2000 Greg J. Badros <gjb@cs.washington.edu>
1497
1498 * fports.c, ports.c, ports.h, strports.c, vports.c: Make write
1499 port function take const void*, not void*.
1500
bf121b59
GB
1501Tue Jan 11 11:18:07 2000 Greg J. Badros <gjb@cs.washington.edu>
1502
1503 * scm_validate.h, chars.c, ports.c, print.c, read.c, strings.c,
1504 strop.c: Use SCM_VALIDATE_ICHR, SCM_VALIDATE_ICHR_COPY instead of
1505 SCM_VALIDATE_CHAR, SCM_VALIDATE_CHAR_COPY. Change made for
1506 consistency with the other macros dealing with immediate
1507 characters. (Similar to INT -> INUM change a week or so ago).
1508
7965d98f
GB
1509Tue Jan 11 10:41:46 2000 Greg J. Badros <gjb@cs.washington.edu>
1510
1511 * dynl.c, error.c, eval.c, feature.c, filesys.c, fports.c, list.c, load.c,
1512 net_db.c, read.c, socket.c: Update error messages to use ~A for
1513 %s, ~S for %S to work with new `simple-format' format and be
1514 standardized better.
1515
1516 * print.h, print.c (scm_simple_format): Added `simple-format'
1517 primitive. It's the old scm_display_error, with ARGS now a rest
a00c95d9 1518 parameter, and the destination first instead of last (and a couple
7965d98f
GB
1519 new capabilities inspired by `format' -- #t as destination means
1520 current-output-port, #f means return the formatted text as a
1521 string.
1522
1523 * gh.h, gh_data.c, ports.h, ports.c: Added some missing const specifications.
1524
1525 * backtrace.c (scm_display_error_message): Rewrote to use
1526 scm_simple_format() procedure.
1527
1528 * __scm.h: Added commented-out #define of GUILE_DEBUG_FREELIST
1529
f73d2411
MV
15302000-01-09 Marius Vollmer <mvo@zagadka.ping.de>
1531
1532 Finally applied the libltdl patch from Thomas Tanner, with slight
1533 modifications.
1534
1535 * DYNAMIC-LINKING: Removed because it is obsolete.
1536 * dynl.c: Use ANSI prototypes.
1537 (sysdep_dynl_link): Use lt_dlopenext instead of lt_dlopen.
1538 * scmconfig.h.in: Do not change, as it is automatically generated.
a00c95d9 1539
f73d2411
MV
1540 1999-07-25 Thomas Tanner <tanner@ffii.org>
1541
1542 * dynl-dl.c, dynl-dld.c, dynl-shl.c, dynl-vms.c: deleted
1543 (obsolete)
1544 * Makefile.am: likewise, add INCLTDL (libltdl headers) to
1545 INCLUDES, set dlpreopened files in LDFLAGS, link libguile
1546 against libltdl
1547 * dynl.c: use libltdl if DYNAMIC_LINKING is enabled,
1548 * guile.c: register preloaded modules
1549 * scmconfig.h.in: remove obsolete symbols
1550
38c1d3c4
GH
15512000-01-09 Gary Houston <ghouston@arglist.com>
1552
1553 * These changes should make it unnecessary to call tzset from
1554 Scheme after modifying the TZ environment variable, even if the
1555 system date facilities cache the value.
1556 * stime.c (setzone, scm_localtime): added comments.
1557 (tzset): don't define a noop tzset macro if HAVE_TZSET not defined.
1558 (setzone): don't call tzset.
1559 (restorezone): call tzset only if HAVE_TZSET is defined.
1560 (scm_tzset): don't define if HAVE_TZSET not defined. Change the
1561 doc string to indicate that this procedure isn't likely to do
1562 anything useful.
1563 (scm_localtime, scm_strftime, scm_mktime): call tzset if
1564 LOCALTIME_CACHE is defined.
1565
9359d657
MD
15662000-01-09 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1567
1568 * posix.c (scm_sync): Return SCM_UNSPECIFIED.
1569
f25f761d
GH
15702000-01-09 Gary Houston <ghouston@arglist.com>
1571
1572 * eval.c: define scm_unbound_variable_key ('unbound-variable).
1573 scm_lookupcar1: throw an error with key 'unbound-variable instead
1574 of 'misc-error when an unbound variable is encountered.
1575
a00c95d9 1576 * filesys.c (scm_mkdir, scm_rmdir, scm_getcwd, scm_select,
f25f761d
GH
1577 scm_symlink, scm_readlink, scm_lstat),
1578 posix.c (scm_setpgid, scm_setsid, scm_ctermid, scm_tcgetpgrp,
1579 scm_tcsetpgrp, scm_uname, scm_setlocale, scm_mknod, scm_nice,
1580 scm_sync),
a00c95d9 1581 simpos.c (scm_system),
f25f761d
GH
1582 stime.c (scm_times, scm_strptime):
1583 move the HAVE_XXX feature tests out of the procedure bodies.
1584 don't use SCM_SYSMISSING.
1585 scm_validate.h (SCM_SYSMISSING): removed.
1586 error.h, error.c (scm_sysmissing): comment that this is deprecated.
1587 see ChangeLog entry for 1999-12-28.
1588
a4dd2611
GB
1589Sat Jan 8 19:52:04 2000 Greg J. Badros <gjb@cs.washington.edu>
1590
1591 * scm_validate.h (SCM_VALIDATE_BOOL_COPY): Fix typo.
1592
1593Sat Jan 8 17:06:46 2000 Greg J. Badros <gjb@cs.washington.edu>
1594
1595 * backtrace.c: Fix spelling typo in a comment.
1596
1597 * snarf.h: Use new SCM_DOCS macro to encapsulate the non SCM_INIT
1598 text. Reformatted some of the expansions.
1599
5ac36451
GB
1600Fri Jan 7 15:50:46 2000 Greg J. Badros <gjb@cs.washington.edu>
1601
1602 * scm_validate.h (SCM_OUT_OF_RANGE): Use scm_out_of_range_pos to
1603 report the position of the argument.
1604
a00c95d9 1605 * error.h, error.c (scm_out_of_range_pos): Added this function to
5ac36451 1606 take extra "pos" argument, the position number of the errant
a00c95d9 1607 argument.
5ac36451
GB
1608
1609 * debug.c: Use SCM_OUT_OF_RANGE instead of scm_out_of_range.
1610
1611 * snarf.h: Use SCM_HERE and SCM_INIT as names, not SCM_NOTSNARF
1612 and SCM_SNARFING. Also put the %%% in the SCM_INIT since Mikael
1613 prefers that and I'm reasonably indifferent.
1614
1615Fri Jan 7 15:03:32 2000 Greg J. Badros <gjb@cs.washington.edu>
1616
1617 * snarf.h: Factor out differences between C++ and non-C++ into
1618 SCM_FUNC_CAST_ARBITRARY_ARGS macro. Modify all the snarf macro
1619 definitions to use SCM_NOTSNARF and SCM_SNARFING macros (like
1620 Mikael's macros, below, but changed names and SCM_SNARFING no
1621 longer expands to include %%% -- that must appear in the argument
1622 so that the token appears at the call-site as a reminder).
1623
088bb1d4
MD
16242000-01-07 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1625
1626 * snarf.h (SCM_INSITU, SCM_INIT): New snarf macros for use in user
1627 snarf macro definitions.
1628
636480e6
MD
16292000-01-06 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1630
1631 * chars.c (scm_integer_to_char): Use Greg's nice
1632 SCM_VALIDATE_INUM_RANGE macro for argument checking for closer
1633 adherence to R5RS.
1634
7c5628e2
GB
1635Thu Jan 6 11:48:49 2000 Greg J. Badros <gjb@cs.washington.edu>
1636
1637 * *.c, snarf.h: Replace GUILE_PROC1 with SCM_DEFINE1 throughout.
1638
2cc0f8cb
GB
1639Thu Jan 6 11:22:53 2000 Greg J. Badros <gjb@cs.washington.edu>
1640
1641 * Makefile.am (ETAGS_ARGS): Switch to SCM_DEFINE, SCM_DEFINE1
1642 instead of GUILE_PROC.
1643
1644Thu Jan 6 11:21:49 2000 Greg J. Badros <gjb@cs.washington.edu>
1645
a00c95d9 1646 * alist.c: Do not report mismatch errors on some uses of `tmp' (do
2cc0f8cb
GB
1647 this by using SCM_ARG2 instead of `2' in the SCM_VALIDATE_CONS
1648 macro call.
1649
9179dcdd
GB
1650Thu Jan 6 09:54:33 2000 Dirk Herrmann <dirk@ida.ing.tu-bs.de> --gjb applied
1651
1652 * scm_validate.h: Remove some redundant NIMP tests.
1653
1654 * alist.c: minimize scope of the tmp variables, and initialize
1655 them when declared. The strange SCM_NIMP tests are replaced by
1656 SCM_CONSP tests that more closely reflect the intended semantics.
1657 However, we don't get a performance penalty here, because the
1658 SCM_CONSP test was performed by the ALISTCELL test anyway. * The
1659 extremely ugly use of ASRTGO macros was removed: The calls to
1660 ASRTGO were not encapsulated by "#ifndef SCM_RECKLESS", but got a
1661 label parameter that only exists when SCM_RECKLESS is not defined.
1662 This works, because ASRTGO itself is defined in a way that it only
1663 makes use of the label parameter if SCM_RECKLESS is not defined
1664 (shudder!). Does guile make at all use of the possibility to
1665 define SCM_RECKLESS? * Codesize is likely to be reduced, since
1666 instead of two calls to SCM_ASSERT performed by the ALISTCELL test
1667 we now only get one test.
1668
1669 * list.c: Use SCM_NNULLP, not SCM_NIMP as appropriate. Also use
1670 SCM_NULLP instead of SCM_IMP. Drop use of "register" keyword on
1671 some variables in `list?'. Fix `reverse' and `reverse!'
1672 primitives to handle improper lists better.
1673
15b33280
GB
1674Wed Jan 5 11:24:53 2000 Greg J. Badros <gjb@cs.washington.edu>
1675
1676 * *.[ch]: Whitespace changes -- added space after SCM_VALIDATE_*
1677 macros and SCM_DEFINE macros to match GNU coding standards.
1678
ca8cd130
GB
1679Wed Jan 5 11:04:24 2000 Greg J. Badros <gjb@cs.washington.edu>
1680
1681 * *.[ch]: Replace GUILE_PROC w/ SCM_DEFINE.
1682
fb764465
GB
1683Wed Jan 5 10:59:06 2000 Greg J. Badros <gjb@cs.washington.edu>
1684
1685 * *.[ch]: Replace SCM_VALIDATE_INT w/ SCM_VALIDATE_INUM for
1686 better consistency with the names of other SCM_VALIDATE_ macros
1687 and better conformance to guile naming policy.
1688
1689Wed Jan 5 10:50:39 2000 Greg J. Badros <gjb@cs.washington.edu>
1690
1691 * ports.c (s_scm_close_all_ports_except): Use SCM_ARG1 in a
1692 SCM_VALIDATE instead of 1 to avoid a check on the argument (since
1693 it's not the actual name of the formal).
1e484823
GB
1694
1695 * guile-snarf.awk.in: Do argument/number mismatch checking and
1696 print warnings in an Emacs compile-mode parseable format.
1697
1698 * struct.c: Use SCM_ASSERT_RANGE instead of SCM_ASSERT w/
1699 SCM_OUTOFRANGE as 3rd argument.
1700
1701 * random.c: Fix argument/number mismatch (that I introduced :-( ).
1702
1703 * __scm.h: Do not #define SCM_ARG* when snarfing;
1704 lets us distinguish between 1 and SCM_ARG1 when snarfing as only
1705 the former (using the number) requires the argument to match the
1706 formal in the current argument snarfing check.
1707
1708 * snarf.h: Give new definition of SCM_ASSERT when in
a00c95d9 1709 snarfing mode to output a lexically-identifiable sequence that the
1e484823
GB
1710 guile-snarf.awk script uses to verify argument/position matching.
1711
1712 * ramap.c: Remove extraneous #undef FUNC_NAME.
1713
53fc4636
GB
1714Wed Jan 5 08:36:38 2000 Greg J. Badros <gjb@cs.washington.edu>
1715
1716 * guile-doc-snarf.awk.in: Removed -- guile-snarf.awk.in is the
a00c95d9 1717 current version of the same functionality; it writes the .x output
53fc4636
GB
1718 to stdout instead of directly into the file.
1719
1720Wed Jan 5 08:15:04 2000 Greg J. Badros <gjb@cs.washington.edu>
1721
1722 * unif.c, symbols.c, strings.c, stacks.c, random.c, print.c,
1723 posix.c: Eliminated a bunch of SCM_NIMP(..)s that are now
1724 redundant with the safer macros. Patch from Dirk Hermann applied
1725 by hand. Thanks Dirk!
1726
1727 * scm_validate.h: Added SCM_VALIDATE_VECTOR_OR_DVECTOR for some
1728 uses in random.c.
1729
1730 * ramap.c: whitespace change.
1731
3b5345d9
GB
1732Tue Jan 4 14:21:35 2000 Greg J. Badros <gjb@cs.washington.edu>
1733
1734 * options.c, objects.c, keywords.c, gc.c: Some redundant SCM_NIMP
1735 removals from Dirk Hermann.
1736
1737 * alist.c: Rename formals to match the parameter names in the
1738 documentation, updates to documentation. Thanks Dirk Hermann!
1739
169aec65
MD
17402000-01-04 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
1741
db62436e
MD
1742 * eval.c (SCM_CEVAL): Reverse order of
1743 scm_stack_checking_enabled_p and SCM_STACK_OVERFLOW_P
1744 (Thanks to Brad Knotwell.)
169aec65 1745
da43d822
GB
1746Mon Jan 3 08:30:02 2000 Greg Harvey <Greg.Harvey@thezone.net> (applied --01/03/00 gjb)
1747
1748 * gc.c (scm_debug_newcell): Added SCM_SETCAR of the newly
a00c95d9 1749 allocated cell.
da43d822
GB
1750
1751 * pairs.h: Added a comment about the need for the SCM_SETCAR in
1752 SCM_NEWCELL macro.
1753
1754Mon Jan 3 08:25:19 2000 Greg J. Badros <gjb@cs.washington.edu>
1755
1756 * dynl-vms.c, debug.c, coop-threads.c, backtrace.c, eval.c: More
1757 SCM_NIMP tests that were redundant are now eliminated. Patches
1758 from Dirk Hermann applied by hand.
1759
339999c7 1760The ChangeLog continues in the file: "ChangeLog-1996-1999"