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