The purpose of this patch is to make guile's internal memoizers
[bpt/guile.git] / libguile / ChangeLog
1 2003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
2
3 The purpose of this patch is to make guile's internal memoizers
4 distinguishable from memoizing macros created on the scheme level
5 or from user provided primitive memoizing macros. The reason is,
6 that the internal memoizers are the only ones that are allowed to
7 transform their scheme input into memoizer byte code, while all
8 other memoizing macros may only transform scheme code into new
9 scheme code.
10
11 To achieve this, a new macro type 'builtin-macro!' is introduced.
12 Currently, 'builtin-macro!'s are handled as memoizing macros, but
13 this will change when the memoizer and executor are separated.
14
15 * macros.[ch] (scm_i_makbimacro): New.
16
17 * macros.h (SCM_BUILTIN_MACRO_P): New.
18
19 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
20
21 * eval.c, goops.c: All of guile's primitive memoizing macros are
22 primitive builtin-macros now.
23
24 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
25 builtin-macros are handled equally to memoizing macros.
26
27 2003-05-04 Marius Vollmer <mvo@zagadka.de>
28
29 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
30 work around a bug in GCC 2.95.2 but is now a bug in itself.
31
32 2003-05-02 Marius Vollmer <mvo@zagadka.de>
33
34 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
35 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
36 scm_tcs_symbols): New.
37
38 2003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
39
40 * deprecated.h, deprecated.c (scm_protect_object,
41 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
42 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
43 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
44 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
45 scm_ensure_user_module, scm_load_scheme_module, scm_port,
46 scm_ptob_descriptor, scm_port_rw_active,
47 scm_close_all_ports_except): New.
48
49 * ports.c (scm_c_port_for_each): New function, mostly copied from
50 scm_port_for_each.
51 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
52 * ports.h (scm_c_port_for_each): New prototype.
53
54 2003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
55
56 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
57 macro was introduced in anticipation of GOOPS method compilation
58 code.)
59
60 * goops.c: Removed binding of @dispatch.
61
62 2003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
63
64 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
65 instructions that bind the macros on the scheme level back to
66 goops.c in order to make sure again that the bindings go into the
67 (oop goops) module and are not visible from the outside.
68
69 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
70
71 * eval.c: Non functional change: Separated R5RS and non-R5RS
72 macros into different sections of the file and ordered the
73 memoizers alphabetically.
74
75 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
76
77 * eval.c (scm_ilookup): Rewritten to improve readability.
78
79 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
80
81 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
82 Partially reverted patch from 2003-04-23 in oder to find a better
83 compromise between readability and debuggability.
84
85 2003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
86
87 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
88 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
89 definitions of the special goops memoizers from goops.[ch] to
90 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
91 throughout guile.
92
93 2003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
94
95 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
96
97 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
98
99 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
100
101 * ioext.c (scm_fdes_to_ports): Ditto.
102
103 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
104 lock/unlock scm_i_port_table_mutex.
105
106 * strports.c (scm_mkstrport): Ditto.
107
108 * ports.c (scm_void_port, scm_port_for_each): Ditto.
109
110 * fports.c (scm_fdes_to_port): Ditto.
111
112 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
113
114 This set of patches contains no functional changes, only debatable
115 minor stylistic ones. Still, in order to prepare a patch between
116 my local copy and the CVS version, I decided to submit the changes
117 below. Then, the patch will hopefully only contain relevant
118 modifications :-)
119
120 * eval.c (iqq): Added const specifier.
121
122 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
123 Use NULL instead of 0 to indicate that a pointer is returned.
124 Removed some misleading 'fall through' comments.
125
126 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
127 Split up long expressions into smaller ones to be more debugging
128 friendly.
129
130 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
131
132 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
133 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
134 rather than casting to SCM.
135
136 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
137
138 * sort.c, pairs.h: Removed unnecessary includes.
139
140 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
141
142 * sort.c: Replaced hand-made trampline code by the new official
143 mechanism from eval.c. This fixes a segfault in the new test file
144 sort.test.
145
146 (quicksort, compare_function, scm_restricted_vector_sort_x,
147 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
148 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
149 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
150 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
151 eval.c.
152
153 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
154 cmp_fun_t): Removed.
155
156 (compare_function): Added.
157
158 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
159 arithmetics with index arithmetics. Changed quicksort to work on
160 an array of SCM values instead of an array of characters. Avoid
161 bytewise copying of SCM elements. Avoid allocating memory on the
162 stack with alloca. Fixed some comments.
163
164 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
165
166 * eval.c (EXTEND_ENV): Eliminated.
167
168 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
169 EXTEND_ENV.
170
171 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
172
173 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
174
175 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
176 compiling with SCM_DEBUG==1 by moving definition behind prototype.
177
178 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
179 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
180 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
181 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
182 functions such that they check if the object is a non-immediate.
183 Further, renamed identifiers to use the scm_dbg_ prefix and made
184 their inclusion into the lib dependent of the
185 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
186
187 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
188
189 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
190 debug option.
191
192 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
193
194 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
195 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
196 any calls to SCM_NCONSP any more.
197
198 * unif.c (l2ra): Eliminate redundant check.
199
200 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
201
202 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
203 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
204 SCM_NNULLP. Now, guile itself does not include any calls to
205 SCM_NNULLP any more.
206
207 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
208
209 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
210 scm_copy_tree): Place assignment expressions which are part of
211 other expressions into an expression of their own.
212
213 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
214
215 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
216 compare SCM values with !=.
217
218 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
219
220 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
221 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
222 and definition of the memoizer for the generalized set! macro from
223 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
224 define the macro object.
225
226 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
227 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
228 eval.c, it is made static and renamed to s_set_x.
229
230 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
231 over SCM_N<foo>.
232
233 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
234
235 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
236 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
237 to undefineds and registered the object as a permanent object.
238
239 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
240 static in eval.c, renamed it to f_apply and registered the object
241 as a permanent object.
242
243 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
244
245 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
246 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
247
248 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
249
250 * numbers.c (scm_logtest): Fixed argument bug in the call to
251 mpz_and, which showed up when compiling with SCM_DEBUG defined.
252
253 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
254
255 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
256 type errors that showed up when compiling with SCM_DEBUG defined.
257
258 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
259
260 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
261 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
262 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
263 fix compile errors with --disable-deprecated.
264
265 2003-04-17 Rob Browning <rlb@defaultvalue.org>
266
267 * numbers.c (scm_integer_expt): fix case where we were declaring
268 vars in the middle of a statement block. Thanks to Thamer
269 Al-Harbash.
270
271 2003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
272
273 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
274 change.
275
276 * eq.c (scm_eqv_p): Turned into a primitive generic.
277
278 2003-04-16 Rob Browning <rlb@defaultvalue.org>
279
280 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
281 Thanks to Boyd Gerber.
282 Added check for __arm__ in addition to arm for LINUX and copied
283 __s390__ defines from upstream libgc. Thanks to James Treacy for
284 reporting the problems.
285
286 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
287
288 * socket.c: use SCM_CHAR_BIT.
289
290 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
291
292 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
293
294 2003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
295
296 * feature.c (scm_init_feature): Always add threads feature.
297
298 2003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
299
300 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
301 scm_at_assert_bound_ref. (We don't want the unbound check. See
302 oop/goops/active-slot.scm.)
303
304 2003-04-14 Rob Browning <rlb@defaultvalue.org>
305
306 * tags.h: scm_t_intptr should have been intptr_t.
307
308 2003-04-13 Rob Browning <rlb@defaultvalue.org>
309
310 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
311 test. Instead use
312 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
313 as gc_os_dep.c suggests is appropriate.
314
315 * goops.c (prep_hashsets): make static to match prototype.
316 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
317 Chin.
318
319 * c-tokenize.lex: remove trailing comma from enum. Thanks to
320 Albert Chin.
321
322 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
323 Klausner.
324
325 2003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
326
327 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
328 indicated through extra fields in getters-n-setters.
329 (scm_add_slot): Adapted to new format of getters_n_setters slot.
330 (Thanks to Andy Wingo.)
331
332 2003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
333
334 * gc-segment.c: add comment
335
336 2003-04-07 Rob Browning <rlb@defaultvalue.org>
337
338 * debug.h: change "id" arg name to "info_id" to avoid objective-c
339 clash.
340
341 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
342 and add regression test to standalone/.
343
344 2003-04-06 Rob Browning <rlb@defaultvalue.org>
345
346 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
347 Thanks to Dale P. Smith.
348
349 * random.c: #include gmp.h.
350 (scm_c_random_bignum): normalize result on return.
351
352 * init.c: #include gmp.h.
353
354 * numbers.h: remove the gmp.h #include (not needed now).
355
356 * posix.h: change occurences of "id" to something else so we don't
357 cause trouble when included via objective-c (can't hurt, might
358 help). Still have usage in debug.h, though.
359
360 2003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
361
362 * random.c (scm_c_random_bignum): Don't generate a random number
363 equal to m (the second argument of scm_c_random_bignum); only
364 generate numbers in the range 0 <= r < m.
365 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
366 scm_var_random_state.
367
368 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
369 clause.
370
371 2003-04-05 Rob Browning <rlb@defaultvalue.org>
372
373 * modules.c (scm_module_import_interface): move declaration of
374 uses before any code.
375
376 2003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
377
378 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
379 not top_srcdir.
380
381 * hashtab.c (rehash_after_gc): Clear to_rehash list before
382 processing it in order to avoid an infinite loop.
383
384 * print.c (scm_prin1): Remember old state of pstate->writingp.
385
386 2003-04-05 Marius Vollmer <mvo@zagadka.de>
387
388 * Changed license terms to the plain LGPL thru-out.
389
390 2003-04-04 Rob Browning <rlb@defaultvalue.org>
391
392 * socket.c (FLIPCPY_NET_HOST_128): new macro.
393 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
394 rewrite to handle GMP bignums.
395
396
397 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
398
399 * ports.c (scm_getc): minor tweak.
400
401 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
402 rewrite to handle GMP bignums.
403
404 * numbers.c: rewrite *many* functions to handle GMP bignums.
405
406 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
407 handle GMP bignums.
408
409 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
410
411 * init.c (check_config): remove SCM_BIGDIG conditionals.
412 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
413
414 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
415
416 * eval.c: remove SCM_BIGDIG conditionals.
417
418 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
419
420 2003-03-31 Rob Browning <rlb@defaultvalue.org>
421
422 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
423 to Kevin Ryde.)
424
425 2003-03-27 Rob Browning <rlb@defaultvalue.org>
426
427 * threads.h: fix various preprocessor usages of new public
428 symbols to expect 0 or 1 values rather than 1 or undefined.
429 i.e. change #ifdef to #if, etc.
430
431 * threads.c: fix various preprocessor usages of new public
432 symbols to expect 0 or 1 values rather than 1 or undefined.
433 i.e. change #ifdef to #if, etc.
434
435 * tags.h: fix various preprocessor usages of new public
436 symbols to expect 0 or 1 values rather than 1 or undefined.
437 i.e. change #ifdef to #if, etc.
438
439 * stacks.c: fix various preprocessor usages of new public
440 symbols to expect 0 or 1 values rather than 1 or undefined.
441 i.e. change #ifdef to #if, etc.
442
443 * stackchk.h: fix various preprocessor usages of new public
444 symbols to expect 0 or 1 values rather than 1 or undefined.
445 i.e. change #ifdef to #if, etc.
446
447 * stackchk.c: fix various preprocessor usages of new public
448 symbols to expect 0 or 1 values rather than 1 or undefined.
449 i.e. change #ifdef to #if, etc.
450
451 * sort.c: fix various preprocessor usages of new public
452 symbols to expect 0 or 1 values rather than 1 or undefined.
453 i.e. change #ifdef to #if, etc.
454
455 * read.c: fix various preprocessor usages of new public
456 symbols to expect 0 or 1 values rather than 1 or undefined.
457 i.e. change #ifdef to #if, etc.
458
459 * random.c: fix various preprocessor usages of new public
460 symbols to expect 0 or 1 values rather than 1 or undefined.
461 i.e. change #ifdef to #if, etc.
462
463 * print.c: fix various preprocessor usages of new public
464 symbols to expect 0 or 1 values rather than 1 or undefined.
465 i.e. change #ifdef to #if, etc.
466
467 * objects.c: fix various preprocessor usages of new public
468 symbols to expect 0 or 1 values rather than 1 or undefined.
469 i.e. change #ifdef to #if, etc.
470
471 * numbers.h: fix various preprocessor usages of new public
472 symbols to expect 0 or 1 values rather than 1 or undefined.
473 i.e. change #ifdef to #if, etc.
474
475 * null-threads.c: fix various preprocessor usages of new public
476 symbols to expect 0 or 1 values rather than 1 or undefined.
477 i.e. change #ifdef to #if, etc.
478
479 * lang.c: fix various preprocessor usages of new public
480 symbols to expect 0 or 1 values rather than 1 or undefined.
481 i.e. change #ifdef to #if, etc.
482
483 * lang.h: fix various preprocessor usages of new public
484 symbols to expect 0 or 1 values rather than 1 or undefined.
485 i.e. change #ifdef to #if, etc.
486
487 * iselect.h: fix various preprocessor usages of new public
488 symbols to expect 0 or 1 values rather than 1 or undefined.
489 i.e. change #ifdef to #if, etc.
490
491 * init.c: fix various preprocessor usages of new public
492 symbols to expect 0 or 1 values rather than 1 or undefined.
493 i.e. change #ifdef to #if, etc.
494
495 * gh_data.c: fix various preprocessor usages of new public
496 symbols to expect 0 or 1 values rather than 1 or undefined.
497 i.e. change #ifdef to #if, etc.
498
499 * gh.h: fix various preprocessor usages of new public
500 symbols to expect 0 or 1 values rather than 1 or undefined.
501 i.e. change #ifdef to #if, etc.
502
503 * gen-scmconfig.c: change most new public symbols to be defined to
504 0 or 1 rather than being either 1 or undefined.
505
506 * gc_os_dep.c: fix various preprocessor usages of new public
507 symbols to expect 0 or 1 values rather than 1 or undefined.
508 i.e. change #ifdef to #if, etc.
509 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
510
511 * gc.h: fix various preprocessor usages of new public
512 symbols to expect 0 or 1 values rather than 1 or undefined.
513 i.e. change #ifdef to #if, etc.
514
515 * gc-card.c: fix various preprocessor usages of new public
516 symbols to expect 0 or 1 values rather than 1 or undefined.
517 i.e. change #ifdef to #if, etc.
518
519 * gc-mark.c: fix various preprocessor usages of new public
520 symbols to expect 0 or 1 values rather than 1 or undefined.
521 i.e. change #ifdef to #if, etc.
522
523 * feature.c: fix various preprocessor usages of new public
524 symbols to expect 0 or 1 values rather than 1 or undefined.
525 i.e. change #ifdef to #if, etc.
526
527 * evalext.c: fix various preprocessor usages of new public
528 symbols to expect 0 or 1 values rather than 1 or undefined.
529 i.e. change #ifdef to #if, etc.
530
531 * eval.h: fix various preprocessor usages of new public
532 symbols to expect 0 or 1 values rather than 1 or undefined.
533 i.e. change #ifdef to #if, etc.
534
535 * eval.c: fix various preprocessor usages of new public
536 symbols to expect 0 or 1 values rather than 1 or undefined.
537 i.e. change #ifdef to #if, etc.
538
539 * eq.c: fix various preprocessor usages of new public
540 symbols to expect 0 or 1 values rather than 1 or undefined.
541 i.e. change #ifdef to #if, etc.
542
543 * coop.c: fix various preprocessor usages of new public
544 symbols to expect 0 or 1 values rather than 1 or undefined.
545 i.e. change #ifdef to #if, etc.
546
547 * coop-threads.c: fix various preprocessor usages of new public
548 symbols to expect 0 or 1 values rather than 1 or undefined.
549 i.e. change #ifdef to #if, etc.
550
551 * coop-pthreads.c: fix various preprocessor usages of new public
552 symbols to expect 0 or 1 values rather than 1 or undefined.
553 i.e. change #ifdef to #if, etc.
554
555 * coop-defs.h: fix various preprocessor usages of new public
556 symbols to expect 0 or 1 values rather than 1 or undefined.
557 i.e. change #ifdef to #if, etc.
558
559 * convert.i.c: fix various preprocessor usages of new public
560 symbols to expect 0 or 1 values rather than 1 or undefined.
561 i.e. change #ifdef to #if, etc.
562
563 * continuations.c: fix various preprocessor usages of new public
564 symbols to expect 0 or 1 values rather than 1 or undefined.
565 i.e. change #ifdef to #if, etc.
566
567 * _scm.h: fix various preprocessor usages of new public symbols to
568 expect 0 or 1 values rather than 1 or undefined. i.e. change
569 #ifdef to #if, etc.
570
571 2003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
572
573 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
574
575 * deprecated.c, deprecated.h: New files, to collect deprecated
576 things in one place.
577 * Makefile.am: Added them in all the right places.
578
579 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
580 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
581 builds work.
582 (DOT_X_FILES): Removed "iselect.x".
583 (DOT_DOC_FILES): Removed "iselect.doc".
584
585 2003-03-25 Rob Browning <rlb@defaultvalue.org>
586
587 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
588 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
589
590 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
591
592 * vports.c: #include <config.h> if HAVE_CONFIG_H.
593
594 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
595 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
596
597 * threads.h: replace usage of struct timespect with
598 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
599 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
600 favor of scm_t_timespec from scmconfig.h.
601
602 * threads.c: move libguile/_scm.h include to the top so we pick up
603 any critical defines like _GNU_SOURCE early. Replace usage of
604 struct timespect with scm_t_timespec. Replace usage of
605 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
606 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
607
608 * threads-plugin.h: replace usage of struct timespect with
609 scm_t_timespec.
610
611 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
612 usage of struct timespect with scm_t_timespec.
613
614 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
615 HAVE_INTTYPES_H handling to scmconfig.h. #include
616 "libguile/__scm.h". Rework handling for scm_t_bits,
617 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
618 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
619 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
620 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
621 SCM_HAVE_ARRAYS.
622
623 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
624
625 * struct.c: #include <config.h> if HAVE_CONFIG_H.
626
627 * strports.c: #include <config.h> if HAVE_CONFIG_H.
628
629 * strop.c: #include <config.h> if HAVE_CONFIG_H.
630
631 * stime.h: move handling of time related headers to scmconfig.h.
632
633 * stime.c: #include <config.h> if HAVE_CONFIG_H.
634
635 * stacks.c: replace usage of STACK_GROWS_UP with
636 SCM_STACK_GROWS_UP.
637
638 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
639 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
640
641 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
642 of uint32 and HAVE_UINT_32 with scm_t_int32.
643
644 * smob.c: #include <config.h> if HAVE_CONFIG_H.
645
646 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
647
648 * script.c: #include <config.h> if HAVE_CONFIG_H.
649
650 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
651
652 * scmconfig.h.top: new file -- preamble for scmconfig.h.
653
654 * rw.c: #include <config.h> if HAVE_CONFIG_H.
655
656 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
657
658 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
659
660 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
661
662 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
663 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
664 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
665 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
666
667 * ramap.c: replace usage of HAVE_LONG_LONGS with
668 "SCM_SIZEOF_LONG_LONG != 0".
669
670 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
671 "libguile/scmconfig.h".
672
673 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
674
675 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
676 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
677
678 * posix.c: #include <config.h> if HAVE_CONFIG_H.
679
680 * ports.c: #include <config.h> if HAVE_CONFIG_H.
681
682 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
683
684 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
685 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
686 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
687 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
688 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
689 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
690 "SCM_SIZEOF_LONG_LONG != 0".
691
692 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
693 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
694 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
695 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
696
697 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
698
699 * null-threads.h: replace usage of struct timespect with
700 scm_t_timespec.
701
702 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
703
704 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
705 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
706 scm_t_uint64 and rename usages.
707
708 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
709
710 * load.c: #include <config.h> if HAVE_CONFIG_H.
711
712 * iselect.h: move handling of time related headers to scmconfig.h.
713 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
714 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
715 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
716
717 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
718 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
719 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
720
721 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
722
723 * inline.h: #include "libguile/__scm.h" at the top. Change code
724 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
725 what to do instead of creating a new public #define. Rename usage
726 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
727 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
728 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
729
730 * inline.c: rearrange handling -- now we just #define
731 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
732 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
733 appropriate, and we use that in inline.h along with the above
734 define to determine how to respond.
735
736 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
737 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
738
739 * guile.c: #include <config.h> if HAVE_CONFIG_H.
740
741 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
742 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
743
744 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
745
746 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
747
748 * gen-scmconfig.c: new file -- see comments in file for details.
749
750 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
751
752 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
753 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
754
755 * gc.h: replace usage of SIZEOF_LONG with
756 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
757 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
758 since we handle that in scmconfig.h now.
759
760 * gc.c: #include <config.h> if HAVE_CONFIG_H.
761
762 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
763 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
764 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
765
766 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
767
768 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
769 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
770
771 * fports.c: #include <config.h> if HAVE_CONFIG_H.
772
773 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
774
775 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
776 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
777
778 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
779
780 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
781 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
782
783 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
784 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
785 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
786 with "SCM_SIZEOF_LONG_LONG != 0".
787
788 * error.c: #include <config.h> if HAVE_CONFIG_H.
789
790 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
791 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
792 with "SCM_SIZEOF_LONG_LONG != 0".
793
794 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
795
796 * coop.c: replace usage of struct timespect with scm_t_timespec.
797 #include <config.h> if HAVE_CONFIG_H.
798
799 * coop-threads.c: #include "libguile/_scm.h" early. Replace
800 usage of struct timespect with scm_t_timespec. Replace usage of
801 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
802
803 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
804 usage of struct timespect with scm_t_timespec. Replace usage of
805 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
806
807 * coop-defs.h: move handling of time related headers to
808 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
809 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
810 timespect with scm_t_timespec.
811
812 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
813
814 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
815
816 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
817 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
818
819 * continuations.c: move libguile/_scm.h include to the top so we
820 pick up any critical defines like _GNU_SOURCE early.
821
822 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
823
824 * async.c: #include <config.h> if HAVE_CONFIG_H.
825
826 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
827
828 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
829 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
830
831 * __scm.h: move libguile/scmconfig.h include up to the top, so
832 we're sure to pick up any critical defines like _GNU_SOURCE early.
833 #include <limits.h> removed in favor of scmconfig.h inclusion when
834 appropriate. STDC_HEADERS based inclusion of stdlib.h,
835 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
836 scmconfig.h inclusion when appropriate. Various Win32 related
837 definitions removed in favor of scmconfig.h inclusion when
838 appropriate.
839 (HAVE_UINTPTR_T): definition removed (see NEWS).
840 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
841 (HAVE_LONG_LONGS): definition removed (see NEWS).
842 (HAVE_LONG_LONG): definition removed (see NEWS).
843 (HAVE_PTRDIFF_T): definition removed (see NEWS).
844
845 * Makefile.am: scmconfig.h is now generated by building and
846 running gen-scmconfig.h and capturing its output. gen-scmconfig
847 uses config.h and the configure.in generated gen-scmconfig.h to
848 decide what to output. See gen-scmconfig.c for details.
849 (noinst_PROGRAMS): add gen-scmconfig.
850 (gen_scmconfig_SOURCES): new variable.
851 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
852 cross-compiling right.
853 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
854 (BUILT_SOURCES): add scmconfig.h.
855
856 2003-03-19 Marius Vollmer <mvo@zagadka.de>
857
858 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
859 Adrian Bunk. Thanks!
860
861 2003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
862
863 * goops.c (make_class_from_template): New fourth arg:
864 applicablep.
865 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
866 cpls.
867
868 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
869
870 * goops.c, objects.c, objects.h (scm_make_extended_class): New
871 second arg: applicablep.
872 (scm_i_inherit_applicable): New function.
873
874 * goops.c, goops.h (scm_class_applicable,
875 scm_class_extended_accessor): New classes.
876
877 2003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
878
879 * procs.c (scm_procedure_documentation): Removed redundant
880 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
881 predicates.
882
883 2003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
884
885 * list.c, list.h (scm_filter, scm_filter_x): New functions.
886
887 * modules.c (scm_module_import_interface): New function.
888
889 * goops.c, goops.h (scm_class_accessor_method): Renamed from
890 scm_class_accessor.
891 (scm_class_accessor): New class.
892
893 2003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
894
895 * goops.c (scm_primitive_generic_generic): Enable primitive
896 generic if not enabled.
897 (scm_sys_goops_loaded): Setup unextended primitive generics.
898
899 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
900
901 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
902 snarf macros.
903
904 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
905 testing example. All uses of SCM_GPROC should be converted.)
906
907 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
908 scm_assoc.
909
910 * eq.c (scm_equal_p): Turned into a primitive generic.
911
912 2003-02-27 Rob Browning <rlb@defaultvalue.org>
913
914 * Makefile.am (scmconfig.h): new target -- generate file from
915 ../config.h.
916 (modinclude_HEADERS): remove version.h.
917 (nodist_modinclude_HEADERS): add version.h.
918
919 2003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
920
921 This fixes a serious GC bug, introduced during the latest
922 reorganization of the GC, which disabled freeing of structs and
923 GOOPS objects:
924
925 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
926 SCM_EOL.
927 (scm_struct_prehistory): Move scm_free_structs to
928 scm_before_mark_c_hook.
929
930 * gc-card.c (sweep_card): Check that we haven't swept structs on
931 this card before. That can happen if scm_i_sweep_all_segments has
932 been called from some other place than scm_igc.
933
934 2003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
935
936 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
937 (since hash tables now adapt their size).
938
939 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
940 (current number of prehistory bindings; hashtable code will select
941 a prime which is greater than this value).
942
943 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
944 (current number of initial symbols).
945
946 * properties.c (scm_init_properties): Don't specify size of
947 scm_properties_whash.
948
949 * objprop.c (scm_init_objprop): Don't specify size of
950 scm_object_whash.
951
952 * keywords.c (scm_init_keywords): Don't specify a hash table size.
953
954 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
955
956 The following changes introduce the use of resizable hash tables
957 throughout Guile. It also renames the old *-hash-table* functions
958 to *-alist-vector* and places them, together with the rest of the
959 weak vector support, in the module (ice-9 weak-vector). We should
960 probably introduce a new, better, API for weak references, for
961 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
962 look like and are used like ordinary pairs.)
963
964 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
965 leaf_environment_fold, obarray_remove_all): Use hashtable
966 accessors.
967
968 * gc.c (scm_init_storage): Moved hook initialization to
969 scm_storage_prehistory.
970 (scm_storage_prehistory): New function.
971 (scm_igc): Added commentary about placement of
972 scm_after_sweep_c_hook.
973
974 * gc-mark.c (scm_mark_all): Use hashtable accessors.
975 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
976 SCM_WVECT_WEAK_VALUE_P.
977
978 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
979 functions.
980 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
981 Removed.
982 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
983 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
984
985 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
986 calls to scm_storage_prehistory and scm_hashtab_prehistory.
987
988 * modules.c (module-reverse-lookup): Use hashtable accessors.
989
990 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
991
992 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
993 scm_make_weak_value_alist_vector,
994 scm_make_doubly_weak_alist_vector): New functions.
995
996 * weaks.c (scm_init_weaks_builtins): New function.
997
998 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
999 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
1000 SCM_WVECT_NOSCAN_P): New macros.
1001
1002 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
1003 and SCM_WVECT_WEAK_VALUE_P.
1004
1005 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
1006 allocate_weak_vector and exported.
1007
1008 2003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1009
1010 * hashtab.c: Undid thread safety. (We decided that it's better to
1011 let the user explicitly protect the tables (or not) according what
1012 is suitable for the application.)
1013
1014 2003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1015
1016 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
1017 thread safe and handle resizing tables.
1018 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
1019 SCM_DEFER/ALLOW_INTS.
1020
1021 2003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1022
1023 * hashtab.c (scm_vector_to_hash_table,
1024 scm_c_make_resizing_hash_table, scm_make_hash_table): New
1025 functions.
1026 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
1027 safe and handle resizing tables.
1028
1029 * weaks.c (scm_make_weak_key_hash_table,
1030 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
1031 Size argument made optional. Return resizable table if not
1032 specified.
1033
1034 2003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1035
1036 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
1037 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
1038
1039 2003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1040
1041 * debug.c (scm_procedure_source): Handle all objects for which
1042 procedure? is #t. (Thanks to Bill Schottstaedt.)
1043
1044 2003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1045
1046 * futures.c (mark_futures): Don't need to mark data of recycled
1047 futures.
1048 (scan_futures, cleanup_undead): Be smarter about marking
1049 futures---avoid unnecessary passes through future lists.
1050
1051 * futures.h, futures.c: New files; Introduced recycling of
1052 futures. For fine-grained threading this lifts performance to
1053 another level. We can now use parallelization in inner loops of
1054 Guile programs without impossible overhead.
1055
1056 * threads.h, threads.c: Moved futures to their own file.
1057
1058 * Makefile.am (libguile_la_SOURCES): Added futures.c.
1059 (DOT_X_FILES): Added futures.x.
1060 (DOT_DOC_FILES): Added futures.doc.
1061 (modinclude_HEADERS): Added futures.h.
1062
1063 * threads.c, threads.h (scm_i_create_thread): Renamed from
1064 create_thread and made global.
1065
1066 * futures.c (scm_make_future): New procedure.
1067
1068 * eval.c: #include "libguile/futures.h".
1069
1070 * init.c: #include "futures.h"
1071 (scm_init_guile_1): Call scm_init_futures.
1072
1073 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
1074
1075 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
1076
1077 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
1078 functions.
1079
1080 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
1081
1082 2003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1083
1084 * threads.c (create_thread): Don't unwind dynwind chain of parent
1085 thread before creation. Just start the new thread with an empty
1086 dynwind chain.
1087
1088 2003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1089
1090 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
1091
1092 2003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1093
1094 * threads.c (scm_timed_wait_condition_variable): Support timed
1095 waiting also for simple condition variables.
1096
1097 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
1098 of calling the procedure change-object-class.
1099
1100 2003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1101
1102 * ramap.c (scm_ramapc): Typo in error message.
1103
1104 2003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1105
1106 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
1107 slots with instance allocation.
1108
1109 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
1110 class.
1111 (scm_compute_applicable_methods): Use scm_generic_function_methods.
1112
1113 * goops.c (scm_generic_function_methods): Support extended
1114 generic functions.
1115
1116 2002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1117
1118 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
1119 Thanks to Neil for pointing this out!
1120
1121 2002-12-29 Neil Jerram <neil@ossau.uklinux.net>
1122
1123 * lang.h: Remove declarations matching definitions removed from
1124 lang.c (just below).
1125
1126 2002-12-28 Neil Jerram <neil@ossau.uklinux.net>
1127
1128 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
1129 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
1130 and already commented out.
1131
1132 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
1133 scm_lreadparen): Support reading vectors with Elisp syntax if
1134 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
1135 is not currently defined, and there isn't even a configure switch
1136 to enable it yet.)
1137
1138 2002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
1139
1140 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
1141 builds work.
1142 (EXTRA_DIST): Added version.h.in.
1143
1144 2002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1145
1146 This change makes it possible for one thread to do lazy sweeping
1147 while other threads are running. Now only the mark phase need to
1148 have all threads asleep. We should look further into this issue.
1149 Presently, I've put the locking of scm_i_sweep_mutex at
1150 "conservative" places due to my current lack of knowledge about
1151 the garbage collector. Please feel free to restrict these regions
1152 further to allow for maximal parallelism!
1153
1154 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
1155
1156 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
1157 scm_gc_register_collectable_memory): Substitute locking of
1158 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
1159 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
1160 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
1161 the single-thread section (which now only contains the mark
1162 phase).
1163 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
1164 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
1165
1166 * threads.c (gc_section_mutex): Removed.
1167
1168 2002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1169
1170 * threads.c (create_thread): Clear parent field in root state in
1171 order not to unnecessarily remember dead threads.
1172
1173 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
1174 (scm_trampoline_1, scm_trampoline_2): Use them.
1175
1176 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1177
1178 Partial introduction of real plugin interface.
1179
1180 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
1181 (EXTRA_DIST): Added threads-plugin.c.
1182
1183 * threads-plugin.h, threads-plugin.c: New files.
1184
1185 * threads.h: #include "libguile/threads-plugin.h".
1186
1187 * threads.c: #include "libguile/threads-plugin.c".
1188
1189 * pthread-threads.c: Temporarily remove debugging functions.
1190
1191 * threads.c, threads.h (scm_yield): Added back.
1192
1193 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1194
1195 * threads.c (really_launch): Detach before unlocking
1196 thread_admin_mutex in order not to risk being joined.
1197 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
1198 thread_admin_mutex locked during GC.
1199
1200 * pthread-threads.c, pthread-threads.h: Improvements to debugging
1201 functions.
1202
1203 2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1204
1205 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
1206 support for debugging mutex operations.
1207
1208 * threads.c (scm_thread): Removed filed joining_threads.
1209 (thread_print): Print thread number as well as address of thread
1210 structure.
1211 (scm_join_thread): Bugfix.
1212 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
1213 scm_timed_wait_condition_variable, scm_signal_condition_variable,
1214 scm_broadcast_condition_variable): Use the low-level API.
1215 (scm_all_threads): Return copy of thread list (to prevent
1216 unintended destruction).
1217 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1218
1219 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
1220 pthread "native" recursive mutex support.
1221
1222 2002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1223
1224 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
1225 Simply lock a thread C API recursive mutex.
1226 (SCM_NONREC_CRITICAL_SECTION_START,
1227 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
1228 SCM_REC_CRITICAL_SECTION_END): Removed.
1229
1230 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
1231 direct calls to scm_rec_mutex_lock / unlock around the three calls
1232 to scm_m_expand_body.
1233
1234 * eval.c, eval.h (promise_free): New function.
1235 (scm_force): Rewritten; Now thread-safe; Removed
1236 SCM_DEFER/ALLOW_INTS.
1237
1238 * pthread-threads.h: Added partially implemented plugin interface
1239 for recursive mutexes. These are, for now, only intended to be
1240 used internally within the Guile implementation.
1241
1242 * pthread-threads.c: New file.
1243
1244 * threads.c: Conditionally #include "pthread-threads.c".
1245
1246 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
1247 thread-safe;
1248
1249 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
1250 SCM_GLOBAL_REC_MUTEX): New macros.
1251
1252 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
1253 macros---use mutexes instead.
1254
1255 * tags.h (SCM_IM_FUTURE): New tag.
1256
1257 * eval.c (scm_m_future): New primitive macro.
1258 (SCM_CEVAL): Support futures.
1259 (unmemocopy): Support unmemoization of futures.
1260
1261 * print.c (scm_isymnames): Name of future isym.
1262
1263 * version.c: Unmade some changes to my private copy that got
1264 committed by mistake.
1265
1266 2002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1267
1268 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
1269 2002-12-10.
1270
1271 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
1272
1273 * gc.c (scm_gc_sweep): Call it here instead, which is a more
1274 logical place.
1275
1276 * threads.c (create_thread): Remember root object until the handle
1277 of the new thread is on all_threads list.
1278
1279 * root.c (scm_make_root): Moved copying of fluids until after
1280 creation of root handle so that the fluids are GC protected. Also
1281 removed the critical section.
1282
1283 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1284
1285 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
1286
1287 * gc-malloc.c (malloc_mutex): New mutex.
1288 (scm_gc_malloc_prehistory): Initialize it.
1289 (scm_realloc): Serialize call to realloc
1290 (scm_calloc): Same for calloc.
1291 Thanks to Wolfgang Jaehrling!
1292 (Now we have to make sure all calls to malloc/realloc are made
1293 through scm_malloc.)
1294
1295 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
1296
1297 * threads.c (really_launch): Release heap (to prevent deadlock).
1298 (create_thread): Release heap before locking thread admin mutex.
1299
1300 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1301
1302 * threads.c (scm_i_thread_invalidate_freelists): New
1303 function.
1304
1305 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
1306
1307 * modules.c (scm_export): Inserted a return statement.
1308
1309 2002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1310
1311 * modules.c (scm_export): new function
1312
1313 * gc-card.c: add a note about malloc()/free() overhead.
1314
1315 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1316
1317 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
1318 in srcdir.
1319
1320 2002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1321
1322 These changes remove scm_ints_disabled (which hasn't has any
1323 effect in Guile for quite some time).
1324
1325 * async.c, error.h (scm_ints_disabled): Removed.
1326
1327 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
1328 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
1329 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
1330 (old_ints): Removed.
1331
1332 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
1333 critical section.
1334 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
1335 SCM_ALLOW_INTS.
1336
1337 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1338
1339 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
1340 Removed accidental #if 0 around these functions.
1341
1342 These changes are the start of support for preemptive
1343 multithreading. Marius and I have agreed that I commit this code
1344 into the repository although it isn't thoroughly tested and surely
1345 introduces many bugs. The bugs should only be exposed when using
1346 threads, though. Signalling and error handling for threads is
1347 very likely broken. Work on making the implementation cleaner and
1348 more efficient is needed.
1349
1350 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
1351 (SCM_NONREC_CRITICAL_SECTION_START,
1352 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
1353 SCM_REC_CRITICAL_SECTION_END): New macros.
1354 (SCM_CRITICAL_SECTION_START/END): Defined here.
1355
1356 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
1357 the three calls to scm_m_expand_body.
1358
1359 * gc.h: #include "libguile/pthread-threads.h";
1360 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
1361
1362 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
1363 scm_t_key;
1364
1365 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
1366 access.
1367
1368 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
1369
1370 * gc-freelist.c, threads.c (really_launch): Use
1371 SCM_FREELIST_CREATE.
1372
1373 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
1374
1375 * gc.c (scm_i_expensive_validation_check, scm_gc,
1376 scm_gc_for_newcell): Put threads to sleep before doing GC-related
1377 heap administration so that those pieces of code are executed
1378 single-threaded. We might consider rewriting these code sections
1379 in terms of a "call_gc_code_singly_threaded" construct instead of
1380 calling the pair of scm_i_thread_put_to_sleep () and
1381 scm_i_thread_wake_up (). Also, we would want to have as many of
1382 these sections eleminated.
1383
1384 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
1385
1386 * inline.h: #include "libguile/threads.h"
1387
1388 * pthread-threads.h: Macros now conform more closely to the
1389 pthreads interface. Some of them now take a second argument.
1390
1391 * threads.c, threads.h: Many changes.
1392
1393 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1394
1395 * Makefile.am (version.h): Changed $^ --> $< in rule for
1396 version.h.
1397
1398 2002-12-08 Rob Browning <rlb@defaultvalue.org>
1399
1400 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
1401 (SCM_MINOR_VERSION): use @--@ substitution now.
1402 (SCM_MICRO_VERSION): use @--@ substitution now.
1403 (scm_effective_version): new function prototype.
1404
1405 * version.c (scm_effective_version): new function, also add
1406 effective-version.
1407
1408 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
1409 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
1410 SCM_LIBRARY_DIR.
1411 (version.h): generate this here rather than configure.in. This
1412 approach tracks source edits better (i.e. more immediately).
1413 Might be worth considering for other .in files too.
1414
1415 2002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
1416
1417 Reorganized thread package selection. A thread package now only
1418 implements a small set of pthread like functions and Guile
1419 implements the rest on top of that. Guile's implementation is
1420 what the "coop-pthreads" package has been previously. Support for
1421 "coop" threads has been removed until I get time to add it again.
1422
1423 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
1424 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
1425 null-threads.c, coop-pthreads.c.
1426 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
1427 pthread-threads.h.
1428
1429 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
1430
1431 * threads.h: Do not include "libguile/coop-defs.h". Include
1432 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
1433 (previously deprecated) C level thread API prototypes. They are
1434 now in the thread package specific headers, "null-threads.h" and
1435 "pthread-threads.h".
1436 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
1437 New.
1438 (scm_threads_init): Removed.
1439 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
1440 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
1441 SCM_I_THREAD_SWITCH_COUNT): Define here.
1442 (scm_single_thread_p): Removed.
1443 (scm_call_with_new_thread): Take two args directly instead of list
1444 of two args.
1445 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
1446 SCM_SET_THREAD_LOCAL_DATA): Define here.
1447
1448 * threads.c: Merged with "coop-pthreads.c".
1449
1450 * null-threads.h: Implement pthread-like API as a set of macros.
1451
1452 * pthread-threads.h: New, implement pthread-like API by deferring
1453 to pthread itself.
1454
1455 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
1456 has been lost in the reorganization.
1457
1458 2002-12-01 Mikael Djurfeldt <mdj@linnaeus>
1459
1460 The following change makes it possible to move procedure
1461 application dispatch outside inner loops. The motivation was
1462 clean implementation of efficient replacements of R5RS primitives
1463 in SRFI-1.
1464
1465 The semantics is clear: scm_trampoline_N returns an optimized
1466 version of scm_call_N (or NULL if the procedure isn't applicable
1467 on N args).
1468
1469 Applying the optimization to map and for-each increases efficiency
1470 noticeably. For example, (map abs ls) is 8 times faster than
1471 before.
1472
1473 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
1474
1475 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
1476
1477 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
1478 (map, for-each): Handle also application on two args as a special
1479 case; Use trampolines.
1480
1481 Other changes:
1482
1483 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
1484 (subr2oless): Removed.
1485 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
1486 vector GC protected.
1487
1488 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
1489 scm_out_of_range.
1490
1491 2002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
1492
1493 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
1494
1495 2002-11-17 Mikael Djurfeldt <mdj@linnaeus>
1496
1497 * debug.c (scm_make_iloc): Added missing "return".
1498
1499 2002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
1500
1501 * strports.c (scm_eval_string_in_module): Validate second arg to
1502 be a module. Thanks to Arno Peters!
1503
1504 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
1505
1506 * .cvsignore: remove goops.c
1507
1508 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
1509
1510 * modules.c (scm_env_top_level, scm_lookup_closure_module,
1511 module_variable, scm_module_lookup_closure,
1512 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
1513 scm_system_module_env_p): Don't compare SCM values with C
1514 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
1515 over SCM_NFALSEP.
1516
1517 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
1518
1519 * eval.h (SCM_MAKE_ILOC): New macro.
1520
1521 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
1522 the iloc bitpattern here.
1523
1524 2002-11-14 Mikael Djurfeldt <mdj@linnaeus>
1525
1526 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
1527 part of the API, otherwise it's difficult to write Guile
1528 extensions using non-blocking I/O => moved #include
1529 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
1530
1531 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
1532 s_unlock_mutex.
1533
1534 2002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
1535
1536 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
1537 are defined in configure.in.
1538
1539 * threads.c: Removed SCM_API from function definitions. SCM_API
1540 is only for declarations.
1541
1542 2002-11-07 Mikael Djurfeldt <mdj@linnaeus>
1543
1544 * coop-pthreads.h: Added support for thread specific data to the
1545 generic C API for the coop-pthreads case.
1546
1547 * threads.c, threads.h (scm_cond_init): Undo unintentional API
1548 change.
1549 (scm_cond_broadcast): Added missing function.
1550
1551 2002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1552
1553 * coop.c (coop_next_runnable_thread): Removed, wich should have
1554 happened when GUILE_ISELECT was hard-wired.
1555
1556 2002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
1557
1558 * Makefile.am (libguile_la_SOURCES): Added threads.c
1559 (DOT_DOC_FILES): Added threads.doc.
1560 (DOT_X_FILES): Added threads.x.
1561 (EXTRA_libguile_la_SOURCES): Removed threads.c.
1562 (noinst_HEADERS): Added coop-pthreads.c.
1563 (modinclude_HEADERS): Added coop-pthreads.h.
1564
1565 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
1566 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
1567
1568 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
1569 Thanks to Bill Schottstaedt!
1570
1571 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
1572
1573 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
1574 SCM_COPT_THREADS is defined.
1575 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
1576 is defined.
1577
1578 * coop-pthreads.c: Some harmless renamings of internal stuff.
1579 (create_thread): New, generalized version of
1580 scm_call_with_new_thread.
1581 (scm_call_with_new_thread): Use it.
1582 (scm_spawn_thread): New, use create_thread.
1583
1584 2002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
1585
1586 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
1587 start testing it now.
1588
1589 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
1590 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
1591 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
1592 is defined.
1593
1594 2002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
1595
1596 * scmsigs.c (signal_cell_handlers, install_handler_data,
1597 scm_delq_spine_x, really_install_handler, install_handler): New
1598 scheme for triggering signal handlers, to simplify take_signal.
1599 (take_signal): Simplified, to avoid race conditions.
1600 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
1601 hasn't exited yet.
1602
1603 * async.c (scm_async_click): Reset pending_asyncs, handle
1604 signal_asyncs. Don't set cdr of a non-signal async to #f.
1605 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
1606 always. Set pending_asyncs.
1607 (scm_system_async_mark_for_thread): Check that thread has not
1608 exited.
1609 (scm_unmask_signals, decrease_block): Call scm_async_click after
1610 block_asyncs becomes zero.
1611
1612 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
1613 active_asyncs.
1614
1615 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
1616 fields.
1617 * root.c (root_mark): Mark them.
1618 (make_root): Initialize them.
1619
1620 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
1621 USE_COOP_THREADS.
1622 (scm_internal_select): Define one version for USE_COOP_THREADS and
1623 one for USE_NULL_THREADS.
1624 (scm_init_iselect): Likewise.
1625
1626 * inline.h (scm_cell, scm_double_cell): Also allow
1627 USE_COPT_THREADS to not protect the slot initializers.
1628
1629 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
1630 because threads need to be initialized before the stack, but
1631 gsubrs such as scm_timed_condition_variable_wait can only be
1632 created later.
1633
1634 * threads.h: Include "coop-pthreads.h" when requested.
1635 (scm_threads_make_mutex, scm_threads_lock_mutex,
1636 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
1637 not implemented anyway.
1638 (scm_init_thread_procs, scm_try_mutex,
1639 scm_timed_condition_variable_wait,
1640 scm_broadcast_condition_variable, scm_c_thread_exited_p,
1641 scm_thread_exited_p): New prototypes.
1642 (struct timespec): Define if not already defined.
1643 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
1644 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
1645 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
1646 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
1647 deprecated.
1648
1649 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
1650 requested.
1651 (scm_thread_exited_p): New.
1652 (scm_try_mutex, scm_broadcast_condition_variable): Newly
1653 registered procedures.
1654 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
1655 Use the latter as the procedure for "wait-condition-variable",
1656 thus offering a optional timeout parameter to Scheme.
1657 (scm_wait_condition_variable): Implement in terms of
1658 scm_timed_wait_condition_variable.
1659 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
1660 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
1661 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
1662 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
1663 scm_make_mutex, etc, and deprecate.
1664 (scm_init_threads): Do not create smobs, leave this to
1665 scm_threads_init. Do not include "threads.x" file.
1666 (scm_init_thread_procs): New, include "threads.x" here.
1667
1668 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
1669 scm_null_mutex_lock, scm_null_mutex_unlock,
1670 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
1671 scm_null_condvar_wait, scm_null_condvar_signal,
1672 scm_null_condvar_destroy): Removed.
1673 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
1674 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
1675 scm_cond_destory): Do not define, they are now deprecated and
1676 handled by threads.{h,c}.
1677
1678 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
1679 (scm_threads_init): Create smobs here, using the appropriate
1680 sizes.
1681 (block): Removed, now unused.
1682 (scm_c_thread_exited_p): New.
1683 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
1684 scm_null_mutex_destroy, scm_null_condvar_init,
1685 scm_null_condvar_wait, scm_null_condvar_signal,
1686 scm_null_condvar_destroy): Removed and updated users to do their
1687 task directly.
1688 (scm_try_mutex, timeval_subtract,
1689 scm_timed_wait_condition_variable,
1690 scm_broadcast_condition_variable): New.
1691 (scm_wait_condition_variable): Removed.
1692
1693 * coop-defs.h (coop_m): Added 'level' field.
1694 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
1695 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
1696 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
1697 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
1698 define.
1699 (coop_condition_variable_broadcast): New.
1700
1701 * coop-threads.c (scm_threads_init): Create smobs here, using the
1702 appropriate sizes.
1703 (scm_c_thread_exited_p, scm_try_mutex,
1704 scm_timed_wait_condition_variable,
1705 scm_broadcast_condition_variable): New.
1706 (scm_wait_condition_variable): Removed.
1707
1708 * coop.c (coop_new_mutex_init): Initialize level.
1709 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
1710 level.
1711 (coop_condition_variable_signal): Renamed to
1712 coop_condition_variable_broadcast and reimplemented in terms of
1713 that. Thus...
1714 (coop_condition_variable_broadcast): New.
1715
1716 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
1717
1718 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
1719
1720 2002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
1721
1722 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
1723 of system headers.
1724
1725 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
1726 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
1727 give better error messages. Thanks to Bill Schottstaedt!
1728
1729 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
1730
1731 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
1732 scm_definedp to scm_defined_p and deprecated scm_definedp.
1733
1734 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
1735
1736 * async.h, async.c (scm_system_async): Fixed deprecation to work
1737 correctly when deprecated features are excluded.
1738
1739 2002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1740
1741 * async.c (scm_system_async_mark_for_thread): Validate thread
1742 argument.
1743
1744 * coop-threads.c (scm_i_thread_root): Do not validate argument.
1745
1746 * feature.c (scm_init_feature): Don't add 'threads' for
1747 USE_NULL_THREADS.
1748
1749 * inline.h (scm_cell, scm_double_cell): Also allow
1750 USE_NULL_THREADS to not protect the slot initializers.
1751
1752 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
1753 "USE_THREAD".
1754
1755 * Makefile.am (noinst_HEADERS): Added null-threads.c.
1756 (modinclude_HEADERS): Added null-threads.h.
1757
1758 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
1759 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
1760 (scm_init_threads): Use generic type names scm_t_mutex and
1761 scm_t_cond instead of coop_m and coop_c.
1762
1763 * null-threads.c, null-threads.h: New files.
1764
1765 2002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
1766
1767 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
1768 This is to support makes that know about "$<" only in pattern
1769 rules, like Sun's make.
1770
1771 2002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
1772
1773 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
1774 substitution. Thanks to David Allouche!
1775
1776 2002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
1777
1778 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
1779 !SCM_ENABLE_DEPRECATED.
1780
1781 2002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1782
1783 * async.c (scm_system_async_mark_for_thread): Only call
1784 scm_i_thread_root when USE_THREADS is defined. Use scm_root
1785 otherwise.
1786
1787 * scmsigs.c (take_signal): Only call scm_i_thread_root when
1788 USE_THREADS is defined. Use scm_root otherwise.
1789 (scm_sigaction_for_thread): Ignore THREAD argument when
1790 USE_THREADS is not defined. Also, move THREAD argument defaulting
1791 out of HAVE_SIGACTION section, which was a bug.
1792
1793 2002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1794
1795 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
1796 signal_handlers, not the closure that is used as the async.
1797 The closure is stored in signal_handler_cells, as previously.
1798
1799 2002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
1800
1801 * root.h (scm_root_state): Added 'block_async' slot.
1802 (scm_active_asyncs): Removed abbrev.
1803 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
1804
1805 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
1806 abbrev.
1807
1808 * async.h (scm_call_with_blocked_asyncs,
1809 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
1810 scm_c_call_with_unblocked_asyncs): New prototypes.
1811 (scm_mask_signals, scm_unmask_signals): Deprecated.
1812 (scm_mask_ints): Turned into a macro.
1813 * async.c (scm_mask_ints): Removed.
1814 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
1815 this should not be necessary.
1816 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
1817 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
1818 deprecation warning and check for errornous use. Set block_asyncs
1819 instead of scm_mask_ints.
1820 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
1821 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
1822 scm_c_call_with_unblocked_asyncs): New.
1823
1824 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
1825 Asyncs are enabled by default.
1826
1827 2002-10-09 Neil Jerram <neil@ossau.uklinux.net>
1828
1829 * vports.c (scm_make_soft_port): Allow vector argument to carry a
1830 6th element: an input waiting thunk.
1831 (sf_input_waiting): New.
1832
1833 2002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
1834
1835 * root.c (root_mark): Mark active_asyncs slot.
1836
1837 * async.c (scm_async_click): Set the cdr of a executed handler
1838 cell to SCM_BOOL_F, not SCM_EOL.
1839 (scm_i_queue_async_cell): Queue the cell at the end of the list,
1840 and only if the handler procedure is not already present.
1841 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
1842 with SCM_BOOL_F.
1843 * scmsigs.c (scm_sigaction_for_thread): Likewise.
1844
1845 2002-10-04 Rob Browning <rlb@defaultvalue.org>
1846
1847 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
1848
1849 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
1850 scm_lt_dlopenext, and scm_lt_dlerror.
1851 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
1852 and scm_lt_dlerror.
1853 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
1854 and scm_lt_dlerror.
1855 (sysdep_dynl_init): switch to scm_lt_dlinit();
1856
1857 * Makefile.am (libguile_la_LIBADD): switch to use
1858 libguile-ltdl.la.
1859
1860 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
1861
1862 2002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
1863
1864 * scmsigs.h (scm_sigaction_for_thread): New prototype.
1865 * scmsigs.c (got_signal): Removed.
1866 (signal_handler_cells, signal_handler_threads): New.
1867 (take_signal): Queue the cell of the signal for the specified
1868 thread. Reset the signal handler on systems that don't have
1869 sigaction.
1870 (sys_deliver_signals): Removed.
1871 (close_1): New.
1872 (scm_sigaction_for_thread): Renamed from scm_sigaction and
1873 extended to also set the thread of a signal and allocate a cell
1874 for it. Keep the Scheme name "sigaction". Check that signum is
1875 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
1876 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
1877 (scm_init_scmsigs): Allocate signal_handler_cells and
1878 signal_handler_threads vectors.
1879
1880 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
1881 that system asnycs and user asyncs are separated. Reimplemented
1882 system asyncs to work per-thread.
1883
1884 * gc.c (scm_init_gc): Do not use scm_system_async.
1885
1886 * async.h (scm_asyncs_pending, scm_set_tick_rate,
1887 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
1888 Removed prototypes.
1889 (scm_i_queue_async_cell): New.
1890
1891 * __scm.h (scm_asyncs_pending_p): Removed.
1892 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
1893 scm_asyncs_pending_p.
1894
1895 * async.h (scm_system_async_mark_for_thread): New prototype.
1896
1897 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
1898
1899 * root.h (scm_root_state): Added new "active_asyncs" slot.
1900 * root.c (scm_make_root): Initialize it to SCM_EOL.
1901
1902 * coop-defs.h (coop_t): Added new "handle" slot.
1903 * coop-threads.c (all_threads, scm_current_thread,
1904 scm_all_threads, scm_i_thread_root): New.
1905 (scm_threads_init): Add main thread to all_threads.
1906 (scheme_launch_thread): Remove thread from all_threads when it
1907 terminates.
1908 (scm_call_with_new_thread): Initialize handle slot of coop_t
1909 structure and add new thread to all_threads.
1910 (scm_spawn_thread): Likewise.
1911
1912 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
1913 * threads.c (scm_current_thread, scm_all_threads): Register as
1914 primitives.
1915
1916 * dynl.c: Use scm_lt_ prefix for libltdl functions.
1917
1918 2002-09-29 Neil Jerram <neil@ossau.uklinux.net>
1919
1920 * script.c (scm_compile_shell_switches): Fix bad spelling of
1921 `explicitly' in comment.
1922
1923 2002-09-28 Neil Jerram <neil@ossau.uklinux.net>
1924
1925 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
1926 Refer to provided? in doc string rather than deprecated feature?.
1927
1928 2002-09-24 Gary Houston <ghouston@arglist.com>
1929
1930 * inline.h (scm_double_cell): prevent reordering of statements
1931 with any following code (for GCC 3 strict-aliasing).
1932 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
1933 the earlier version of the reordering prevention.
1934
1935 2002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1936
1937 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
1938
1939 2002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1940
1941 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
1942 protection.
1943
1944 2002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1945
1946 * inline.h: include stdio.h
1947
1948 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
1949
1950 2002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1951
1952 * gc-segment.c (scm_i_make_initial_segment): check user settings
1953 for sanity.
1954
1955 * gc-malloc.c (scm_gc_init_malloc): check user settings for
1956 sanity.
1957
1958 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
1959
1960 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
1961
1962 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1963 these won't ever wrap around with high memory usage. Thanks to
1964 Sven Hartrumpf for finding this.
1965
1966 * gc-freelist.c: include <stdio.h>
1967
1968 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
1969
1970 2002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
1971
1972 * vectors.h (SCM_VECTOR_REF): New.
1973
1974 * snarf.h (SCM_DEFINE_PUBLIC): New.
1975
1976 2002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
1977
1978 * socket.c (scm_addr_vector): Added size of address to arguments.
1979 Use it to avoid accessing a non-existent path in a sockaddr_un.
1980 Changed all callers.
1981
1982 2002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1983
1984 * gc.h: remove DOUBLECELL card flags.
1985
1986 * gc-malloc.c (scm_calloc): try to use calloc() before calling
1987 scm_realloc().
1988
1989 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
1990 init loop; handle this from scm_init_card_freelist()
1991
1992 * gc-card.c (scm_init_card_freelist): init bit vector here.
1993
1994 * numbers.c (scm_make_real): prevent reordering of statements
1995 num2float.i.c (FLOAT2NUM): idem
1996
1997 2002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1998
1999 * eval.h: prepend libguile/ to include path
2000
2001 2002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
2002
2003 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
2004 years. Thanks to Martin Grabmüller!
2005
2006 2002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2007
2008 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
2009 unsigned numbers for computing minimum heap increment. This
2010 prevents weird results when a a negative minimum increment is
2011 computed.
2012
2013 2002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
2014
2015 * gc_os_dep.c: When we have __libc_stack_end, use that directly
2016 instead of the old tricks.
2017
2018 * guile-snarf.in: Do not expect the input file to be the first
2019 argument after the optional "-o" option, just pass everything to
2020 the pre-processor without extracting the input file name.
2021
2022 2002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2023
2024 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
2025 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
2026
2027 2002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2028
2029 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
2030 Bill Schottstaedt for the bug report
2031
2032 2002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
2033
2034 * print.c (scm_iprin1): Print primitives generics always as
2035 "primitive-generic" even when they have no primitive methods yet.
2036
2037 2002-08-17 Gary Houston <ghouston@arglist.com>
2038
2039 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
2040 call.
2041
2042 2002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2043
2044 * ports.c (scm_add_to_port_table): small bugfix.
2045
2046 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
2047 malloc.
2048
2049 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
2050 only use SCM_MIN_HEAP_SEG_SIZE.
2051
2052 * ports.c (scm_add_to_port_table): add backwards compatibility
2053 function
2054
2055 * ports.h: use scm_i_ prefix for port table and port table size.
2056
2057 2002-08-15 Mikael Djurfeldt <mdj@linnaeus>
2058
2059 * vports.c (scm_make_soft_port): Initialize pt variable.
2060
2061 2002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
2062
2063 * strports.h (scm_c_eval_string_in_module,
2064 scm_eval_string_in_module): New prototypes.
2065 * strports.c (scm_eval_string_in_module): New, but use
2066 "eval-string" as the Scheme name and make second parameter
2067 optional.
2068 (scm_eval_string): Implement using scm_eval_string_in_module.
2069 (scm_c_eval_string_in_module): New.
2070 Thanks to Ralf Mattes for the suggestion!
2071
2072 2002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2073
2074 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
2075 message and abort.
2076
2077 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
2078
2079 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
2080 stead of scm_t_port*. The function now takes a tag argument.
2081
2082 2002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2083
2084 * gc.h: add scm_debug_cells_gc_interval to public interface
2085
2086 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
2087
2088 * gc.c (scm_i_expensive_validation_check): separate expensive
2089 validation checks from cheap ones.
2090
2091 2002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2092
2093 * read.c (scm_input_error): new function: give meaningful error
2094 messages, and throw read-error
2095
2096 * gc-malloc.c (scm_calloc): add scm_calloc.
2097
2098 2002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2099
2100 * tags.h: remove GC bits documentation from the tags table.
2101
2102 * read.c (INPUT_ERROR): Prepare for file:line:column error
2103 messages for errors in scm_lreadr() and friends.
2104
2105 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2106
2107 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
2108 implementation).
2109 (scm_gc_calloc): new function
2110
2111 2002-08-04 Han-Wen <hanwen@cs.uu.nl>
2112
2113 * ports.c (scm_new_port_table_entry): init port entry to 0
2114 completely.
2115
2116 * ports.c (scm_new_port_table_entry): change function from
2117 scm_add_to_port_table. This prevents cells with null-pointers from
2118 being exposed to GC.
2119
2120 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
2121 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
2122
2123 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
2124 to gc-stats.
2125
2126 * numbers.c (big2str): return "0" for 0 iso. ""
2127
2128 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
2129 private-gc.h: new file
2130
2131 * gc.c: completely revised and cleaned up the GC. It now uses lazy
2132 sweeping. More documentation in workbook/newgc.text
2133
2134 2002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2135
2136 * random.c (rstate_free): Return zero.
2137
2138 2002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
2139
2140 * environments.c (remove_key_from_alist): Removed.
2141
2142 (obarray_remove): Simplified.
2143
2144 2002-07-24 Stefan Jahn <stefan@lkcc.org>
2145
2146 * continuations.h: ia64: Include <signal.h> before
2147 <sys/ucontext.h>.
2148
2149 2002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
2150
2151 * modules.c (scm_sym2var): Don't compare SCM values with ==.
2152
2153 2002-07-21 Han-Wen <hanwen@cs.uu.nl>
2154
2155 * goops.c (scm_compute_applicable_methods): use
2156 scm_remember_upto_here_1 iso scm_remember_upto_here
2157
2158 * macros.c: include deprecation.h
2159
2160 * vectors.c (scm_vector_move_right_x): remove side effect in
2161 macro arg.
2162 (scm_vector_move_left_x): idem.
2163
2164 * net_db.c, posix.c, socket.c: variable naming: change ans to
2165 result.
2166
2167 * sort.c (scm_merge_vector_x): accept vector as argument
2168 iso. SCM*. This is needed for full GC correctness.
2169
2170 * gc.h: undo previous undocumented changes related to #ifdef
2171 GENGC.
2172
2173 2002-07-20 Han-Wen <hanwen@cs.uu.nl>
2174
2175 * *.c: add space after commas everywhere.
2176
2177 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
2178 Document cases where SCM_WRITABLE_VELTS() is used.
2179
2180 * vectors.h (SCM_VELTS): prepare for write barrier, and let
2181 SCM_VELTS() return a const pointer
2182 (SCM_VECTOR_SET): add macro.
2183
2184 2002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
2185
2186 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
2187 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
2188 Deprecated the special kind of built-in dynamic syntax transformer
2189 that was inaccurately named "macro". Note: The built-in syntax
2190 transformers that are named "mmacro" or "memoizing-macro" still
2191 exist, and it is these which come much closer to what one would
2192 call a macro.
2193
2194 2002-07-13 Neil Jerram <neil@ossau.uklinux.net>
2195
2196 * eval.c (unmemocopy): Fix for
2197 1001-local-eval-error-backtrace-segfaults (unmemoization crash
2198 with internal definitions and local-eval).
2199
2200 2002-07-12 Gary Houston <ghouston@arglist.com>
2201
2202 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
2203 defined. They don't do anything useful, especially since the
2204 only case where DYNAMIC_LINKING is undefined seems to be
2205 when --with-modules=no is given to configure, which is basically
2206 requesting that the "dynamic linking module" be omitted.
2207
2208 * Makefile.am (libguile_la_SOURCES): move dynl.c from
2209 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
2210
2211 * extensions.c (load_extension): check DYNAMIC_LINKING for
2212 scm_dynamic_call.
2213 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
2214 scm_init_dynamic_linking.
2215
2216 2002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
2217
2218 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
2219 check for Cygwin when including <winsock2.h>, this is already
2220 check for by configure. Thus, revert change from 2002-07-07.
2221
2222 2002-07-10 Gary Houston <ghouston@arglist.com>
2223
2224 * eq.c: include <string.h>
2225 * dynl.c: docstring editing.
2226
2227 2002-07-09 Gary Houston <ghouston@arglist.com>
2228
2229 * dynl.c (scm_dynamic_call): docstring editing.
2230
2231 2002-07-08 Rob Browning <rlb@defaultvalue.org>
2232
2233 * gc_os_dep.c: HURD fixes.
2234
2235 2002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
2236
2237 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
2238
2239 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
2240 this should be compiled for BUILD host.
2241 Override default rule for
2242 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
2243 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
2244 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
2245
2246 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
2247 <winsock2.h> on Cygwin even when we have it.
2248
2249 2002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
2250
2251 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
2252 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
2253 the code. Full number of arguments checking of closures is
2254 mandatory now. However, the option to disable the checking has
2255 most probably not been used anyway.
2256
2257 2002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
2258
2259 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
2260 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
2261 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
2262 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
2263 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
2264 (scm_source_properties, scm_set_source_properties_x,
2265 scm_source_property): Removed compile time option SCM_RECKLESS to
2266 clean up the code. Full number of arguments checking of closures
2267 is mandatory now. However, the option to disable the checking has
2268 most probably not been used anyway.
2269
2270 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
2271 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
2272
2273 2002-06-30 Gary Houston <ghouston@arglist.com>
2274
2275 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
2276 do anything useful. Added a comment about need for a mutex if
2277 pre-emptive threading is supported.
2278
2279 * posix.c (scm_convert_exec_args), dynl.c
2280 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
2281 allocate_string_pointers. 2) simplified: don't reallocate the
2282 strings, just make an array of pointers 3) avoid memory leaks on
2283 error 4) let the procedure report errors in its own name.
2284 Consequences: 1) the procedures now assume that SCM strings are
2285 nul-terminated, which should always be the case. 2) Since strings
2286 are not reallocated, it's now possible for strings passed to
2287 dynamic-args-call to be mutated.
2288
2289 2002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
2290
2291 * __scm.h, eval.c, eval.h: Removed compile time option
2292 MEMOIZE_LOCALS to clean up the code. Now, caching of local
2293 variable positions during memoization is mandatory. However, the
2294 option to disable the caching has most probably not been used
2295 anyway.
2296
2297 2002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
2298
2299 * print.c (scm_simple_format): Print missing part of format before
2300 ~% control. Thanks to Daniel Skarda!
2301
2302 2002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
2303
2304 * mkstemp.c: Added exception notice to license statement.
2305
2306 2002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
2307
2308 * numbers.c (mem2ureal): When returning an inexact zero, make sure
2309 it is represented as a floating point value so that we can change
2310 its sign.
2311
2312 From John W. Eaton <jwe@bevo.che.wisc.edu>
2313
2314 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
2315
2316 2002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
2317
2318 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
2319 in addition to `i386'. Thanks to Dale P. Smith.
2320
2321 2002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
2322
2323 * eq.c (real_eqv): New.
2324 (scm_eqv_p): Use it when comparing reals and complexes.
2325
2326 * numbers.c: Include <string.h>, for strncmp.
2327 (mem2complex): Do not create negative NaNs.
2328 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
2329 NaN.
2330 (scm_inexact_to_exact): Signal error when converting a NaN.
2331
2332 2002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
2333
2334 * posix.c (scm_putenv): Handle removing variables explicitely by
2335 calling unsetenv.
2336
2337 From John W. Eaton.
2338
2339 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
2340 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
2341 and scm_nan.
2342 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
2343 [SCO && ! HAVE_ISINF] (isinf): New function.
2344 (xisinf, xisnan): New functions.
2345 (IS_INF): Delete.
2346 (isfinite): Define in terms of xisinf.
2347 (scm_inf_p, scm_nan_p): New functions.
2348 (guile_Inf, guile_NaN): New file-scope vars.
2349 (guile_ieee_init): New function.
2350 (scm_inf, scm_nan): New functions.
2351 (idbl2str): Handle Inf and NaN. Remove funny label and
2352 corresponding gotos.
2353 (ALLOW_DIVIDE_BY_ZERO): New macro.
2354 (scm_divide): Allow division by zero to occur if
2355 ALLOW_DIVIDE_BY_ZERO is defined.
2356 Handle bignums and ints as special cases.
2357
2358 Additional stuff by me:
2359
2360 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
2361 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
2362 (iflo2str): Don't output a '+' for negative numbers or for Inf and
2363 NaN. They will provide their own sign.
2364 (scm_divide): Only allow divides by inexact zeros. Dividing by
2365 exact zeros still signals an errors.
2366
2367 2002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
2368
2369 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
2370 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
2371 (scm_slot_exists_p): Rename from scm_slots_exists_p.
2372 Thanks to Andreas Rottmann.
2373
2374 2002-04-20 Gary Houston <ghouston@arglist.com>
2375
2376 * removal of unused fields in root state (thanks to Christopher
2377 Cramer for pointing out the disuse.)
2378 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
2379 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
2380
2381 * root.c (root_mark): don't mark them.
2382 (scm_make_root): don't set them to #f.
2383 * init.c (scm_init_standard_ports): don't initialise with the
2384 default ports.
2385
2386 2002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
2387
2388 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
2389 cpp_sig_symbols.c.
2390
2391 2002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
2392
2393 * guile-snarf.in: Do not clean input file. This would write to
2394 the $(srcdir) during a VPATH build, which is not allowed. It also
2395 isn't needed since it only works when an output filename has been
2396 specified and in that case we don't need to clean the input file
2397 because the output file will already exist.
2398
2399 2002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
2400
2401 * guile-snarf: Install the trap for removing $cleanfile only when
2402 the value of $cleanfile is actually known.
2403
2404 2002-04-10 Rob Browning <rlb@defaultvalue.org>
2405
2406 * .cvsignore: add versiondat.h and *.c.clean.c.
2407
2408 2002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
2409
2410 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
2411 function, replaces macro SRCBRKP.
2412
2413 (SRCBRKP): Deprecated.
2414
2415 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
2416 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
2417 temporary variable.
2418
2419 2002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
2420
2421 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
2422 CHECK_EXIT and removed all references to them.
2423
2424 2002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
2425
2426 * debug.h (scm_ready_p, debug_print): Removed declarations.
2427
2428 * eval.c (EVALCELLCAR): Removed.
2429
2430 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
2431 operation from condition.
2432
2433 2002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
2434
2435 * guile-snarf.in: When the output filename is "-", write to
2436 stdout. When no "-o" option is given, use "-" as the output
2437 filename (i.e., stdout). Only 'clean' the inputfile or remove the
2438 output file on error when the output file name is not "-". Define
2439 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
2440
2441 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
2442
2443 2002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
2444
2445 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
2446 and the corresponding goto statements. Removed redundant code.
2447
2448 2002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
2449
2450 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
2451 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
2452 Re-enabled handing of rpsubrs and asubrs.
2453
2454 2002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
2455
2456 * eval.c (SIDEVAL): Removed.
2457
2458 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
2459 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
2460 argument checking order for set! to locals, variables and symbols.
2461 Improvements to control structure. Removed some uses of arg1 and
2462 arg2 as temporary variables.
2463
2464 2002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
2465
2466 * guile-snarf.in: Remove "--compat=1.4" support.
2467 Add "-d" and "-D" support.
2468
2469 (deprecated_list): New var.
2470 (compat_mode_clean_xxx): Delete.
2471 (grep_deprecated): New func.
2472 ("main"): If "-d" or "-D", call `grep_deprecated'.
2473
2474 2002-03-15 Neil Jerram <neil@ossau.uklinux.net>
2475
2476 * hooks.h: Change scm_t_c_hookype_t everywhere to
2477 scm_t_c_hook_type.
2478
2479 Docstring fixes:
2480
2481 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
2482
2483 * ports.c (scm_sys_make_void_port): Use `@file'.
2484
2485 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
2486 than `else'.
2487
2488 * macros.c (scm_makmacro): Don't say that the form replaces its
2489 source, because it doesn't.
2490 (scm_makmmacro): Clarify difference between this and scm_makmacro.
2491
2492 * backtrace.c (scm_display_error), filesys.c (scm_umask,
2493 scm_select, scm_basename), goops.c (scm_method_generic_function),
2494 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
2495 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
2496 spelling mistakes.
2497
2498 * debug.c (scm_debug_options), eval.c
2499 (scm_eval_options_interface), read.c (scm_read_options): Change
2500 incorrect @var in docstring to @code.
2501
2502 2002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
2503
2504 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
2505
2506 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
2507 guile-snarf can remove trailing non-init code.
2508
2509 * guile-snarf.in (modern_snarf): Remove everything following and
2510 including "^:^" from the output.
2511
2512 2002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
2513
2514 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
2515
2516 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
2517
2518 2002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
2519
2520 * guile-snarf.in: Update copyright.
2521 Rewrite to internalize error handling.
2522 Add "--compat=1.4" handling.
2523 Add commentary.
2524
2525 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
2526 (snarfcppopts): New var.
2527 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
2528 (.c.doc): Use $(snarfcppopts).
2529
2530 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
2531 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
2532 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
2533 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
2534 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
2535 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
2536 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
2537 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
2538 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
2539 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
2540 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
2541 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
2542 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
2543 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
2544
2545 2002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
2546
2547 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
2548 The next step will be to remove the union 't' and simplify the
2549 code of SCM_CEVAL that way.
2550
2551 2002-03-12 Neil Jerram <neil@ossau.uklinux.net>
2552
2553 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
2554 rreadfds, rwritefds, rexceptfds): Made static.
2555
2556 * gc.c (terminating), fports.c (terminating): Renamed
2557 scm_i_terminating.
2558
2559 2002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
2560
2561 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
2562 potential overflow problems. Thanks to John W Eaton!
2563
2564 * strop.c (string_capitalize_x): Treat characters as unsigned so
2565 that 8-bit chars work. Thanks to David Pirotte!
2566
2567 2002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
2568
2569 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
2570 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
2571 proc as temporary variables. Introduced temporary variables with
2572 hopefully descriptive names for clarification. Replaced SCM_N?IMP
2573 by a more explicit predicate in some places.
2574
2575 2002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
2576
2577 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
2578 Added lots of comments regarding the implementation of #@dispatch.
2579 Changed intra-procedure communication to use t.arg1 instead of
2580 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
2581 variables. Introduced temporary variables with hopefully
2582 descriptive names for clarification. Replaced SCM_N?IMP by a more
2583 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
2584 of computing the expression explicitly. Eliminate now unused
2585 label nontoplevel_cdrxbegin.
2586
2587 * goops.h (SCM_INSTANCE_HASH): New macro.
2588
2589 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
2590
2591 2002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
2592
2593 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
2594 "guile-snarf" moved back from `noinst_SCRIPTS'.
2595
2596 2002-03-08 Neil Jerram <neil@ossau.uklinux.net>
2597
2598 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
2599 exists when adding a source property other than those that are
2600 handled explicitly, add the new property to the SRCPROPS obj's
2601 plist.
2602
2603 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
2604 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
2605
2606 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
2607 debug.status. It isn't needed, and it can overflow the bits
2608 reserved for it (which may lead to a segv or a GC abort).
2609
2610 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
2611
2612 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
2613 side-effecting operations from conditions and macro calls.
2614 Replaced SCM_N?IMP by a more explicit predicate in some places.
2615 Minimized the scope of some variables.
2616
2617 2002-03-02 Stefan Jahn <stefan@lkcc.org>
2618
2619 * convert.i.c: Fixed int <-> long conversions which would have
2620 failed if their sizes were different.
2621
2622 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
2623
2624 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
2625 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
2626 as temporary variables. Removed side-effecting operations from
2627 conditions and macro calls. Introduced temporary variables with
2628 hopefully descriptive names for clarification. Replaced SCM_N?IMP
2629 by a more explicit predicate in some places. Removed code that
2630 was conditionally compiled if SICP was defined - which it never
2631 is.
2632
2633 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
2634
2635 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
2636 Removed some uses of t.arg1 and proc as temporary variables.
2637 Removed side-effecting operations from conditions and macro calls.
2638 Introduced temporary variables with hopefully descriptive names
2639 for clarification. Replaced SCM_N?IMP by a more explicit
2640 predicate in some places.
2641
2642 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
2643
2644 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
2645 explicit predicate in some places.
2646
2647 (CHECK_EQVISH): Removed.
2648
2649 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
2650 variables. Removed side-effecting operations from conditions and
2651 macro calls. Introduced temporary variables for clarification.
2652 Sorted if-else-if check for the type of the last form in a list by
2653 frequency. Avoided some unnecessary tail-recursion calls.
2654
2655 2002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
2656
2657 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
2658 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
2659 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
2660 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
2661 scm_cell and all its uses to scm_t_cell in accordance to Guile's
2662 naming scheme for types.
2663
2664 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
2665 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
2666 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
2667 (scm_make_environment), eval.c (scm_closure), fports.c
2668 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
2669 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
2670 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
2671 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
2672 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
2673 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
2674 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
2675 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
2676 scm_alloc_cell to scm_cell.
2677
2678 * environments.c (core_environments_observe), gc.c
2679 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
2680 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
2681 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
2682 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
2683 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
2684 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
2685 (allocate_weak_vector): Renamed scm_alloc_double_cell to
2686 scm_double_cell.
2687
2688 2002-02-27 Stefan Jahn <stefan@lkcc.org>
2689
2690 * convert.i.c, convert.c: Better range checking.
2691
2692 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
2693
2694 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
2695 Windows (MinGW).
2696
2697 2002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
2698
2699 * Makefile.am: Update path to pre-inst-guile automake frag.
2700
2701 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
2702
2703 * gc.c (scm_gc_sweep): Make it compile even when deprecated
2704 features are excluded.
2705
2706 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
2707
2708 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
2709
2710 2002-02-25 Gary Houston <ghouston@arglist.com>
2711
2712 * convert.c: include <string.h> for convert_i.c.
2713
2714 2002-02-24 Rob Browning <rlb@defaultvalue.org>
2715
2716 * .cvsignore: add stamp-h1.
2717
2718 2002-02-21 Neil Jerram <neil@ossau.uklinux.net>
2719
2720 * unif.c (scm_array_to_list): Correct name, which had been
2721 accidentally changed to scm_t_arrayo_list!
2722
2723 2002-02-20 Mikael Djurfeldt <mdj@linnaeus>
2724
2725 * gc.c (scm_gc_sweep): Print an error message when aborting due to
2726 underflowing scm_mallocated.
2727
2728 2002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2729
2730 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
2731 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
2732 Reimplemented using the new scm_gc_malloc, etc., functions and
2733 deprecated.
2734
2735 2002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
2736
2737 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
2738 to `noinst_PROGRAMS'.
2739 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
2740 (noinst_PROGRAMS, noinst_SCRIPTS): New.
2741
2742 2002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2743
2744 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
2745 non-zero is returned from a port or smob free function.
2746 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
2747 scm_gc_register_collectable_memory,
2748 scm_gc_unregister_collectable_memory, scm_gc_malloc,
2749 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
2750
2751 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
2752 debug-malloc.c, dynl.c, environments.c, environments.h,
2753 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
2754 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
2755 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
2756 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
2757 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
2758 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
2759 appropriate. Return zero from smob and port free functions.
2760
2761 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
2762
2763 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
2764 messages while the GC is running.
2765 (scm_c_issue_deprecation_warning_fmt): New.
2766
2767 * fports.c (scm_setvbuf): Reset read buffer to saved values when
2768 it is pointing to the putback buffer.
2769
2770 2002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
2771
2772 * gsubr.c (create_gsubr): On "too many args" error,
2773 also display arg count and name. Thanks to Bill Schottstaedt.
2774
2775 2002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
2776
2777 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
2778
2779 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
2780 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
2781 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
2782
2783 * guile-snarf-docs-texi.in: Bye bye.
2784
2785 2002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2786
2787 * symbols.c (scm_make_symbol): Fix typo in docstring.
2788
2789 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
2790 scm_make_symbol): New prototypes.
2791
2792 2002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
2793
2794 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
2795 (SCM_SYMBOL_INTERNED_P): New.
2796 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
2797 SCM_MAKINUM since hash values can well be bignums.
2798 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
2799 This signals a interned symbol.
2800 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
2801 scm_make_symbol): New.
2802
2803 * print.c (scm_iprin1): Print uninterned symbols unreadably.
2804
2805 2002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
2806
2807 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
2808 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
2809 Thanks to Dave Love.
2810
2811 2002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
2812
2813 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
2814 This might help to make unintended clashes less likely.
2815 (scm_string_to_symbol): Protect the string until the symbols is
2816 created.
2817
2818 2002-01-31 Stefan Jahn <stefan@lkcc.org>
2819
2820 * convert.c, convert.h, convert.i.c: New files containing C
2821 array to Scheme conversion helpers meant to be replacement
2822 functions for the deprecated gh interface.
2823
2824 * Makefile.am: Setup rules for new `convert.*' files.
2825
2826 2002-01-28 Stefan Jahn <stefan@lkcc.org>
2827
2828 * symbols.c (scm_c_symbol2str): New function, replacement for
2829 `gh_scm2newsymbol()'.
2830
2831 * strings.c (scm_c_substring2str): New function. Proper
2832 replacement for `gh_get_substr()'.
2833
2834 * socket.c: Include `stdint.h' if available for the `uint32_t'
2835 declaration.
2836
2837 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
2838 compiler warning).
2839
2840 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
2841
2842 2002-01-22 Neil Jerram <neil@ossau.uklinux.net>
2843
2844 Other changes unrelated to Elisp...
2845
2846 * eval.c (scm_m_if): Use s_if rather than repeating string literal
2847 "if".
2848 (comments): Fix a few typos.
2849 (scm_for_each): Add parentheses around oddly unparenthesized
2850 if/while conditions.
2851
2852 * read.c (scm_read_opts): Add full stop at end of doc for
2853 `keywords' option.
2854
2855 * script.c (scm_compile_shell_switches): Use scm_str2symbol
2856 instead of gh_symbol2scm.
2857
2858 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
2859 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
2860
2861 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
2862 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
2863
2864 First batch of changes for Elisp support...
2865
2866 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
2867 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
2868 throw.c, vectors.c, weaks.c: Add #include for lang.h.
2869
2870 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
2871 conditionalize compilation and initialization of Elisp support
2872 function.
2873
2874 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
2875 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
2876 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
2877 filesys.c (fill_select_type, retrieve_select_type), fluids.c
2878 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
2879 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
2880 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
2881 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
2882 options.c (change_option_setting, scm_options), posix.c
2883 (environ_list_to_c), print.c (scm_iprlist), throw.c
2884 (scm_exit_status), vectors.c (scm_vector), weaks.c
2885 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
2886
2887 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
2888 just SCM_FALSEP.
2889
2890 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
2891 of just SCM_BOOLP.
2892
2893 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
2894 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
2895 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
2896 (scm_m_atfop): Support function aliasing. Support both function
2897 args, which need transformation, and macro args, which do not.
2898 Add explanatory comments.
2899 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
2900 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
2901 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
2902 SCM_NULLP || SCM_NILP instead of checks against (removed)
2903 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
2904 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
2905
2906 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
2907 scm_m_while, scm_nil_eq): Commented out; I don't think we need
2908 these, but I don't want to remove them yet, just in case.
2909 (scm_init_lang): Define `%nil' variable on Scheme level to hold
2910 Elisp nil value.
2911
2912 * lang.h (SCM_NILP): Test against Elisp nil value instead of
2913 against (removed) scm_lisp_nil.
2914 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
2915 (SCM_NULL_OR_NIL_P): New.
2916
2917 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
2918 SCM_VALIDATE_NULL.
2919
2920 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
2921 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
2922 value).
2923
2924 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
2925 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
2926 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
2927 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
2928
2929 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
2930 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
2931 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
2932 Numbering shifted down accordingly.
2933 (SCM_ELISP_NIL): New IFLAG.
2934
2935 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
2936
2937 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
2938
2939 * eval.c: Removed outdated references to "everr". Improved some
2940 comments.
2941
2942 (scm_deval_args, deval_args): Renamed scm_deval_args to
2943 deval_args, since it is not part of the interface.
2944
2945 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
2946 use references to debug.vect[0] before it exists. Add parentheses
2947 to switch statement.
2948
2949 * goops.h: Added local emacs variables.
2950
2951 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
2952
2953 * eval.[ch] (scm_deval_args): Made static.
2954
2955 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
2956 test.
2957
2958 * strings.c (scm_c_string2str): Clarified comment. Replaced
2959 THINKME by FIXME for uniformness. Removed question about whether
2960 arguments need to be protected from garbage collection: Arguments
2961 must be protected as any other variable.
2962
2963 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
2964
2965 * procs.h (SCM_CLOSURE_BODY): New Macro.
2966
2967 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
2968 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
2969 get_slot_value, set_slot_value), procs.c
2970 (scm_procedure_documentation), sort.c (closureless), stacks.c
2971 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
2972 SCM_CLOSURE_BODY.
2973
2974 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
2975
2976 2001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
2977
2978 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
2979 use "cp" instead.
2980
2981 2001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
2982
2983 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
2984 everywhere.
2985
2986 * continuations.c (scm_make_continuation): Do not retain the
2987 throw_value when the continuation is invoked.
2988
2989 2001-12-08 Stefan Jahn <stefan@lkcc.org>
2990
2991 * strings.c (scm_c_string2str): New function. Converts a
2992 given Scheme string into a C string. Also put in two
2993 THINKME's regarding the malloc policy for the missing converter
2994 routines.
2995
2996 2001-12-01 Neil Jerram <neil@ossau.uklinux.net>
2997
2998 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
2999 gh_symbol2scm.
3000
3001 2001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
3002
3003 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
3004 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
3005
3006 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
3007 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
3008 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
3009 macros.
3010
3011 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
3012
3013 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
3014 SCM_GC_CELL_* macros when accessing free cells.
3015
3016 2001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
3017
3018 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
3019 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
3020 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
3021 * strings.h (SCM_MAKE_STRING_TAG): New.
3022 * procs.h (SCM_MAKE_CCLO_TAG): New.
3023 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
3024
3025 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
3026 !SCM_ENABLE_DEPRECATED.
3027
3028 * async.c, async.h (scm_system_async_mark_from_signal_handler):
3029 New.
3030
3031 * scmsigs.c (scm_take_signal): Removed all code that assumes that
3032 signal handlers are allowed to divert the flow of control. Call
3033 scm_system_async_mark_from_signal_handler instead of
3034 scm_system_async_mark.
3035
3036
3037 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
3038 scm_alloc_double_cell in their place.
3039
3040 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
3041 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
3042 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
3043 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
3044 scm_deprecated_newcell and scm_deprecated_newcell2.
3045
3046 gc.c (scm_tc16_allocated): Only define when including deprecated
3047 features.
3048 (scm_debug_newcell, scm_debug_newcell2): Removed.
3049 (scm_init_storage): Do not initialize scm_tc16_allocated.
3050 (scm_init_gc): Do it here.
3051 (allocated_mark): New, from old code.
3052 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
3053
3054 * inline.c, inline.h: New files.
3055 * Makefile.am: Added them in all the right places.
3056
3057 * _scm.h: Include "libguile/inline.h".
3058
3059 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
3060 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
3061 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
3062 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
3063 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
3064 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
3065 scm_alloc_double_cell, respectively.
3066
3067 2001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
3068
3069 * modules.c (scm_c_use_module): Adapt to changes to
3070 `process-use-modules'.
3071
3072 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
3073
3074 * numbers.c (scm_divide): Fix more division by zero errors.
3075
3076 2001-11-21 Gary Houston <ghouston@arglist.com>
3077
3078 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
3079 obsolete. autogen.sh says:
3080 invalid unused variable name: `OMIT_DEPENDENCIES'
3081
3082 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
3083
3084 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
3085 reporting the bug.
3086
3087 2001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
3088
3089 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
3090 Thanks to Eric Gillespie, Jr!
3091
3092 2001-11-21 Stefan Jahn <stefan@lkcc.org>
3093
3094 * win32-socket.c (getservent, setservent, endservent,
3095 getprotoent, setprotoent, endprotoent): New functions.
3096 Appropriate replacements for M$-Windows.
3097
3098 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
3099 these definitions for GUILE_DEBUG.
3100
3101 * net_db.c: Include "win32-socket.h" if compiling with a native
3102 M$-Windows compiler. Include some pieces of code (protoent and
3103 servent interface) protected by HAVE_* macros when using a
3104 native M$-Windows compiler.
3105
3106 2001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
3107
3108 * modules.c (scm_c_export): Do nothing when the first argument is
3109 already the terminating NULL. Thanks to Han-Wen Nienhuys!
3110
3111 2001-11-20 Thien-Thi Nguyen <ttn@glug.org>
3112
3113 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
3114 also include `buildstamp'.
3115
3116 2001-11-18 Rob Browning <rlb@defaultvalue.org>
3117
3118 * version.c
3119 (s_scm_major_version): use SCM_MAJOR_VERSION.
3120 (s_scm_minor_version): use SCM_MINOR_VERSION.
3121 (s_scm_micro_version): use SCM_MICRO_VERSION.
3122 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
3123 SCM_MICRO_VERSION.
3124
3125 * version.h.in
3126 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
3127 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
3128 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
3129
3130 2001-11-18 Neil Jerram <neil@ossau.uklinux.net>
3131
3132 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
3133 Rewrite docstrings without reference to substring-move-left/right,
3134 since the latter no longer exist.
3135
3136 2001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
3137
3138 * eval.c: Removed bogus comment about acros.
3139
3140 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
3141 Minimize scope of local variable. Eliminate dependency on
3142 macro DEBUG_EXTENSIONS.
3143
3144 (s_splicing): New error message string.
3145
3146 (scm_m_body): Issue 'bad body' message rather than 'missing
3147 expression' message.
3148
3149 (scm_m_quote): Eliminate unnecessary copying.
3150
3151 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
3152 checking of the body to scm_m_body.
3153
3154 (scm_m_do): Move comment to function header. Rename arg1 to
3155 binding. Made the code a bit easier to read.
3156
3157 (evalcar): Removed.
3158
3159 (iqq): Added a comment. Changed the depth parameter to
3160 unsigned. Use size_t for vector lengths. Make sure vector object
3161 is gc protected as long as its contents are read. Add some syntax
3162 checks. Get rid of unnecessary SCM_IMP test. Clean up the
3163 control structure a bit.
3164
3165 (scm_m_delay): Added comment about the implementation of
3166 scm_m_delay.
3167
3168 (scm_m_define): Add comment about guile's currying define
3169 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
3170 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
3171
3172 (scm_m_letrec1): Removed. Part of the functionality is taken
3173 over by the new function 'transform_bindings'.
3174
3175 (transform_bindings): New function. Takes over some of the
3176 functionality of removed function 'scm_m_letrec1', namely to split
3177 a list of bindings into a reversed list of variables and a list of
3178 initializers.
3179
3180 (scm_m_letrec): Call 'transform_bindings'.
3181
3182 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
3183 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
3184 test. Use 'transform_bindings'. Fixed scoping error with named
3185 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
3186 Jerram for suggesting the fix). Cleaned up the control structure
3187 a bit.
3188
3189 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
3190 unnecessary consing. Eliminated unnecessary
3191 SCM_DEFER/ALLOW_INTS.
3192
3193 (SCM_CEVAL): Un-obfuscated some loops.
3194
3195 2001-11-16 Neil Jerram <neil@ossau.uklinux.net>
3196
3197 * gc.h (scm_unhash_name): Old declaration removed.
3198
3199 * eval.c (s_scm_eval): Change @var{primitive-eval} to
3200 @code{primitive-eval}.
3201
3202 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
3203 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
3204 Change @deffnx lines in docstrings to say {Scheme Procedure}
3205 rather than primitive or procedure.
3206
3207 * posix.c (scm_execl), filesys.c (scm_close), unif.c
3208 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
3209 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
3210 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
3211 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
3212 (scm_string_split, scm_string_ci_to_symbol), strings.c
3213 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
3214 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
3215 Docstring fixes and improvements reflecting edits that have been
3216 made in the reference manual source.
3217
3218 * objprop.c (scm_object_properties, scm_set_object_properties_x,
3219 scm_object_property, scm_set_object_property_x): Remove invalid
3220 @deffnx lines for corresponding procedure property primitives.
3221
3222 These changes add a @deffnx C function declaration and function
3223 index entries for each Guile primitive to the copy of the doc
3224 snarf output that is used for reference manual synchronization.
3225 Online help is unchanged.
3226
3227 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
3228 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
3229 name to SCM_SNARF_DOCS.
3230
3231 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
3232 snarf-check-and-output-texi.
3233
3234 * Makefile.am (guile-procedures.texi): New rule.
3235 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
3236 Changed so that the last stage of doc snarfing is now performed
3237 twice, once to produce guile-procedures.txt for online help, and
3238 once to produce guile.texi for reference manual synchronization.
3239
3240 2001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
3241
3242 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
3243 safely usable as a single statement followed by a ';', for example
3244 in an if statement.
3245
3246 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
3247
3248 2001-11-13 Neil Jerram <neil@ossau.uklinux.net>
3249
3250 * random.c (scm_random_solid_sphere_x,
3251 scm_random_hollow_sphere_x): Correct "shere" typos.
3252
3253 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
3254
3255 * version.c (scm_version): Update docstring to include
3256 `micro-version'.
3257
3258 2001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
3259
3260 * modules.c (scm_c_export): Call va_end after collecting the
3261 symbols.
3262
3263 * strop.h, strop.c (scm_substring_move_left_x,
3264 scm_substring_move_right_x): Removed.
3265
3266 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
3267 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
3268 configure does.
3269
3270 2001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
3271
3272 * numbers.c: Document macros to define when including
3273 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
3274 now rely on SIZEOF_ macros that have been figured out at
3275 configure time.
3276
3277 * num2integral.i.c: Adapt to new interface.
3278 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
3279 target type by casting it and checking whether it is still the
3280 same. Do not try to handle bignums for integral types that are
3281 smaller than fixnums. When handling bignums, collect the
3282 magnituse first into a unsigned type, and correctly check for
3283 overflow.
3284 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
3285 only -MIN_VALUE can still be negative of all negative numbers (in
3286 twos-complement).
3287
3288 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
3289
3290 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
3291 HAVE_LONG_LONG depending on whether their size is non-zero.
3292
3293 2001-11-11 Thien-Thi Nguyen <ttn@glug.org>
3294
3295 * strop.c (scm_string_null_p): Docfix; nfc.
3296 Thanks to Scott Lenser.
3297
3298 2001-11-07 Neil Jerram <neil@ossau.uklinux.net>
3299
3300 * extensions.c (scm_load_extension): Canonicalize docstring
3301 whitespace.
3302
3303 * unif.c (scm_uniform_array_write), ports.c
3304 (scm_current_output_port, scm_force_output), dynwind.c
3305 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
3306 filesys.c (scm_open, scm_lstat), struct.c
3307 (scm_make_struct_layout), random.c (scm_random,
3308 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
3309 (scm_i_index): Remove superfluous whitespace from end of docstring
3310 lines.
3311
3312 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
3313 strings.c (scm_make_string), variable.c (scm_make_variable,
3314 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
3315 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
3316 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
3317 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
3318 newline at end of docstrings.
3319
3320 * modules.c (scm_set_current_module): Add missing newline to
3321 docstring.
3322
3323 2001-11-07 Stefan Jahn <stefan@lkcc.org>
3324
3325 * win32-socket.[ch]: New files. Defines Winsock-API error codes
3326 and makes them available through Guile. That is because the
3327 Winsock-API does not store its errors in `errno' and thus cannot
3328 return error messages via `strerror (errno)'.
3329
3330 * socket.c (scm_init_socket): Initialize `win32-socket' part
3331 here under M$-Windows.
3332
3333 * numbers.h: Added missing declaration of
3334 `scm_sys_check_number_conversions()'.
3335
3336 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
3337 and use in `(strerror)' and `(system-error)'.
3338
3339 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
3340 `win32-socket.[ch]' to extra source and header files.
3341
3342 2001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
3343
3344 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
3345 a call to turn-on-debugging when --debug has been given instead of
3346 turning it on directly. Also, handle new `--no-debug' option,
3347 which might suppress the call to turn-on-debugging.
3348
3349 2001-11-05 Stefan Jahn <stefan@lkcc.org>
3350
3351 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
3352
3353 2001-11-04 Stefan Jahn <stefan@lkcc.org>
3354
3355 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
3356 here (was at guile_LDADD) which describes the dependency
3357 correctly and allows a clean build on Win32.
3358
3359 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
3360 into FOO.
3361
3362 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
3363 import macros for external libraries (libcrypt, libqthreads,
3364 libreadline and libregex).
3365
3366 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
3367
3368 * posix.c (flock): Added support for flock() in M$-Windows.
3369
3370 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
3371 of __SCM_IMPORT__.
3372
3373 * fports.c (getflags): Differentiate reading and writing pipes
3374 descriptors.
3375
3376 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
3377 M$-Windows.
3378
3379 * coop.c (coop_condition_variable_timed_wait_mutex): Use
3380 conditionalized error code if `ETIMEDOUT' is not available.
3381 (scm_thread_usleep): Remove bogus declaration of `struct timeval
3382 timeout'.
3383
3384 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
3385 belongs. That is because NO_PREPRO_MAGIC gets undefined after
3386 each inclusion of `num2integral.i.c'.
3387 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
3388
3389 2001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
3390
3391 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
3392 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
3393
3394 2001-11-02 Mikael Djurfeldt <mdj@linnaeus>
3395
3396 * print.c (scm_iprin1): Mark print state as revealed when
3397 dispatching to generic write or display.
3398
3399 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
3400
3401 2001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
3402
3403 Support for native Win32. Thanks to Stefan Jahn!
3404
3405 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
3406 and win32-dirent.h to extra source and header files. These
3407 include the uname() and the POSIX dirent interface implementation
3408 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
3409 linkers which do not allow unresolved symbols inside shared
3410 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
3411 dependency.
3412
3413 * __scm.h: Defined SCM_API. This macro gets prepended to all
3414 function and data definitions which should be exported or imported
3415 in the resulting dynamic link library in the Win32 port.
3416
3417 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
3418 chars.h, continuations.h, coop-defs.h, coop-threads.h,
3419 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
3420 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
3421 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
3422 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
3423 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
3424 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
3425 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
3426 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
3427 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
3428 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
3429 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
3430 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
3431 vports.h, weaks.h:
3432 Prefixed each each exported symbol with SCM_API.
3433
3434 * continuations.c: Added comment about the use of the extern
3435 declarations of {get,set}context() functions used in the ia64 port.
3436
3437 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
3438 is meant to be a `unsigned long *'.
3439
3440 * filesys.c: Include `direct.h' if possible. Use local
3441 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
3442 macros for M$-Windows. Implementation of `fstat_Win32()' which is
3443 able to differentiate between sockets and other file descriptors.
3444 Use this function as wrapper in `scm_fstat()'. Fixed typo in
3445 `scm_dirname()'.
3446
3447 * fports.c: Include `io.h' is possible. Put `*fp' into referring
3448 statement block in `scm_fport_buffer_add()'.
3449 Some corrections in `getflags()'.
3450
3451 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
3452
3453 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
3454 build on Win32. Disable preloaded symbols on Win2 platforms.
3455
3456 * ioext.c, ports.c: Include `io.h' is possible.
3457
3458 * mkstemp.c: Include `process.h' is possible.
3459
3460 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
3461 too.
3462 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
3463
3464 * posix.c: Remove unnecessary dirent includes and defines. Include
3465 local `win32-uname.h' for MinGW. Extern declaration of
3466 `mkstemp()' for systems where it does not exists. Make
3467 `getlogin()' available on M$-Windows.
3468
3469 * scmsigs.c: Made `usleep()' avalable on MinGW.
3470
3471 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
3472
3473 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
3474
3475 * win32-uname.c: Include "win32-uname.h", not "uname.h".
3476
3477 2001-10-28 Mikael Djurfeldt <mdj@linnaeus>
3478
3479 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
3480 Don't apply scm_uniform_vector_length on arrays.
3481
3482 2001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
3483
3484 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
3485 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
3486 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
3487 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
3488 scm_list_<n> over scm_cons[2]?.
3489
3490 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
3491 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
3492 SCM_C[AD][AD]R instead of explicit form.
3493
3494 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
3495 comparison parameters.
3496
3497 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
3498 !SCM_NULLP instead of SCM_NIMP.
3499
3500 (scm_m_case): Don't copy the form. Renamed proc to clause and
3501 minimized its scope. Renamed x to clauses. Removed side
3502 effecting operation from macro call.
3503
3504 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
3505 minimized its scope. Renamed x to clauses. Minimized the scope
3506 of variable 'len'. Make sure the else clause is treated specially
3507 even in case of '=>' occurences. Don't change the else to #t in
3508 order to be able to distinguish this case in the evaluator. Leave
3509 type checking of the recipient to the evaluator.
3510
3511 (scm_c_improper_memq): Made the comment somewhat clearer.
3512
3513 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
3514 test for SCM_IM_LET at the place of the formal parameters.
3515 Simplified the formal parameter checking.
3516
3517 (scm_m_letstar): Added Comment. Renamed proc to bindings.
3518 Renamed arg1 to binding and minimized its scope. Eliminated
3519 unnecessary consing.
3520
3521 (scm_m_do): Renamed proc to bindings. Minimized the scope of
3522 variable 'len'.
3523
3524 (build_binding_list): New static function.
3525
3526 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
3527 Further, split up the 'letrec' unmemoizing code to the
3528 corresponding parts for 'do', 'let' and 'letrec', adding comments
3529 to each form. Cleanup the handling of the do form (This removes
3530 some *real* code :-).
3531
3532 (SCM_CEVAL): Removed side effecting operation from macro call.
3533 Handle the 'else clause of the 'cond form specially - the symbol
3534 'else is not replaced with #t any more.
3535
3536 2001-10-14 Gary Houston <ghouston@arglist.com>
3537
3538 * version.c (scm_version): use sprintf instead of snprintf,
3539 for portability. thanks to Bill Schottstaedt.
3540
3541 2001-10-14 Mikael Djurfeldt <mdj@linnaeus>
3542
3543 * read.c (scm_lreadr): When user-defined hash procedure returns
3544 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
3545 an exception. (This prevents parsing of uniform vectors from
3546 interfering with parsing of numbers.)
3547
3548 2001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
3549
3550 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
3551 PTRDIFF_MIN. Thanks to Ken Raeburn.
3552
3553 2001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
3554
3555 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
3556
3557 * eval.c (scm_m_atbind): First try to find the variable without
3558 defining it locally; when it has not been found, define it
3559 locally.
3560
3561 * modules.c (module_variable): Pass over variables that exist but
3562 are unbound.
3563
3564 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
3565
3566 * backtrace.c (display_backtrace_file_and_line): Only use
3567 scm_basename when POSIX support is compiled in. Thanks to Chris
3568 Cramer.
3569
3570 2001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
3571
3572 * numbers.c (mem2uinteger): Return number read so far when coming
3573 across a hexdigit after having read a # or if not reading a hex
3574 value. This will enable the calling code to correctly handle
3575 forms like 1e2. (The background is, that the exponent markers d,
3576 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
3577 providing this patch.
3578
3579 (mem2complex): Fix erroneous double-negation. Now, numbers like
3580 1-i will be read correctly.
3581
3582 2001-10-12 Mikael Djurfeldt <mdj@linnaeus>
3583
3584 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
3585
3586 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
3587
3588 2001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
3589
3590 * print.c (scm_print_state_vtable, print_state_pool):
3591 Initialize. These variables are now registered as gc roots.
3592
3593 (scm_current_pstate): Update documentation.
3594
3595 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
3596 scm_prin1, scm_init_print): print_state_pool is registered as a
3597 gc root and thus does not need to be protected by a surrounding
3598 pair any more.
3599
3600 (make_print_state): The car of print_state_pool no longer holds
3601 the scm_print_state_vtable.
3602
3603 (scm_current_pstate, scm_make_print_state, print_circref,
3604 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
3605 SCM_N<foo>.
3606
3607 (scm_prin1): When building lists, prefer scm_list_<n> over
3608 scm_cons[2]?.
3609
3610 (scm_iprlist): Removed a redundant SCM_IMP test.
3611
3612 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
3613
3614 2001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
3615
3616 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
3617
3618 (scm_memcons, scm_mem_to_proc): When building lists, prefer
3619 scm_list_<n> over scm_cons[2]?.
3620
3621 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
3622
3623 (scm_procedure_name): Use SCM_CADR instead of explicit form.
3624
3625 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
3626 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
3627 for some reason his patch didn't make it into the cvs.
3628
3629 2001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
3630
3631 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
3632 little bit - should even be somewhat more accurate now.
3633
3634 2001-10-08 Rob Browning <rlb@defaultvalue.org>
3635
3636 * gc.c: support ia64 register backing store.
3637 (SCM_MARK_BACKING_STORE): new macro.
3638
3639 * continuations.h: support ia64 register backing store.
3640 (struct scm_t_contregs): add ia64 register backing store.
3641
3642 * continuations.c: support ia64 register backing store.
3643 (continuation_mark): mark ia64 register backing store.
3644 (continuation_free): free ia64 register backing store.
3645 (scm_make_continuation): capture ia64 register backing store.
3646 (copy_stack_and_call): copy ia64 register backing store.
3647
3648 2001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
3649
3650 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
3651 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
3652 instead of SCM_NIMP to test for that case.
3653
3654 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
3655 scm_t_bits instead of long.
3656
3657 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
3658
3659 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
3660 SCM_T_SIGNED_BITS_MIN): New.
3661 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
3662 Use them to make these macros computable by the preprocessor.
3663
3664 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
3665 whether the integral type fits in a fixnum, not the compiler.
3666 This removes a spurious compiler warning. Also, honor the
3667 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
3668 needed for `long long's.
3669
3670 * numbers.c: Define NO_PREPRO_MAGOC when including
3671 num2integral.c.i for `long long' and `signed long long'.
3672
3673 2001-10-06 Mikael Djurfeldt <mdj@linnaeus>
3674
3675 These changes fixes a race condition in the Guile coop - pthread
3676 compatibility code.
3677
3678 * coop.c (mother_awake_p): New variable.
3679 (coop_create): Set mother_awake_p before creating or signalling
3680 mother; wait until mother is going to sleep before returning.
3681 (mother): Reset mother_awake_p before going to sleep.
3682
3683 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
3684
3685 * options.c (protected_objects, scm_init_options): The content of
3686 protected_objects is now protected from garbage collection using
3687 scm_gc_register_root instead of scm_permanent_object.
3688
3689 (get_option_setting): New static function that computes an option
3690 setting as it was formerly done in the function scm_options.
3691
3692 (get_documented_option_setting): New static function that
3693 returns option documentation as it was formerly done in the
3694 function scm_options. Note that documentation C strings are no
3695 longer precomputed into SCM objects. Instead, they are converted
3696 into SCM strings every time get_documented_option_setting is
3697 called.
3698
3699 (change_option_setting): New static functions that modifies the
3700 option setting as it was formerly done in the function
3701 scm_options. The function is now exception safe, i. e. won't
3702 cause a memory leak when interrupted. Further, only non-immediate
3703 option values are added to the protection list.
3704
3705 (scm_options): This function now has only the purpose to dispatch
3706 to to get_option_setting, get_documented_option_setting or
3707 change_option_setting, depending on the arguments given to
3708 scm_options.
3709
3710 (scm_init_opts): Don't convert documentation C strings into SCM
3711 strings. Further, don't protect any object values: They _must_
3712 be immediate values, otherwise there is no guarantee that they
3713 have not been collected before anyway.
3714
3715 * options.[ch] (scm_t_option): Made type unsigned, name into a
3716 constant char* and val into a scm_t_bits type.
3717
3718 (scm_options, scm_init_opts): The number of options is guaranteed
3719 to be larger or equal to zero. Thus, the type is changed to
3720 unsigned.
3721
3722 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
3723
3724 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
3725 testing an unsigned value for being >= 0.
3726
3727 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
3728
3729 * numbers.h: Removed old comment about using SCM_CAR to access
3730 non-pair cells.
3731
3732 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
3733 the return value is signed. Thanks to Brian Crowder for the bug
3734 report.
3735
3736 (SCM_SRS): Avoid unnecessary casting and don't unpack input
3737 values. With this patch, SCM_SRS can be safely used for other
3738 types than scm_t_signed_bits. However, it should still better be
3739 an internal macro and thus be renamed to SCM_I_SRS.
3740
3741 (SCM_MAKINUM, SCM_INUM): Use proper casting.
3742
3743 2001-10-03 Gary Houston <ghouston@arglist.com>
3744
3745 * continuations.h, unif.h: in the descriptions of the bit patterns
3746 of the heap cells, make bit 0 the least significant.
3747
3748 2001-09-25 Thien-Thi Nguyen <ttn@glug.org>
3749
3750 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
3751 Thanks to Golubev I. N.
3752
3753 2001-09-25 Gary Houston <ghouston@arglist.com>
3754
3755 * ports.c (scm_drain_input): extended the docstring. thanks to
3756 Alex Schroeder and Thien-Thi Nguyen.
3757
3758 2001-09-23 Mikael Djurfeldt <mdj@linnaeus>
3759
3760 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
3761 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
3762 macros. (The NUM names might soon change.)
3763
3764 * numbers.h: Added missing declarations.
3765
3766 2001-09-22 Mikael Djurfeldt <mdj@linnaeus>
3767
3768 * Makefile.am: Distribute num2float.i.c.
3769
3770 * num2float.i.c: New file, multiply included by numbers.c, used
3771 to "templatize" the float <-> num conversion routines.
3772
3773 * numbers.c: New functions: scm_num2float, scm_float2num,
3774 scm_num2double, scm_double2num.
3775
3776 2001-09-21 Rob Browning <rlb@defaultvalue.org>
3777
3778 * .cvsignore: really add version.h
3779
3780 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
3781 Otherwise it fails on the alpha. However, we might rather choose
3782 this size conditionally.
3783
3784 * numbers.c (scm_gcd): change "k" to a long from an int.
3785 Otherwise it fails on the alpha. However, we might rather choose
3786 this size conditionally.
3787
3788 * error.c (scm_wta): coerce char* to intptr_t before int
3789 assignment.
3790
3791 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
3792 int.
3793
3794 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
3795
3796 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
3797
3798 * numbers.c (scm_integer_expt): Accept inexact integer in second
3799 argument. (Thanks to Bill Schottstaedt.)
3800
3801 2001-09-20 Rob Browning <rlb@defaultvalue.org>
3802
3803 * .cvsignore: add version.h
3804
3805 * versiondat.h.in: removed (obsolete).
3806
3807 * version.h.in: renamed from version.h.
3808 (SCM_GUILE_MAJOR_VERSION): new public macro.
3809 (SCM_GUILE_MINOR_VERSION): new public macro.
3810 (SCM_GUILE_MICRO_VERSION): new public macro.
3811
3812 * version.h: renamed to version.h.in.
3813
3814 * version.c
3815 (scm_major_version): support integer *_VERSION macros.
3816 (scm_minor_version): support integer *_VERSION macros.
3817 (scm_micro_version): support integer *_VERSION macros.
3818 (scm_version): support integer *_VERSION macros.
3819
3820 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
3821
3822 * error.c, error.h: Made error keys globally accessible.
3823 Applications might want to test for these or use them in a direct
3824 call to scm_error.
3825
3826 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
3827 routines are passed an inexact. This change in behavior is
3828 motivated by concordance with R5RS: It is more common that a
3829 primitive doesn't want to accept an inexact for an exact.
3830
3831 2001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
3832
3833 The following patch partially undoes my patch from 2001-06-30,
3834 where I added the function scm_gc_mark_cell_conservatively. The
3835 function is buggy, since it breaks guile during conservative
3836 marking if a pointer on the stack points directly into the list of
3837 free cells on the heap: With conservative cell marking this will
3838 cause the whole free list to be scanned and marked - boom!
3839
3840 * gc.c (allocated_mark, MARK, heap_segment,
3841 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
3842 (scm_gc_mark_cell_conservatively): Remove function
3843 scm_gc_mark_cell_conservatively and update the corresponding
3844 comments and uses accordingly. Thanks to Christopher Cramer for
3845 the patch. (Minor corrections by me.)
3846
3847 2001-09-15 Gary Houston <ghouston@arglist.com>
3848
3849 * root.h (scm_root_state): removed the continuation_stack and
3850 continuation_stack_ptr members, which have no apparent purpose.
3851 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
3852 removed.
3853
3854 * root.c (root_mark), init.c (restart_stack, start_stack), gc
3855 (scm_igc): remove all references to contination_stack and
3856 continuation_stack_ptr, avoiding allocation of a vector and
3857 useless processing during gc.
3858
3859 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
3860
3861 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
3862
3863 (TCONC_IN): Make sure that the cell word 0 is initialized last.
3864
3865 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
3866
3867 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
3868
3869 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
3870 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
3871
3872 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
3873
3874 * guardians.c (mark_dependencies_in_tconc,
3875 whine_about_self_centered_zombies, scm_init_guardians): Register
3876 the static global variable `self_centered_zombies' via
3877 scm_gc_register_root, to make some cdr-ing unnecessary.
3878
3879 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
3880
3881 * backtrace.c (display_backtrace_file,
3882 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
3883 values, use SCM_FALSEP when comparing SCM values against #f.
3884 Thanks to Rob Browning for the bug report.
3885
3886 2001-09-12 Martin Baulig <martin@home-of-linux.org>
3887
3888 * strings.[ch] (scm_str2string): New function.
3889
3890 2001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
3891
3892 * gc.c (scm_done_free): Always subtract size from scm_mallocated
3893 when computing nm, even if it's negative.
3894 (scm_must_malloc): Abort on overflow of scm_mtrigger.
3895 (scm_must_realloc): Likewise.
3896
3897 2001-09-01 Michael Livshin <mlivshin@bigfoot.com>
3898
3899 * numbers.c (scm_sys_check_number_conversions): new function,
3900 defined if Guile is compiled in debugging mode. currently checks
3901 `scm_num2ulong', should check much much more.
3902
3903 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
3904 unsigned, ensure that it's positive. thanks to Martin Baulig!
3905
3906 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
3907
3908 * __scm.h: Added new section about compile time selectable
3909 features.
3910
3911 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
3912 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
3913 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
3914 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
3915 Removed.
3916
3917 * deprecation.c (scm_include_deprecated_features): Simplified.
3918
3919 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
3920 `SCM_IMP´ instead of `!SCM_CELLP´.
3921
3922 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
3923 Extract side-effecting operations from macros.
3924
3925 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
3926 scm_top_level_lookup_closure_var and scm_system_transformer.
3927
3928 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
3929
3930 (heap_segment): Use CELL_P instead of SCM_CELLP.
3931
3932 * init.c (start_stack): Don't initialize
3933 scm_top_level_lookup_closure_var and scm_system_transformer.
3934
3935 * modules.c (scm_set_current_module): Don't access
3936 scm_top_level_lookup_closure_var and scm_system_transformer.
3937
3938 (scm_sym2var): Don't call scm_variable_set_name_hint.
3939
3940 (scm_post_boot_init_modules): Removed deprecated initializations.
3941
3942 * print.c (scm_ipruk): Don't access cell contents of non cells.
3943
3944 * strings.c (scm_string_set_x): All strings are writable.
3945
3946 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
3947 type. There is only one string type now.
3948
3949 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
3950
3951 * tags.h: Remove comments about two different string types.
3952
3953 (SCM_CELLP, SCM_NCELLP): Deprecated.
3954
3955 * variable.c (make_variable): Remove code variant for vcells.
3956
3957 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
3958 SCM_VARIABLE_LOC): Remove code variant for vcells.
3959
3960 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
3961 SCM_ENABLE_DEPRECATED with the logic reversed.
3962
3963 * dynl.c (moddata, registered_mods), dynl.[ch]
3964 (scm_register_module_xxx, scm_registered_modules,
3965 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
3966 (*top-level-lookup-closure*), eval.[ch]
3967 (scm_top_level_lookup_closure_var, scm_system_transformer,
3968 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
3969 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
3970 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
3971 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
3972 scm_unprotect_object), modules.c (root_module_lookup_closure,
3973 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
3974 beautify_user_module_x_var, try_module_autoload_var,
3975 scm_module_full_name), modules.[ch] (scm_the_root_module,
3976 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
3977 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
3978 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
3979 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
3980 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
3981 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
3982 scm_make_shared_substring), tags.h (scm_tc7_substring,
3983 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
3984 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
3985 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
3986 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
3987 Removed.
3988
3989 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
3990 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
3991 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
3992 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
3993 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
3994 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
3995 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
3996 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
3997 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
3998 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
3999 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
4000 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
4001 (setzone, scm_strftime, scm_strptime), vports.c
4002 (scm_make_soft_port): Remove calls to
4003 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
4004 gone, all strings are 0-terminated anyway.
4005
4006 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
4007 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
4008 double inclusion of the same headers to the SCM_<filename>_H
4009 format.
4010
4011 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
4012 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
4013 print.c (scm_iprin1): The type scm_tc7_substring does not exist
4014 any more.
4015
4016 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
4017 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
4018 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
4019 !SCM_<foo> over SCM_N<foo>.
4020
4021 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
4022
4023 * Makefile.am: Remove references to symbols-deprecated.c.
4024
4025 * symbols.c (scm_init_symbols): Don't initialize deprecated
4026 symbol functions.
4027
4028 * symbols-deprecated.c: Removed.
4029
4030 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
4031 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
4032 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
4033 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
4034 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
4035 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
4036 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
4037 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
4038 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
4039 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
4040 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
4041 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
4042 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
4043 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
4044 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
4045 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
4046 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
4047 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
4048 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
4049 scm_intern0, scm_sysintern, scm_sysintern0,
4050 scm_sysintern0_no_module_lookup, scm_symbol_value0,
4051 scm_string_to_obarray_symbol, scm_intern_symbol,
4052 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
4053 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
4054 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
4055 vectors.[ch] (scm_vector_set_length_x): Removed.
4056
4057 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
4058 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
4059 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
4060 Renamed the macros that are defined to inhibit double inclusion of
4061 the same headers to the SCM_<filename>_H format.
4062
4063 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
4064 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
4065 SCM_N<foo>.
4066
4067 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
4068
4069 * continuations.h (scm_contregs), debug.h (scm_debug_info,
4070 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
4071 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
4072 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
4073 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
4074 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
4075 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
4076 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
4077 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
4078 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
4079 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
4080 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
4081
4082 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
4083 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
4084 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
4085 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
4086 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
4087 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
4088 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
4089 double inclusion of the same headers to the SCM_<filename>_H
4090 format.
4091
4092 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
4093 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
4094 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
4095 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
4096 !SCM_<foo> over SCM_N<foo>.
4097
4098 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
4099
4100 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
4101 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
4102 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
4103 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
4104 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
4105 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
4106 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
4107 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
4108 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
4109 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
4110 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
4111 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
4112 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
4113 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
4114 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
4115 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
4116 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
4117 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
4118 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
4119 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
4120 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
4121 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
4122 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
4123 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
4124 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
4125 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
4126 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
4127 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
4128 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
4129 the macros that are defined to inhibit double inclusion of the
4130 same headers to the SCM_<filename>_H format.
4131
4132 2001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
4133
4134 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
4135 "scm_t_portable" with "scm_port_table" which was an artifact from
4136 the great "scm_*_t -> scm_t_" renaming.
4137
4138 2001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
4139
4140 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
4141 used; nfc. Thanks to Bill Schottstaedt.
4142
4143 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
4144 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
4145 Thanks to Chris Cramer.
4146
4147 2001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
4148
4149 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
4150
4151 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
4152 dynamic scope.
4153 * dynwind.h (scm_swap_bindings): Declare.
4154 * dynwind.c (scm_swap_bindings): Make non-static.
4155
4156 2001-08-25 Michael Livshin <mlivshin@bigfoot.com>
4157
4158 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
4159 doing exactly nothing about them). thanks Neil!
4160
4161 2001-08-18 Neil Jerram <neil@ossau.uklinux.net>
4162
4163 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
4164
4165 2001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
4166
4167 * gc.c: Fix omission bug: Add `heap_segment' forward decl
4168 (proto) in the case when either `GUILE_DEBUG' or
4169 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
4170
4171 (map_free_list): Fix typo: Ref `f' correctly.
4172
4173 Thanks to Chris Cramer.
4174
4175 2001-08-15 Rob Browning <rlb@defaultvalue.org>
4176
4177 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
4178 variables.
4179 (libpath.h): change libguileversion to libguileinterface.
4180
4181 2001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
4182
4183 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
4184 ChangeLog-2000. Thanks to Daniel Skarda!
4185
4186 2001-08-07 Michael Livshin <mlivshin@bigfoot.com>
4187
4188 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
4189 do it from the Makefile.
4190
4191 * Makefile.am: rearrange the snarfing slightly, so that .doc files
4192 are of a reasonable size.
4193
4194 2001-08-02 Neil Jerram <neil@ossau.uklinux.net>
4195
4196 * stacks.c (scm_make_stack): Improve docstring by explaining use
4197 of cutting args.
4198
4199 2001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
4200
4201 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
4202 scm_char_whitespace_p, scm_char_upper_case_p,
4203 scm_char_lower_case_p, scm_char_is_both_p): Do not require
4204 characters to fulfill isascii in addition to the primary
4205 predicate.
4206
4207 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4208
4209 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
4210 scm_istr2flo, scm_istring2number): Removed.
4211
4212 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
4213 SCM_SLOPPY_<foo>.
4214
4215 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
4216 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
4217 Added.
4218
4219 (scm_string_to_number): Use new number parser.
4220
4221 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
4222 handles complex numbers.
4223
4224 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
4225 SCM_<foo>_H.
4226
4227 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
4228 SCM_N<pred>.
4229
4230 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
4231
4232 (scm_i_mem2number): Added.
4233
4234 (scm_exact_to_inexact): Changed signature.
4235
4236 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
4237 here instead of within scm_i_mem2number. Call scm_i_mem2number
4238 instead of scm_istr2int and scm_istring2number.
4239
4240 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4241
4242 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
4243 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
4244 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
4245 !SCM_<pred> over SCM_N<pred>.
4246
4247 (scm_eval_body): Remove side effecting code from macro call.
4248
4249 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
4250 SCM_NIMP test.
4251
4252 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4253
4254 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
4255
4256 2001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
4257
4258 Removed vcell slot from structs.
4259
4260 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
4261 subsequent indices.
4262
4263 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
4264 zero. Use scm_vtable_index_layout instead of "0" when accessing
4265 said slot.
4266 (scm_init_struct): Remove vcell slot layout code from
4267 required_vtable_fields.
4268
4269 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
4270
4271 * goops.c (build_class_class_slots): Removed vcell slot
4272 definition.
4273
4274 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
4275 Removed vcell slot layout code.
4276 (scm_si_vcell): Removed.
4277
4278 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
4279
4280 "Glocs" have been removed.
4281
4282 * tags.h: Update tag system docs.
4283 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
4284 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
4285 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
4286 or SCM_NCONSP, respectively.
4287
4288 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
4289 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
4290 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
4291
4292 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
4293 tell glocs from structs.
4294
4295 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
4296
4297 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
4298 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
4299 instead of with glocs.
4300 (EVALCAR): Do not test for glocs.
4301 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
4302 condition.
4303 (scm_unmemocar): Do not handle glocs.
4304 (scm_m_atfop): Memoize as a variable, not as a gloc.
4305 (scm_eval_args, scm_deval_args): Do not handle glocs.
4306 (scm_ceval, scm_deval): Likewise.
4307
4308 * eval.h (SCM_XEVALCAR): Do not test for glocs.
4309 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
4310 Removed.
4311
4312 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
4313
4314 * dynwind.c (scm_swap_bindings): Likewise.
4315 (scm_dowinds): Updated to recognize lists of variables instead of
4316 lists of glocs.
4317
4318 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
4319
4320
4321 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
4322 where it is needed.
4323
4324 2001-07-25 Gary Houston <ghouston@arglist.com>
4325
4326 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
4327 docstrings to reflect the n-ary implementation.
4328
4329 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
4330
4331 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
4332 value of a variable, not the plain "return" statement.
4333
4334 2001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
4335
4336 * eval.c: Allow variables in memoized code (in addition to glocs).
4337 (scm_lookupcar): Handle variables in lost races. Replace symbol
4338 with variable directly, do not make a gloc.
4339 (scm_unmemocar): Rewrite variables using a reverse lookup, just
4340 like glocs.
4341 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
4342 the main switch.
4343
4344 2001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4345
4346 * variable.c (scm_i_variable_print): Use "value" instead of
4347 "binding" since a binding is the mapping between symbols and
4348 variables, not between variables and their values.
4349
4350 * tags.h (scm_tc7_variable): New.
4351 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
4352 * print.c (scm_iprin1): Likewise.
4353
4354 * variable.h (scm_tc16_variable): Removed.
4355 (SCM_VARIABLEP): Test for new tc7 code.
4356 (scm_i_variable_print): New.
4357 * variable.c (scm_tc16_variable): Removed.
4358 (variable_print): Renamed to scm_i_variable_print and made
4359 non-static.
4360 (variable_equal_p): Removed.
4361 (make_variable): Construct a tc7 object instead of a smob.
4362 (scm_init_variable): Do not register smob.
4363
4364 2001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
4365
4366 * tags.h: Include inttypes.h when we have it.
4367
4368 2001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
4369
4370 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
4371 is taken by the new SCM_IM_CALL_WITH_VALUES.
4372 * print.c (scm_isymnames): Update table accordingly.
4373
4374 2001-07-22 Gary Houston <ghouston@arglist.com>
4375
4376 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
4377 SCM_MAKINUM to convert regoff_t value to SCM.
4378
4379 2001-07-21 Gary Houston <ghouston@arglist.com>
4380
4381 * scmsigs.c: include sys/time.h for itimer stuff.
4382
4383 2001-07-19 Rob Browning <rlb@defaultvalue.org>
4384
4385 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
4386
4387 * c-tokenize.lex: add option %nounput to quiet warning.
4388 Add prototype for yylex to quiet warning.
4389
4390 * scmconfig.h.in: add flags for setitimer and getitimer.
4391
4392 * scmsigs.h (scm_init_scmsigs): new prototype.
4393 (scm_init_scmsigs): new prototype.
4394
4395 * scmsigs.c (s_scm_setitimer): new function.
4396 (s_scm_setitimer): new function.
4397
4398 2001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4399
4400 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
4401 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
4402 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
4403 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
4404 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
4405 guile-func-name-check.in, guile-snarf-docs-texi.in,
4406 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
4407 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
4408 objprop.c, objprop.h, options.c, options.h, random.h,
4409 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
4410 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
4411 version.c, version.h: Updated copyright notice.
4412
4413 2001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
4414
4415 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
4416 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
4417 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
4418 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
4419 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
4420 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
4421 sym_environment, scm_sym_change_class): New static variables to
4422 hold predefined symbols.
4423
4424 (build_class_class_slots): Build the list using scm_list_n
4425 instead of cons. Also, slots are already created as lists, thus
4426 making a call to maplist unnecessary.
4427
4428 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
4429 scm_class_direct_subclasses, scm_class_direct_methods,
4430 scm_class_precedence_list, scm_class_slots, scm_class_environment,
4431 scm_method_procedure, create_standard_classes, purgatory): Use
4432 predefined symbols.
4433
4434 (build_slots_list, compute_getters_n_setters,
4435 scm_sys_initialize_object, scm_sys_inherit_magic_x,
4436 get_slot_value_using_name, set_slot_value_using_name,
4437 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
4438 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
4439 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
4440
4441 (scm_sys_prep_layout_x): Minimize variable scopes.
4442
4443 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
4444 scm_sys_fast_slot_set_x): Fix signedness.
4445
4446 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
4447 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
4448 scm_memoize_method, scm_wrap_object): Use packing and unpacking
4449 when converting to and from SCM values.
4450
4451 (scm_enable_primitive_generic_x): Add rest argument checking.
4452
4453 (map, filter_cpl, maplist, scm_sys_initialize_object,
4454 scm_sys_prep_layout_x, slot_definition_using_name,
4455 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
4456 call_memoize_method, scm_make, scm_make_class): Prefer explicit
4457 predicates over SCM_N?IMP tests.
4458
4459 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
4460 checking.
4461
4462 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
4463 alias.
4464
4465 2001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4466
4467 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
4468
4469 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
4470
4471 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
4472
4473 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
4474
4475 2001-07-12 Michael Livshin <mlivshin@bigfoot.com>
4476
4477 * strings.c (s_scm_string): fix arg position in assert.
4478
4479 2001-07-11 Gary Houston <ghouston@arglist.com>
4480
4481 * strports.c (st_write): use memcpy, not strncpy. thanks to
4482 Dale P. Smith.
4483
4484 2001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
4485
4486 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
4487 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
4488 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
4489 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
4490 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
4491 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
4492 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
4493 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
4494 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
4495 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
4496 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
4497 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
4498 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
4499 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
4500 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
4501 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
4502 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
4503 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
4504 weaks.c, weaks.h: Remove "face-lift" comment.
4505
4506 2001-07-08 Rob Browning <rlb@defaultvalue.org>
4507
4508 * .cvsignore: add stamp-h.in.
4509
4510 2001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4511
4512 * hooks.c (scm_make_hook, scm_add_hook_x),
4513 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
4514 value info to the docstrings.
4515
4516 2001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4517
4518 Some more compatibility patches for Windows.
4519
4520 * posix.c (getlogin): getlogin() implementation for Windows.
4521
4522 * backtrace.c, ioext.c: Include <stdio.h>.
4523
4524 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
4525 exist.
4526
4527 * cpp_sig_symbols.in: Added SIGBREAK.
4528
4529 2001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
4530
4531 * strports.c (scm_read_0str, scm_eval_0str): Call
4532 scm_c_read_string and scm_c_eval_string respectively, not
4533 themselves. Thanks to Dale P. Smith!
4534
4535 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4536
4537 * unif.c (scm_array_set_x): The variable args does not
4538 necessarily have to be a list. Further, got rid of a redundant
4539 SCM_NIMP test.
4540
4541 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4542
4543 * list.c (SCM_I_CONS): Make sure the cell type is initialized
4544 last.
4545
4546 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
4547 init_heap_seg): Fixed signedness.
4548
4549 (init_heap_seg): Replaced strange for-loop with a while loop.
4550
4551 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
4552
4553 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
4554
4555 The following patch adds conservative marking for the elements of
4556 free or allocated cells.
4557
4558 * gc.c (allocated_mark, heap_segment): New static functions.
4559
4560 (which_seg): Deleted, since the functionality is now provided by
4561 function heap_segment.
4562
4563 (map_free_list): Use heap_segment instead of which_seg.
4564
4565 (MARK): If cell debugging is disabled, mark free cells
4566 conservatively.
4567
4568 (scm_mark_locations, scm_cellp): Extracted the search for the
4569 heap segment of a SCM value into function heap_segment.
4570
4571 (scm_init_storage): Allocated cells must be marked
4572 conservatively.
4573
4574 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
4575
4576 The following patch changes the representation of weak vectors to
4577 double cells instead of using an extension of the vector's
4578 allocated memory.
4579
4580 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
4581 the result of SCM_WVECT_GC_CHAIN.
4582
4583 (scm_gc_sweep): Weak vectors don't have extra fields any more.
4584
4585 * weaks.c (allocate_weak_vector): New static function. It does
4586 not patch any previously created vector object during the
4587 construction of a weak vector, and thus doesn't need to switch
4588 off interrupts during vector creation.
4589
4590 (scm_make_weak_vector, scm_make_weak_key_hash_table,
4591 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
4592 Use allocate_weak_vector to provide the new weak vector object.
4593
4594 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
4595 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
4596 now stored in the double cell.
4597
4598 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
4599 Use SCM_WVECT_TYPE.
4600
4601 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
4602 using an entry of the double cell.
4603
4604 2001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
4605
4606 * stamp-h.in: bye bye
4607
4608 2001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
4609
4610 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
4611 scm_eval_0str.
4612
4613 * load.c, load.h (scm_c_primitive_load,
4614 scm_c_primitive_load_path): New.
4615
4616 * strports.c, strports.h (scm_c_read_string): Renamed from
4617 scm_read_0str. Also, added "const" qualifier to argument.
4618 (scm_c_eval_string): Renamed from scm_eval_0str.
4619 (scm_read_0str, scm_eval_0str): Deprecated.
4620
4621 2001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4622
4623 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
4624 SCM_LIST1.
4625
4626 2001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
4627
4628 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
4629 scm_list_n): New functions.
4630 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
4631 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
4632 (lots of files): Use the new functions.
4633
4634 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
4635
4636 * strings.c: #include "libguile/deprecation.h".
4637
4638 2001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4639
4640 * read.c (scm_lreadr): When reading a hash token, check for a
4641 user-defined hash procedure first, so that overriding the builtin
4642 hash characters is possible (this was needed for implementing
4643 SRFI-4's read synax `f32(...)').
4644
4645 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
4646 because the latter is unsigned now and breaks comparisons like
4647 (n < (scm_t_signed_bits)MIN_VALUE).
4648
4649 2001-06-26 Neil Jerram <neil@ossau.uklinux.net>
4650
4651 * eval.h, eval.c (scm_call_4): New function.
4652
4653 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
4654 directly rather than dispatching to them via scm_ithrow and a lazy
4655 catch.
4656
4657 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
4658 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
4659 for trap handler procedures.
4660
4661 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
4662 procedures not being #f.
4663
4664 2001-06-27 Michael Livshin <mlivshin@bigfoot.com>
4665
4666 * Makefile.am (c-tokenize.c): add rule to generate it.
4667 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
4668
4669 filter-doc-snarfage.c: remove.
4670
4671 2001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4672
4673 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
4674
4675 The following set of changes makes compiling Guile under various
4676 Windows compilers easier. Compilation under GNU systems should
4677 not be affected at all.
4678
4679 Thanks to Stefan Jahn for all necessary information, patches and
4680 testing.
4681
4682 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
4683 getpgrp, ttyname, primitive-fork and some header inclusion for
4684 Windows.
4685
4686 * random.c: Define M_PI, if not predefined and use __int64 for
4687 LONG64 under Windows.
4688
4689 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
4690 Windows and conditionalize some signal names.
4691
4692 * socket.c (scm_getsockopt): Added missing comma.
4693 Include socket library header under Windows.
4694
4695 * stime.c (CLKTCK): Add cast to int, to make it compile under
4696 Windows.
4697
4698 * ports.c (truncate): New function, compiled only under Windows.
4699
4700 * net_db.c: Do not declare errno under Windows.
4701
4702 * iselect.h, inet_aton.c: Include socket library headers under
4703 Windows.
4704
4705 * guile.c (inner_main): Under Windows, initialize socket library
4706 and initialize gdb_interface data structures.
4707
4708 * gdb_interface.h: Under Windows, gdb_interface cannot be
4709 initialized statically. Initialize at runtime instead.
4710
4711 * fports.c (write_all): ssize_t -> size_t.
4712 (fport_print): Conditionalize call to ttyname().
4713 (getflags): New function, compiled only under Windows.
4714
4715 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
4716 primitives chown, link, fcntl.
4717 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
4718 as path seperator.
4719
4720 * backtrace.c: Include <io.h> under Windows.
4721
4722 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
4723
4724 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
4725 declaration.
4726
4727 2001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
4728
4729 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
4730 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
4731 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
4732 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
4733 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
4734 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
4735 (scm_dynamic_wind, scm_dowinds), environments.c
4736 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
4737 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
4738 goops.c (GETVAR, purgatory, make_class_from_template,
4739 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
4740 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
4741 (scm_primitive_load), modules.c (scm_resolve_module,
4742 scm_c_define_module, scm_c_use_module, scm_c_export,
4743 module_variable, scm_eval_closure_lookup, scm_sym2var,
4744 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
4745 ports.c (scm_port_for_each), print.c (scm_printer_apply),
4746 properties.c (scm_primitive_property_ref), ramap.c (ramap,
4747 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
4748 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
4749 (scm_object_to_string, scm_call_with_output_string,
4750 scm_call_with_input_string), throw.c (scm_body_thunk,
4751 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
4752 scm_make_shared_array), vports.c (sf_flush, sf_write,
4753 sf_fill_input, sf_close): Use one of the above functions.
4754 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
4755
4756 2001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
4757
4758 * filesys.c (scm_close), ports.c (scm_close_port,
4759 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
4760 instead of SCM_NEGATE_BOOL.
4761
4762 * filesys.c (scm_stat): Clean up type dispatch.
4763
4764 * filesys.c (scm_stat), ports.c (scm_input_port_p,
4765 scm_output_port_p): Get rid of redundant IM type check.
4766
4767 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
4768 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
4769 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
4770 scm_return_entry), numbers.c (scm_number_to_string), objects.c
4771 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
4772 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
4773 scm_addr_vector), stime.c (scm_strftime), strings.c
4774 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
4775 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
4776 scm_string_split), strports.c (scm_strport_to_string), symbols.c
4777 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
4778 instead of scm_makfromstr.
4779
4780 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
4781 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
4782 scm_read_hash_extend), stime.c (scm_strftime), strings.c
4783 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
4784 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
4785 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
4786 !SCM_<pred> over SCM_N<pred>.
4787
4788 * strings.[ch] (scm_makfromstr): Deprecated.
4789
4790 (scm_mem2string): New function, replaces scm_makfromstr.
4791
4792 * strings.c (scm_substring), strop.c (string_copy,
4793 scm_string_split), strports.c (scm_strport_to_string), symbols.c
4794 (scm_symbol_to_string): Fix gc problem.
4795
4796 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
4797 SCM_<foo>_H.
4798
4799 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
4800 warning about comparing signed and unsigned values. This fix is
4801 not optimal, since it won't work reliably if sizeof (c_start) >
4802 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
4803 solution is to define this macro as an inline function, thus
4804 allowing to specifiy the types of c_start and c_end.
4805
4806 2001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
4807
4808 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
4809 scm_t_debug_frame*.
4810
4811 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
4812 Rename <foo>H to SCM_<foo>_H.
4813
4814 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
4815 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
4816
4817 (narrow_stack): Make i unsigned. Don't use side-effecting
4818 operations in conditions.
4819
4820 (narrow_stack, scm_make_stack, scm_stack_id,
4821 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
4822
4823 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
4824 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
4825 more.
4826
4827 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
4828 signedness.
4829
4830 (scm_last_stack_frame): Remove bogus `;´.
4831
4832 * stacks.h (SCM_FRAMEP): Fix type check.
4833
4834 2001-06-25 Michael Livshin <mlivshin@bigfoot.com>
4835
4836 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
4837 c-tokenize.c when doing maintainer-clean.
4838
4839 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
4840
4841 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
4842 simplify.
4843
4844 * eval.c: all hash signs are in column 0.
4845
4846 * Makefile.am (guile_filter_doc_snarfage): build using
4847 c-tokenize.c, not filter-doc-snarfage.c.
4848 rearrange snarfing dependencies a bit.
4849
4850 * c-tokenize.lex: new file.
4851
4852 2001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
4853
4854 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
4855 scm_t_srcpropso_plist. See the big type renaming.
4856 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
4857 Thanks to Seth Alves!
4858
4859 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
4860 they aren't defined already.
4861
4862 2001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
4863
4864 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
4865 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
4866 problem.
4867
4868 * backtrace.c (display_expression, scm_set_print_params_x,
4869 display_application, display_frame, scm_backtrace), numbers.c
4870 (scm_istring2number), objects.c (scm_class_of,
4871 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
4872 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
4873
4874 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
4875 always positive.
4876
4877 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
4878 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
4879
4880 * objects.c (scm_class_of): Type fix.
4881
4882 (scm_mcache_lookup_cmethod): Improved comment, simplified,
4883 eliminated goto.
4884
4885 * pairs.h (scm_error_pair_access): The function can return if
4886 called recursively.
4887
4888 2001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4889
4890 * init.c (scm_init_guile_1): Removed initialization of tag.c.
4891
4892 * gdbint.c, init.c: Removed inclusion of tag.h.
4893
4894 * tag.h, tag.c: Removed files.
4895
4896 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
4897
4898 2001-06-20 Gary Houston <ghouston@arglist.com>
4899
4900 * deprecation.c, extensions.c, rw.c: include string.h.
4901
4902 2001-06-19 Gary Houston <ghouston@arglist.com>
4903
4904 * filter-doc-snarfage.c (process): added ungetc in
4905 MULTILINE_COOKIE case since otherwise it fails when there's no
4906 space between the '(' and the quote of the following string
4907 (gcc 3.0).
4908
4909 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
4910
4911 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
4912
4913 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
4914
4915 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
4916 extension takes place.
4917 * strings.h (SCM_STRING_LENGTH): Likewise.
4918 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
4919
4920 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
4921 it.
4922
4923 * tags.h: Include <stdint.h> when we have it.
4924 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
4925 available. Else use "unsigned long".
4926 (scm_signed_bits_t): New.
4927
4928 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
4929 (SCM_INUM): Cast result to scm_signed_bits_t.
4930
4931 2001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
4932
4933 * mkstemp.c: Update path to #include file scmconfig.h.
4934 Thanks to Golubev I. N.
4935
4936 2001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
4937
4938 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
4939
4940 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\´ at the end of
4941 the macro definition.
4942
4943 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
4944 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
4945 instead of SCM_INST_TYPE.
4946
4947 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
4948 the object is a struct before accessing its struct flags.
4949
4950 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
4951
4952 2001-06-10 Gary Houston <ghouston@arglist.com>
4953
4954 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
4955 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
4956 work reliably anymore. try it from boot-9.scm instead.
4957
4958 2001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
4959
4960 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
4961 Thanks to Matthias Köppe!
4962
4963 2001-06-08 Michael Livshin <mlivshin@bigfoot.com>
4964
4965 * snarf.h, filter-doc-snarfage.c: more changes to cope with
4966 space-happy C preprocessors.
4967
4968 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
4969 inside cookies. thanks to Matthias Köppe!
4970
4971 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
4972
4973 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
4974 keywords. Fix gc protection.
4975
4976 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
4977 operations in macro calls.
4978
4979 * pairs.c (scm_error_pair_access): Avoid recursion.
4980
4981 Thanks to Matthias Koeppe for reporting the bugs that correspond
4982 to the following set of patches.
4983
4984 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
4985 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
4986 bitvector base address using SCM_BITVECTOR_BASE.
4987
4988 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
4989 unsigned long*.
4990
4991 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
4992
4993 * goops.c (SCM_CLASS_REDEF): Removed.
4994
4995 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
4996 SCM_<foo>_H.
4997
4998 Thanks to Matthias Koeppe for reporting the bugs that correspond
4999 to the following set of patches.
5000
5001 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
5002 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
5003 scm_sys_allocate_instance, clear_method_cache,
5004 scm_sys_invalidate_method_cache_x, scm_make,
5005 create_standard_classes, scm_make_port_classes, scm_make_class,
5006 scm_add_slot): Use SCM_SET_SLOT to set slot values.
5007
5008 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
5009
5010 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
5011
5012 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
5013 UNARY_ELTS_CODE): Remove bogus break statement.
5014
5015 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
5016 Don't access bit vectors elements as SCM objects.
5017
5018 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
5019 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
5020 Don't assign to an unpacked value.
5021
5022 2001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
5023
5024 * __scm.h (SCM_NORETURN): Moved here from error.h.
5025
5026 (SCM_UNUSED): New macro.
5027
5028 (SCM_DEBUG_PAIR_ACCESSES): New macro.
5029
5030 * backtrace.c (display_error_handler), continuations.c
5031 (continuation_print), debug.c (debugobj_print), dynwind.c
5032 (guards_print), environments.c (observer_print,
5033 core_environments_finalize, leaf_environment_cell,
5034 leaf_environment_print, eval_environment_print,
5035 eval_environment_observer, import_environment_define,
5036 import_environment_undefine, import_environment_print,
5037 import_environment_observer, export_environment_define,
5038 export_environment_undefine, export_environment_print,
5039 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
5040 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
5041 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
5042 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
5043 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
5044 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
5045 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
5046 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
5047 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
5048 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
5049 set_slot_value, test_slot_existence, scm_change_object_class,
5050 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
5051 default_setter), guardians.c (guardian_print, guardian_gc_init,
5052 guardian_zombify, whine_about_self_centered_zombies), guile.c
5053 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
5054 mallocs.c (malloc_print), numbers.c (scm_print_real,
5055 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
5056 end_input_default, scm_port_print, fill_input_void_port,
5057 write_void_port), root.c (root_print), smob.c (scm_mark0,
5058 scm_free0, scm_smob_print, scm_smob_apply_1_error,
5059 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
5060 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
5061 (scm_struct_free_0, scm_struct_free_standard,
5062 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
5063 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
5064 scm_handle_by_throw, scm_ithrow), weaks.c
5065 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
5066 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
5067 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
5068
5069 * error.h (SCM_NORETURN): Moved to __scm.h.
5070
5071 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
5072 Renamed <foo>H to SCM_<foo>_H.
5073
5074 * gc.c (debug_cells_gc_interval): New static variable.
5075
5076 (scm_assert_cell_valid): If selected by the user, perform
5077 additional garbage collections.
5078
5079 (scm_set_debug_cell_accesses_x): Extended to let the user specify
5080 if additional garbage collections are desired.
5081
5082 (mark_gc_async): If additional garbage collections are selected
5083 by the user, don't call the after-gc-hook. Instead require the
5084 user to run the hook manually.
5085
5086 * pairs.c (scm_error_pair_access): New function. Only compiled
5087 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
5088
5089 * pairs.h (SCM_VALIDATE_PAIR): New macro.
5090
5091 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
5092 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
5093 is a real pair object. (Glocs are also accepted, but that may
5094 change.) If not, abort with an error message.
5095
5096 2001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5097
5098 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
5099
5100 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
5101 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
5102
5103 2001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
5104
5105 * extensions.c (scm_c_register_extension): Allow NULL as library
5106 name.
5107 (load_extension): Ignore NULL library names when comparing.
5108
5109 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
5110 non-pointers are being compared. Thanks to Alexander Klimov!
5111
5112 2001-06-04 Gary Houston <ghouston@arglist.com>
5113
5114 * rw.c (scm_write_string_partial): new procedure implementing
5115 write-string/partial in (ice-9 rw).
5116 * rw.h: declare scm_write_string_partial.
5117
5118 2001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
5119
5120 * keywords.c (keyword_print): Substract 1 from length of symbol
5121 name, accounting for the silly dash.
5122
5123 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
5124 Do not emit deprecation warning.
5125
5126 Added exception notice to all files.
5127
5128 * dynl.c: Include "deprecation.h".
5129
5130 2001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
5131
5132 * dynl.c (scm_register_module_xxx, scm_registered_modules,
5133 scm_clear_registered_modules): Deprecated.
5134
5135 2001-06-02 Rob Browning <rlb@cs.utexas.edu>
5136
5137 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
5138 guile-snarf-docs-texi.
5139
5140 * fports.c: HAVE_ST_BLKSIZE changed to
5141 HAVE_STRUCT_STAT_ST_BLKSIZE.
5142 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
5143 HAVE_STRUCT_STAT_ST_BLKSIZE.
5144
5145 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
5146 HAVE_STRUCT_STAT_ST_RDEV.
5147 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
5148 HAVE_STRUCT_STAT_ST_BLKSIZE.
5149 (scm_stat2scm): HAVE_ST_BLOCKS changed to
5150 HAVE_STRUCT_STAT_ST_BLOCKS.
5151
5152 2001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
5153
5154 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
5155 of scm_eval_x to allow module changes between the forms in the
5156 string. Set/restore module using scm_c_call_with_current_module.
5157
5158 * mkstemp.c: New file, slightly modified from libiberties
5159 mkstemps.c.
5160
5161 2001-05-31 Michael Livshin <mlivshin@bigfoot.com>
5162
5163 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
5164 filter-doc-snarfage.c: new files.
5165
5166 * Makefile.am: add stuff to [build,] use and distribute
5167 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
5168
5169 * guile-snarf.in: grok the new snarf output.
5170
5171 * snarf.h: make the output both texttools- and `read'-friendly.
5172
5173 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
5174 guile-snarf-docs. (should also deprecate, I guess. maybe not).
5175
5176 2001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
5177
5178 * print.c (scm_simple_format): Support "~~" and "~%". Signal
5179 error for unsupported format controls and for superflous
5180 arguments. Thanks to Daniel Skarda!
5181
5182 * print.h, print.c (scm_print_symbol_name): Factored out of
5183 scm_iprin1.
5184 (scm_iprin1): Call it.
5185
5186 * keywords.c (keyword_print): Use scm_print_symbol_name so that
5187 weird names are printed correctly.
5188
5189 * print.c (scm_print_symbol_name): Symbols whose name starts with
5190 `#' or `:' or ends with `:' are considered weird.
5191
5192 2001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5193
5194 * numbers.c (scm_difference, scm_divide): Clarified comments for -
5195 and /.
5196
5197 2001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5198
5199 * debug.h: Removed prototype for scm_eval_string.
5200
5201 2001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5202
5203 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
5204 (make-string 2000 #\!))' in an older version).
5205
5206 Change strncpy to memcpy to allow embedded NUL characters in
5207 symbol prefix.
5208
5209 2001-05-28 Michael Livshin <mlivshin@bigfoot.com>
5210
5211 * hooks.c (scm_create_hook): deprecated.
5212 (make_hook): deleted.
5213 (scm_make_hook): all the hook creation code is now here.
5214
5215 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
5216 a hook, make it permanent, and do a `scm_c_define' on it.
5217
5218 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
5219
5220 * socket.c (s_scm_inet_pton): fix docstring quoting.
5221 (s_scm_inet_ntop): ditto.
5222
5223 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
5224
5225 * hashtab.c (scm_internal_hash_fold): fix argument position in
5226 SCM_ASSERT.
5227
5228 * environments.c (s_scm_import_environment_set_imports_x): fix
5229 argument position in SCM_ASSERT.
5230
5231 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
5232 (s_scm_make_iloc): ditto.
5233
5234 2001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
5235
5236 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
5237
5238 * eval.c (promise_print): Read the promise's value as an object.
5239
5240 (SCM_CEVAL): Don't perform side-effecting operations in macro
5241 parameters.
5242
5243 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
5244 conditional expression.
5245
5246 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
5247 initializer.
5248
5249 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
5250 text, removed redundant computation of effective_length and fixed
5251 the overflow check.
5252
5253 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
5254 values.
5255
5256 (wrap_init): Don't use SCM_C[AD]R for non pairs.
5257
5258 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
5259
5260 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
5261 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
5262
5263 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
5264
5265 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
5266 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
5267 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
5268 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
5269
5270 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
5271
5272 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
5273
5274 * ramap.c (ramap_rp): Removed bogus `;´.
5275
5276 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
5277 problem.
5278
5279 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
5280 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
5281 Read SCM objects rather than scm_bits_t values.
5282
5283 * tags.h (SCM_VOIDP_TEST): Removed.
5284
5285 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
5286 value of 2 now corresponds to the former 1, the current 1
5287 corresponds to the former situation that SCM_VOIDP_TEST was
5288 defined.
5289
5290 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
5291 If this appears to be not ANSI compliant, we will change it to
5292 typedef struct scm_unused_struct { } * SCM;
5293 Thanks to Han-Wen Nienhuys for the suggestion.
5294
5295 * unif.c (scm_array_set_x): Fix typing problem, and use
5296 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
5297 dealing with uniform vectors.
5298
5299 2001-05-27 Michael Livshin <mlivshin@bigfoot.com>
5300
5301 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
5302 (scm_igc): mark from them, too (precisely, not conservatively!).
5303
5304 * root.h (scm_gc_registered_roots): new object in
5305 scm_sys_protects.
5306
5307 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
5308 `scm_protect_object'. shouldn't call it at all, though, it seems.
5309
5310 * gc.c (scm_[un]protect_object): deprecated.
5311 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
5312 (scm_gc_[un]register_root[s]): new.
5313
5314 * gc.h: add prototypes for scm_gc_[un]protect_object,
5315 scm_gc_[un]register_root[s].
5316
5317 2001-05-26 Michael Livshin <mlivshin@bigfoot.com>
5318
5319 revert the controversial part of the 2001-05-24 changes.
5320
5321 2001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
5322
5323 * modules.c (scm_env_module): Exported to Scheme.
5324
5325 * eval.c (scm_debug_opts): New option `show-file-name'.
5326
5327 * debug.h (SCM_SHOW_FILE_NAME): New.
5328
5329 * backtrace.c: Include "libguile/filesys.h".
5330 (sym_base, display_backtrace_get_file_line,
5331 display_backtrace_file, display_backtrace_file_and_line): New.
5332 (display_frame): Call display_backtrace_file_and_line if that is
5333 requested.
5334 (display_backtrace_body): Call scm_display_backtrace_file if
5335 requested.
5336
5337 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
5338 Prototypes removed since there's no definition for these
5339 functions.
5340
5341 2001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5342
5343 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
5344 Changed use of scm_array->scm_array_t and
5345 scm_array_dim->scm_array_dim_t to enable build with
5346 --disable-deprecated.
5347
5348 2001-05-24 Michael Livshin <mlivshin@bigfoot.com>
5349
5350 The purpose of this set of changes is to regularize Guile's usage
5351 of ANSI C integral types, with the following ideas in mind:
5352
5353 - SCM does not nesessarily have to be long.
5354 - long is not nesessarily enough to store pointers.
5355 - long is not nesessarily the same size as int.
5356
5357 The changes are incomplete and possibly buggy. Please test on
5358 something exotic.
5359
5360 * validate.h
5361 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
5362 new macros.
5363
5364 * unif.h: type renaming:
5365 scm_array -> scm_array_t
5366 scm_array_dim -> scm_array_dim_t
5367 the old names are deprecated, all in-Guile uses changed.
5368
5369 * tags.h (scm_ubits_t): new typedef, representing unsigned
5370 scm_bits_t.
5371
5372 * stacks.h: type renaming:
5373 scm_info_frame -> scm_info_frame_t
5374 scm_stack -> scm_stack_t
5375 the old names are deprecated, all in-Guile uses changed.
5376
5377 * srcprop.h: type renaming:
5378 scm_srcprops -> scm_srcprops_t
5379 scm_srcprops_chunk -> scm_srcprops_chunk_t
5380 the old names are deprecated, all in-Guile uses changed.
5381
5382 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
5383 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
5384 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
5385 vectors.c, vports.c, weaks.c:
5386 various int/size_t -> size_t/scm_bits_t changes.
5387
5388 * random.h: type renaming:
5389 scm_rstate -> scm_rstate_t
5390 scm_rng -> scm_rng_t
5391 scm_i_rstate -> scm_i_rstate_t
5392 the old names are deprecated, all in-Guile uses changed.
5393
5394 * procs.h: type renaming:
5395 scm_subr_entry -> scm_subr_entry_t
5396 the old name is deprecated, all in-Guile uses changed.
5397
5398 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
5399 type renaming:
5400 scm_option -> scm_option_t
5401 the old name is deprecated, all in-Guile uses changed.
5402
5403 * objects.c: various long -> scm_bits_t changes.
5404 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
5405
5406 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
5407 SCM_I_FIXNUM_BIT.
5408
5409 * num2integral.i.c: new file, multiply included by numbers.c, used
5410 to "templatize" the various integral <-> num conversion routines.
5411
5412 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
5413 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
5414 deprecated.
5415 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
5416 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
5417 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
5418 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
5419 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
5420 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
5421 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
5422 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
5423 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
5424 scm_num2size): new functions.
5425
5426 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
5427
5428 * load.c: change int -> size_t in various places (where the
5429 variable is used to store a string length).
5430 (search-path): call scm_done_free, not scm_done_malloc.
5431
5432 * list.c (scm_ilength): return a scm_bits_t, not long.
5433 some other {int,long} -> scm_bits_t changes.
5434
5435 * hashtab.c: various [u]int -> scm_bits_t changes.
5436 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
5437 (scm_ihashx): n: uint -> scm_bits_t
5438 use scm_bits2num instead of scm_ulong2num.
5439
5440 * gsubr.c: various int -> scm_bits_t changes.
5441
5442 * goops.[hc]: various {int,long} -> scm_bits_t changes.
5443
5444 * gh_data.c (gh_num2int): no loss of precision any more.
5445
5446 * gh.h (gh_str2scm): len: int -> size_t
5447 (gh_{get,set}_substr): start: int -> scm_bits_t,
5448 len: int -> size_t
5449 (gh_<num>2scm): n: int -> scm_bits_t
5450 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
5451 (gh_length): return scm_bits_t, not unsigned long.
5452
5453 * gc.[hc]: various small changes relating to many things stopping
5454 being long and starting being scm_[u]bits_t instead.
5455 scm_mallocated should no longer wrap around.
5456
5457 * fports.h: type renaming:
5458 scm_fport -> scm_fport_t
5459 the old name is deprecated, all in-Guile uses changed.
5460
5461 * fports.c (fport_fill_input): count: int -> scm_bits_t
5462 (fport_flush): init_size, remaining, count: int -> scm_bits_t
5463
5464 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
5465 those prototypes, as the functions they prototype don't exist.
5466
5467 * fports.c (default_buffer_size): int -> size_t
5468 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
5469 default_size: int -> size_t
5470 (scm_setvbuf): csize: int -> scm_bits_t
5471
5472 * fluids.c (n_fluids): int -> scm_bits_t
5473 (grow_fluids): old_length, i: int -> scm_bits_t
5474 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
5475 scm_bits_t
5476 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
5477
5478 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
5479 the new and shiny SCM_NUM2INT.
5480
5481 * extensions.c: extension -> extension_t (and made a typedef).
5482
5483 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
5484 there are no nasty surprises if/when the various deeply magic tag
5485 bits move somewhere else.
5486
5487 * eval.c: changed the locals used to store results of SCM_IFRAME,
5488 scm_ilength and such to be of type scm_bits_t (and not int/long).
5489 (iqq): depth, edepth: int -> scm_bits_t
5490 (scm_eval_stack): int -> scm_bits_t
5491 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
5492 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
5493 i: int -> scm_bits_t
5494
5495 * environments.c: changed the many calls to scm_ulong2num to
5496 scm_ubits2num.
5497 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
5498
5499 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
5500
5501 * debug.h: type renaming:
5502 scm_debug_info -> scm_debug_info_t
5503 scm_debug_frame -> scm_debug_frame_t
5504 the old names are deprecated, all in-Guile uses changed.
5505 (scm_debug_eframe_size): int -> scm_bits_t
5506
5507 * debug.c (scm_init_debug): use scm_c_define instead of the
5508 deprecated scm_define.
5509
5510 * continuations.h: type renaming:
5511 scm_contregs -> scm_contregs_t
5512 the old name is deprecated, all in-Guile uses changed.
5513 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
5514 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
5515
5516 * continuations.c (scm_make_continuation): change the type of
5517 stack_size from long to scm_bits_t.
5518
5519 * ports.h: type renaming:
5520 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
5521 scm_port -> scm_port_t
5522 scm_ptob_descriptor -> scm_ptob_descriptor_t
5523 the old names are deprecated, all in-Guile uses changed.
5524 (scm_port_t.entry): int -> scm_bits_t.
5525 (scm_port_t.line_number): int -> long.
5526 (scm_port_t.putback_buf_size): int -> size_t.
5527
5528 * __scm.h (long_long, ulong_long): deprecated (they pollute the
5529 global namespace and have little value beside that).
5530 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
5531 SCM handle).
5532 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
5533 exist (for size_t & ptrdiff_t).
5534 (scm_sizet): deprecated.
5535
5536 * Makefile.am (noinst_HEADERS): add num2integral.i.c
5537
5538 2001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
5539
5540 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
5541 SCM_VARIABLE_INIT since that it what it used to be.
5542
5543 * deprecation.c (scm_include_deprecated_features): Make docstring
5544 ANSIsh. Thanks to Matthias Köppe!
5545
5546 2001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
5547
5548 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
5549 needed for weak-key hashtables.
5550
5551 * procs.c (scm_make_subr_with_generic): Add missing last argument
5552 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
5553
5554 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
5555 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
5556
5557 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
5558
5559 2001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
5560
5561 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
5562 `duplicate_string'. Do not use an indirect cell, store symbol
5563 directly in collision list of hash table.
5564 (duplicate_string): Removed.
5565
5566 * init.c (scm_init_guile_1): Call scm_init_extensions.
5567
5568 * Makefile.am: Add "extensions.c" and related files in all the
5569 right places.
5570
5571 * extensions.h, extension.c: New files.
5572
5573 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
5574
5575 * modules.h (scm_system_module_env_p): Move out of deprecated
5576 section.
5577
5578 * rw.h (scm_init_rw): Added prototype.
5579
5580 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
5581 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
5582 New functions. They replace scm_make_gsubr and
5583 scm_make_gsubr_with_generic. The `make' variants only create the
5584 gsubr object, while the `define' variants also put it into the
5585 current module. Changed all callers.
5586 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
5587
5588 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
5589 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
5590 functions. They replace scm_make_subr, scm_make_subr_opt and
5591 scm_make_subr_with_generic. The `make' variants only create the
5592 subr object, while the `define' variants also put it into the
5593 current module. Changed all callers.
5594 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
5595 Deprecated.
5596
5597 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
5598 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
5599 the comments above.
5600
5601 2001-05-19 Neil Jerram <neil@ossau.uklinux.net>
5602
5603 * throw.c (scm_lazy_catch): Slight docstring clarification.
5604
5605 2001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
5606
5607 * throw.c: Lazy-catch handlers are no longer allowed to return.
5608 Fixed comments throughout.
5609 (scm_ithrow): Signal an error when a lazy-catch handler returns.
5610 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
5611 recognized as such.
5612
5613 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
5614 refered to s_scm_minor_version previously.
5615
5616 * modules.h, modules.c: Moved around a lot of code so that
5617 deprecated features appear at the bottom.
5618 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
5619 module_prefix, make_modules_in_var, beautify_user_module_x_var,
5620 scm_the_root_module, scm_make_module, scm_ensure_user_module,
5621 scm_load_scheme_module): Deprecated.
5622 (scm_system_module_env_p): Return SCM_BOOL_T directly for
5623 environments corresponding to the root module.
5624 (convert_module_name, scm_c_resolve_module,
5625 scm_c_call_with_current_module, scm_c_define_module,
5626 scm_c_use_module, scm_c_export): New.
5627 (the_root_module): New static variant of scm_the_root_module. Use
5628 it everywhere instead of scm_the_root_module.
5629
5630 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
5631 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
5632 (scm_c_with_fluid): New.
5633 (scm_with_fluids): Use scm_c_with_fluids instead of
5634 scm_internal_with_fluids.
5635
5636 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
5637 `scm_init_goops'. Do not explicitly create/switch modules.
5638 Return SCM_UNSPECIFIED.
5639 (scm_init_goops): Only register `%init-goops-builtins' procedure.
5640 (scm_load_goops): Use scm_c_resolve_module instead of
5641 scm_resolve_module.
5642
5643 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
5644 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
5645 `scm_init_rw' prior to loading the startup files.
5646
5647 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
5648 scm_init_rdelim. Do not explicitly create/switch modules.
5649 Return SCM_UNSPECIFIED.
5650 (scm_init_rdelim): Only register `%init-rdelim-builtins'
5651 procedure.
5652
5653 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
5654 explicitly create/switch modules. Return SCM_UNSPECIFIED.
5655 (scm_init_rw): Only register `%init-rw-builtins' procedure.
5656
5657 * script.c (scm_shell): Evaluate the compiled switches in the
5658 current module, not in the root module.
5659
5660 2001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
5661
5662 * fluids.c (scm_c_with_fluids): Rename from
5663 scm_internal_with_fluids.
5664 (scm_internal_with_fluids): Deprecated.
5665 (scm_c_with_fluid): New.
5666
5667 2001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
5668
5669 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
5670
5671 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
5672 accessed with SCM_C[AD]R.
5673
5674 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
5675
5676 2001-05-16 Rob Browning <rlb@cs.utexas.edu>
5677
5678 * version.c (s_scm_major_version): doc fixes.
5679 (s_scm_minor_version): doc fixes.
5680 (s_scm_minor_version): new function.
5681
5682 * version.h (scm_init_version): new function.
5683
5684 * versiondat.h.in: add GUILE_MICRO_VERSION.
5685
5686 2001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
5687
5688 * deprecation.c (scm_init_deprecation): Renamed
5689 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
5690
5691 2001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
5692
5693 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
5694 dependent on cpp_cnvt.awk
5695
5696 2001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5697
5698 * script.c (scm_compile_shell_switches): New command line option
5699 `--use-srfi' for loading a list of SRFIs on startup.
5700 (scm_shell_usage): Added `--use-srfi' to help message.
5701
5702 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
5703
5704 Merged from mvo-vcell-cleanup-1-branch.
5705
5706 The concept of vcells has been removed from Guile. With it,
5707 explicit obarrays and associated operations are gone. Use
5708 hashtables instead of obarrays.
5709
5710 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
5711 result as variable instead of vcell. Glocs no longer point to a
5712 vcell but to a variable. Use scm_c_define instead of
5713 scm_sysintern and treat the result as a variable (which it is),
5714 not a vcell.
5715
5716 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
5717 SCM_DEFVARIABLEP): Deprecated.
5718 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
5719 (variable_print): Do not print name of variable.
5720 (variable_equalp): Compare values, not vcells.
5721 (anonymous_variable_sym): Removed.
5722 (make_vcell_variable): Removed.
5723 (make_variable): New, as replacement.
5724 (scm_make_variable, scm_make_undefined_variable): Do not take name
5725 hint parameter.
5726 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
5727 error in that case.
5728 (scm_builtin_variable): Deprecated.
5729
5730 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
5731 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
5732 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
5733 scm_sysintern, scm_sysintern0, scm_symbol_value0,
5734 scm_string_to_obarray_symbol, scm_intern_symbol,
5735 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
5736 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
5737 Deprecated and moved to "symbols-deprecated.c".
5738 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
5739 (scm_init_symbols): Call scm_init_symbols_deprecated.
5740 * symbols-deprecated.c: New file.
5741 * Makefile.am: Added symbols-deprecated.c and related files in all
5742 the right places.
5743
5744 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
5745 SCM_GLOBAL_VCELL_INIT): Deprecated.
5746 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
5747 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
5748
5749 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
5750 SCM_GLOC_SYM.
5751
5752 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
5753 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
5754 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
5755 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
5756 Changed according to the `throughout' comments.
5757
5758 * modules.h, modules.c (scm_module_system_booted_p): Changed type
5759 to `int'.
5760 (scm_module_type): Removed.
5761 (the_root_module): Renamed to the_root_module_var. Now points to
5762 a variable instead of a vcell. Updated all uses.
5763 (scm_the_root_module): Return SCM_BOOL_F when module systems
5764 hasn't been booted yet.
5765 (SCM_VALIDATE_STRUCT_TYPE): Removed.
5766 (scm_post_boot_init_modules): Made static.
5767 (scm_set_current_module): Call scm_post_boot_init_modules on first
5768 call.
5769 (make_modules_in, beautify_user_module_x, resolve_module,
5770 try_module_autoload, module_make_local_var_x): Tacked on "_var"
5771 suffix. Now point to variables instead of vcells. Updated all
5772 uses.
5773 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
5774 and return SCM_BOOL_F in that case.
5775 (scm_module_transformer): Likewise.
5776 (sym_module, scm_lookup_closure_module, scm_env_module): New.
5777 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
5778 (scm_eval_closure_lookup): Do not allow new definitions when
5779 `interface' flag is set.
5780 (scm_standard_interface_eval_closure): New.
5781 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
5782 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
5783 scm_c_lookup, scm_c_module_define, scm_c_define,
5784 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
5785 scm_modules_prehistory): New.
5786 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
5787 instead of scm_intern0.
5788
5789 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
5790 symbol.
5791
5792 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
5793 hashtable operations to maintain the keywords, not obarray ones.
5794
5795 * init.c (scm_load_startup_files): Do not call
5796 scm_post_boot_init_modules. This is done by
5797 scm_set_current_module now.
5798 (scm_init_guile_1): Call scm_modules_prehistory. Call
5799 scm_init_variable early on.
5800
5801 * goops.c (s_scm_sys_goops_loaded): Get
5802 var_compute_applicable_methods from scm_sym2var, not from a direct
5803 invocation of scm_goops_lookup_closure.
5804
5805 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
5806
5807 * gc.c: Added simple debugging hack to mark phase of GC: When
5808 activated, do not tail-call scm_gc_mark. This gives nice
5809 backtraces.
5810 (scm_unhash_name): Removed.
5811
5812 * feature.c (features): Renamed to features_var. Now points to a
5813 variable instead of a vcell. Updated all uses.
5814
5815 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
5816 `scm_current_module_lookup_closure' which will do the right thing
5817 when the module system hasn't been booted yet.
5818 (SCM_GLOC_SYM): Removed.
5819 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
5820 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
5821
5822 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
5823 instead of with vcells. Do not overwrite `var' with the result of
5824 the lookup, use the new `real_var' instead. Remove `var2' in
5825 exchange (which was only used with threads).
5826 (sym_three_question_marks): New.
5827 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
5828 `SCM_GLOC_SYM'.
5829 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
5830 (scm_m_atfop): Expect the function definition to be a variable
5831 instead of a vcell.
5832 (scm_macroexp): Do not use `unmemocar', explicitely remember the
5833 symbol instead.
5834 (scm_unmemocopy): Removed thoughts about anti-macro interface.
5835 (scm_eval_args): Use more explicit code in the gloc branch of the
5836 atrocious struct ambiguity test. The optimizer will sort this
5837 out.
5838 (scm_deval_args): Likewise.
5839 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
5840 remember the symbol instead. Added some comments where
5841 scm_tc3_cons_gloc really exclusively refers to structs.
5842 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
5843 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
5844 of scm_sysintern in general.
5845
5846 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
5847 explicit magic.
5848
5849 * debug.c (s_scm_make_gloc): Only allow proper variables, no
5850 pairs. Put the variable directly in the gloc.
5851 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
5852 (scm_init_debug): Use scm_c_define instead scm_sysintern.
5853
5854 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
5855
5856 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
5857 scm_the_last_stack_fluid_var. It now points to a variable instead
5858 of a vcell. Updated all uses.
5859 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
5860 instead of a vcell. Updated all uses.
5861
5862 * _scm.h: Include "variables.h" and "modules.h" since almost
5863 everybody needs them now.
5864
5865 * root.h (scm_symhash, scm_symhash_vars): Removed.
5866 * gc.c (scm_init_storage): Do not initialize them.
5867
5868 2001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
5869
5870 * eval.c (scm_init_eval): Initialize scm_undefineds and
5871 scm_listofnull.
5872
5873 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
5874 like the SCM_NEWCELL macro counterparts.
5875
5876 (scm_init_storage, scm_init_gc): Moved initialization of
5877 scm_tc16_allocated from scm_init_gc to scm_init_storage.
5878
5879 (scm_init_storage): Moved initialization of scm_undefineds and
5880 scm_listofnull to eval.c, initializion of scm_nullstr to
5881 strings.c, initializion of scm_nullvect to vectors.c.
5882
5883 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
5884 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
5885
5886 * init.c (scm_init_guile_1): Reordered some initializations and
5887 added dependcy information comments.
5888
5889 * load.c (scm_init_load): Use scm_nullstr.
5890
5891 * strings.c (scm_init_strings): Initialize scm_nullstr.
5892
5893 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
5894
5895 2001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
5896
5897 * values.c (print_values): Print as a unreadable object, not as
5898 multiple lines. Thanks to Matthias Köppe!
5899
5900 2001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
5901
5902 * deprecation.c: Fixed copyright date.
5903
5904 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
5905 DEPRECATION_H to SCM_DEPRECATION_H.
5906
5907 2001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
5908
5909 * guile-doc-snarf.in: Update copyright.
5910 Fix relative path bug. Thanks to Sergey Poznyakoff.
5911
5912 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
5913
5914 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
5915 accept open ports. Thanks to Quetzalcoatl Bradley!
5916
5917 2001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5918
5919 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
5920 has 779 primitives on startup.
5921
5922 2001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
5923
5924 * eval.c (scm_i_eval): Copy expression before passing it to
5925 SCM_XEVAL. The copy operation was removed unintendedly during my
5926 change on 2001-03-25.
5927
5928 2001-05-09 Michael Livshin <mlivshin@bigfoot.com>
5929
5930 from Matthias Köppe (thanks!):
5931
5932 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
5933 portable.
5934
5935 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
5936 docstring.
5937
5938 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
5939
5940 * gc.c (scm_init_gc): Added FIXME comment.
5941
5942 * hooks.c: Since hooks don't have a name any more, it is not
5943 necessary to include objprop.h.
5944
5945 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
5946
5947 (symbol_name, scm_make_hook_with_name): Removed.
5948
5949 (scm_create_hook): Don't set the hook's name property.
5950
5951 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
5952
5953 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
5954
5955 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
5956
5957 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
5958 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
5959 FLOBUFLEN and define it unconditionally.
5960
5961 2001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
5962
5963 * gh_data.c (gh_lookup): Call gh_module_lookup with
5964 `scm_current_module ()', not `#f'.
5965 (gh_module_lookup): Expect a module instead of an obarray as first
5966 argument and do lookup in that module.
5967
5968 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
5969 arrays. The length of array is already determined differently and
5970 scm_uniform_vector_length does not work on arrays.
5971
5972 2001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
5973
5974 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
5975 as well. "SCM (*)(...)" does not work on RedHat 7.1.
5976
5977 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
5978 they are not used. Changed `wrong type' error into `wrong num
5979 args' error. Changed all callers.
5980
5981 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
5982 arguments are supplied.
5983
5984 2001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
5985
5986 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
5987 describe `regexp/notbol' and `regexp/noteol' execution flags.
5988
5989 * strop.c (scm_substring_move_x): Doc fix; nfc.
5990
5991 2001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
5992
5993 * objects.c, objects.h (scm_valid_object_procedure_p): New.
5994 (scm_set_object_procedure_x): Use it to check argument. Fix
5995 docstring.
5996
5997 * evalext.c (scm_definedp): Fix docstring.
5998
5999 2001-05-05 Gary Houston <ghouston@arglist.com>
6000
6001 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
6002 support.
6003
6004 2001-05-04 Neil Jerram <neil@ossau.uklinux.net>
6005
6006 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
6007 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
6008 Change R4RS references to R5RS.
6009
6010 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
6011 docstring source are correctly reproduced in the output (ii)
6012 we don't anymore get occasional trailing quotes. Also reorganized
6013 and commented the code a little.
6014
6015 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
6016 fixes.
6017
6018 2001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6019
6020 * strop.c (scm_string_split): New procedure.
6021
6022 * strop.h (scm_string_split): Added prototype.
6023
6024 2001-05-04 Gary Houston <ghouston@arglist.com>
6025
6026 * socket.c: define uint32_t if netdb.h doesn't. thanks to
6027 Dale P. Smith.
6028
6029 2001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
6030
6031 * rw.c: Include "modules.h" and "strports.h".
6032
6033 * net_db.h (scm_gethost): Added prototype.
6034
6035 * deprecation.h, deprecation.c: New.
6036 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
6037 (DOT_X_FILES): Added "deprecation.x".
6038 (modinclude_HEADERS): Added "deprecation.h".
6039
6040 * init.c: Include "deprecation.h".
6041 (scm_init_guile_1): Call scm_init_deprecation.
6042
6043 2001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
6044
6045 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
6046 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
6047 New.
6048
6049 2001-04-29 Gary Houston <ghouston@arglist.com>
6050
6051 * rw.c: new file, implementing C part of module (ice-9 rw).
6052 (scm_read_string_x_partial): moved from ioext.c
6053 (scm_init_rw): new proc.
6054 * rw.h: new file.
6055 init.c: include rw.h and call scm_init_rw.
6056 Makefile.am: include rw.c and rw.h.
6057
6058 2001-04-28 Rob Browning <rlb@cs.utexas.edu>
6059
6060 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
6061 know what's supposed to happen to it.
6062
6063 * list.h (scm_list_star): deprecation expired - removed.
6064
6065 * numbers.h (scm_dblproc): deprecation expired - removed.
6066 (SCM_UNEGFIXABLE): deprecation expired - removed.
6067 (SCM_FLOBUFLEN): deprecation expired - removed.
6068 (SCM_INEXP): deprecation expired - removed.
6069 (SCM_CPLXP): deprecation expired - removed.
6070 (SCM_REAL): deprecation expired - removed.
6071 (SCM_IMAG): deprecation expired - removed.
6072 (SCM_REALPART): deprecation expired - removed.
6073 (scm_makdbl): deprecation expired - removed.
6074 (SCM_SINGP): deprecation expired - removed.
6075 (SCM_NUM2DBL): deprecation expired - removed.
6076 (SCM_NO_BIGDIG): deprecation expired - removed.
6077
6078 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
6079 (scm_tc_dblr): deprecation expired - removed.
6080 (scm_tc_dblc): deprecation expired - removed.
6081 (scm_tc16_flo): deprecation expired - removed.
6082 (scm_tc_flo): deprecation expired - removed.
6083
6084 * tag.h (scm_tag): deprecation expired - removed.
6085
6086 * tag.c: (scm_tag): deprecation expired - removed.
6087
6088 * ioext.c: (scm_fseek): deprecation expired - removed.
6089
6090 * ioext.h (scm_fseek): deprecation expired - removed.
6091
6092 * gh_data.c (gh_int2scmb): deprecation expired - removed.
6093
6094 * gh.h (gh_int2scmb): deprecation expired - removed.
6095
6096 2001-04-28 Neil Jerram <neil@ossau.uklinux.net>
6097
6098 * stacks.c (scm_make_stack): Fix typo in docstring.
6099
6100 2001-04-27 Rob Browning <rlb@cs.utexas.edu>
6101
6102 * error.c (scm_sysmissing): deprecation expired - removed.
6103
6104 * error.h (scm_sysmissing): deprecation expired - removed.
6105
6106 * gc.c
6107 (scm_init_gc): gc-thunk deprecation expired - removed.
6108 (scm_gc_vcell): deprecation expired - removed.
6109 (gc_async_thunk): scm_gc_vcell related code removed.
6110
6111 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
6112
6113 * strings.h
6114 (SCM_NSTRINGP): deprecation expired - removed.
6115 (SCM_NRWSTRINGP): deprecation expired - removed.
6116
6117 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
6118
6119 * chars.h
6120 (SCM_ICHRP): deprecation expired - removed.
6121 (SCM_ICHR): deprecation expired - removed.
6122 (SCM_MAKICHR): deprecation expired - removed.
6123
6124 * ports.h
6125 (SCM_INPORTP): deprecation expired - removed.
6126 (SCM_OUTPORTP): deprecation expired - removed.
6127
6128 2001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
6129
6130 * modules.c (scm_module_type): New.
6131 (scm_post_boot_init_modules): Initialize from Scheme value.
6132 (the_module, scm_current_module, scm_init_modules): the_module is
6133 now a C only fluid.
6134 (scm_current_module): Export to Scheme.
6135 (scm_set_current_module): Do not call out to Scheme, do all the
6136 work in C. Export procedure to Scheme. Only accept modules, `#f'
6137 is no longer valid as the current module. Only set
6138 scm_top_level_lookup_closure_var and scm_system_transformer when
6139 they are not deprecated.
6140 (scm_module_transformer, scm_current_module_transformer): New.
6141
6142 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
6143 scm_current_module_transformer, scm_module_transformer): New.
6144
6145 * gh_data.c: Removed FIXME comment about gh_lookup returning
6146 SCM_UNDEFINED. That's the right thing to do.
6147
6148 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
6149 into the conditionally compiled sections.
6150 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
6151 scm_current_module_transformer instead of scm_system_transformer.
6152 * init.c (start_stack): Move initialization of
6153 scm_system_transformer to the deprecated section.
6154
6155 2001-04-22 Neil Jerram <neil@ossau.uklinux.net>
6156
6157 * throw.c (scm_throw): Correct docstring.
6158
6159 2001-04-22 Gary Houston <ghouston@arglist.com>
6160
6161 * socket.c: attempted to improve the docstrings slightly.
6162
6163 * net_db.c: remove bogus "close" declaration.
6164 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
6165 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
6166 moved to socket.c.
6167 * net_db.h: declarations moved too.
6168
6169 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
6170 long.
6171 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
6172 (VALIDATE_INET6): new macro.
6173 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
6174 inet-pton and inet-ntop.
6175 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
6176 (scm_addr_vector): use ipv6_net_to_num.
6177
6178 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6179
6180 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
6181 smob number explicitly. Use SCM_TC2SMOBNUM instead.
6182
6183 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
6184 when compiled in debug mode.
6185
6186 (scm_gc_sweep): Only call smob's free function if it is defined.
6187
6188 * print.c (scm_iprin1): No need to check for validity of smob
6189 type or existence of print function.
6190
6191 * smob.[ch] (scm_smobs): Made into a fixed size global array.
6192 Resizing will not work well with preemptive threading.
6193
6194 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
6195
6196 (scm_make_smob_type): Extracted initialization of smob
6197 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
6198 of the critical section.
6199
6200 (scm_smob_prehistory): Initialize all smob descriptors. By
6201 default, don't assign a smob free function: Most smob types don't
6202 need one.
6203
6204 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
6205
6206 2001-04-21 Gary Houston <ghouston@arglist.com>
6207
6208 * socket.c (FLIP_NET_HOST_128): new macro.
6209 (scm_fill_sockaddr): use new macro.
6210 (scm_addr_vector): completed IPv6 address support. added const
6211 to the address parameter.
6212
6213 2001-04-20 Gary Houston <ghouston@arglist.com>
6214
6215 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
6216 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
6217 is defined.
6218 (scm_addr_vector): use a switch instead of multiple if statements.
6219 Add support for IPv6 (incomplete) .
6220 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
6221
6222 2001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6223
6224 * struct.c (scm_free_structs): Only pairs may be accessed with
6225 SCM_C[AD]R.
6226
6227 2001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6228
6229 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
6230
6231 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
6232 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
6233 parentheses in order to get the correct associativity.
6234
6235 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6236
6237 * unif.c (scm_array_to_list): Added missing handling of arrays of
6238 bytes. Thanks to Masao Uebayashi for the bug report.
6239
6240 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6241
6242 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
6243 consistently.
6244
6245 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6246
6247 * procs.h (SCM_CLOSURE_FORMALS): New macro.
6248
6249 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
6250 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
6251 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
6252 SCM_CLOSURE_FORMALS.
6253
6254 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
6255 (scm_i_procedure_arity): Prefer stronger predicates like
6256 SCM_NULLP or SCM_FALSEP over SCM_IMP.
6257
6258 * macros.c (macro_print): Extracted macro printing code from
6259 print.c and simplified it.
6260
6261 (scm_macro_type): Use SCM_MACRO_TYPE;
6262
6263 (scm_init_macros): Use macro_print for printing macros.
6264
6265 * print.c (scm_print_opts): Improved option documentation.
6266
6267 (scm_iprin1): Extracted printing of macros to macros.c.
6268 Simplified printing of ordinary closures.
6269
6270 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
6271 Martin Grabmueller for the bug report.
6272
6273 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6274
6275 This patch eliminates some further applications of SCM_C[AD]R to
6276 non pair cells.
6277
6278 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
6279 never been applied to real pairs.
6280
6281 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
6282
6283 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
6284
6285 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
6286 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
6287 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
6288
6289 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
6290 Added.
6291
6292 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
6293 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
6294
6295 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
6296 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
6297 SCM_SET{AND,OR}_CAR.
6298
6299 2001-04-17 Gary Houston <ghouston@arglist.com>
6300
6301 * some initial support for IPv6:
6302
6303 * socket.c (scm_fill_sockaddr): improve the argument validation.
6304 don't allocate memory until all args are checked. instead of
6305 unconditional memset of soka, try setting sin_len to 0 if
6306 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
6307 (scm_socket, scm_connect): extend docstrings for IPv6.
6308 (scm_init_socket): intern AF_INET6 and PF_INET6.
6309
6310 2001-04-17 Niibe Yutaka <gniibe@m17n.org>
6311
6312 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
6313 matches SCM_DEFER_INTS at the beginning of the function.
6314
6315 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
6316
6317 * gc.c (scm_igc): Unconditionally call
6318 SCM_CRITICAL_SECTION_START/END.
6319
6320 * fluids.c (next_fluid_num): Unconditionally call
6321 SCM_CRITICAL_SECTION_START/END.
6322 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
6323
6324 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
6325 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
6326 Removed.
6327
6328 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
6329 Defined as nothing for the case of !defined(USE_THREADS).
6330 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
6331 Removed.
6332 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
6333 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
6334 LINE.
6335 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
6336 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
6337 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
6338 SCM_CRITICAL_SECTION_START/END.
6339 (SCM_REALLOW_INTS: Bug fix. Don't call
6340 SCM_THREAD_SWITCHING_CODE.
6341 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
6342 SCM_THREAD_SWITCHING_CODE directly.
6343 (SCM_ENTER_A_SECTION): Unconditionally use
6344 SCM_CRITICAL_SECTION_START/END. (was:
6345 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
6346
6347 2001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
6348
6349 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
6350 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
6351 allowed to explicitly set this macro via the CFLAGS variable
6352 during make.
6353
6354 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
6355 (SCM_THREAD_CRITICAL_SECTION_START,
6356 SCM_THREAD_CRITICAL_SECTION_END): Renamed
6357 SCM_THREAD_CRITICAL_SECTION_START/END to
6358 SCM_CRITICAL_SECTION_START/END.
6359
6360 2001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
6361
6362 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
6363 instead of bzero.
6364
6365 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
6366 (MISSING_BZERO_DECL): Remove the declaration.
6367
6368 Thanks to NIIBE Yutaka.
6369
6370 2001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6371
6372 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
6373 goops module should be registered in order to work for an
6374 application which uses libguile statically linked.)
6375
6376 2001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
6377
6378 * numbers.[ch] (scm_num2long, scm_num2long_long,
6379 scm_num2ulong_long, scm_num2ulong): Argument position is an
6380 unsigned integer.
6381
6382 * environments.c (eval_environment_folder,
6383 import_environment_folder), gh_data.c (gh_scm2longs,
6384 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
6385 for integers and pointers, respectively.
6386
6387 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
6388 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
6389 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
6390 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
6391
6392 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
6393 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
6394 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
6395 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
6396 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
6397 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
6398
6399 2001-04-09 Neil Jerram <neil@ossau.uklinux.net>
6400
6401 * strings.c (scm_read_only_string_p): Update docstring to reflect
6402 current (non-)usage of "read only" strings.
6403 (scm_make_shared_substring): Clarify docstring by changing
6404 "semantics" to "arguments".
6405
6406 2001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6407
6408 * hooks.c (scm_make_hook, scm_make_hook_with_name),
6409 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
6410 improvements.
6411
6412 2001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6413
6414 The following changes make the documentation more consistent.
6415
6416 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
6417 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
6418 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
6419 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
6420 ... @end lisp.
6421
6422 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
6423 (scm_array_dimensions, scm_make_shared_array),
6424 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
6425 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
6426 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
6427 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
6428 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
6429 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
6430 macros.c (scm_makmmacro), list.c (scm_append), environments.c
6431 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
6432 @example ... @end example to @lisp ... @end lisp.
6433
6434 * weaks.c (scm_weak_vector): Corrected docstring.
6435
6436 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
6437 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
6438 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
6439 (scm_hashx_set_x, scm_hashx_get_handle),
6440 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
6441 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
6442 vectors.c (scm_vector_fill_x), strings.c
6443 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
6444 objprop.c (scm_set_object_properties_x):
6445 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
6446 strports.c (scm_call_with_input_string), ports.c
6447 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
6448 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
6449 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
6450 (scm_make_weak_vector,scm_weak_vector_p),
6451 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
6452 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
6453 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
6454 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
6455 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
6456 Made parameter names match documentation by renaming parameters
6457 and/or fixing docstrings.
6458
6459 * numbers.c (scm_ash): Corrected Texinfo markup.
6460
6461 * strop.c (scm_string_index, scm_string_rindex),
6462 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
6463
6464 * vports.c (scm_make_soft_port), unif.c
6465 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
6466 (scm_dimensions_to_uniform_array, scm_transpose_array),
6467 (scm_array_in_bounds_p, scm_uniform_vector_ref),
6468 (scm_bit_count, scm_bit_position, scm_bit_count_star),
6469 (scm_array_to_list, scm_list_to_uniform_array),
6470 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
6471 (scm_open_input_string, scm_open_output_string),
6472 (scm_get_output_string), strop.c (scm_string_copy),
6473 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
6474 (scm_get_internal_real_time, scm_times),
6475 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
6476 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
6477 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
6478 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
6479 simpos.c (scm_system), random.c (scm_random_uniform),
6480 (scm_random_normal, scm_random_exp), ramap.c
6481 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
6482 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
6483 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
6484 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
6485 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
6486 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
6487 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
6488 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
6489 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
6490 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
6491 (scm_logand, scm_logior, scm_logxor, scm_lognot),
6492 (scm_integer_expt, scm_bit_extract, scm_logcount),
6493 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
6494 net_db.c (scm_inet_netof, scm_lnaof), modules.c
6495 (scm_interaction_environment), macros.c (scm_makacro),
6496 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
6497 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
6498 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
6499 (scm_fluid_ref), filesys.c (scm_open_fdes),
6500 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
6501 Docstring correction: `Returns' -> `Return'
6502
6503 * gc.c (scm_set_debug_cell_accesses_x):
6504 (s_scm_gc_set_debug_check_freelist_x):
6505 * fluids.c (scm_fluid_p): Added texinfo markup.
6506
6507 * error.c (scm_strerror): Made docstring more precise.
6508
6509 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
6510 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
6511 (scm_symbol_p, scm_symbol_to_string), strorder.c
6512 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
6513 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
6514 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
6515 (scm_string_ci_geq_p), strop.c (scm_string_copy),
6516 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
6517
6518 2001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
6519
6520 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
6521 mode, as suggested by Michael Livshin.
6522
6523 2001-03-31 Michael Livshin <mlivshin@bigfoot.com>
6524
6525 * backtrace.c (display_backtrace_body): since the `print_state'
6526 variable is not used (instead its data field is used directly as
6527 `pstate'), protect it from the hungry compiler optimizations.
6528 thanks to Bill Schottstaedt for the report.
6529
6530 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6531
6532 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
6533 It is only defined and used if guile is compiled with
6534 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
6535 let cells with a free_cell type tag be visible outside of the
6536 garbage collector when in debug mode.
6537
6538 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
6539
6540 (scm_assert_cell_valid): Use a local static variable to avoid
6541 recursion.
6542
6543 (MARK): Only check for rogue cell pointers in debug mode. Use
6544 scm_cellp for this purpose and place all checks for rogue pointers
6545 into that function. Further, since due to conservative scanning
6546 we may encounter free cells during marking, don't use the standard
6547 cell type accessor macro to determine the cell type.
6548
6549 (scm_cellp): Check if the cell pointer actually points into a
6550 card header.
6551
6552 (scm_init_gc): Initalize scm_tc16_allocated.
6553
6554 * gc.h (GCH): Renamed to SCM_GC_H.
6555
6556 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
6557 might be unnecessary, but I feel better this way :-)
6558
6559 (SCM_GC_CELL_TYPE): New macro.
6560
6561 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
6562 in guile, and it is unlikely that they will be applied to real
6563 pairs anyway.
6564
6565 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
6566
6567 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
6568 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
6569
6570 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
6571 make sure that in debug mode no free cell will ever be visible
6572 outside of the garbage collector.
6573
6574 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
6575
6576 * async.c (scm_asyncs_pending): Don't use != to compare SCM
6577 values.
6578
6579 * async.c (scm_system_async), variable.c (scm_make_variable,
6580 scm_make_undefined_variable): Use scm_cons to create a pair.
6581
6582 * debug.c (scm_reverse_lookup): Perform proper type checking.
6583 Remove suspicious use of SCM_SLOPPY_CONSP.
6584
6585 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
6586 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
6587 the corresponding optimization.
6588
6589 * eval.c (iqq): Use proper type check.
6590
6591 (scm_m_expand_body): Remove redundant type checks.
6592
6593 (promise_print): Don't access promise cells as pairs.
6594
6595 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
6596 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
6597 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
6598 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
6599 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
6600
6601 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
6602 (scm_iprin1): Use new macro predicate and accessors.
6603
6604 * eval.h (scm_tc16_macro): Removed declaration. It is declared
6605 in macros.h.
6606
6607 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
6608 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
6609 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
6610 SCM_VARIABLE_H. Even the macros that are used to inhibit
6611 including a header file twice should be in the SCM_ namespace.
6612
6613 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
6614 properties.c (scm_primitive_property_ref,
6615 scm_primitive_property_del_x): Prefer stronger predicates like
6616 SCM_NULLP or SCM_FALSEP over SCM_IMP.
6617
6618 * gc.c (MARK): Use proper macros to access procedure-with-setter
6619 cell elements and closure cell elements.
6620
6621 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
6622 access free cells as pairs.
6623
6624 (scm_unprotect_object): scm_hashq_get_handle returns #f if
6625 no hashtab entry is found.
6626
6627 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
6628 SCM_CLR_PORT_OPEN_FLAG.
6629
6630 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
6631 use SCM_SET_C[AD]R for uninitialized cells.
6632
6633 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
6634 If the hashtable has no slots, return #f instead of '(). This
6635 unifies the return value with most assoc-functions.
6636
6637 (scm_hash_fn_ref): Use proper type check.
6638
6639 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
6640 Removed references to non-existing functions from documentation.
6641
6642 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
6643 access keyword cell elements.
6644
6645 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
6646 macros.
6647
6648 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
6649
6650 * print.c (scm_iprlist): Added comment. Improved loop
6651 conditions.
6652
6653 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
6654 pairs.
6655
6656 * smob.c (scm_markcdr): Don't access smob cells as pairs.
6657
6658 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
6659
6660 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
6661 cells as pairs.
6662
6663 * variable.c (variable_print, variable_equalp, scm_variable_ref,
6664 scm_variable_set_x): Use proper macros to access variable cell
6665 elements.
6666
6667 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
6668
6669 * variable.h (SCM_VARVCELL): Don't access variable cells as
6670 pairs.
6671
6672 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
6673 added FIXME comment, removed register specifier.
6674
6675 2001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
6676
6677 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
6678 * init.c (scm_init_guile_1): Don't init goopscore module.
6679
6680 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
6681
6682 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
6683
6684 2001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6685
6686 * strop.c (scm_string_to_list): Fixed docstring markup.
6687 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
6688 (scm_string_downcase, scm_string_capitalize_x),
6689 (scm_string_capitalize): Rewrote and corrected docstrings.
6690 (scm_string_ci_to_symbol): Made docstring more explicit.
6691
6692 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
6693
6694 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
6695 eval.c can use it.
6696 (scm_call_with_values): Removed.
6697 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
6698 so that it can be exported.
6699 (scm_call_with_values): Removed.
6700
6701 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
6702 * eval.c: Include "libguile/values.h"
6703 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
6704 New.
6705 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
6706 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
6707 New delcarations to support above change.
6708
6709 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
6710 errors with last change.
6711
6712 2001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
6713
6714 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
6715 scm_i_eval): Moved the application of the system transformer from
6716 scm_i_eval to scm_primitive_eval.
6717
6718 2001-03-23 Neil Jerram <neil@ossau.uklinux.net>
6719
6720 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
6721
6722 * strop.c (scm_string_index): Fix docstring line break
6723 regression.
6724
6725 * list.c (scm_cons_star): Fix docstring typo.
6726
6727 2001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
6728
6729 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
6730 (big2str), ports.c (scm_drain_input), read.c (scm_read,
6731 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
6732 scm_make_string, scm_string_append), strports.c (st_resize_port,
6733 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
6734 scm_makstr with calls to scm_allocate_string.
6735
6736 * strings.[ch] (scm_allocate_string): New function.
6737
6738 * strings.[ch] (scm_makstr): Deprecated.
6739
6740 2001-03-18 Gary Houston <ghouston@arglist.com>
6741
6742 * posix.c (scm_tmpnam): check that return value from tmpnam is not
6743 NULL. rewrote the docstring.
6744 (scm_mkstemp): new procedure implementing "mkstemp!".
6745 * posix.h: declare scm_mkstemp.
6746
6747 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
6748 normally it would be found in netdb.h.
6749
6750 2001-03-17 Gary Houston <ghouston@arglist.com>
6751
6752 * sort.c (scm_sort): move sortvec variable to avoid a compiler
6753 warning when HAVE_ARRAYS is not defined. move len too.
6754
6755 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
6756 (EXTRA_DOT_X_FILES): let configure set the value.
6757 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
6758
6759 * gc.c (scm_must_malloc): changed the comment explaining when
6760 scm_must variants of malloc/free etc., should be used, based on
6761 explanation from Dirk Herrmann.
6762 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
6763 string with procedure name. use scm_must_malloc instead of malloc.
6764 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
6765 of malloc/free.
6766 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
6767 scm_ungetc): use scm_must variants of malloc/realloc/free.
6768 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
6769
6770 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
6771
6772 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
6773 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
6774 scm_wrong_type_arg instead.
6775
6776 (SCM_WNA): Deprecated.
6777
6778 * error.[ch] (scm_wta): Deprecated.
6779
6780 * numbers.c (s_i_log): Minor comment fix.
6781
6782 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
6783 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
6784 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
6785 wrong-num-args or misc errors.
6786
6787 * unif.c (scm_make_shared_array, scm_transpose_array,
6788 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
6789 Validate the rest argument (note: this is only done when guile is
6790 built with SCM_DEBUG_REST_ARGUMENT=1)
6791
6792 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
6793 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
6794
6795 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
6796 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
6797
6798 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
6799
6800 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
6801 instead of scm_wrong_num_args.
6802
6803 * coop-threads.c: Don't include libguile/strings.h. (Was only
6804 needed for former implementation of SCM_WRONG_NUM_ARGS.)
6805
6806 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
6807 wrong-num-args errors.
6808
6809 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
6810
6811 * error.[ch] (scm_error_num_args_subr): New function.
6812
6813 2001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6814
6815 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
6816 (scm_length, scm_append, scm_reverse, scm_list_ref),
6817 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
6818 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
6819 (scm_delete1_x), gc.c (scm_map_free_list),
6820 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
6821 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
6822 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
6823 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
6824 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
6825 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
6826 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
6827
6828 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
6829 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
6830 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
6831 symbols.c (scm_symbol_interned_p), numbers.c
6832 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
6833 markup.
6834
6835 2001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
6836
6837 * snarf.h (SCM_CONST_LONG): Deprecated.
6838 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
6839
6840 2001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
6841
6842 * numbers.c (scm_num2ulong): Check that a bignum is positive
6843 before looking at the magnitude. Correctly check for overflow
6844 during conversion.
6845 (scm_num2long_long): Likewise.
6846 (scm_num2ulong_long): New.
6847 (ULONG_LONG_MAX): Define if not already defined.
6848 * numbers.h: (scm_num2ulong_long): New prototype.
6849
6850 2001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6851
6852 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
6853
6854 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
6855 (SCM_OPOUTSTRPORTP): New predicate macros.
6856 (scm_open_input_string, scm_open_output_string),
6857 (scm_get_output_string): New prototypes.
6858
6859 * strports.c (scm_open_input_string, scm_open_output_string),
6860 (scm_get_output_string): New procedures (SRFI-6 compliant).
6861 Made scm_tc16_strport non-static.
6862
6863 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
6864
6865 * macros.h (SCM_ASSYNT): Removed unused object argument from
6866 signature.
6867
6868 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
6869 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
6870 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
6871 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
6872 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
6873 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
6874 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
6875 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
6876 scm_m_atdispatch): Removed unused object argument from call to
6877 SCM_ASSYNT.
6878
6879 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
6880
6881 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
6882 const int* to reflect that the input array of integers remains
6883 unchanged. Thanks to Brett Viren for the hint.
6884
6885 2001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6886
6887 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
6888 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
6889 in various places.
6890 (gh_scm2newstr, gh_symbol2newstr): Change call to
6891 scm_must_malloc() to malloc(), because user-free()able memory is
6892 allocated.
6893
6894 * gc.c: Added declaration of `scm_debug_check_freelist'.
6895
6896 2001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6897
6898 * ports.c (scm_port_mode): Changed `mode' array size to 4.
6899
6900 2001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
6901
6902 * strports.c (scm_object_to_string): New procedure.
6903 (scm_strprint_obj): Deprecated.
6904 * strports.h: Reflect the changes.
6905
6906 2001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
6907
6908 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
6909
6910 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
6911 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
6912 SCM_ASSYNT to check for correct argument types. Either use some
6913 SCM_VALIDATE_* macro or an explicit test.
6914
6915 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
6916 misc-errors.
6917
6918 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
6919 instead of calling scm_wta.
6920
6921 2001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6922
6923 * load.c (scm_primitive_load, scm_primitive_load_path),
6924 (scm_sys_search_load_path): Corrected docstrings (file ->
6925 filename).
6926
6927 * eval.c (scm_force): Added texinfo markup to docstring.
6928 (scm_promise_p): Renamed parameter to `obj' to match docstring.
6929
6930 * debug-malloc.c: Reinserted #include <stdio.h>.
6931
6932 2001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
6933
6934 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
6935
6936 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
6937 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
6938 Use SCM_LISTn instead of scm_listify.
6939
6940 2001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6941
6942 * _scm.h: Removed #include <errno.h>.
6943
6944 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
6945 errno variable (can be a macro on some systems, for example when
6946 using linux libc with threads).
6947
6948 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
6949 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
6950 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
6951 #include <errno.h> in these 20 out of 100 files.
6952
6953 2001-03-10 Gary Houston <ghouston@arglist.com>
6954
6955 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
6956 not already defined.
6957
6958 2001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6959
6960 * coop.c: Inserted #include <stdio.h>.
6961
6962 * iselect.c: Reinserted #include <stdio.h>.
6963
6964 2001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
6965
6966 * posix.c: Replaced `#define' of __USE_XOPEN right before
6967 including unistd.h with a define of _GNU_SOURCE at the very top of
6968 the file.
6969
6970 2001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
6971
6972 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
6973 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
6974 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
6975 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
6976 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
6977 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
6978 print.c, procprop.c, procs.c, properties.c, ramap.c,
6979 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
6980 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
6981 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
6982 Remove #include <stdio.h>
6983 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
6984
6985 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
6986
6987 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6988
6989 * posix.c (scm_gethostname): Set initial name length to 256 for
6990 Solaris.
6991
6992 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6993
6994 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
6995 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
6996 (scm_sethostname, scm_gethostname): New prototypes.
6997
6998 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
6999 <sys/file.h>, if present.
7000 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
7001 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
7002 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
7003 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
7004 (scm_sethostname, scm_gethostname): New procedures.
7005
7006 2001-03-08 Neil Jerram <neil@ossau.uklinux.net>
7007
7008 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
7009 not optional (ii) "recommend" spelling correction.
7010
7011 2001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7012
7013 * ramap.c (racp): Removed optimization which caused array copying
7014 to fail if the two arrays shared storage. Re-inserted the IVDEP
7015 macros removed in the change of 2000-03-09. (Don't really have a
7016 complete grasp of what they are for, but they seem to be necessary
7017 on Crays. This needs testing!) Thanks to Miroslav Silovic.
7018
7019 * hash.c (scm_string_hash): Don't downcase characters.
7020
7021 2001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7022
7023 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
7024 size from 277 --> 1009.
7025
7026 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
7027 function.
7028
7029 * coop-threads.c: Fixed change of 2001-03-06.
7030
7031 * validate.h: Code formatting.
7032
7033 2001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
7034
7035 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
7036 (*.doc): Add dependency on guile-snarf.awk.in.
7037
7038 * guile-snarf.awk.in: Neglect spaces at the end of
7039 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
7040 middle of docstrings. (To avoid the problem with gcc-2.96.)
7041
7042 2001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
7043
7044 * coop-threads.c (scm_call_with_new_thread), load.c
7045 (scm_primitive_load, scm_sys_search_load_path), random.c
7046 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
7047 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
7048 (potentially) issue a scm-misc-error or wrong-num-args error
7049 message.
7050
7051 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
7052 about the expected type with the wrong-type-arg error message.
7053
7054 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
7055 a C level bug that can't be fixed from scheme anyway.
7056
7057 2001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7058
7059 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
7060 Duplicate bindings are OK in a let* since a let* is semantically
7061 equivalent to a nested set of let:s.
7062
7063 2001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7064
7065 * print.c (scm_print_options): Fixed texinfo in docstring.
7066
7067 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
7068 the underlying functions getservent, getprotoent or getnetent
7069 return NULL instead of signalling an error.
7070
7071 2001-03-04 Gary Houston <ghouston@arglist.com>
7072
7073 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
7074 taking an unexpectedly large filename for an AF_UNIX socket from
7075 bind/connect/sendto (thanks to Martin Grabmueller).
7076
7077 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
7078 former and adjusted the latter.
7079 (scm_socket, scm_socketpair): cosmetic changes.
7080 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
7081 size_t as socklen_t substitute. don't restrict args/return values
7082 to INUM: allow full range of int or size_t.
7083 (scm_fill_sockaddr): check arguments before allocating memory, to
7084 avoid leakage. use malloc, not scm_must_malloc.
7085 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
7086 substitute. free the sockaddr structure before throwing an error.
7087 (scm_init_add_buffer): procedure removed, together with its static
7088 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
7089 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
7090 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
7091 scm_sendto): use a local buffer instead of scm_addr_buffer.
7092 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
7093 not size_t.
7094 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
7095 call to detect whether recvfrom could be bothered to set the address.
7096 (scm_init_socket): don't call scm_init_addr_buffer.
7097
7098 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
7099
7100 * debug.c (scm_procedure_source, scm_procedure_environment),
7101 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
7102 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
7103 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
7104 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
7105 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
7106 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
7107 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
7108 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
7109 scm_array_to_list, scm_array_prototype), validate.h
7110 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
7111 scm_misc_error or scm_wrong_type_arg instead.
7112
7113 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
7114
7115 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7116
7117 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
7118 (scm_sys_tag_body): Added.
7119
7120 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
7121
7122 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
7123 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
7124 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
7125 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
7126 options.c (scm_options), ports.c (scm_remove_from_port_table),
7127 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
7128 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
7129 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
7130 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
7131 instead.
7132
7133 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7134
7135 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
7136
7137 2001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
7138
7139 * eval.c (scm_s_duplicate_bindings): New error message.
7140 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
7141
7142 2001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
7143
7144 * eval.h (SCM_EVALIM2): New macro. Use it when a
7145 immediate, literal constant should be evaluated.
7146 * eval.c (scm_s_duplicate_formals): New error message string.
7147 (scm_c_improper_memq): New function.
7148 (scm_m_lambda): Check for duplicate arguments.
7149 (scm_ceval, scm_deval): When executing a body: only cons a new
7150 toplevel environment frame when it is different from the
7151 existing one; use EVALCAR instead of SIDEVAL so that we can properly
7152 check for empty combinations; use SCM_EVALIM2 for the same reason
7153 in the non-toplevel loop.
7154 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
7155 New labels with the meaning of their non-"nontoplevel" partners,
7156 but they are used when it is known that the body is not evaluated at
7157 top-level.
7158 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
7159 reporting for empty combinations.
7160
7161 2001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
7162
7163 * Remove dump facilities.
7164 * dump.c, dump.h: Removed.
7165 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
7166 * init.c: Remove #include "libguile/dump.h".
7167 (scm_init_guile_1): Remove scm_init_dump.
7168 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
7169 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
7170 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
7171 (scm_set_smob_dump, scm_set_smob_undump): Removed.
7172
7173 * keywords.c: Remove #include "libguile/dump.h".
7174 (keyword_dump, keyword_undump): Removed.
7175 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
7176
7177 2001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7178
7179 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
7180 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
7181 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
7182 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
7183 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
7184 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
7185 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
7186 to @code{} as the texinfo manual recommends, converted the
7187 examples to use a @lisp{}-environment.
7188
7189 * strports.c (scm_eval_string): Cleaned up the docstring.
7190
7191 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
7192 markup.
7193
7194 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
7195 (scm_number_to_string, scm_string_to_number, scm_number_p)
7196 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
7197 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
7198 (scm_ash): Added texinfo markup and removed obsolete @refill.
7199 (scm_gr_p): Corrected comment.
7200 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
7201 docstring) comments.
7202 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
7203 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
7204 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
7205 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
7206 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
7207 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
7208 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
7209 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
7210
7211 2001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
7212
7213 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
7214 (Obviously nobody compiles with SCM_RECKLESS defined...)
7215
7216 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
7217
7218 2001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7219
7220 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
7221
7222 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
7223
7224 2001-02-24 Neil Jerram <neil@ossau.uklinux.net>
7225
7226 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
7227 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
7228 since use of `z' suggests that the arguments may be complex.
7229
7230 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
7231 typos.
7232
7233 2001-02-23 Neil Jerram <neil@ossau.uklinux.net>
7234
7235 * dump.c (scm_binary_write, scm_binary_read), eval.c
7236 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
7237 scm_guardian_greedy_p, scm_make_guardian), fports.c
7238 (scm_file_port_p): Minor docstring fixes.
7239
7240 2001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
7241
7242 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
7243
7244 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
7245 scm_i_eval.
7246 (make_class_from_template): Do not bother to set the current
7247 module around the call to DEFVAR, scm_eval takes care of that.
7248 (scm_init_goops): Make scm_module_goops and
7249 scm_goops_lookup_closure permanent objects.
7250
7251 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
7252 top level, create a fresh top-level environment for each
7253 expression instead of mutating the exisint frame. This is
7254 important when that frame is closed over.
7255
7256 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
7257 SCM_DIGSPERLONG instead of DIGSPERLONG.
7258
7259 2001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
7260
7261 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
7262 before applying arrow procedure in `cond' and before applying
7263 receiver procedure in call-with-current-continuation.
7264 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
7265 macro. The argument is expanded more than one time.
7266
7267 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
7268 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
7269
7270 2001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
7271
7272 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
7273 notice and license.
7274
7275 2001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7276
7277 * variable.c (scm_make_variable, scm_make_undefined_variable)
7278 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
7279 (scm_variable_bound_p), values.c (scm_values)
7280 (scm_call_with_values), unif.c (scm_bit_count)
7281 (scm_bit_set_star_x), symbols.c (scm_gentemp)
7282 (scm_gensym), strings.c (scm_string_p, scm_make_string)
7283 (scm_read_only_string_p, scm_string_length, scm_string_ref)
7284 (scm_string_set_x, scm_substring, scm_string_append), stime.c
7285 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
7286 (scm_copy_random_state, scm_random), print.c (scm_newline)
7287 (scm_write_char, scm_simple_format), debug-malloc.c
7288 (scm_malloc_stats), environments.c (scm_environment_p)
7289 (scm_environment_bound_p, scm_environment_ref)
7290 (scm_environment_fold, scm_environment_define)
7291 (scm_environment_undefine, scm_environment_set_x)
7292 (scm_environment_cell, scm_environment_observe)
7293 (scm_environment_observe_weak, scm_environment_unobserve)
7294 (scm_make_eval_environment, scm_eval_environment_p)
7295 (scm_eval_environment_set_local_x, scm_eval_environment_local)
7296 (scm_eval_environment_imported)
7297 (scm_eval_environment_set_imported_x, scm_make_import_environment)
7298 (scm_import_environment_p, scm_import_environment_imports)
7299 (scm_import_environment_set_imports_x, scm_make_export_environment)
7300 (scm_export_environment_p, scm_export_environment_private)
7301 (scm_export_environment_set_private_x)
7302 (scm_export_environment_signature)
7303 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
7304 Added texinfo markup.
7305
7306 * ports.c (scm_drain_input): Lowercased argument to @var.
7307 (scm_current_input_port, scm_current_output_port): Filled in
7308 missing explanation.
7309 (scm_current_load_port, scm_set_current_output_port)
7310 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
7311 Added texinfo markup.
7312
7313 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
7314 (scm_release_arbiter): Added texinfo markup to docstrings.
7315 Changed `Returns' to `Return'.
7316 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
7317
7318 2001-02-16 Neil Jerram <neil@ossau.uklinux.net>
7319
7320 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
7321 by doubling them to `@@'.
7322
7323 2001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7324
7325 * numbers.c (scm_lognot), random.c (scm_random,
7326 scm_random_normal, scm_random_solid_sphere_x,
7327 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
7328 scm_random_exp), dynwind.c
7329 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
7330
7331 * goops.c (scm_sys_initialize_object, scm_instance_p,
7332 scm_class_name, scm_class_precedence_list, scm_class_slots,
7333 scm_class_environment, scm_generic_function_name,
7334 scm_generic_function_methods, scm_method_generic_function,
7335 scm_method_specializers, scm_method_procedure, scm_make_unbound,
7336 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
7337 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
7338 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
7339 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
7340 scm_class_direct_supers, scm_class_direct_slots,
7341 scm_class_direct_subclasses, scm_class_direct_methods,
7342 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
7343 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
7344 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
7345 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
7346 scm_memoized_environment, scm_procedure_name,
7347 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
7348 objects.c
7349 (scm_class_of, scm_entity_p, scm_operator_p,
7350 scm_set_object_procedure_x, scm_object_procedure,
7351 scm_make_class_object), hooks.c (scm_make_hook_with_name,
7352 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
7353 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
7354 scm_hook_to_list), lang.c
7355 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
7356 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
7357 (scm_print_options, scm_port_with_print_state,
7358 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
7359 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
7360 scm_make_procedure_with_setter, scm_procedure), throw.c
7361 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
7362 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
7363 scm_stack_ref, scm_stack_length, scm_frame_p,
7364 scm_last_stack_frame, scm_frame_number, scm_frame_source,
7365 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
7366 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
7367 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
7368 (scm_dirname, scm_basename), dynwind.c
7369 (scm_wind_chain), read.c (scm_read_options, scm_read,
7370 scm_read_hash_extend), gc.c
7371 (scm_unhash_name), eval.c (scm_eval_options_interface,
7372 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
7373 (scm_display_error, scm_set_print_params_x,
7374 scm_display_application, scm_display_backtrace, scm_backtrace),
7375 async.c (scm_async, scm_system_async, scm_async_mark,
7376 scm_system_async_mark, scm_run_asyncs, scm_noop,
7377 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
7378 scm_mask_signals): Added docstrings.
7379
7380 2001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
7381
7382 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
7383 address of car/cdr. (Thanks to Dirk Herrmann)
7384 Use scm_sizet to obtain the length of strings.
7385 (Thanks to Matthias Koeppe)
7386
7387 2001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
7388
7389 * symbols.c (scm_mem2symbol): Put a empty statement after the
7390 next_symbol label. This is mandated by ANSI, appearantly.
7391
7392 2001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7393
7394 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
7395 sense to compile for a specific kernel version. Do not include
7396 <asm/signal.h> while defining __KERNEL__. This hack should no
7397 longer be needed and caused problems.
7398
7399 2001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
7400
7401 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
7402 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
7403 can not deal with immediates.
7404
7405 2001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
7406
7407 * list.c (scm_list_copy): Validate the first argument.
7408
7409 2001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
7410
7411 Fix evaluator so that top-level expressions are correctly
7412 evaluated with respect to the module system.
7413
7414 * modules.h. modules.c (scm_current_module_lookup_closure): New
7415 function.
7416
7417 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
7418 prototypes.
7419 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
7420 names to better reflect their meaning.
7421
7422 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
7423 evaluated at top-level and synronize lookup closure before
7424 executing every subform.
7425 (scm_primitve_eval_x, scm_primitive_eval): New functions.
7426 (scm_eval_x, scm_eval): Reimplement in terms of
7427 scm_primitive_eval_x and scm_primitive_eval, respectively.
7428
7429 2001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
7430
7431 * macros.c (scm_macro_name, scm_macro_transformer): Use
7432 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
7433 Thanks!
7434
7435 2001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
7436
7437 * dump.c (scm_store_bytes): Store data size before data.
7438 (scm_restore_bytes): Restore data size. Takes a pointer to size.
7439 * dump.h (scm_restore_bytes): Updated.
7440
7441 2001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
7442
7443 * dump.c: Use double cells for update schedule.
7444
7445 2001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
7446
7447 * ports.c (scm_unread_char): Take an optional argument.
7448
7449 2001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7450
7451 * modules.h (scm_selected_module, scm_current_module): Renamed
7452 scm_selected_module to scm_current_module to synchronize Scheme
7453 and C names.
7454 (scm_select_module, scm_set_current_module): Likewise. Changed
7455 all uses.
7456
7457 * ports.c (scm_port_for_each): Make a snapshot of the port table
7458 before iterating over it. The table might change while the user
7459 code is running. With the snapshot, the user can depend on the
7460 fact that each port that existed at the start of the iteration is
7461 encountered exactly once. (ice-9 popen) depends on this.
7462
7463 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
7464
7465 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
7466
7467 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
7468 range checking for the size parameter. Thanks to Martin
7469 Grabmueller for the hint.
7470
7471 (scm_makstr): Reordered string initialization to make interrupt
7472 deferring unnecessary.
7473
7474 * vectors.c (scm_make_vector): Fixed range checking.
7475
7476 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
7477
7478 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
7479
7480 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
7481 checking of the size parameter for type correctness and valid
7482 range. Thanks to Rob Browning for reporting the problem. Instead
7483 of deferring interrupts, scm_remember_upto_here_1 is used.
7484
7485 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
7486
7487 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
7488 (scm_dump_cell_update): Removed.
7489 (scm_dump_update): Renamed from scm_dump_object_update.
7490 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
7491 a pointer instead of returning a value.
7492 * keywords.c (keyword_undump): Updated.
7493
7494 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
7495
7496 * dump.c, dump.h: Modified a lot.
7497 (SCM_DUMP_COOKIE): Version 0.1
7498 (scm_dump_mark): Removed.
7499 (scm_restore_cell_object, scm_store_cell_object): New functions.
7500
7501 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
7502 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
7503 New slots: dump, undump.
7504 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
7505 Updated.
7506
7507 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
7508 (keyword_undump): Renamed from keyword_alloc.
7509 (scm_init_keywords): Set keyword_dump and keyword_undump.
7510
7511 2001-02-03 Michael Livshin <mlivshin@bigfoot.com>
7512
7513 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
7514 the deprecated SCM_DOUBLE_CELLP.
7515
7516 * tags.h (SCM_DOUBLE_CELLP): deprecated.
7517
7518 2001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
7519
7520 * dump.c, dump.h: New files.
7521 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
7522 * init.c: #include "libguile/dump.h".
7523 (scm_init_guile_1): Call scm_init_dump.
7524 * smob.h (scm_smob_descriptor): New slots: dump_mark,
7525 dump_dealloc, dump_store, undump_alloc, undump_restore,
7526 undump_init.
7527 * smob.c (scm_make_smob_type): Init the new slots.
7528 (scm_set_smob_dump, scm_set_smob_undump): New functions.
7529 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
7530
7531 * keywords.c: #include "libguile/dump.h".
7532 (keyword_dealloc, keyword_alloc): New functions.
7533 (scm_init_keywords): Set smob_dump and smob_undump.
7534
7535 2001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
7536
7537 * vectors.c (scm_c_make_vector): New function.
7538 * vectors.h (scm_c_make_vector): Declared.
7539 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
7540 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
7541 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
7542 (scm_make_method_cache, scm_i_vector2list,
7543 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
7544 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
7545 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
7546 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
7547 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
7548 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
7549 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
7550 (scm_vector, scm_make_vector): Use scm_c_make_vector.
7551
7552 * hashtab.c (scm_c_make_hash_table): New function.
7553 * hashtab.h (scm_c_make_hash_table): Declared.
7554 * environments.c (scm_make_leaf_environment,
7555 scm_make_eval_environment), gc.c (scm_init_storage),
7556 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
7557 Use scm_c_make_hash_table.
7558
7559 2001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7560
7561 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
7562
7563 2001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7564
7565 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
7566 end of docstring.
7567
7568 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
7569 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
7570 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
7571 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
7572 srcprop.c (scm_source_properties, scm_set_source_properties_x,
7573 scm_source_property, scm_set_source_property_x), sort.c
7574 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
7575 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
7576 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
7577 docstrings.
7578
7579 2001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7580
7581 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
7582 really get that arg.
7583
7584 2001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
7585
7586 * goops.c (s_scm_get_keyword): Bug fix.
7587
7588 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
7589
7590 The following patch was sent by Martin Grabmueller. It makes sure
7591 that in case of parameter errors the correct function name is
7592 shown, and that parameter types are only checked once.
7593
7594 * strop.c (string_copy, string_upcase_x, string_downcase_x,
7595 string_capitalize_x): New functions. Each one performs the core
7596 functionality of the corresponding scm_* function.
7597
7598 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
7599 scm_string_downcase_x, scm_string_downcase,
7600 scm_string_capitalize_x, scm_string_capitalize): Reduced to
7601 parameter checking wrappers of the above functions.
7602
7603 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
7604
7605 * continuations.c, dynl.c, keywords.c, load.c: Include
7606 strings.h. Thanks to Bill Schottstaedt for the bug report.
7607
7608 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
7609
7610 * backtrace.c (display_header): Make sure that line and column
7611 information is shown independent of whether the port the code was
7612 read from had an associated filename. Thanks to Martin
7613 Grabmueller for providing this patch.
7614
7615 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
7616
7617 * fports.[ch] (scm_file_port_p): New primitive.
7618
7619 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
7620
7621 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
7622 These are now defined in fports.c, strports.c and vports.c.
7623
7624 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
7625 vports.c (scm_tc16_sfport): Made variables (were macros defined in
7626 tags.h).
7627
7628 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
7629 (scm_make_sfptob): Made static. These return a type code now.
7630
7631 fports.c (scm_init_fports), strports.c (scm_init_strports),
7632 vports.c (scm_init_vports): Create the corresponding port types.
7633
7634 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
7635 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
7636
7637 * init.c (scm_init_guile_1): Make sure strports are initialized
7638 before gdbint.
7639
7640 * ports.[ch] (scm_make_port_type): Changed the return type to
7641 scm_bits_t.
7642
7643 * ports.c (scm_ports_prehistory): Don't create any port types
7644 here.
7645
7646 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
7647 against scm_tc16_fport directly.
7648
7649 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
7650
7651 * srcprop.c (scm_set_source_property_x): Fix to handle
7652 (set-source-property! <obj> 'copy <datum>) correctly.
7653
7654 2001-01-24 Gary Houston <ghouston@arglist.com>
7655
7656 * filesys.c (scm_link): docstring fix.
7657 * fports.h (scm_setfileno): obsolete declaration removed.
7658 * posix.c: bogus popen declaration removed.
7659
7660 * rdelim.c: new file, split from ioext.c.
7661 * rdelim.h: new file, split from ioext.h
7662 * Makefile.am: add rdelim.c and related files.
7663 * init.c: call scm_init_rdelim. include rdelim.h.
7664
7665 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7666
7667 This patch was sent by Martin Grabmueller and makes sure that
7668 parameter errors are reported correctly by the lexicographic
7669 ordering predicates.
7670
7671 * strorder.c (string_less_p, string_ci_less_p): New functions.
7672
7673 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
7674 functionality into string_less_p, string_ci_less_p respectively.
7675 The remaining code is just a wrapper to do the parameter
7676 checking.
7677
7678 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
7679 parameters and call string_less_p instead of scm_string_less_p.
7680
7681 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
7682 Check the parameters and call string_less_ci_p instead of
7683 scm_string_ci_less_p.
7684
7685 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7686
7687 This patch modifies scm_display_error to perform parameter
7688 checking. Thanks to Neil Jerram for the bug report.
7689
7690 * backtrace.[ch] (scm_i_display_error): New function.
7691
7692 * backtrace.c (scm_display_error): Added parameter check and
7693 extracted the core functionality into function
7694 scm_i_display_error.
7695
7696 * throw.c (handler_message): Call scm_i_display_error to display
7697 the error message.
7698
7699 2001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7700
7701 * eval.c (SCM_APPLY): Added # args check for application of
7702 procedures with arity 3. (Thanks to Anders Holst.)
7703
7704 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
7705
7706 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
7707
7708 (SCM_OPDIRP): Deprecated.
7709
7710 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
7711 SCM_OPN.
7712
7713 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
7714 Instead, give an explicit error message in case the directory is
7715 closed.
7716
7717 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
7718 instead of SCM_OPENP and SCM_CLOSEDP.
7719
7720 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
7721
7722 2001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
7723
7724 * eval.c (inner_eval, scm_eval): Move all real functionality into
7725 inner_eval. Avoid to copy the expression twice by inlining some
7726 code from scm_i_eval.
7727
7728 2001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
7729
7730 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
7731 now has to be the last clause, as required by R5RS. Thanks to
7732 Martin Grabmueller for the patch.
7733
7734 2001-01-18 Gary Houston <ghouston@arglist.com>
7735
7736 * ioext.c: further simplify scm_read_string_x_partial by defining
7737 a macro SCM_EBLOCK.
7738
7739 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
7740
7741 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
7742
7743 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
7744
7745 * __scm.h: Added comment about architecture and compiler
7746 properties that are required by guile.
7747
7748 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
7749 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
7750
7751 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
7752
7753 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
7754
7755 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
7756 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
7757
7758 2001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
7759
7760 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
7761 to the names in limits.h.
7762
7763 * numbers.c (abs_most_negative_fixnum): Added.
7764
7765 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
7766 fixnum-min) special case.
7767
7768 (scm_big_and): Fix for negative first parameter.
7769
7770 (scm_bit_extract): Fix for fixnum paramters.
7771 Thanks to Rob Browning for the bug report.
7772
7773 (scm_init_numbers): Initialize abs_most_negative_fixnum.
7774
7775 2001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
7776
7777 * symbols.c (scm_symbol_bound_p): Fixed comment.
7778 Thanks to Chris Cramer.
7779
7780 2001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
7781
7782 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
7783 Thanks to Bill Schottstaedt.
7784
7785 2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
7786
7787 from Matthias Köppe:
7788
7789 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
7790 casts its result, so doesn't yield an lvalue per ANSI C.
7791
7792 * goops.c (s_scm_sys_set_object_setter_x): use
7793 SCM_SET_ENTITY_SETTER.
7794 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
7795
7796 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
7797 its result, so doesn't yield an lvalue per ANSI C.
7798 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
7799 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
7800 SCM_GC_SET_CARD_FLAGS.
7801 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
7802
7803 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
7804
7805 2001-01-08 Gary Houston <ghouston@arglist.com>
7806
7807 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
7808 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
7809 socket.c (scm_recvfrom): use the new macro, plus minor docstring
7810 changes.
7811 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
7812 for fdes. if current input port is used, check that it's a file
7813 port.
7814
7815 2001-01-06 Gary Houston <ghouston@arglist.com>
7816
7817 * ioext.c (scm_read_string_x_partial): new procedure, implements
7818 read-string!/partial.
7819 * ports.c (scm_take_from_input_buffers): new procedure used by
7820 scm_read_string_x_partial.
7821 (scm_drain_input): use scm_take_from_input_buffers.
7822
7823 2001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
7824
7825 * validate.h (SCM_VALIDATE_NUMBER): New.
7826
7827 2001-01-03 Michael Livshin <mlivshin@bigfoot.com>
7828
7829 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
7830 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
7831 SET_DESTROYED): new defines/macros.
7832 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
7833 (add_to_live_list): takes a `guardian_t *' now, not SCM.
7834 (guardian_print): print more info.
7835 (guardian_apply): check if the guardian is destroyed, and throw an
7836 error if so. take one more optional argument `throw_p'.
7837 (scm_guard): depending on the value of `throw_p', return a boolean
7838 result.
7839 (scm_get_one_zombie): remove redundant property test.
7840 (guardian_t): represent the various (currently 3, I hope nothing
7841 more gets added) boolean fields as bit flags.
7842 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
7843 (scm_destroy_guardian_x): new procedure.
7844
7845 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
7846 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
7847
7848 2001-01-01 Gary Houston <ghouston@arglist.com>
7849
7850 * fports.c (fport_write): bugfix: handle short writes for
7851 unbuffered ports too. optimize the buffered case by minimizing
7852 the number of write/flush calls.
7853 (write_all): new helper procedure.
7854
7855 The ChangeLog continues in the file: "ChangeLog-2000"