* eval.c (scm_m_atdispatch): Removed until actually needed. (This
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
c8e1d354
MD
12003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2
3 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
4 macro was introduced in anticipation of GOOPS method compilation
5 code.)
6
7 * goops.c: Removed binding of @dispatch.
8
a4aa2134
DH
92003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
10
11 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
12 instructions that bind the macros on the scheme level back to
13 goops.c in order to make sure again that the bindings go into the
14 (oop goops) module and are not visible from the outside.
15
9fbee57e
DH
162003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
17
18 * eval.c: Non functional change: Separated R5RS and non-R5RS
19 macros into different sections of the file and ordered the
20 memoizers alphabetically.
21
12841895
DH
222003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
23
24 * eval.c (scm_ilookup): Rewritten to improve readability.
25
6a3f13f0
DH
262003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
27
28 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
29 Partially reverted patch from 2003-04-23 in oder to find a better
30 compromise between readability and debuggability.
31
b0c5d67b
DH
322003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
33
34 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
35 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
36 definitions of the special goops memoizers from goops.[ch] to
37 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
38 throughout guile.
39
b9ad392e
MD
402003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
41
42 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
43
44 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
45
46 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
47
48 * ioext.c (scm_fdes_to_ports): Ditto.
49
50 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
51 lock/unlock scm_i_port_table_mutex.
52
53 * strports.c (scm_mkstrport): Ditto.
54
55 * ports.c (scm_void_port, scm_port_for_each): Ditto.
56
57 * fports.c (scm_fdes_to_port): Ditto.
58
d0b07b5d
DH
592003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
60
61 This set of patches contains no functional changes, only debatable
62 minor stylistic ones. Still, in order to prepare a patch between
63 my local copy and the CVS version, I decided to submit the changes
64 below. Then, the patch will hopefully only contain relevant
65 modifications :-)
66
67 * eval.c (iqq): Added const specifier.
68
69 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
70 Use NULL instead of 0 to indicate that a pointer is returned.
71 Removed some misleading 'fall through' comments.
72
73 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
74 Split up long expressions into smaller ones to be more debugging
75 friendly.
76
a98e8e98
DH
772003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
78
79 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
80 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
81 rather than casting to SCM.
82
c178c3a6
DH
832003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
84
85 * sort.c, pairs.h: Removed unnecessary includes.
86
d339981a
DH
872003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
88
89 * sort.c: Replaced hand-made trampline code by the new official
90 mechanism from eval.c. This fixes a segfault in the new test file
91 sort.test.
92
93 (quicksort, compare_function, scm_restricted_vector_sort_x,
94 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
95 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
96 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
97 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
98 eval.c.
99
100 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
101 cmp_fun_t): Removed.
102
103 (compare_function): Added.
104
105 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
106 arithmetics with index arithmetics. Changed quicksort to work on
107 an array of SCM values instead of an array of characters. Avoid
108 bytewise copying of SCM elements. Avoid allocating memory on the
109 stack with alloca. Fixed some comments.
110
821f18a4
DH
1112003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
112
113 * eval.c (EXTEND_ENV): Eliminated.
114
115 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
116 EXTEND_ENV.
117
94fb5a6e
DH
1182003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
119
120 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
121
122 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
123 compiling with SCM_DEBUG==1 by moving definition behind prototype.
124
125 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
126 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
127 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
128 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
129 functions such that they check if the object is a non-immediate.
130 Further, renamed identifiers to use the scm_dbg_ prefix and made
131 their inclusion into the lib dependent of the
132 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
133
fce0b22d
DH
1342003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
135
136 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
137 debug option.
138
1685446c
DH
1392003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
140
821f18a4 141 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
142 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
143 any calls to SCM_NCONSP any more.
144
145 * unif.c (l2ra): Eliminate redundant check.
146
9ff1720f
DH
1472003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
148
149 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
150 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
151 SCM_NNULLP. Now, guile itself does not include any calls to
152 SCM_NNULLP any more.
153
05b15362
DH
1542003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
155
156 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
157 scm_copy_tree): Place assignment expressions which are part of
158 other expressions into an expression of their own.
159
0c88d7df
DH
1602003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
161
162 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
163 compare SCM values with !=.
164
5cb22e96
DH
1652003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
166
167 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
168 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
169 and definition of the memoizer for the generalized set! macro from
170 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
171 define the macro object.
172
173 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
174 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
175 eval.c, it is made static and renamed to s_set_x.
176
177 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
178 over SCM_N<foo>.
179
a44a9715
DH
1802003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
181
182 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
183 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
184 to undefineds and registered the object as a permanent object.
185
186 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
187 static in eval.c, renamed it to f_apply and registered the object
188 as a permanent object.
189
1b43d24c
DH
1902003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
191
5cb22e96 192 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
193 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
194
aec16f99
DH
1952003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
196
197 * numbers.c (scm_logtest): Fixed argument bug in the call to
198 mpz_and, which showed up when compiling with SCM_DEBUG defined.
199
f96460ce
DH
2002003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
201
202 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
203 type errors that showed up when compiling with SCM_DEBUG defined.
204
d0f6ceb8
DH
2052003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
206
207 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
208 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
209 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
210 fix compile errors with --disable-deprecated.
211
19a7a089
RB
2122003-04-17 Rob Browning <rlb@defaultvalue.org>
213
214 * numbers.c (scm_integer_expt): fix case where we were declaring
215 vars in the middle of a statement block. Thanks to Thamer
216 Al-Harbash.
217
47cd67db
MD
2182003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
219
0fd7dcd3
MD
220 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
221 change.
222
47cd67db
MD
223 * eq.c (scm_eqv_p): Turned into a primitive generic.
224
3b8b889c
RB
2252003-04-16 Rob Browning <rlb@defaultvalue.org>
226
312006bb
RB
227 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
228 Thanks to Boyd Gerber.
229 Added check for __arm__ in addition to arm for LINUX and copied
230 __s390__ defines from upstream libgc. Thanks to James Treacy for
231 reporting the problems.
c7ef2ea1 232
3b8b889c
RB
233 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
234
235 * socket.c: use SCM_CHAR_BIT.
236
237 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
238
239 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
240
43261b39
MD
2412003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
242
243 * feature.c (scm_init_feature): Always add threads feature.
244
58241edc
MD
2452003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
246
247 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
248 scm_at_assert_bound_ref. (We don't want the unbound check. See
249 oop/goops/active-slot.scm.)
250
94e91275
RB
2512003-04-14 Rob Browning <rlb@defaultvalue.org>
252
253 * tags.h: scm_t_intptr should have been intptr_t.
254
3071ea27
RB
2552003-04-13 Rob Browning <rlb@defaultvalue.org>
256
257 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
258 test. Instead use
259 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
260 as gc_os_dep.c suggests is appropriate.
261
262 * goops.c (prep_hashsets): make static to match prototype.
263 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
264 Chin.
265
266 * c-tokenize.lex: remove trailing comma from enum. Thanks to
267 Albert Chin.
268
269 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
270 Klausner.
271
21ab2aeb
MD
2722003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
273
274 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
275 indicated through extra fields in getters-n-setters.
276 (scm_add_slot): Adapted to new format of getters_n_setters slot.
277 (Thanks to Andy Wingo.)
278
dff96e95
HWN
2792003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
280
281 * gc-segment.c: add comment
282
07921c76
RB
2832003-04-07 Rob Browning <rlb@defaultvalue.org>
284
b5331f10
RB
285 * debug.h: change "id" arg name to "info_id" to avoid objective-c
286 clash.
287
07921c76
RB
288 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
289 and add regression test to standalone/.
290
2912003-04-06 Rob Browning <rlb@defaultvalue.org>
292
293 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
294 Thanks to Dale P. Smith.
295
296 * random.c: #include gmp.h.
297 (scm_c_random_bignum): normalize result on return.
298
299 * init.c: #include gmp.h.
300
301 * numbers.h: remove the gmp.h #include (not needed now).
302
303 * posix.h: change occurences of "id" to something else so we don't
304 cause trouble when included via objective-c (can't hurt, might
305 help). Still have usage in debug.h, though.
306
938f6b7c
MD
3072003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
308
372691d8
MD
309 * random.c (scm_c_random_bignum): Don't generate a random number
310 equal to m (the second argument of scm_c_random_bignum); only
311 generate numbers in the range 0 <= r < m.
c5f268f8
MD
312 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
313 scm_var_random_state.
372691d8 314
938f6b7c
MD
315 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
316 clause.
317
6cdb8c3f
RB
3182003-04-05 Rob Browning <rlb@defaultvalue.org>
319
938f6b7c 320 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
321 uses before any code.
322
15635be5
MD
3232003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
324
1ecfd013
MD
325 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
326 not top_srcdir.
327
15635be5
MD
328 * hashtab.c (rehash_after_gc): Clear to_rehash list before
329 processing it in order to avoid an infinite loop.
330
331 * print.c (scm_prin1): Remember old state of pstate->writingp.
332
73be1d9e
MV
3332003-04-05 Marius Vollmer <mvo@zagadka.de>
334
335 * Changed license terms to the plain LGPL thru-out.
336
ad815c06
RB
3372003-04-04 Rob Browning <rlb@defaultvalue.org>
338
339 * socket.c (FLIPCPY_NET_HOST_128): new macro.
340 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
341 rewrite to handle GMP bignums.
342
343
344 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
345
346 * ports.c (scm_getc): minor tweak.
347
348 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
349 rewrite to handle GMP bignums.
350
351 * numbers.c: rewrite *many* functions to handle GMP bignums.
352
353 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
354 handle GMP bignums.
355
356 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
357
358 * init.c (check_config): remove SCM_BIGDIG conditionals.
359 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
360
361 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
362
363 * eval.c: remove SCM_BIGDIG conditionals.
364
365 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
366
6cdb8c3f
RB
3672003-03-31 Rob Browning <rlb@defaultvalue.org>
368
369 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
370 to Kevin Ryde.)
371
3722003-03-27 Rob Browning <rlb@defaultvalue.org>
373
374 * threads.h: fix various preprocessor usages of new public
375 symbols to expect 0 or 1 values rather than 1 or undefined.
376 i.e. change #ifdef to #if, etc.
377
378 * threads.c: fix various preprocessor usages of new public
379 symbols to expect 0 or 1 values rather than 1 or undefined.
380 i.e. change #ifdef to #if, etc.
381
382 * tags.h: fix various preprocessor usages of new public
383 symbols to expect 0 or 1 values rather than 1 or undefined.
384 i.e. change #ifdef to #if, etc.
385
386 * stacks.c: fix various preprocessor usages of new public
387 symbols to expect 0 or 1 values rather than 1 or undefined.
388 i.e. change #ifdef to #if, etc.
389
390 * stackchk.h: fix various preprocessor usages of new public
391 symbols to expect 0 or 1 values rather than 1 or undefined.
392 i.e. change #ifdef to #if, etc.
393
394 * stackchk.c: fix various preprocessor usages of new public
395 symbols to expect 0 or 1 values rather than 1 or undefined.
396 i.e. change #ifdef to #if, etc.
397
398 * sort.c: fix various preprocessor usages of new public
399 symbols to expect 0 or 1 values rather than 1 or undefined.
400 i.e. change #ifdef to #if, etc.
401
402 * read.c: fix various preprocessor usages of new public
403 symbols to expect 0 or 1 values rather than 1 or undefined.
404 i.e. change #ifdef to #if, etc.
405
406 * random.c: fix various preprocessor usages of new public
407 symbols to expect 0 or 1 values rather than 1 or undefined.
408 i.e. change #ifdef to #if, etc.
409
410 * print.c: fix various preprocessor usages of new public
411 symbols to expect 0 or 1 values rather than 1 or undefined.
412 i.e. change #ifdef to #if, etc.
413
414 * objects.c: fix various preprocessor usages of new public
415 symbols to expect 0 or 1 values rather than 1 or undefined.
416 i.e. change #ifdef to #if, etc.
417
418 * numbers.h: fix various preprocessor usages of new public
419 symbols to expect 0 or 1 values rather than 1 or undefined.
420 i.e. change #ifdef to #if, etc.
421
422 * null-threads.c: fix various preprocessor usages of new public
423 symbols to expect 0 or 1 values rather than 1 or undefined.
424 i.e. change #ifdef to #if, etc.
425
426 * lang.c: fix various preprocessor usages of new public
427 symbols to expect 0 or 1 values rather than 1 or undefined.
428 i.e. change #ifdef to #if, etc.
429
430 * lang.h: fix various preprocessor usages of new public
431 symbols to expect 0 or 1 values rather than 1 or undefined.
432 i.e. change #ifdef to #if, etc.
433
434 * iselect.h: fix various preprocessor usages of new public
435 symbols to expect 0 or 1 values rather than 1 or undefined.
436 i.e. change #ifdef to #if, etc.
437
438 * init.c: fix various preprocessor usages of new public
439 symbols to expect 0 or 1 values rather than 1 or undefined.
440 i.e. change #ifdef to #if, etc.
441
442 * gh_data.c: fix various preprocessor usages of new public
443 symbols to expect 0 or 1 values rather than 1 or undefined.
444 i.e. change #ifdef to #if, etc.
445
446 * gh.h: fix various preprocessor usages of new public
447 symbols to expect 0 or 1 values rather than 1 or undefined.
448 i.e. change #ifdef to #if, etc.
449
450 * gen-scmconfig.c: change most new public symbols to be defined to
451 0 or 1 rather than being either 1 or undefined.
452
453 * gc_os_dep.c: fix various preprocessor usages of new public
454 symbols to expect 0 or 1 values rather than 1 or undefined.
455 i.e. change #ifdef to #if, etc.
456 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
457
458 * gc.h: fix various preprocessor usages of new public
459 symbols to expect 0 or 1 values rather than 1 or undefined.
460 i.e. change #ifdef to #if, etc.
461
462 * gc-card.c: fix various preprocessor usages of new public
463 symbols to expect 0 or 1 values rather than 1 or undefined.
464 i.e. change #ifdef to #if, etc.
465
466 * gc-mark.c: fix various preprocessor usages of new public
467 symbols to expect 0 or 1 values rather than 1 or undefined.
468 i.e. change #ifdef to #if, etc.
469
470 * feature.c: fix various preprocessor usages of new public
471 symbols to expect 0 or 1 values rather than 1 or undefined.
472 i.e. change #ifdef to #if, etc.
473
474 * evalext.c: fix various preprocessor usages of new public
475 symbols to expect 0 or 1 values rather than 1 or undefined.
476 i.e. change #ifdef to #if, etc.
477
478 * eval.h: fix various preprocessor usages of new public
479 symbols to expect 0 or 1 values rather than 1 or undefined.
480 i.e. change #ifdef to #if, etc.
481
482 * eval.c: fix various preprocessor usages of new public
483 symbols to expect 0 or 1 values rather than 1 or undefined.
484 i.e. change #ifdef to #if, etc.
485
486 * eq.c: fix various preprocessor usages of new public
487 symbols to expect 0 or 1 values rather than 1 or undefined.
488 i.e. change #ifdef to #if, etc.
489
490 * coop.c: fix various preprocessor usages of new public
491 symbols to expect 0 or 1 values rather than 1 or undefined.
492 i.e. change #ifdef to #if, etc.
493
494 * coop-threads.c: fix various preprocessor usages of new public
495 symbols to expect 0 or 1 values rather than 1 or undefined.
496 i.e. change #ifdef to #if, etc.
497
498 * coop-pthreads.c: fix various preprocessor usages of new public
499 symbols to expect 0 or 1 values rather than 1 or undefined.
500 i.e. change #ifdef to #if, etc.
501
502 * coop-defs.h: fix various preprocessor usages of new public
503 symbols to expect 0 or 1 values rather than 1 or undefined.
504 i.e. change #ifdef to #if, etc.
505
506 * convert.i.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
510 * continuations.c: fix various preprocessor usages of new public
511 symbols to expect 0 or 1 values rather than 1 or undefined.
512 i.e. change #ifdef to #if, etc.
513
514 * _scm.h: fix various preprocessor usages of new public symbols to
515 expect 0 or 1 values rather than 1 or undefined. i.e. change
516 #ifdef to #if, etc.
517
d11d697a
MV
5182003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
519
9686f86d
MV
520 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
521
522 * deprecated.c, deprecated.h: New files, to collect deprecated
523 things in one place.
524 * Makefile.am: Added them in all the right places.
525
d11d697a
MV
526 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
527 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
528 builds work.
9686f86d
MV
529 (DOT_X_FILES): Removed "iselect.x".
530 (DOT_DOC_FILES): Removed "iselect.doc".
d11d697a 531
e3c0c3b9
RB
5322003-03-25 Rob Browning <rlb@defaultvalue.org>
533
534 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
535 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
536
537 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
538
539 * vports.c: #include <config.h> if HAVE_CONFIG_H.
540
541 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
542 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
543
544 * threads.h: replace usage of struct timespect with
545 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
546 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
547 favor of scm_t_timespec from scmconfig.h.
548
549 * threads.c: move libguile/_scm.h include to the top so we pick up
550 any critical defines like _GNU_SOURCE early. Replace usage of
551 struct timespect with scm_t_timespec. Replace usage of
552 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
553 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
554
555 * threads-plugin.h: replace usage of struct timespect with
556 scm_t_timespec.
557
558 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
559 usage of struct timespect with scm_t_timespec.
560
561 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
562 HAVE_INTTYPES_H handling to scmconfig.h. #include
563 "libguile/__scm.h". Rework handling for scm_t_bits,
564 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
565 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
566 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
567 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
568 SCM_HAVE_ARRAYS.
569
570 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
571
572 * struct.c: #include <config.h> if HAVE_CONFIG_H.
573
574 * strports.c: #include <config.h> if HAVE_CONFIG_H.
575
576 * strop.c: #include <config.h> if HAVE_CONFIG_H.
577
578 * stime.h: move handling of time related headers to scmconfig.h.
579
580 * stime.c: #include <config.h> if HAVE_CONFIG_H.
581
582 * stacks.c: replace usage of STACK_GROWS_UP with
583 SCM_STACK_GROWS_UP.
584
585 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
586 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
587
588 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
589 of uint32 and HAVE_UINT_32 with scm_t_int32.
590
591 * smob.c: #include <config.h> if HAVE_CONFIG_H.
592
593 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
594
595 * script.c: #include <config.h> if HAVE_CONFIG_H.
596
597 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
598
599 * scmconfig.h.top: new file -- preamble for scmconfig.h.
600
601 * rw.c: #include <config.h> if HAVE_CONFIG_H.
602
603 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
604
605 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
606
607 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
608
609 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
610 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
611 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
612 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
613
614 * ramap.c: replace usage of HAVE_LONG_LONGS with
615 "SCM_SIZEOF_LONG_LONG != 0".
616
617 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
618 "libguile/scmconfig.h".
619
620 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
621
622 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
623 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
624
625 * posix.c: #include <config.h> if HAVE_CONFIG_H.
626
627 * ports.c: #include <config.h> if HAVE_CONFIG_H.
628
629 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
630
631 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
632 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
633 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
634 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
635 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
636 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
637 "SCM_SIZEOF_LONG_LONG != 0".
638
639 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
640 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
641 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
642 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
643
644 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
645
646 * null-threads.h: replace usage of struct timespect with
647 scm_t_timespec.
648
649 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
650
651 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
652 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
653 scm_t_uint64 and rename usages.
654
655 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
656
657 * load.c: #include <config.h> if HAVE_CONFIG_H.
658
659 * iselect.h: move handling of time related headers to scmconfig.h.
660 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
661 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
662 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
663
664 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
665 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
666 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
667
668 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
669
670 * inline.h: #include "libguile/__scm.h" at the top. Change code
671 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
672 what to do instead of creating a new public #define. Rename usage
673 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
674 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
675 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
676
677 * inline.c: rearrange handling -- now we just #define
678 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
679 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
680 appropriate, and we use that in inline.h along with the above
681 define to determine how to respond.
682
683 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
684 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
685
686 * guile.c: #include <config.h> if HAVE_CONFIG_H.
687
688 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
689 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
690
691 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
692
693 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
694
695 * gen-scmconfig.c: new file -- see comments in file for details.
696
697 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
698
699 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
700 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
701
702 * gc.h: replace usage of SIZEOF_LONG with
703 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
704 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
705 since we handle that in scmconfig.h now.
706
707 * gc.c: #include <config.h> if HAVE_CONFIG_H.
708
709 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
710 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
711 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
712
713 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
714
715 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
716 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
717
718 * fports.c: #include <config.h> if HAVE_CONFIG_H.
719
720 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
721
722 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
723 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
724
725 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
726
727 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
728 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
729
730 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
731 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
732 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
733 with "SCM_SIZEOF_LONG_LONG != 0".
734
735 * error.c: #include <config.h> if HAVE_CONFIG_H.
736
737 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
738 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
739 with "SCM_SIZEOF_LONG_LONG != 0".
740
741 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
742
743 * coop.c: replace usage of struct timespect with scm_t_timespec.
744 #include <config.h> if HAVE_CONFIG_H.
745
746 * coop-threads.c: #include "libguile/_scm.h" early. Replace
747 usage of struct timespect with scm_t_timespec. Replace usage of
748 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
749
750 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
751 usage of struct timespect with scm_t_timespec. Replace usage of
752 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
753
754 * coop-defs.h: move handling of time related headers to
755 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
756 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
757 timespect with scm_t_timespec.
758
759 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
760
761 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
762
763 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
764 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
765
766 * continuations.c: move libguile/_scm.h include to the top so we
767 pick up any critical defines like _GNU_SOURCE early.
768
769 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
770
771 * async.c: #include <config.h> if HAVE_CONFIG_H.
772
773 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
774
775 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
776 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
777
778 * __scm.h: move libguile/scmconfig.h include up to the top, so
779 we're sure to pick up any critical defines like _GNU_SOURCE early.
780 #include <limits.h> removed in favor of scmconfig.h inclusion when
781 appropriate. STDC_HEADERS based inclusion of stdlib.h,
782 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
783 scmconfig.h inclusion when appropriate. Various Win32 related
784 definitions removed in favor of scmconfig.h inclusion when
785 appropriate.
786 (HAVE_UINTPTR_T): definition removed (see NEWS).
787 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
788 (HAVE_LONG_LONGS): definition removed (see NEWS).
789 (HAVE_LONG_LONG): definition removed (see NEWS).
790 (HAVE_PTRDIFF_T): definition removed (see NEWS).
791
792 * Makefile.am: scmconfig.h is now generated by building and
793 running gen-scmconfig.h and capturing its output. gen-scmconfig
794 uses config.h and the configure.in generated gen-scmconfig.h to
795 decide what to output. See gen-scmconfig.c for details.
796 (noinst_PROGRAMS): add gen-scmconfig.
797 (gen_scmconfig_SOURCES): new variable.
798 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
799 cross-compiling right.
800 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
801 (BUILT_SOURCES): add scmconfig.h.
802
25e0bf97
MV
8032003-03-19 Marius Vollmer <mvo@zagadka.de>
804
805 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
806 Adrian Bunk. Thanks!
807
74b6d6e4
MD
8082003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
809
810 * goops.c (make_class_from_template): New fourth arg:
811 applicablep.
812 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
813 cpls.
814
815 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
816
817 * goops.c, objects.c, objects.h (scm_make_extended_class): New
818 second arg: applicablep.
819 (scm_i_inherit_applicable): New function.
820
821 * goops.c, goops.h (scm_class_applicable,
822 scm_class_extended_accessor): New classes.
823
5c9e7dad
DH
8242003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
825
826 * procs.c (scm_procedure_documentation): Removed redundant
827 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
828 predicates.
829
f8af5c6d
MD
8302003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
831
c614a00b
MD
832 * list.c, list.h (scm_filter, scm_filter_x): New functions.
833
109c2c9f
MD
834 * modules.c (scm_module_import_interface): New function.
835
f8af5c6d
MD
836 * goops.c, goops.h (scm_class_accessor_method): Renamed from
837 scm_class_accessor.
838 (scm_class_accessor): New class.
839
a48d60b1
MD
8402003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
841
842 * goops.c (scm_primitive_generic_generic): Enable primitive
843 generic if not enabled.
844 (scm_sys_goops_loaded): Setup unextended primitive generics.
845
846 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
847
848 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
849 snarf macros.
850
851 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
852 testing example. All uses of SCM_GPROC should be converted.)
853
854 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
855 scm_assoc.
856
857 * eq.c (scm_equal_p): Turned into a primitive generic.
858
84edc049
RB
8592003-02-27 Rob Browning <rlb@defaultvalue.org>
860
861 * Makefile.am (scmconfig.h): new target -- generate file from
862 ../config.h.
863 (modinclude_HEADERS): remove version.h.
864 (nodist_modinclude_HEADERS): add version.h.
865
ea5c9285
MD
8662003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
867
b4a1358c
MD
868 This fixes a serious GC bug, introduced during the latest
869 reorganization of the GC, which disabled freeing of structs and
870 GOOPS objects:
871
872 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
873 SCM_EOL.
53af8255
MD
874 (scm_struct_prehistory): Move scm_free_structs to
875 scm_before_mark_c_hook.
ea5c9285 876
b4a1358c
MD
877 * gc-card.c (sweep_card): Check that we haven't swept structs on
878 this card before. That can happen if scm_i_sweep_all_segments has
879 been called from some other place than scm_igc.
880
c35738c1
MD
8812003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
882
231a4ea8
MD
883 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
884 (since hash tables now adapt their size).
885
886 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
887 (current number of prehistory bindings; hashtable code will select
888 a prime which is greater than this value).
889
890 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
891 (current number of initial symbols).
892
893 * properties.c (scm_init_properties): Don't specify size of
894 scm_properties_whash.
895
896 * objprop.c (scm_init_objprop): Don't specify size of
897 scm_object_whash.
898
899 * keywords.c (scm_init_keywords): Don't specify a hash table size.
900
c35738c1
MD
901 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
902
903 The following changes introduce the use of resizable hash tables
904 throughout Guile. It also renames the old *-hash-table* functions
905 to *-alist-vector* and places them, together with the rest of the
906 weak vector support, in the module (ice-9 weak-vector). We should
907 probably introduce a new, better, API for weak references, for
908 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
909 look like and are used like ordinary pairs.)
910
911 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
912 leaf_environment_fold, obarray_remove_all): Use hashtable
913 accessors.
914
915 * gc.c (scm_init_storage): Moved hook initialization to
916 scm_storage_prehistory.
917 (scm_storage_prehistory): New function.
918 (scm_igc): Added commentary about placement of
919 scm_after_sweep_c_hook.
920
921 * gc-mark.c (scm_mark_all): Use hashtable accessors.
922 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
923 SCM_WVECT_WEAK_VALUE_P.
924
925 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
926 functions.
927 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
928 Removed.
929 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
930 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
931
932 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
933 calls to scm_storage_prehistory and scm_hashtab_prehistory.
934
935 * modules.c (module-reverse-lookup): Use hashtable accessors.
936
937 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
938
939 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
940 scm_make_weak_value_alist_vector,
941 scm_make_doubly_weak_alist_vector): New functions.
942
943 * weaks.c (scm_init_weaks_builtins): New function.
944
945 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
946 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
947 SCM_WVECT_NOSCAN_P): New macros.
948
949 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
950 and SCM_WVECT_WEAK_VALUE_P.
951
952 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
953 allocate_weak_vector and exported.
954
0a4c1355
MD
9552003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
956
957 * hashtab.c: Undid thread safety. (We decided that it's better to
958 let the user explicitly protect the tables (or not) according what
959 is suitable for the application.)
960
87ca11ff
MD
9612003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
962
963 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
964 thread safe and handle resizing tables.
965 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
966 SCM_DEFER/ALLOW_INTS.
967
f59a096e
MD
9682003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
969
970 * hashtab.c (scm_vector_to_hash_table,
971 scm_c_make_resizing_hash_table, scm_make_hash_table): New
972 functions.
973 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
974 safe and handle resizing tables.
975
976 * weaks.c (scm_make_weak_key_hash_table,
977 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
978 Size argument made optional. Return resizable table if not
979 specified.
980
4b612c5b
MD
9812003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
982
983 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
984 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
985
b3d7f6df
MD
9862003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
987
988 * debug.c (scm_procedure_source): Handle all objects for which
989 procedure? is #t. (Thanks to Bill Schottstaedt.)
990
756414cf
MD
9912003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
992
361d631f
MD
993 * futures.c (mark_futures): Don't need to mark data of recycled
994 futures.
995 (scan_futures, cleanup_undead): Be smarter about marking
996 futures---avoid unnecessary passes through future lists.
997
756414cf
MD
998 * futures.h, futures.c: New files; Introduced recycling of
999 futures. For fine-grained threading this lifts performance to
1000 another level. We can now use parallelization in inner loops of
1001 Guile programs without impossible overhead.
1002
1003 * threads.h, threads.c: Moved futures to their own file.
1004
1005 * Makefile.am (libguile_la_SOURCES): Added futures.c.
1006 (DOT_X_FILES): Added futures.x.
1007 (DOT_DOC_FILES): Added futures.doc.
1008 (modinclude_HEADERS): Added futures.h.
1009
1010 * threads.c, threads.h (scm_i_create_thread): Renamed from
1011 create_thread and made global.
1012
1013 * futures.c (scm_make_future): New procedure.
1014
1015 * eval.c: #include "libguile/futures.h".
1016
1017 * init.c: #include "futures.h"
1018 (scm_init_guile_1): Call scm_init_futures.
1019
1020 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
1021
1022 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
1023
1024 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
1025 functions.
1026
1027 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
1028
b4debead
MD
10292003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1030
1031 * threads.c (create_thread): Don't unwind dynwind chain of parent
1032 thread before creation. Just start the new thread with an empty
1033 dynwind chain.
1034
93f26b7b
MD
10352003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1036
1037 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
1038
38d8927c
MD
10392003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1040
41c96c32
MD
1041 * threads.c (scm_timed_wait_condition_variable): Support timed
1042 waiting also for simple condition variables.
1043
38d8927c
MD
1044 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
1045 of calling the procedure change-object-class.
1046
9cf5d9b7
MD
10472003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1048
1049 * ramap.c (scm_ramapc): Typo in error message.
1050
bbf8d523
MD
10512003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1052
b46fae00
MD
1053 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
1054 slots with instance allocation.
1055
bbf8d523
MD
1056 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
1057 class.
1058 (scm_compute_applicable_methods): Use scm_generic_function_methods.
1059
1060 * goops.c (scm_generic_function_methods): Support extended
1061 generic functions.
1062
ebf9b47c
MD
10632002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1064
1065 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 1066 Thanks to Neil for pointing this out!
ebf9b47c 1067
14a9ba3f
NJ
10682002-12-29 Neil Jerram <neil@ossau.uklinux.net>
1069
1070 * lang.h: Remove declarations matching definitions removed from
1071 lang.c (just below).
1072
c6a040a8
NJ
10732002-12-28 Neil Jerram <neil@ossau.uklinux.net>
1074
6054d805
NJ
1075 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
1076 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
1077 and already commented out.
1078
c6a040a8
NJ
1079 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
1080 scm_lreadparen): Support reading vectors with Elisp syntax if
1081 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
1082 is not currently defined, and there isn't even a configure switch
1083 to enable it yet.)
1084
3742c12f
MV
10852002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
1086
1087 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
1088 builds work.
1089 (EXTRA_DIST): Added version.h.in.
1090
fb50ef08
MD
10912002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1092
1093 This change makes it possible for one thread to do lazy sweeping
1094 while other threads are running. Now only the mark phase need to
1095 have all threads asleep. We should look further into this issue.
1096 Presently, I've put the locking of scm_i_sweep_mutex at
1097 "conservative" places due to my current lack of knowledge about
1098 the garbage collector. Please feel free to restrict these regions
1099 further to allow for maximal parallelism!
1100
1101 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
1102
1103 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
1104 scm_gc_register_collectable_memory): Substitute locking of
1105 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
1106 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
1107 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
1108 the single-thread section (which now only contains the mark
1109 phase).
1110 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
1111 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
1112
1113 * threads.c (gc_section_mutex): Removed.
1114
9ed24633
MD
11152002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1116
0d48aca5
MD
1117 * threads.c (create_thread): Clear parent field in root state in
1118 order not to unnecessarily remember dead threads.
1119
9ed24633
MD
1120 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
1121 (scm_trampoline_1, scm_trampoline_2): Use them.
1122
29717c89
MD
11232002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1124
1125 Partial introduction of real plugin interface.
1126
1127 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
1128 (EXTRA_DIST): Added threads-plugin.c.
1129
1130 * threads-plugin.h, threads-plugin.c: New files.
1131
1132 * threads.h: #include "libguile/threads-plugin.h".
1133
1134 * threads.c: #include "libguile/threads-plugin.c".
1135
1136 * pthread-threads.c: Temporarily remove debugging functions.
1137
1138 * threads.c, threads.h (scm_yield): Added back.
1139
e29e0b09
MD
11402002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1141
1142 * threads.c (really_launch): Detach before unlocking
1143 thread_admin_mutex in order not to risk being joined.
1144 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
1145 thread_admin_mutex locked during GC.
1146
1147 * pthread-threads.c, pthread-threads.h: Improvements to debugging
1148 functions.
1149
0b6843b1 11502002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 1151
6da2dfc4
MD
1152 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
1153 support for debugging mutex operations.
1154
1b92fb6b
MD
1155 * threads.c (scm_thread): Removed filed joining_threads.
1156 (thread_print): Print thread number as well as address of thread
1157 structure.
0b6843b1
MD
1158 (scm_join_thread): Bugfix.
1159 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
1160 scm_timed_wait_condition_variable, scm_signal_condition_variable,
1161 scm_broadcast_condition_variable): Use the low-level API.
1162 (scm_all_threads): Return copy of thread list (to prevent
1163 unintended destruction).
1164 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 1165
93cd4dcd
MD
1166 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
1167 pthread "native" recursive mutex support.
1168
2ff4f181
MD
11692002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1170
28d52ebb
MD
1171 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
1172 Simply lock a thread C API recursive mutex.
1173 (SCM_NONREC_CRITICAL_SECTION_START,
1174 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
1175 SCM_REC_CRITICAL_SECTION_END): Removed.
1176
1177 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
1178 direct calls to scm_rec_mutex_lock / unlock around the three calls
1179 to scm_m_expand_body.
1180
1181 * eval.c, eval.h (promise_free): New function.
1182 (scm_force): Rewritten; Now thread-safe; Removed
1183 SCM_DEFER/ALLOW_INTS.
1184
1185 * pthread-threads.h: Added partially implemented plugin interface
1186 for recursive mutexes. These are, for now, only intended to be
1187 used internally within the Guile implementation.
1188
1189 * pthread-threads.c: New file.
1190
1191 * threads.c: Conditionally #include "pthread-threads.c".
1192
1193 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
1194 thread-safe;
1195
1196 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
1197 SCM_GLOBAL_REC_MUTEX): New macros.
1198
1199 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
1200 macros---use mutexes instead.
1201
1202 * tags.h (SCM_IM_FUTURE): New tag.
1203
1204 * eval.c (scm_m_future): New primitive macro.
1205 (SCM_CEVAL): Support futures.
1206 (unmemocopy): Support unmemoization of futures.
1207
1208 * print.c (scm_isymnames): Name of future isym.
1209
2ff4f181
MD
1210 * version.c: Unmade some changes to my private copy that got
1211 committed by mistake.
1212
392d2833
MD
12132002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1214
e200ddee
MD
1215 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
1216 2002-12-10.
1217
392d2833
MD
1218 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
1219
1220 * gc.c (scm_gc_sweep): Call it here instead, which is a more
1221 logical place.
1222
1223 * threads.c (create_thread): Remember root object until the handle
1224 of the new thread is on all_threads list.
1225
1226 * root.c (scm_make_root): Moved copying of fluids until after
1227 creation of root handle so that the fluids are GC protected. Also
1228 removed the critical section.
1229
c4c52ebe
MD
12302002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1231
960c408c
MD
1232 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
1233
3cdde9d6 1234 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 1235 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
1236 (scm_realloc): Serialize call to realloc
1237 (scm_calloc): Same for calloc.
1238 Thanks to Wolfgang Jaehrling!
1239 (Now we have to make sure all calls to malloc/realloc are made
1240 through scm_malloc.)
1241
960c408c
MD
1242 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
1243
c4c52ebe
MD
1244 * threads.c (really_launch): Release heap (to prevent deadlock).
1245 (create_thread): Release heap before locking thread admin mutex.
1246
b0dc3d71
MD
12472002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1248
1249 * threads.c (scm_i_thread_invalidate_freelists): New
1250 function.
1251
1252 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
1253
1254 * modules.c (scm_export): Inserted a return statement.
1255
06e80f59
HWN
12562002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1257
1258 * modules.c (scm_export): new function
1259
1260 * gc-card.c: add a note about malloc()/free() overhead.
1261
a12611c3
MD
12622002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1263
1264 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
1265 in srcdir.
1266
c7fabadf
MD
12672002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1268
1269 These changes remove scm_ints_disabled (which hasn't has any
1270 effect in Guile for quite some time).
1271
1272 * async.c, error.h (scm_ints_disabled): Removed.
1273
1274 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
1275 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
1276 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
1277 (old_ints): Removed.
1278
1279 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
1280 critical section.
1281 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
1282 SCM_ALLOW_INTS.
1283
9bc4701c
MD
12842002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1285
52340b65
MD
1286 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
1287 Removed accidental #if 0 around these functions.
1288
9bc4701c
MD
1289 These changes are the start of support for preemptive
1290 multithreading. Marius and I have agreed that I commit this code
1291 into the repository although it isn't thoroughly tested and surely
1292 introduces many bugs. The bugs should only be exposed when using
1293 threads, though. Signalling and error handling for threads is
1294 very likely broken. Work on making the implementation cleaner and
1295 more efficient is needed.
1296
1297 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
1298 (SCM_NONREC_CRITICAL_SECTION_START,
1299 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
1300 SCM_REC_CRITICAL_SECTION_END): New macros.
1301 (SCM_CRITICAL_SECTION_START/END): Defined here.
1302
1303 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
1304 the three calls to scm_m_expand_body.
1305
1306 * gc.h: #include "libguile/pthread-threads.h";
1307 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
1308
1309 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
1310 scm_t_key;
1311
1312 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
1313 access.
1314
1315 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
1316
1317 * gc-freelist.c, threads.c (really_launch): Use
1318 SCM_FREELIST_CREATE.
1319
1320 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
1321
1322 * gc.c (scm_i_expensive_validation_check, scm_gc,
1323 scm_gc_for_newcell): Put threads to sleep before doing GC-related
1324 heap administration so that those pieces of code are executed
1325 single-threaded. We might consider rewriting these code sections
1326 in terms of a "call_gc_code_singly_threaded" construct instead of
1327 calling the pair of scm_i_thread_put_to_sleep () and
1328 scm_i_thread_wake_up (). Also, we would want to have as many of
1329 these sections eleminated.
1330
1331 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
1332
1333 * inline.h: #include "libguile/threads.h"
1334
1335 * pthread-threads.h: Macros now conform more closely to the
1336 pthreads interface. Some of them now take a second argument.
1337
1338 * threads.c, threads.h: Many changes.
1339
13402002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1341
1342 * Makefile.am (version.h): Changed $^ --> $< in rule for
1343 version.h.
1344
b2cbe8d8
RB
13452002-12-08 Rob Browning <rlb@defaultvalue.org>
1346
1347 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
1348 (SCM_MINOR_VERSION): use @--@ substitution now.
1349 (SCM_MICRO_VERSION): use @--@ substitution now.
1350 (scm_effective_version): new function prototype.
1351
1352 * version.c (scm_effective_version): new function, also add
1353 effective-version.
1354
1355 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
1356 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
1357 SCM_LIBRARY_DIR.
1358 (version.h): generate this here rather than configure.in. This
1359 approach tracks source edits better (i.e. more immediately).
1360 Might be worth considering for other .in files too.
1361
5441c65c
MV
13622002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
1363
1364 Reorganized thread package selection. A thread package now only
1365 implements a small set of pthread like functions and Guile
1366 implements the rest on top of that. Guile's implementation is
1367 what the "coop-pthreads" package has been previously. Support for
1368 "coop" threads has been removed until I get time to add it again.
1369
1370 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
1371 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
1372 null-threads.c, coop-pthreads.c.
1373 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
1374 pthread-threads.h.
1375
1376 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
1377
1378 * threads.h: Do not include "libguile/coop-defs.h". Include
1379 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
1380 (previously deprecated) C level thread API prototypes. They are
1381 now in the thread package specific headers, "null-threads.h" and
1382 "pthread-threads.h".
1383 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
1384 New.
1385 (scm_threads_init): Removed.
1386 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
1387 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
1388 SCM_I_THREAD_SWITCH_COUNT): Define here.
1389 (scm_single_thread_p): Removed.
1390 (scm_call_with_new_thread): Take two args directly instead of list
1391 of two args.
1392 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
1393 SCM_SET_THREAD_LOCAL_DATA): Define here.
1394
1395 * threads.c: Merged with "coop-pthreads.c".
1396
1397 * null-threads.h: Implement pthread-like API as a set of macros.
1398
1399 * pthread-threads.h: New, implement pthread-like API by deferring
1400 to pthread itself.
1401
1402 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
1403 has been lost in the reorganization.
1404
504d99c5
MD
14052002-12-01 Mikael Djurfeldt <mdj@linnaeus>
1406
1407 The following change makes it possible to move procedure
1408 application dispatch outside inner loops. The motivation was
1409 clean implementation of efficient replacements of R5RS primitives
1410 in SRFI-1.
1411
1412 The semantics is clear: scm_trampoline_N returns an optimized
1413 version of scm_call_N (or NULL if the procedure isn't applicable
1414 on N args).
1415
1416 Applying the optimization to map and for-each increases efficiency
1417 noticeably. For example, (map abs ls) is 8 times faster than
1418 before.
1419
1420 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
1421
1422 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
1423
1424 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
1425 (map, for-each): Handle also application on two args as a special
1426 case; Use trampolines.
1427
1428 Other changes:
1429
1430 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
1431 (subr2oless): Removed.
1432 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
1433 vector GC protected.
1434
1435 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
1436 scm_out_of_range.
1437
63dd3413
DH
14382002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
1439
1440 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
1441
4ba5f279
MD
14422002-11-17 Mikael Djurfeldt <mdj@linnaeus>
1443
1444 * debug.c (scm_make_iloc): Added missing "return".
1445
56ae231f
MV
14462002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
1447
1448 * strports.c (scm_eval_string_in_module): Validate second arg to
1449 be a module. Thanks to Arno Peters!
1450
80b28865
DH
14512002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
1452
1453 * .cvsignore: remove goops.c
1454
c88b1456
DH
14552002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
1456
1457 * modules.c (scm_env_top_level, scm_lookup_closure_module,
1458 module_variable, scm_module_lookup_closure,
1459 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
1460 scm_system_module_env_p): Don't compare SCM values with C
1461 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
1462 over SCM_NFALSEP.
1463
a8a19efc
DH
14642002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
1465
1466 * eval.h (SCM_MAKE_ILOC): New macro.
1467
1468 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
1469 the iloc bitpattern here.
1470
76734914
MD
14712002-11-14 Mikael Djurfeldt <mdj@linnaeus>
1472
1473 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
1474 part of the API, otherwise it's difficult to write Guile
1475 extensions using non-blocking I/O => moved #include
1476 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
1477
1478 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
1479 s_unlock_mutex.
1480
8b5b4a75
MV
14812002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
1482
1483 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
1484 are defined in configure.in.
1485
1486 * threads.c: Removed SCM_API from function definitions. SCM_API
1487 is only for declarations.
1488
e5a83084
MD
14892002-11-07 Mikael Djurfeldt <mdj@linnaeus>
1490
9be8bb45
MD
1491 * coop-pthreads.h: Added support for thread specific data to the
1492 generic C API for the coop-pthreads case.
1493
e5a83084
MD
1494 * threads.c, threads.h (scm_cond_init): Undo unintentional API
1495 change.
6c214b62 1496 (scm_cond_broadcast): Added missing function.
e5a83084 1497
7edf178e
MV
14982002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1499
1500 * coop.c (coop_next_runnable_thread): Removed, wich should have
1501 happened when GUILE_ISELECT was hard-wired.
1502
7f5b1b77
MV
15032002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
1504
7caa1b07
MV
1505 * Makefile.am (libguile_la_SOURCES): Added threads.c
1506 (DOT_DOC_FILES): Added threads.doc.
1507 (DOT_X_FILES): Added threads.x.
1508 (EXTRA_libguile_la_SOURCES): Removed threads.c.
1509 (noinst_HEADERS): Added coop-pthreads.c.
1510 (modinclude_HEADERS): Added coop-pthreads.h.
1511
1512 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
1513 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
1514
bb11cbf4
MV
1515 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
1516 Thanks to Bill Schottstaedt!
1517
1d4cbbed
MV
1518 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
1519
7f5b1b77
MV
1520 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
1521 SCM_COPT_THREADS is defined.
1522 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
1523 is defined.
1524
1525 * coop-pthreads.c: Some harmless renamings of internal stuff.
1526 (create_thread): New, generalized version of
1527 scm_call_with_new_thread.
1528 (scm_call_with_new_thread): Use it.
1529 (scm_spawn_thread): New, use create_thread.
1530
d52f53b1
MV
15312002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
1532
1533 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
1534 start testing it now.
1535
1536 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
1537 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
1538 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
1539 is defined.
1540
30f920c3
MV
15412002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
1542
1543 * scmsigs.c (signal_cell_handlers, install_handler_data,
1544 scm_delq_spine_x, really_install_handler, install_handler): New
1545 scheme for triggering signal handlers, to simplify take_signal.
1546 (take_signal): Simplified, to avoid race conditions.
1547 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
1548 hasn't exited yet.
1549
1550 * async.c (scm_async_click): Reset pending_asyncs, handle
1551 signal_asyncs. Don't set cdr of a non-signal async to #f.
1552 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
1553 always. Set pending_asyncs.
1554 (scm_system_async_mark_for_thread): Check that thread has not
1555 exited.
1556 (scm_unmask_signals, decrease_block): Call scm_async_click after
1557 block_asyncs becomes zero.
1558
1559 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
1560 active_asyncs.
1561
1562 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
1563 fields.
1564 * root.c (root_mark): Mark them.
1565 (make_root): Initialize them.
1566
1567 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
1568 USE_COOP_THREADS.
1569 (scm_internal_select): Define one version for USE_COOP_THREADS and
1570 one for USE_NULL_THREADS.
1571 (scm_init_iselect): Likewise.
1572
1573 * inline.h (scm_cell, scm_double_cell): Also allow
1574 USE_COPT_THREADS to not protect the slot initializers.
1575
1576 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
1577 because threads need to be initialized before the stack, but
1578 gsubrs such as scm_timed_condition_variable_wait can only be
1579 created later.
1580
1581 * threads.h: Include "coop-pthreads.h" when requested.
1582 (scm_threads_make_mutex, scm_threads_lock_mutex,
1583 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
1584 not implemented anyway.
1585 (scm_init_thread_procs, scm_try_mutex,
1586 scm_timed_condition_variable_wait,
1587 scm_broadcast_condition_variable, scm_c_thread_exited_p,
1588 scm_thread_exited_p): New prototypes.
1589 (struct timespec): Define if not already defined.
1590 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
1591 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
1592 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
1593 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
1594 deprecated.
1595
1596 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
1597 requested.
1598 (scm_thread_exited_p): New.
1599 (scm_try_mutex, scm_broadcast_condition_variable): Newly
1600 registered procedures.
1601 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
1602 Use the latter as the procedure for "wait-condition-variable",
1603 thus offering a optional timeout parameter to Scheme.
1604 (scm_wait_condition_variable): Implement in terms of
1605 scm_timed_wait_condition_variable.
1606 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
1607 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
1608 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
1609 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
1610 scm_make_mutex, etc, and deprecate.
1611 (scm_init_threads): Do not create smobs, leave this to
1612 scm_threads_init. Do not include "threads.x" file.
1613 (scm_init_thread_procs): New, include "threads.x" here.
1614
1615 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
1616 scm_null_mutex_lock, scm_null_mutex_unlock,
1617 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
1618 scm_null_condvar_wait, scm_null_condvar_signal,
1619 scm_null_condvar_destroy): Removed.
1620 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
1621 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
1622 scm_cond_destory): Do not define, they are now deprecated and
1623 handled by threads.{h,c}.
1624
1625 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
1626 (scm_threads_init): Create smobs here, using the appropriate
1627 sizes.
1628 (block): Removed, now unused.
1629 (scm_c_thread_exited_p): New.
1630 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
1631 scm_null_mutex_destroy, scm_null_condvar_init,
1632 scm_null_condvar_wait, scm_null_condvar_signal,
1633 scm_null_condvar_destroy): Removed and updated users to do their
1634 task directly.
1635 (scm_try_mutex, timeval_subtract,
1636 scm_timed_wait_condition_variable,
1637 scm_broadcast_condition_variable): New.
1638 (scm_wait_condition_variable): Removed.
1639
1640 * coop-defs.h (coop_m): Added 'level' field.
1641 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
1642 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
1643 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
1644 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
1645 define.
1646 (coop_condition_variable_broadcast): New.
1647
1648 * coop-threads.c (scm_threads_init): Create smobs here, using the
1649 appropriate sizes.
1650 (scm_c_thread_exited_p, scm_try_mutex,
1651 scm_timed_wait_condition_variable,
1652 scm_broadcast_condition_variable): New.
1653 (scm_wait_condition_variable): Removed.
1654
1655 * coop.c (coop_new_mutex_init): Initialize level.
1656 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
1657 level.
1658 (coop_condition_variable_signal): Renamed to
1659 coop_condition_variable_broadcast and reimplemented in terms of
1660 that. Thus...
1661 (coop_condition_variable_broadcast): New.
1662
1663 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
1664
1665 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
1666
087ed40d
MV
16672002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
1668
65a23095
MV
1669 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
1670 of system headers.
1671
087ed40d
MV
1672 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
1673 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 1674 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 1675
5ec1d2c8
DH
16762002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
1677
1678 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
1679 scm_definedp to scm_defined_p and deprecated scm_definedp.
1680
100ae50d
DH
16812002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
1682
1683 * async.h, async.c (scm_system_async): Fixed deprecation to work
1684 correctly when deprecated features are excluded.
1685
2794cb50
MV
16862002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1687
1688 * async.c (scm_system_async_mark_for_thread): Validate thread
1689 argument.
1690
1691 * coop-threads.c (scm_i_thread_root): Do not validate argument.
1692
1693 * feature.c (scm_init_feature): Don't add 'threads' for
1694 USE_NULL_THREADS.
1695
1696 * inline.h (scm_cell, scm_double_cell): Also allow
1697 USE_NULL_THREADS to not protect the slot initializers.
1698
1699 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
1700 "USE_THREAD".
1701
1702 * Makefile.am (noinst_HEADERS): Added null-threads.c.
1703 (modinclude_HEADERS): Added null-threads.h.
1704
1705 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
1706 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
1707 (scm_init_threads): Use generic type names scm_t_mutex and
1708 scm_t_cond instead of coop_m and coop_c.
1709
1710 * null-threads.c, null-threads.h: New files.
1711
ff810d7a
MV
17122002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
1713
1714 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
1715 This is to support makes that know about "$<" only in pattern
1716 rules, like Sun's make.
1717
a90bdb73
MV
17182002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
1719
1720 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
1721 substitution. Thanks to David Allouche!
1722
e71a8bf2
DH
17232002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
1724
1725 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
1726 !SCM_ENABLE_DEPRECATED.
1727
41f77ff5
MV
17282002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1729
504d99c5 1730 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
1731 scm_i_thread_root when USE_THREADS is defined. Use scm_root
1732 otherwise.
1733
1734 * scmsigs.c (take_signal): Only call scm_i_thread_root when
1735 USE_THREADS is defined. Use scm_root otherwise.
1736 (scm_sigaction_for_thread): Ignore THREAD argument when
1737 USE_THREADS is not defined. Also, move THREAD argument defaulting
1738 out of HAVE_SIGACTION section, which was a bug.
1739
6d16b125
MV
17402002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1741
1742 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
1743 signal_handlers, not the closure that is used as the async.
1744 The closure is stored in signal_handler_cells, as previously.
1745
acfa1f52
MV
17462002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
1747
1748 * root.h (scm_root_state): Added 'block_async' slot.
1749 (scm_active_asyncs): Removed abbrev.
1750 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
1751
1752 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
1753 abbrev.
1754
1755 * async.h (scm_call_with_blocked_asyncs,
1756 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
1757 scm_c_call_with_unblocked_asyncs): New prototypes.
1758 (scm_mask_signals, scm_unmask_signals): Deprecated.
1759 (scm_mask_ints): Turned into a macro.
1760 * async.c (scm_mask_ints): Removed.
1761 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
1762 this should not be necessary.
1763 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
1764 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
1765 deprecation warning and check for errornous use. Set block_asyncs
1766 instead of scm_mask_ints.
1767 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
1768 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
1769 scm_c_call_with_unblocked_asyncs): New.
1770
1771 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
1772 Asyncs are enabled by default.
1773
34010f56
NJ
17742002-10-09 Neil Jerram <neil@ossau.uklinux.net>
1775
1776 * vports.c (scm_make_soft_port): Allow vector argument to carry a
1777 6th element: an input waiting thunk.
1778 (sf_input_waiting): New.
1779
9310d6f2
MV
17802002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
1781
1782 * root.c (root_mark): Mark active_asyncs slot.
1783
1784 * async.c (scm_async_click): Set the cdr of a executed handler
1785 cell to SCM_BOOL_F, not SCM_EOL.
1786 (scm_i_queue_async_cell): Queue the cell at the end of the list,
1787 and only if the handler procedure is not already present.
1788 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
1789 with SCM_BOOL_F.
1790 * scmsigs.c (scm_sigaction_for_thread): Likewise.
1791
ac48c719
RB
17922002-10-04 Rob Browning <rlb@defaultvalue.org>
1793
1360a142
RB
1794 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
1795
1796 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
1797 scm_lt_dlopenext, and scm_lt_dlerror.
1798 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
1799 and scm_lt_dlerror.
1800 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
1801 and scm_lt_dlerror.
1802 (sysdep_dynl_init): switch to scm_lt_dlinit();
1803
1804 * Makefile.am (libguile_la_LIBADD): switch to use
1805 libguile-ltdl.la.
1806
504d99c5 1807 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 1808
497092c9
MV
18092002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
1810
1811 * scmsigs.h (scm_sigaction_for_thread): New prototype.
1812 * scmsigs.c (got_signal): Removed.
1813 (signal_handler_cells, signal_handler_threads): New.
1814 (take_signal): Queue the cell of the signal for the specified
1815 thread. Reset the signal handler on systems that don't have
1816 sigaction.
1817 (sys_deliver_signals): Removed.
1818 (close_1): New.
1819 (scm_sigaction_for_thread): Renamed from scm_sigaction and
1820 extended to also set the thread of a signal and allocate a cell
1821 for it. Keep the Scheme name "sigaction". Check that signum is
1822 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
1823 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
1824 (scm_init_scmsigs): Allocate signal_handler_cells and
1825 signal_handler_threads vectors.
1826
1827 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
1828 that system asnycs and user asyncs are separated. Reimplemented
1829 system asyncs to work per-thread.
1830
1831 * gc.c (scm_init_gc): Do not use scm_system_async.
1832
1833 * async.h (scm_asyncs_pending, scm_set_tick_rate,
1834 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
1835 Removed prototypes.
1836 (scm_i_queue_async_cell): New.
1837
1838 * __scm.h (scm_asyncs_pending_p): Removed.
1839 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
1840 scm_asyncs_pending_p.
1841
1842 * async.h (scm_system_async_mark_for_thread): New prototype.
1843
1844 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
1845
1846 * root.h (scm_root_state): Added new "active_asyncs" slot.
1847 * root.c (scm_make_root): Initialize it to SCM_EOL.
1848
1849 * coop-defs.h (coop_t): Added new "handle" slot.
1850 * coop-threads.c (all_threads, scm_current_thread,
1851 scm_all_threads, scm_i_thread_root): New.
1852 (scm_threads_init): Add main thread to all_threads.
1853 (scheme_launch_thread): Remove thread from all_threads when it
1854 terminates.
1855 (scm_call_with_new_thread): Initialize handle slot of coop_t
1856 structure and add new thread to all_threads.
1857 (scm_spawn_thread): Likewise.
1858
1859 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
1860 * threads.c (scm_current_thread, scm_all_threads): Register as
1861 primitives.
1862
1863 * dynl.c: Use scm_lt_ prefix for libltdl functions.
1864
480fa28d
NJ
18652002-09-29 Neil Jerram <neil@ossau.uklinux.net>
1866
1867 * script.c (scm_compile_shell_switches): Fix bad spelling of
1868 `explicitly' in comment.
1869
18702002-09-28 Neil Jerram <neil@ossau.uklinux.net>
1871
1872 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
1873 Refer to provided? in doc string rather than deprecated feature?.
1874
3553e1d1
GH
18752002-09-24 Gary Houston <ghouston@arglist.com>
1876
1877 * inline.h (scm_double_cell): prevent reordering of statements
1878 with any following code (for GCC 3 strict-aliasing).
1879 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
1880 the earlier version of the reordering prevention.
1881
4ad0814a
HWN
18822002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1883
1884 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
1885
e88e4f2e
HWN
18862002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1887
1888 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
1889 protection.
1890
1e71eafb
HWN
18912002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1892
1893 * inline.h: include stdio.h
1894
1895 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
1896
61ef9c1f
HWN
18972002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1898
dac04e9f
HWN
1899 * gc-segment.c (scm_i_make_initial_segment): check user settings
1900 for sanity.
1901
1902 * gc-malloc.c (scm_gc_init_malloc): check user settings for
1903 sanity.
dac04e9f
HWN
1904
1905 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
1906
ffd72400
HWN
1907 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
1908
1909 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
1910 these won't ever wrap around with high memory usage. Thanks to
1911 Sven Hartrumpf for finding this.
ffd72400 1912
5bd4a949
HWN
1913 * gc-freelist.c: include <stdio.h>
1914
61ef9c1f
HWN
1915 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
1916
ffd0ef3b
MV
19172002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
1918
a27e3d14
MV
1919 * vectors.h (SCM_VECTOR_REF): New.
1920
ffd0ef3b
MV
1921 * snarf.h (SCM_DEFINE_PUBLIC): New.
1922
f8a1712b
MV
19232002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
1924
1925 * socket.c (scm_addr_vector): Added size of address to arguments.
1926 Use it to avoid accessing a non-existent path in a sockaddr_un.
1927 Changed all callers.
1928
7200a36b
HWN
19292002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1930
1383773b
HWN
1931 * gc.h: remove DOUBLECELL card flags.
1932
1933 * gc-malloc.c (scm_calloc): try to use calloc() before calling
1934 scm_realloc().
1935
1936 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
1937 init loop; handle this from scm_init_card_freelist()
1938
1939 * gc-card.c (scm_init_card_freelist): init bit vector here.
1940
7200a36b 1941 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 1942 num2float.i.c (FLOAT2NUM): idem
7200a36b 1943
9981de3a
HWN
19442002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1945
1946 * eval.h: prepend libguile/ to include path
1947
19647556
MV
19482002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
1949
1950 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
1951