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