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