(scm_current_time): 'time' does not set errno so don't use
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
e17d318f
DH
12003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2
3 This set of patches eliminates the dependency between the
4 implementation of evaluator specific memoization codes and special
5 constants like #f, '() etc. ('flags'), which are not evaluator
6 specific. The goal is to remove definitions of evaluator
7 memoization codes completely from the public interface. This will
8 make it possible to experiment more freely with optimizations of
9 guile's internal representation of memoized code.
10
11 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
12
13 * print.c (iflagnames): New array, holding the printed names of
14 guile's special constants ('flags').
15
16 (scm_isymnames): Now holds only the printed names of the
17 memoization codes.
18
19 (scm_iprin1): Separate the handling of memoization codes and
20 guile's special constants.
21
22 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
23 SCM_IFLAGNUM): new
24
25 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
26 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
27 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
28 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
29 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
30 values.
31
32 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
33
34 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
35 tc9 macros and scm_tc9_flag.
36
eecac806
MV
372003-09-15 Marius Vollmer <mvo@zagadka.de>
38
39 * posix.c (scm_setgroups): Check that the gid list is not too
40 long. Thanks to Paul Jarc!
41
22f2cf2d
DH
422003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
43
44 * tags.h: Reduced the number of short instructions from 14 to 13.
45 The typecode of the former 14th short instruction is now used to
46 represent long instructions. Changed some comments to reflect
47 this fact.
48
49 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
50 previously used by SCM_IM_DEFINE.
51
52 (SCM_IM_DEFINE): Turned into a long instruction.
53
54 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
55 instruction.
56
57 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
58 code that is separate from all instructions, one level of dispatch
59 for long instructions can be eliminated.
60
61 * print.c (scm_isymnames): Removed some commented code.
62
62f548e1
MV
632003-09-12 Marius Vollmer <mvo@zagadka.de>
64
97a61c5f
MV
65 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
66 compiler on IA64.
67
50e0ba57
MV
68 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
69
70 * modules.c (scm_module_reverse_lookup): Check that the obarray
71 really is a hashtable and do nothing if not.
72
62f548e1
MV
73 * inline.h: Use "extern inline" only with GCC. Use "static
74 inline" else.
75
0d5e3480
DH
762003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
77
78 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
79 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
80
81 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
82 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
83 deprecated.h.
84
6b412e91
DH
852003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
86
87 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
88 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
89
90 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
91 0.0==some_expression to some_expression==0.0. The latter is
92 better readable. The former is preferred by some people, since it
93 leads to a compiler error when confusing == with =. However, when
94 using gcc, a warning will be issued if in an if-statement an
95 assigment appears. Since many Guile developers are using gcc,
96 such errors will not remain unnoticed anyway. We can therefore
97 focus on better readability.
98
7e3b25bf
DH
992003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
100
101 * tags.h: Added description of Guile's type system. Removed some
102 old and misleading comments.
103
3ea39242
DH
1042003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
105
106 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
107 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
108
5d7d39ff
DH
1092003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
110
111 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
112
113 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
114 respective SLOPPY macro.
115
baa84a20
DH
1162003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
117
118 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
119 type string, not SCM_TYP7S.
120
ba15f500
KR
1212003-09-03 Kevin Ryde <user42@zip.com.au>
122
123 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
124 2s-complement.
125
53bb8782
KR
126 * stime.c (scm_strptime): Add comment about glibc strptime %s and
127 current timezone requiring SCM_DEFER_INTS.
128
defdc4b4
NJ
1292003-08-30 Neil Jerram <neil@ossau.uklinux.net>
130
131 * script.c (scm_compile_shell_switches): Make -s switch optional
132 if file to be loaded does not begin with a `-'. (Thanks to Aaron
133 VanDevender for the patch!)
134
0f008a15
KR
1352003-08-30 Kevin Ryde <user42@zip.com.au>
136
137 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
138 and to have non-integer types rejected as per other logical funcs.
139
438a3ba1
KR
1402003-08-28 Kevin Ryde <user42@zip.com.au>
141
142 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
143
98dceb37
KR
1442003-08-23 Kevin Ryde <user42@zip.com.au>
145
146 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
147 thread safe, and could take a long time too.
148
1fa79a38
KR
1492003-08-22 Kevin Ryde <user42@zip.com.au>
150
151 * numbers.c (scm_difference): Correction to bignum - negative inum.
152
d97f9b42
KR
1532003-08-14 Kevin Ryde <user42@zip.com.au>
154
155 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
156 [__GNUC__]: Use volatile asm macros rather than a function call.
157 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
158 macros while defining functions.
159
160 * simpos.c (getenv): Use <stdlib.h> for prototype.
161 (scm_system): In docstring, refer to status:exit-val rather than
162 "functions above".
163
b9052fcc
KR
1642003-08-09 Kevin Ryde <user42@zip.com.au>
165
166 * srcprop.c (scm_source_properties): Return plist from hash if it's a
167 list set by source-properties! rather than an SRCPROPS object,
168
8e5b4b9e
KR
1692003-07-29 Kevin Ryde <user42@zip.com.au>
170
171 * properties.c (scm_primitive_property_ref): In docstring, note
172 parameters to not-found-proc, use hyphens rather than underscores for
173 that parameter name.
174 (scm_primitive_property_set_x): In docstring, VAL is the value
175 parameter not CODE.
176
20703ac4
MV
1772003-07-27 Marius Vollmer <mvo@zagadka.de>
178
c6ccee34
MV
179 * print.c (scm_print_symbol_name): handle more weird characters by
180 escaping the symbol name properly. Thanks to Paul Jarc!
181
2f4931bf
MV
182 * posix.h (scm_setgroups): New prototype.
183 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
184 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
185 Don't use SCM_WRITABLE_VELTS.
186
265c456f
MV
187 * gc.h (SCM_GC_SET_CELL_BVEC): New.
188 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
189 Matthias Koeppe!
190
20703ac4
MV
191 * __scm.h (SCM_C_INLINE_KEYWORD): New.
192 * numbers.c: Use it in place of SCM_C_INLINE so that the code
193 compiles when SCM_C_INLINE is undefined.
194
59c4bb82
DH
1952003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
196
197 * __scm.h: Reformulated the architecture and compiler properties
198 in terms of properties of scm_t_bits and SCM variables rather than
199 in terms of c standard types. This is since it is not known which
200 of the standard types scm_t_bits and SCM variables will be defined
201 to.
202
d7850c8d
KR
2032003-07-24 Kevin Ryde <user42@zip.com.au>
204
205 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
206 and real.
207
8a0c514f
KR
2082003-07-18 Kevin Ryde <user42@zip.com.au>
209
210 * numbers.c (scm_product): In complex * bignum, correction to
211 REAL/IMAG fetch, x is the complex, not y.
212
0aacf84e
MD
2132003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
214
215 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
216 scm_inf_p test as Scheme values.
217 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
218 and a positive inum.
219 Use GNU indentation style.
220
192de9a4
DH
2212003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
222
223 * values.c (scm_values): Build lists of length 1 by using
224 scm_list_1 instead of using scm_cons.
225
bbb4438a
KR
2262003-07-10 Kevin Ryde <user42@zip.com.au>
227
b58c85ce
KR
228 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
229 * list.c (scm_list_n): Ditto.
230
bbb4438a
KR
231 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
232
287f8ad1
KR
2332003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
234
235 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
236 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
237 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
238 the other using intptr_t.
239
005d2366
KR
2402003-07-08 Kevin Ryde <user42@zip.com.au>
241
0aacf84e 242 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
243 (scm_magnitude): Use hypot.
244
245 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
246 @footnote since it doesn't go through to guile-procedures.txt.
247
248 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
249 outside @var to quieten makeinfo, and use @code.
250
cbfe8e62
HWN
2512003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
252
253 * gc-malloc.c (decrease_mtrigger): new function
254 (increase_mtrigger): new function, separate debug registering and
255 mtrigger administration.
256 (scm_gc_realloc): bugfix: do mtrigger administration before the
257 actual realloc, for the realloc might invalidate a GC-d segment of
258 memory. Thanks to Sam Hocevar for pointing this out.
259 (scm_gc_realloc): use scm_malloc_reregister instead of
260 unregistering and registering in sequence.
261
aeb4c2e1
HWN
2622003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
263
264 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
265
4c27f8d2
HWN
2662003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
267
268 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
269 clauses.
270
983e697d
MV
2712003-06-29 Marius Vollmer <mvo@zagadka.de>
272
273 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
274 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
275 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
276 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
277 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
278 the release_1_6 branch.
279
78b6566e
SJ
2802003-06-25 Stefan Jahn <stefan@lkcc.org>
281
282 * continuations.c: Redeclaration of getcontext() via the
283 __asm__ ("getcontext") directive.
284
285 * continuations.h: Include <ucontext.h> instead of
286 <sys/ucontext.h>.
287
1ebb8497
KR
2882003-06-21 Kevin Ryde <user42@zip.com.au>
289
290 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
291 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
292 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
293 available.
294 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
295 (isfinite): Remove, conflicts with C99 isfinite().
296
fbf85ba4
MV
2972003-06-19 Marius Vollmer <mvo@zagadka.de>
298
299 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
300 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
301 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
302 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
303 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
304 the release_1_6 branch.
305
fcc5d734
SJ
3062003-06-14 Stefan Jahn <stefan@lkcc.org>
307
308 * threads.h: Redefined scm_getspecific() and scm_setspecific()
309 to be functions instead of macros.
310
311 * threads.c: Conditionalized inclusion of <sys/time.h> and
312 <unistd.h>.
313 (scm_getspecific, scm_setspecific): Made these two function
314 real part of the API.
315
316 * posix.c (s_scm_putenv): Added some code to make a
317 (putenv "FOO="), i.e. setting an empty string, work also on
318 Win32 systems. Thanks to Kevin Ryde for the proposal.
319
c3ae8e07
KR
3202003-06-12 Kevin Ryde <user42@zip.com.au>
321
75b14838
KR
322 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
323 freebsd to comment about need to use unsetenv.
c3ae8e07 324
9d9fa092
MV
3252003-06-02 Marius Vollmer <mvo@zagadka.de>
326
327 * ports.c (scm_peek_char): Safe the column of the port around the
328 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
329
f2478375
KR
3302003-06-07 Kevin Ryde <user42@zip.com.au>
331
332 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
333 and friends required by scm_t_bits setups.
334
6375e040
DH
3352003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
336
337 * tags.h (scm_tc2_int): Added.
338
339 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
340 scm_tc2_int.
341
342 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
343 scm_tcs_closures): Hard coded values replaced by symbolic ones.
344
f5c6ec2f
DH
3452003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
346
347 * eval.c: Partially undid my patch from 2003-05-31. This patch
348 caused the segfault referenced in the previous changelog entry.
349
47dbd81e
DH
3502003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
351
352 * tags.h: Fixed comment about the immediate type code layout.
353
354 * eval.c: Fixed handling of non-special instructions. Without
355 this patch, guile will segfault on (#\0) and similar instructions.
356
3ec52c51
KR
3572003-06-05 Kevin Ryde <user42@zip.com.au>
358
359 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
360 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
361
e418bd7c
KR
362 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
363 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
364
d0624e39
DH
3652003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
366
367 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
368 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
369 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
370 generalized it to apply not only to C level functions but also to
371 scheme level functions.
372
373 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
374 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
375 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
376 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
377 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
378 respectively.
379
380 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
381 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
382 eval.h into eval.c and a copy is placed into deprecated.h.
383
384 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
385 into eval.c. This definition was not part of the API in any
386 officially released version of guile and thus does not need to go
387 through a phase of deprecation.
388
e90c3a89
DH
3892003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
390
d0624e39
DH
391 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
392 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
393 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
394 definitions are make static and renamed from scm_s_xxx to s_xxx.
395 In deprecated.c the original definitions are copied.
396
d0624e39
DH
397 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
398 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
399 eval.h into eval.c and a copy (slightly modified to work in user
400 code) is placed into deprecated.h.
401
402 * eval.c: Use the local static s_xxx definitions instead of the
403 scm_s_xxx definitions throughout.
404
14b18ed6
DH
4052003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
406
407 This set of patches separates the representation of the cxr family
408 of functions (car, cdr etc.) from the dsubr family of functions
409 (i. e. functions that take a double precision floating point
410 argument). Further, the algorithm for handling the cxr function
411 is improved.
412
413 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
414 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
415 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
416 cosh, tanh), objects.c (scm_class_of), procprop.c
417 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
418 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
419 typecode for the dsubr family of functions.
420
421 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
422 ramap_dsubr.
423
424 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
425 (scm_init_pairs): Make use of the (now usable) second cell element
426 of a scm_tc7_cxr function to implement the cxr family of functions
427 more efficiently.
428
2ca0d207
DH
4292003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
430
431 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
432 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
433 end of an if-else-if-sequence of checks.
434
9a069bdd
DH
4352003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
436
437 * eval.c (SCM_CEVAL): Improved readability of call-with-values
438 execution. Generalize apply_closure to apply_proc and use that
439 for call-with-values.
440
e910e9d2
DH
4412003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
442
443 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
444 a non closure.
445
1e498fbd
SJ
4462003-05-30 Stefan Jahn <stefan@lkcc.org>
447
448 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
449 appropriately for mingw32 hosts.
450
451 * numbers.h: Defining copysign(), isnan() and finite() to
452 be prefixed by a single '_' for mingw32 hosts.
453
c47e2599
KR
4542003-05-30 Kevin Ryde <user42@zip.com.au>
455
456 * numbers.c (z_negative_one): New variable.
457 (scm_init_numbers): Initialize it.
458 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
459
2e945bcc
SJ
4602003-05-29 Stefan Jahn <stefan@lkcc.org>
461
462 * win32-dirent.c: Use malloc() instead of scm_malloc().
463
464 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
465 warning.
466
467 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
468 mingw32 build.
469
470 * modules.c (s_scm_module_import_interface): Renamed local
471 variable interface to _interface. Seems like 'interface'
472 is a special compiler directive for the mingw32 compiler.
473
474 * mkstemp.c: Provide prototype to avoid compiler warning.
475
476 * load.c (s_scm_search_path): Fixed absolute and relative
477 path detections for native Windows platforms.
478
479 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
480 to build on mingw32).
481
482 * gc-freelist.c ("s_scm_map_free_list",
483 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
484
485 * fports.c (fport_fill_input): Disable use of
486 fport_wait_for_input() on Win32 platforms.
487
488 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
489
490 * Makefile.am: Modified some rules for cross compiling.
491
ddd8f927
DH
4922003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
493
494 * eval.c (SCM_CEVAL): In case of an application, all checks for a
495 proper function object and the correct number of arguments are now
496 performed in the application part of SCM_CEVAL.
497
498 (scm_badformalsp): Removed.
499
f8ba2197
DH
5002003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
501
502 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
503
79f55b7c
MD
5042003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
505
a502595f
MD
506 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
507 always being false by inserting preprocessor conditional. (Thanks
508 to Bruce Korb.)
509
79f55b7c
MD
510 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
511 (void *) in order to avoid an aliasing warning; thanks to Bruce
512 Korb.)
513
514 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
515
516 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
517 SCM_STACK_PTR.
518
519 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
520 thread->base --> t->base.
521
522 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
523
47dee228
MV
5242003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
525
526 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
527 scm_variable_set_name_hint, scm_builtin_variable,
528 scm_internal_with_fluids, scm_make_gsubr,
529 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
530 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
531 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
532 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
533 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
534 scm_make_subr_with_generic, scm_make_subr_opt,
535 scm_call_catching_errors, scm_make_smob_type_mfpe,
536 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
537 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
538 branch. Some have been slightly rewritten.
539 (scm_i_object_chars, scm_i_object_length): New, to support
540 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
541
e681d187
DH
5422003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
543
544 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
545 names and inits in the memoized code of do.
546
7e59d9d4
MD
5472003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
548
549 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
550 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
551 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
552 a compilation error if error-on-warning is enabled).
553
9d9fa092 554>>>>>>> 1.1883
9950a42c
MV
5552003-05-17 Marius Vollmer <mvo@zagadka.de>
556
557 * c-tokenize.lex: Gobble up complete lines after a '#'. This
558 removes preprocessor directives from the snarfage that might
559 otherwise confuse us. These directives appear when compiling with
560 "-g3", for example.
561
0068984b
HWN
5622003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
563
26e68795
HWN
564 * ChangeLog: add my surname
565
0068984b
HWN
566 * srcprop.c (scm_finish_srcprop): use
567 scm_gc_register_collectable_memory()
568 (scm_make_srcprops): idem.
569
131805f0
HWN
5702003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
571
572 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
573 wrap-around for scm_mtrigger
574 (scm_gc_register_collectable_memory): abort on overflowing
575 scm_mallocated().
576
d4611024
KR
5772003-05-13 Kevin Ryde <user42@zip.com.au>
578
579 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
580 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
581
7aaf8dc9
MD
5822003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
583
dfd03fb9
MD
584 * backtrace.c (scm_display_error_message): Introduced fancy
585 printing with max level 7 and length 10. (Purpose: avoid printing
586 gigantic objects in error messages.)
587
588 * print.c, print.h (scm_i_port_with_print_state): New function.
589
590 * print.c (scm_iprin1, scm_printer_apply,
591 scm_port_with_print_state): Use scm_i_port_with_print_state.
592 (scm_simple_format): Modified not to destroy print states.
593 (print_state_mutex): New mutex.
594 (scm_make_print_state, scm_free_print_state, scm_prin1):
595 Lock/unlock print_state_mutex.
596
7aaf8dc9
MD
597 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
598 Use current names in definitions.
599
a4d9ffa1
KR
6002003-05-10 Kevin Ryde <user42@zip.com.au>
601
602 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
603
d25e96a4
KR
604 * numbers.c (scm_integer_length): On negative bignums, adjust
605 mpz_sizeinbase to account for it looking at absolute value where we
606 want ones-complement.
607
608 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
609 since we're only using the ulong return value, and x might not fit.
610
5bf6a6f0
DH
6112003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
612
613 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
614 read. This will allow to make the definition in read.c static.
615
f58c472a
DH
6162003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
617
618 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
619 from evalext to eval. This will allow to make some of the
620 definitions in eval.c static.
621
90382aeb
KR
6222003-05-06 Kevin Ryde <user42@zip.com.au>
623
624 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
625 (scm_logcount): Use mpz_com, not mpz_neg.
626
3b88ed2a
DH
6272003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
628
629 The purpose of this patch is to make guile's internal memoizers
630 distinguishable from memoizing macros created on the scheme level
631 or from user provided primitive memoizing macros. The reason is,
632 that the internal memoizers are the only ones that are allowed to
633 transform their scheme input into memoizer byte code, while all
634 other memoizing macros may only transform scheme code into new
635 scheme code.
636
637 To achieve this, a new macro type 'builtin-macro!' is introduced.
638 Currently, 'builtin-macro!'s are handled as memoizing macros, but
639 this will change when the memoizer and executor are separated.
640
641 * macros.[ch] (scm_i_makbimacro): New.
642
643 * macros.h (SCM_BUILTIN_MACRO_P): New.
644
645 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
646
647 * eval.c, goops.c: All of guile's primitive memoizing macros are
648 primitive builtin-macros now.
649
650 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
651 builtin-macros are handled equally to memoizing macros.
652
b0780eb1
MV
6532003-05-04 Marius Vollmer <mvo@zagadka.de>
654
655 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
656 work around a bug in GCC 2.95.2 but is now a bug in itself.
657
1cbf4fe9
MV
6582003-05-02 Marius Vollmer <mvo@zagadka.de>
659
660 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
661 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
662 scm_tcs_symbols): New.
663
1a61d41b
MV
6642003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
665
096ecbaf
MV
666 * deprecated.h, deprecated.c (scm_protect_object,
667 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
668 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
669 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
670 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
671 scm_ensure_user_module, scm_load_scheme_module, scm_port,
672 scm_ptob_descriptor, scm_port_rw_active,
673 scm_close_all_ports_except): New.
674
1a61d41b
MV
675 * ports.c (scm_c_port_for_each): New function, mostly copied from
676 scm_port_for_each.
677 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
678 * ports.h (scm_c_port_for_each): New prototype.
679
c8e1d354
MD
6802003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
681
682 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
683 macro was introduced in anticipation of GOOPS method compilation
684 code.)
685
686 * goops.c: Removed binding of @dispatch.
687
a4aa2134
DH
6882003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
689
690 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
691 instructions that bind the macros on the scheme level back to
692 goops.c in order to make sure again that the bindings go into the
693 (oop goops) module and are not visible from the outside.
694
9fbee57e
DH
6952003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
696
697 * eval.c: Non functional change: Separated R5RS and non-R5RS
698 macros into different sections of the file and ordered the
699 memoizers alphabetically.
700
12841895
DH
7012003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
702
703 * eval.c (scm_ilookup): Rewritten to improve readability.
704
6a3f13f0
DH
7052003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
706
707 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
708 Partially reverted patch from 2003-04-23 in oder to find a better
709 compromise between readability and debuggability.
710
b0c5d67b
DH
7112003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
712
713 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
714 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
715 definitions of the special goops memoizers from goops.[ch] to
716 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
717 throughout guile.
718
b9ad392e
MD
7192003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
720
721 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
722
723 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
724
725 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
726
727 * ioext.c (scm_fdes_to_ports): Ditto.
728
729 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
730 lock/unlock scm_i_port_table_mutex.
731
732 * strports.c (scm_mkstrport): Ditto.
733
734 * ports.c (scm_void_port, scm_port_for_each): Ditto.
735
736 * fports.c (scm_fdes_to_port): Ditto.
737
d0b07b5d
DH
7382003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
739
740 This set of patches contains no functional changes, only debatable
741 minor stylistic ones. Still, in order to prepare a patch between
742 my local copy and the CVS version, I decided to submit the changes
743 below. Then, the patch will hopefully only contain relevant
744 modifications :-)
745
746 * eval.c (iqq): Added const specifier.
747
748 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
749 Use NULL instead of 0 to indicate that a pointer is returned.
750 Removed some misleading 'fall through' comments.
751
752 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
753 Split up long expressions into smaller ones to be more debugging
754 friendly.
755
a98e8e98
DH
7562003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
757
758 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
759 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
760 rather than casting to SCM.
761
c178c3a6
DH
7622003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
763
764 * sort.c, pairs.h: Removed unnecessary includes.
765
d339981a
DH
7662003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
767
768 * sort.c: Replaced hand-made trampline code by the new official
769 mechanism from eval.c. This fixes a segfault in the new test file
770 sort.test.
771
772 (quicksort, compare_function, scm_restricted_vector_sort_x,
773 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
774 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
775 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
776 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
777 eval.c.
778
779 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
780 cmp_fun_t): Removed.
781
782 (compare_function): Added.
783
784 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
785 arithmetics with index arithmetics. Changed quicksort to work on
786 an array of SCM values instead of an array of characters. Avoid
787 bytewise copying of SCM elements. Avoid allocating memory on the
788 stack with alloca. Fixed some comments.
789
821f18a4
DH
7902003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
791
792 * eval.c (EXTEND_ENV): Eliminated.
793
794 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
795 EXTEND_ENV.
796
94fb5a6e
DH
7972003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
798
799 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
800
801 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
802 compiling with SCM_DEBUG==1 by moving definition behind prototype.
803
804 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
805 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
806 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
807 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
808 functions such that they check if the object is a non-immediate.
809 Further, renamed identifiers to use the scm_dbg_ prefix and made
810 their inclusion into the lib dependent of the
811 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
812
fce0b22d
DH
8132003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
814
815 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
816 debug option.
817
1685446c
DH
8182003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
819
821f18a4 820 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
821 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
822 any calls to SCM_NCONSP any more.
823
824 * unif.c (l2ra): Eliminate redundant check.
825
9ff1720f
DH
8262003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
827
828 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
829 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
830 SCM_NNULLP. Now, guile itself does not include any calls to
831 SCM_NNULLP any more.
832
05b15362
DH
8332003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
834
835 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
836 scm_copy_tree): Place assignment expressions which are part of
837 other expressions into an expression of their own.
838
0c88d7df
DH
8392003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
840
841 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
842 compare SCM values with !=.
843
5cb22e96
DH
8442003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
845
846 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
847 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
848 and definition of the memoizer for the generalized set! macro from
849 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
850 define the macro object.
851
852 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
853 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
854 eval.c, it is made static and renamed to s_set_x.
855
856 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
857 over SCM_N<foo>.
858
a44a9715
DH
8592003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
860
861 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
862 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
863 to undefineds and registered the object as a permanent object.
864
865 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
866 static in eval.c, renamed it to f_apply and registered the object
867 as a permanent object.
868
1b43d24c
DH
8692003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
870
5cb22e96 871 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
872 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
873
aec16f99
DH
8742003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
875
876 * numbers.c (scm_logtest): Fixed argument bug in the call to
877 mpz_and, which showed up when compiling with SCM_DEBUG defined.
878
f96460ce
DH
8792003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
880
881 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
882 type errors that showed up when compiling with SCM_DEBUG defined.
883
d0f6ceb8
DH
8842003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
885
886 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
887 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
888 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
889 fix compile errors with --disable-deprecated.
890
19a7a089
RB
8912003-04-17 Rob Browning <rlb@defaultvalue.org>
892
893 * numbers.c (scm_integer_expt): fix case where we were declaring
894 vars in the middle of a statement block. Thanks to Thamer
895 Al-Harbash.
896
47cd67db
MD
8972003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
898
0fd7dcd3
MD
899 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
900 change.
901
47cd67db
MD
902 * eq.c (scm_eqv_p): Turned into a primitive generic.
903
3b8b889c
RB
9042003-04-16 Rob Browning <rlb@defaultvalue.org>
905
312006bb
RB
906 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
907 Thanks to Boyd Gerber.
908 Added check for __arm__ in addition to arm for LINUX and copied
909 __s390__ defines from upstream libgc. Thanks to James Treacy for
910 reporting the problems.
c7ef2ea1 911
3b8b889c
RB
912 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
913
914 * socket.c: use SCM_CHAR_BIT.
915
916 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
917
918 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
919
43261b39
MD
9202003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
921
922 * feature.c (scm_init_feature): Always add threads feature.
923
58241edc
MD
9242003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
925
926 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
927 scm_at_assert_bound_ref. (We don't want the unbound check. See
928 oop/goops/active-slot.scm.)
929
94e91275
RB
9302003-04-14 Rob Browning <rlb@defaultvalue.org>
931
932 * tags.h: scm_t_intptr should have been intptr_t.
933
3071ea27
RB
9342003-04-13 Rob Browning <rlb@defaultvalue.org>
935
936 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
937 test. Instead use
938 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
939 as gc_os_dep.c suggests is appropriate.
940
941 * goops.c (prep_hashsets): make static to match prototype.
942 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
943 Chin.
944
945 * c-tokenize.lex: remove trailing comma from enum. Thanks to
946 Albert Chin.
947
948 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
949 Klausner.
950
21ab2aeb
MD
9512003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
952
953 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
954 indicated through extra fields in getters-n-setters.
955 (scm_add_slot): Adapted to new format of getters_n_setters slot.
956 (Thanks to Andy Wingo.)
957
dff96e95
HWN
9582003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
959
960 * gc-segment.c: add comment
961
07921c76
RB
9622003-04-07 Rob Browning <rlb@defaultvalue.org>
963
b5331f10
RB
964 * debug.h: change "id" arg name to "info_id" to avoid objective-c
965 clash.
966
07921c76
RB
967 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
968 and add regression test to standalone/.
969
9702003-04-06 Rob Browning <rlb@defaultvalue.org>
971
972 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
973 Thanks to Dale P. Smith.
974
975 * random.c: #include gmp.h.
976 (scm_c_random_bignum): normalize result on return.
977
978 * init.c: #include gmp.h.
979
980 * numbers.h: remove the gmp.h #include (not needed now).
981
982 * posix.h: change occurences of "id" to something else so we don't
983 cause trouble when included via objective-c (can't hurt, might
984 help). Still have usage in debug.h, though.
985
938f6b7c
MD
9862003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
987
372691d8
MD
988 * random.c (scm_c_random_bignum): Don't generate a random number
989 equal to m (the second argument of scm_c_random_bignum); only
990 generate numbers in the range 0 <= r < m.
c5f268f8
MD
991 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
992 scm_var_random_state.
372691d8 993
938f6b7c
MD
994 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
995 clause.
996
6cdb8c3f
RB
9972003-04-05 Rob Browning <rlb@defaultvalue.org>
998
938f6b7c 999 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
1000 uses before any code.
1001
15635be5
MD
10022003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1003
1ecfd013
MD
1004 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
1005 not top_srcdir.
1006
15635be5
MD
1007 * hashtab.c (rehash_after_gc): Clear to_rehash list before
1008 processing it in order to avoid an infinite loop.
1009
1010 * print.c (scm_prin1): Remember old state of pstate->writingp.
1011
73be1d9e
MV
10122003-04-05 Marius Vollmer <mvo@zagadka.de>
1013
1014 * Changed license terms to the plain LGPL thru-out.
1015
ad815c06
RB
10162003-04-04 Rob Browning <rlb@defaultvalue.org>
1017
1018 * socket.c (FLIPCPY_NET_HOST_128): new macro.
1019 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
1020 rewrite to handle GMP bignums.
1021
1022
1023 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
1024
1025 * ports.c (scm_getc): minor tweak.
1026
1027 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
1028 rewrite to handle GMP bignums.
1029
1030 * numbers.c: rewrite *many* functions to handle GMP bignums.
1031
1032 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
1033 handle GMP bignums.
1034
1035 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
1036
1037 * init.c (check_config): remove SCM_BIGDIG conditionals.
1038 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
1039
1040 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
1041
1042 * eval.c: remove SCM_BIGDIG conditionals.
1043
1044 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
1045
6cdb8c3f
RB
10462003-03-31 Rob Browning <rlb@defaultvalue.org>
1047
1048 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
1049 to Kevin Ryde.)
1050
10512003-03-27 Rob Browning <rlb@defaultvalue.org>
1052
1053 * threads.h: fix various preprocessor usages of new public
1054 symbols to expect 0 or 1 values rather than 1 or undefined.
1055 i.e. change #ifdef to #if, etc.
1056
1057 * threads.c: fix various preprocessor usages of new public
1058 symbols to expect 0 or 1 values rather than 1 or undefined.
1059 i.e. change #ifdef to #if, etc.
1060
1061 * tags.h: fix various preprocessor usages of new public
1062 symbols to expect 0 or 1 values rather than 1 or undefined.
1063 i.e. change #ifdef to #if, etc.
1064
1065 * stacks.c: fix various preprocessor usages of new public
1066 symbols to expect 0 or 1 values rather than 1 or undefined.
1067 i.e. change #ifdef to #if, etc.
1068
1069 * stackchk.h: fix various preprocessor usages of new public
1070 symbols to expect 0 or 1 values rather than 1 or undefined.
1071 i.e. change #ifdef to #if, etc.
1072
1073 * stackchk.c: fix various preprocessor usages of new public
1074 symbols to expect 0 or 1 values rather than 1 or undefined.
1075 i.e. change #ifdef to #if, etc.
1076
1077 * sort.c: fix various preprocessor usages of new public
1078 symbols to expect 0 or 1 values rather than 1 or undefined.
1079 i.e. change #ifdef to #if, etc.
1080
1081 * read.c: fix various preprocessor usages of new public
1082 symbols to expect 0 or 1 values rather than 1 or undefined.
1083 i.e. change #ifdef to #if, etc.
1084
1085 * random.c: fix various preprocessor usages of new public
1086 symbols to expect 0 or 1 values rather than 1 or undefined.
1087 i.e. change #ifdef to #if, etc.
1088
1089 * print.c: fix various preprocessor usages of new public
1090 symbols to expect 0 or 1 values rather than 1 or undefined.
1091 i.e. change #ifdef to #if, etc.
1092
1093 * objects.c: fix various preprocessor usages of new public
1094 symbols to expect 0 or 1 values rather than 1 or undefined.
1095 i.e. change #ifdef to #if, etc.
1096
1097 * numbers.h: fix various preprocessor usages of new public
1098 symbols to expect 0 or 1 values rather than 1 or undefined.
1099 i.e. change #ifdef to #if, etc.
1100
1101 * null-threads.c: fix various preprocessor usages of new public
1102 symbols to expect 0 or 1 values rather than 1 or undefined.
1103 i.e. change #ifdef to #if, etc.
1104
1105 * lang.c: fix various preprocessor usages of new public
1106 symbols to expect 0 or 1 values rather than 1 or undefined.
1107 i.e. change #ifdef to #if, etc.
1108
1109 * lang.h: fix various preprocessor usages of new public
1110 symbols to expect 0 or 1 values rather than 1 or undefined.
1111 i.e. change #ifdef to #if, etc.
1112
1113 * iselect.h: fix various preprocessor usages of new public
1114 symbols to expect 0 or 1 values rather than 1 or undefined.
1115 i.e. change #ifdef to #if, etc.
1116
1117 * init.c: fix various preprocessor usages of new public
1118 symbols to expect 0 or 1 values rather than 1 or undefined.
1119 i.e. change #ifdef to #if, etc.
1120
1121 * gh_data.c: fix various preprocessor usages of new public
1122 symbols to expect 0 or 1 values rather than 1 or undefined.
1123 i.e. change #ifdef to #if, etc.
1124
1125 * gh.h: fix various preprocessor usages of new public
1126 symbols to expect 0 or 1 values rather than 1 or undefined.
1127 i.e. change #ifdef to #if, etc.
1128
1129 * gen-scmconfig.c: change most new public symbols to be defined to
1130 0 or 1 rather than being either 1 or undefined.
1131
1132 * gc_os_dep.c: fix various preprocessor usages of new public
1133 symbols to expect 0 or 1 values rather than 1 or undefined.
1134 i.e. change #ifdef to #if, etc.
1135 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
1136
1137 * gc.h: fix various preprocessor usages of new public
1138 symbols to expect 0 or 1 values rather than 1 or undefined.
1139 i.e. change #ifdef to #if, etc.
1140
1141 * gc-card.c: fix various preprocessor usages of new public
1142 symbols to expect 0 or 1 values rather than 1 or undefined.
1143 i.e. change #ifdef to #if, etc.
1144
1145 * gc-mark.c: fix various preprocessor usages of new public
1146 symbols to expect 0 or 1 values rather than 1 or undefined.
1147 i.e. change #ifdef to #if, etc.
1148
1149 * feature.c: fix various preprocessor usages of new public
1150 symbols to expect 0 or 1 values rather than 1 or undefined.
1151 i.e. change #ifdef to #if, etc.
1152
1153 * evalext.c: fix various preprocessor usages of new public
1154 symbols to expect 0 or 1 values rather than 1 or undefined.
1155 i.e. change #ifdef to #if, etc.
1156
1157 * eval.h: fix various preprocessor usages of new public
1158 symbols to expect 0 or 1 values rather than 1 or undefined.
1159 i.e. change #ifdef to #if, etc.
1160
1161 * eval.c: fix various preprocessor usages of new public
1162 symbols to expect 0 or 1 values rather than 1 or undefined.
1163 i.e. change #ifdef to #if, etc.
1164
1165 * eq.c: fix various preprocessor usages of new public
1166 symbols to expect 0 or 1 values rather than 1 or undefined.
1167 i.e. change #ifdef to #if, etc.
1168
1169 * coop.c: fix various preprocessor usages of new public
1170 symbols to expect 0 or 1 values rather than 1 or undefined.
1171 i.e. change #ifdef to #if, etc.
1172
1173 * coop-threads.c: fix various preprocessor usages of new public
1174 symbols to expect 0 or 1 values rather than 1 or undefined.
1175 i.e. change #ifdef to #if, etc.
1176
1177 * coop-pthreads.c: fix various preprocessor usages of new public
1178 symbols to expect 0 or 1 values rather than 1 or undefined.
1179 i.e. change #ifdef to #if, etc.
1180
1181 * coop-defs.h: fix various preprocessor usages of new public
1182 symbols to expect 0 or 1 values rather than 1 or undefined.
1183 i.e. change #ifdef to #if, etc.
1184
1185 * convert.i.c: fix various preprocessor usages of new public
1186 symbols to expect 0 or 1 values rather than 1 or undefined.
1187 i.e. change #ifdef to #if, etc.
1188
1189 * continuations.c: fix various preprocessor usages of new public
1190 symbols to expect 0 or 1 values rather than 1 or undefined.
1191 i.e. change #ifdef to #if, etc.
1192
1193 * _scm.h: fix various preprocessor usages of new public symbols to
1194 expect 0 or 1 values rather than 1 or undefined. i.e. change
1195 #ifdef to #if, etc.
1196
d11d697a
MV
11972003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1198
9686f86d
MV
1199 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
1200
1201 * deprecated.c, deprecated.h: New files, to collect deprecated
1202 things in one place.
1203 * Makefile.am: Added them in all the right places.
1204
d11d697a
MV
1205 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
1206 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
1207 builds work.
9686f86d
MV
1208 (DOT_X_FILES): Removed "iselect.x".
1209 (DOT_DOC_FILES): Removed "iselect.doc".
d11d697a 1210
e3c0c3b9
RB
12112003-03-25 Rob Browning <rlb@defaultvalue.org>
1212
1213 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
1214 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
1215
1216 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
1217
1218 * vports.c: #include <config.h> if HAVE_CONFIG_H.
1219
1220 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
1221 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
1222
1223 * threads.h: replace usage of struct timespect with
1224 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
1225 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
1226 favor of scm_t_timespec from scmconfig.h.
1227
1228 * threads.c: move libguile/_scm.h include to the top so we pick up
1229 any critical defines like _GNU_SOURCE early. Replace usage of
1230 struct timespect with scm_t_timespec. Replace usage of
1231 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
1232 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
1233
1234 * threads-plugin.h: replace usage of struct timespect with
1235 scm_t_timespec.
1236
1237 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
1238 usage of struct timespect with scm_t_timespec.
1239
1240 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
1241 HAVE_INTTYPES_H handling to scmconfig.h. #include
1242 "libguile/__scm.h". Rework handling for scm_t_bits,
1243 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
1244 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
1245 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
1246 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
1247 SCM_HAVE_ARRAYS.
1248
1249 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
1250
1251 * struct.c: #include <config.h> if HAVE_CONFIG_H.
1252
1253 * strports.c: #include <config.h> if HAVE_CONFIG_H.
1254
1255 * strop.c: #include <config.h> if HAVE_CONFIG_H.
1256
1257 * stime.h: move handling of time related headers to scmconfig.h.
1258
1259 * stime.c: #include <config.h> if HAVE_CONFIG_H.
1260
1261 * stacks.c: replace usage of STACK_GROWS_UP with
1262 SCM_STACK_GROWS_UP.
1263
1264 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
1265 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1266
1267 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
1268 of uint32 and HAVE_UINT_32 with scm_t_int32.
1269
1270 * smob.c: #include <config.h> if HAVE_CONFIG_H.
1271
1272 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
1273
1274 * script.c: #include <config.h> if HAVE_CONFIG_H.
1275
1276 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
1277
1278 * scmconfig.h.top: new file -- preamble for scmconfig.h.
1279
1280 * rw.c: #include <config.h> if HAVE_CONFIG_H.
1281
1282 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
1283
1284 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1285
1286 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
1287
1288 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
1289 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
1290 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
1291 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1292
1293 * ramap.c: replace usage of HAVE_LONG_LONGS with
1294 "SCM_SIZEOF_LONG_LONG != 0".
1295
1296 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
1297 "libguile/scmconfig.h".
1298
1299 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
1300
1301 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1302 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
1303
1304 * posix.c: #include <config.h> if HAVE_CONFIG_H.
1305
1306 * ports.c: #include <config.h> if HAVE_CONFIG_H.
1307
1308 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1309
1310 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
1311 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
1312 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
1313 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
1314 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
1315 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
1316 "SCM_SIZEOF_LONG_LONG != 0".
1317
1318 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
1319 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
1320 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
1321 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
1322
1323 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
1324
1325 * null-threads.h: replace usage of struct timespect with
1326 scm_t_timespec.
1327
1328 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
1329
1330 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
1331 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
1332 scm_t_uint64 and rename usages.
1333
1334 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
1335
1336 * load.c: #include <config.h> if HAVE_CONFIG_H.
1337
1338 * iselect.h: move handling of time related headers to scmconfig.h.
1339 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
1340 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
1341 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
1342
1343 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
1344 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
1345 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
1346
1347 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
1348
1349 * inline.h: #include "libguile/__scm.h" at the top. Change code
1350 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
1351 what to do instead of creating a new public #define. Rename usage
1352 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
1353 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
1354 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
1355
1356 * inline.c: rearrange handling -- now we just #define
1357 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
1358 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
1359 appropriate, and we use that in inline.h along with the above
1360 define to determine how to respond.
1361
1362 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
1363 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1364
1365 * guile.c: #include <config.h> if HAVE_CONFIG_H.
1366
1367 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
1368 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1369
1370 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1371
1372 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
1373
1374 * gen-scmconfig.c: new file -- see comments in file for details.
1375
1376 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
1377
1378 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
1379 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
1380
1381 * gc.h: replace usage of SIZEOF_LONG with
1382 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
1383 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
1384 since we handle that in scmconfig.h now.
1385
1386 * gc.c: #include <config.h> if HAVE_CONFIG_H.
1387
1388 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
1389 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
1390 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
1391
1392 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
1393
1394 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1395 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
1396
1397 * fports.c: #include <config.h> if HAVE_CONFIG_H.
1398
1399 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
1400
1401 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
1402 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
1403
1404 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
1405
1406 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1407 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
1408
1409 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
1410 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
1411 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
1412 with "SCM_SIZEOF_LONG_LONG != 0".
1413
1414 * error.c: #include <config.h> if HAVE_CONFIG_H.
1415
1416 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
1417 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
1418 with "SCM_SIZEOF_LONG_LONG != 0".
1419
1420 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
1421
1422 * coop.c: replace usage of struct timespect with scm_t_timespec.
1423 #include <config.h> if HAVE_CONFIG_H.
1424
1425 * coop-threads.c: #include "libguile/_scm.h" early. Replace
1426 usage of struct timespect with scm_t_timespec. Replace usage of
1427 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
1428
1429 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
1430 usage of struct timespect with scm_t_timespec. Replace usage of
1431 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
1432
1433 * coop-defs.h: move handling of time related headers to
1434 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
1435 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
1436 timespect with scm_t_timespec.
1437
1438 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1439
1440 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1441
1442 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
1443 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1444
1445 * continuations.c: move libguile/_scm.h include to the top so we
1446 pick up any critical defines like _GNU_SOURCE early.
1447
1448 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
1449
1450 * async.c: #include <config.h> if HAVE_CONFIG_H.
1451
1452 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
1453
1454 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
1455 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
1456
1457 * __scm.h: move libguile/scmconfig.h include up to the top, so
1458 we're sure to pick up any critical defines like _GNU_SOURCE early.
1459 #include <limits.h> removed in favor of scmconfig.h inclusion when
1460 appropriate. STDC_HEADERS based inclusion of stdlib.h,
1461 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
1462 scmconfig.h inclusion when appropriate. Various Win32 related
1463 definitions removed in favor of scmconfig.h inclusion when
1464 appropriate.
1465 (HAVE_UINTPTR_T): definition removed (see NEWS).
1466 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
1467 (HAVE_LONG_LONGS): definition removed (see NEWS).
1468 (HAVE_LONG_LONG): definition removed (see NEWS).
1469 (HAVE_PTRDIFF_T): definition removed (see NEWS).
1470
1471 * Makefile.am: scmconfig.h is now generated by building and
1472 running gen-scmconfig.h and capturing its output. gen-scmconfig
1473 uses config.h and the configure.in generated gen-scmconfig.h to
1474 decide what to output. See gen-scmconfig.c for details.
1475 (noinst_PROGRAMS): add gen-scmconfig.
1476 (gen_scmconfig_SOURCES): new variable.
1477 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
1478 cross-compiling right.
1479 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
1480 (BUILT_SOURCES): add scmconfig.h.
1481
25e0bf97
MV
14822003-03-19 Marius Vollmer <mvo@zagadka.de>
1483
1484 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
1485 Adrian Bunk. Thanks!
1486
74b6d6e4
MD
14872003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1488
1489 * goops.c (make_class_from_template): New fourth arg:
1490 applicablep.
1491 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
1492 cpls.
1493
1494 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
1495
1496 * goops.c, objects.c, objects.h (scm_make_extended_class): New
1497 second arg: applicablep.
1498 (scm_i_inherit_applicable): New function.
1499
1500 * goops.c, goops.h (scm_class_applicable,
1501 scm_class_extended_accessor): New classes.
1502
5c9e7dad
DH
15032003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1504
1505 * procs.c (scm_procedure_documentation): Removed redundant
1506 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
1507 predicates.
1508
f8af5c6d
MD
15092003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1510
c614a00b
MD
1511 * list.c, list.h (scm_filter, scm_filter_x): New functions.
1512
109c2c9f
MD
1513 * modules.c (scm_module_import_interface): New function.
1514
f8af5c6d
MD
1515 * goops.c, goops.h (scm_class_accessor_method): Renamed from
1516 scm_class_accessor.
1517 (scm_class_accessor): New class.
1518
a48d60b1
MD
15192003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1520
1521 * goops.c (scm_primitive_generic_generic): Enable primitive
1522 generic if not enabled.
1523 (scm_sys_goops_loaded): Setup unextended primitive generics.
1524
1525 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
1526
1527 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
1528 snarf macros.
1529
1530 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
1531 testing example. All uses of SCM_GPROC should be converted.)
1532
1533 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
1534 scm_assoc.
1535
1536 * eq.c (scm_equal_p): Turned into a primitive generic.
1537
84edc049
RB
15382003-02-27 Rob Browning <rlb@defaultvalue.org>
1539
1540 * Makefile.am (scmconfig.h): new target -- generate file from
1541 ../config.h.
1542 (modinclude_HEADERS): remove version.h.
1543 (nodist_modinclude_HEADERS): add version.h.
1544
ea5c9285
MD
15452003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1546
b4a1358c
MD
1547 This fixes a serious GC bug, introduced during the latest
1548 reorganization of the GC, which disabled freeing of structs and
1549 GOOPS objects:
1550
1551 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
1552 SCM_EOL.
53af8255
MD
1553 (scm_struct_prehistory): Move scm_free_structs to
1554 scm_before_mark_c_hook.
ea5c9285 1555
b4a1358c
MD
1556 * gc-card.c (sweep_card): Check that we haven't swept structs on
1557 this card before. That can happen if scm_i_sweep_all_segments has
1558 been called from some other place than scm_igc.
1559
c35738c1
MD
15602003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1561
231a4ea8
MD
1562 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
1563 (since hash tables now adapt their size).
1564
1565 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
1566 (current number of prehistory bindings; hashtable code will select
1567 a prime which is greater than this value).
1568
1569 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
1570 (current number of initial symbols).
1571
1572 * properties.c (scm_init_properties): Don't specify size of
1573 scm_properties_whash.
1574
1575 * objprop.c (scm_init_objprop): Don't specify size of
1576 scm_object_whash.
1577
1578 * keywords.c (scm_init_keywords): Don't specify a hash table size.
1579
c35738c1
MD
1580 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
1581
1582 The following changes introduce the use of resizable hash tables
1583 throughout Guile. It also renames the old *-hash-table* functions
1584 to *-alist-vector* and places them, together with the rest of the
1585 weak vector support, in the module (ice-9 weak-vector). We should
1586 probably introduce a new, better, API for weak references, for
1587 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
1588 look like and are used like ordinary pairs.)
1589
1590 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
1591 leaf_environment_fold, obarray_remove_all): Use hashtable
1592 accessors.
1593
1594 * gc.c (scm_init_storage): Moved hook initialization to
1595 scm_storage_prehistory.
1596 (scm_storage_prehistory): New function.
1597 (scm_igc): Added commentary about placement of
1598 scm_after_sweep_c_hook.
1599
1600 * gc-mark.c (scm_mark_all): Use hashtable accessors.
1601 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
1602 SCM_WVECT_WEAK_VALUE_P.
1603
1604 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
1605 functions.
1606 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
1607 Removed.
1608 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
1609 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
1610
1611 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
1612 calls to scm_storage_prehistory and scm_hashtab_prehistory.
1613
1614 * modules.c (module-reverse-lookup): Use hashtable accessors.
1615
1616 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
1617
1618 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
1619 scm_make_weak_value_alist_vector,
1620 scm_make_doubly_weak_alist_vector): New functions.
1621
1622 * weaks.c (scm_init_weaks_builtins): New function.
1623
1624 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
1625 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
1626 SCM_WVECT_NOSCAN_P): New macros.
1627
1628 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
1629 and SCM_WVECT_WEAK_VALUE_P.
1630
1631 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
1632 allocate_weak_vector and exported.
1633
0a4c1355
MD
16342003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1635
1636 * hashtab.c: Undid thread safety. (We decided that it's better to
1637 let the user explicitly protect the tables (or not) according what
1638 is suitable for the application.)
1639
87ca11ff
MD
16402003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1641
1642 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
1643 thread safe and handle resizing tables.
1644 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
1645 SCM_DEFER/ALLOW_INTS.
1646
f59a096e
MD
16472003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1648
1649 * hashtab.c (scm_vector_to_hash_table,
1650 scm_c_make_resizing_hash_table, scm_make_hash_table): New
1651 functions.
1652 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
1653 safe and handle resizing tables.
1654
1655 * weaks.c (scm_make_weak_key_hash_table,
1656 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
1657 Size argument made optional. Return resizable table if not
1658 specified.
1659
4b612c5b
MD
16602003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1661
1662 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
1663 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
1664
b3d7f6df
MD
16652003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1666
1667 * debug.c (scm_procedure_source): Handle all objects for which
1668 procedure? is #t. (Thanks to Bill Schottstaedt.)
1669
756414cf
MD
16702003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1671
361d631f
MD
1672 * futures.c (mark_futures): Don't need to mark data of recycled
1673 futures.
1674 (scan_futures, cleanup_undead): Be smarter about marking
1675 futures---avoid unnecessary passes through future lists.
1676
756414cf
MD
1677 * futures.h, futures.c: New files; Introduced recycling of
1678 futures. For fine-grained threading this lifts performance to
1679 another level. We can now use parallelization in inner loops of
1680 Guile programs without impossible overhead.
1681
1682 * threads.h, threads.c: Moved futures to their own file.
1683
1684 * Makefile.am (libguile_la_SOURCES): Added futures.c.
1685 (DOT_X_FILES): Added futures.x.
1686 (DOT_DOC_FILES): Added futures.doc.
1687 (modinclude_HEADERS): Added futures.h.
1688
1689 * threads.c, threads.h (scm_i_create_thread): Renamed from
1690 create_thread and made global.
1691
1692 * futures.c (scm_make_future): New procedure.
1693
1694 * eval.c: #include "libguile/futures.h".
1695
1696 * init.c: #include "futures.h"
1697 (scm_init_guile_1): Call scm_init_futures.
1698
1699 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
1700
1701 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
1702
1703 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
1704 functions.
1705
1706 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
1707
b4debead
MD
17082003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1709
1710 * threads.c (create_thread): Don't unwind dynwind chain of parent
1711 thread before creation. Just start the new thread with an empty
1712 dynwind chain.
1713
93f26b7b
MD
17142003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1715
1716 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
1717
38d8927c
MD
17182003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1719
41c96c32
MD
1720 * threads.c (scm_timed_wait_condition_variable): Support timed
1721 waiting also for simple condition variables.
1722
38d8927c
MD
1723 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
1724 of calling the procedure change-object-class.
1725
9cf5d9b7
MD
17262003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1727
1728 * ramap.c (scm_ramapc): Typo in error message.
1729
bbf8d523
MD
17302003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1731
b46fae00
MD
1732 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
1733 slots with instance allocation.
1734
bbf8d523
MD
1735 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
1736 class.
1737 (scm_compute_applicable_methods): Use scm_generic_function_methods.
1738
1739 * goops.c (scm_generic_function_methods): Support extended
1740 generic functions.
1741
ebf9b47c
MD
17422002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1743
1744 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 1745 Thanks to Neil for pointing this out!
ebf9b47c 1746
14a9ba3f
NJ
17472002-12-29 Neil Jerram <neil@ossau.uklinux.net>
1748
1749 * lang.h: Remove declarations matching definitions removed from
1750 lang.c (just below).
1751
c6a040a8
NJ
17522002-12-28 Neil Jerram <neil@ossau.uklinux.net>
1753
6054d805
NJ
1754 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
1755 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
1756 and already commented out.
1757
c6a040a8
NJ
1758 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
1759 scm_lreadparen): Support reading vectors with Elisp syntax if
1760 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
1761 is not currently defined, and there isn't even a configure switch
1762 to enable it yet.)
1763
3742c12f
MV
17642002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
1765
1766 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
1767 builds work.
1768 (EXTRA_DIST): Added version.h.in.
1769
fb50ef08
MD
17702002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1771
1772 This change makes it possible for one thread to do lazy sweeping
1773 while other threads are running. Now only the mark phase need to
1774 have all threads asleep. We should look further into this issue.
1775 Presently, I've put the locking of scm_i_sweep_mutex at
1776 "conservative" places due to my current lack of knowledge about
1777 the garbage collector. Please feel free to restrict these regions
1778 further to allow for maximal parallelism!
1779
1780 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
1781
1782 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
1783 scm_gc_register_collectable_memory): Substitute locking of
1784 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
1785 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
1786 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
1787 the single-thread section (which now only contains the mark
1788 phase).
1789 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
1790 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
1791
1792 * threads.c (gc_section_mutex): Removed.
1793
9ed24633
MD
17942002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1795
0d48aca5
MD
1796 * threads.c (create_thread): Clear parent field in root state in
1797 order not to unnecessarily remember dead threads.
1798
9ed24633
MD
1799 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
1800 (scm_trampoline_1, scm_trampoline_2): Use them.
1801
29717c89
MD
18022002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1803
1804 Partial introduction of real plugin interface.
1805
1806 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
1807 (EXTRA_DIST): Added threads-plugin.c.
1808
1809 * threads-plugin.h, threads-plugin.c: New files.
1810
1811 * threads.h: #include "libguile/threads-plugin.h".
1812
1813 * threads.c: #include "libguile/threads-plugin.c".
1814
1815 * pthread-threads.c: Temporarily remove debugging functions.
1816
1817 * threads.c, threads.h (scm_yield): Added back.
1818
e29e0b09
MD
18192002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1820
1821 * threads.c (really_launch): Detach before unlocking
1822 thread_admin_mutex in order not to risk being joined.
1823 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
1824 thread_admin_mutex locked during GC.
1825
1826 * pthread-threads.c, pthread-threads.h: Improvements to debugging
1827 functions.
1828
0b6843b1 18292002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 1830
6da2dfc4
MD
1831 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
1832 support for debugging mutex operations.
1833
1b92fb6b
MD
1834 * threads.c (scm_thread): Removed filed joining_threads.
1835 (thread_print): Print thread number as well as address of thread
1836 structure.
0b6843b1
MD
1837 (scm_join_thread): Bugfix.
1838 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
1839 scm_timed_wait_condition_variable, scm_signal_condition_variable,
1840 scm_broadcast_condition_variable): Use the low-level API.
1841 (scm_all_threads): Return copy of thread list (to prevent
1842 unintended destruction).
1843 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 1844
93cd4dcd
MD
1845 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
1846 pthread "native" recursive mutex support.
1847
2ff4f181
MD
18482002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1849
28d52ebb
MD
1850 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
1851 Simply lock a thread C API recursive mutex.
1852 (SCM_NONREC_CRITICAL_SECTION_START,
1853 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
1854 SCM_REC_CRITICAL_SECTION_END): Removed.
1855
1856 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
1857 direct calls to scm_rec_mutex_lock / unlock around the three calls
1858 to scm_m_expand_body.
1859
1860 * eval.c, eval.h (promise_free): New function.
1861 (scm_force): Rewritten; Now thread-safe; Removed
1862 SCM_DEFER/ALLOW_INTS.
1863
1864 * pthread-threads.h: Added partially implemented plugin interface
1865 for recursive mutexes. These are, for now, only intended to be
1866 used internally within the Guile implementation.
1867
1868 * pthread-threads.c: New file.
1869
1870 * threads.c: Conditionally #include "pthread-threads.c".
1871
1872 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
1873 thread-safe;
1874
1875 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
1876 SCM_GLOBAL_REC_MUTEX): New macros.
1877
1878 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
1879 macros---use mutexes instead.
1880
1881 * tags.h (SCM_IM_FUTURE): New tag.
1882
1883 * eval.c (scm_m_future): New primitive macro.
1884 (SCM_CEVAL): Support futures.
1885 (unmemocopy): Support unmemoization of futures.
1886
1887 * print.c (scm_isymnames): Name of future isym.
1888
2ff4f181
MD
1889 * version.c: Unmade some changes to my private copy that got
1890 committed by mistake.
1891
392d2833
MD
18922002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1893
e200ddee
MD
1894 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
1895 2002-12-10.
1896
392d2833
MD
1897 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
1898
1899 * gc.c (scm_gc_sweep): Call it here instead, which is a more
1900 logical place.
1901
1902 * threads.c (create_thread): Remember root object until the handle
1903 of the new thread is on all_threads list.
1904
1905 * root.c (scm_make_root): Moved copying of fluids until after
1906 creation of root handle so that the fluids are GC protected. Also
1907 removed the critical section.
1908
c4c52ebe
MD
19092002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1910
960c408c
MD
1911 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
1912
3cdde9d6 1913 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 1914 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
1915 (scm_realloc): Serialize call to realloc
1916 (scm_calloc): Same for calloc.
1917 Thanks to Wolfgang Jaehrling!
1918 (Now we have to make sure all calls to malloc/realloc are made
1919 through scm_malloc.)
1920
960c408c
MD
1921 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
1922
c4c52ebe
MD
1923 * threads.c (really_launch): Release heap (to prevent deadlock).
1924 (create_thread): Release heap before locking thread admin mutex.
1925
b0dc3d71
MD
19262002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1927
1928 * threads.c (scm_i_thread_invalidate_freelists): New
1929 function.
1930
1931 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
1932
1933 * modules.c (scm_export): Inserted a return statement.
1934
06e80f59
HWN
19352002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1936
1937 * modules.c (scm_export): new function
1938
1939 * gc-card.c: add a note about malloc()/free() overhead.
1940
a12611c3
MD
19412002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1942
1943 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
1944 in srcdir.
1945
c7fabadf
MD
19462002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1947
1948 These changes remove scm_ints_disabled (which hasn't has any
1949 effect in Guile for quite some time).
1950
1951 * async.c, error.h (scm_ints_disabled): Removed.
1952
1953 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
1954 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
1955 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
1956 (old_ints): Removed.
1957
1958 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
1959 critical section.
1960 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
1961 SCM_ALLOW_INTS.
1962
9bc4701c
MD
19632002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1964
52340b65
MD
1965 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
1966 Removed accidental #if 0 around these functions.
1967
9bc4701c
MD
1968 These changes are the start of support for preemptive
1969 multithreading. Marius and I have agreed that I commit this code
1970 into the repository although it isn't thoroughly tested and surely
1971 introduces many bugs. The bugs should only be exposed when using
1972 threads, though. Signalling and error handling for threads is
1973 very likely broken. Work on making the implementation cleaner and
1974 more efficient is needed.
1975
1976 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
1977 (SCM_NONREC_CRITICAL_SECTION_START,
1978 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
1979 SCM_REC_CRITICAL_SECTION_END): New macros.
1980 (SCM_CRITICAL_SECTION_START/END): Defined here.
1981
1982 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
1983 the three calls to scm_m_expand_body.
1984
1985 * gc.h: #include "libguile/pthread-threads.h";
1986 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
1987
1988 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
1989 scm_t_key;
1990
1991 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
1992 access.
1993
1994 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
1995
1996 * gc-freelist.c, threads.c (really_launch): Use
1997 SCM_FREELIST_CREATE.
1998
1999 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
2000
2001 * gc.c (scm_i_expensive_validation_check, scm_gc,
2002 scm_gc_for_newcell): Put threads to sleep before doing GC-related
2003 heap administration so that those pieces of code are executed
2004 single-threaded. We might consider rewriting these code sections
2005 in terms of a "call_gc_code_singly_threaded" construct instead of
2006 calling the pair of scm_i_thread_put_to_sleep () and
2007 scm_i_thread_wake_up (). Also, we would want to have as many of
2008 these sections eleminated.
2009
2010 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
2011
2012 * inline.h: #include "libguile/threads.h"
2013
2014 * pthread-threads.h: Macros now conform more closely to the
2015 pthreads interface. Some of them now take a second argument.
2016
2017 * threads.c, threads.h: Many changes.
2018
20192002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2020
2021 * Makefile.am (version.h): Changed $^ --> $< in rule for
2022 version.h.
2023
b2cbe8d8
RB
20242002-12-08 Rob Browning <rlb@defaultvalue.org>
2025
2026 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
2027 (SCM_MINOR_VERSION): use @--@ substitution now.
2028 (SCM_MICRO_VERSION): use @--@ substitution now.
2029 (scm_effective_version): new function prototype.
2030
2031 * version.c (scm_effective_version): new function, also add
2032 effective-version.
2033
2034 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
2035 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
2036 SCM_LIBRARY_DIR.
2037 (version.h): generate this here rather than configure.in. This
2038 approach tracks source edits better (i.e. more immediately).
2039 Might be worth considering for other .in files too.
2040
5441c65c
MV
20412002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
2042
2043 Reorganized thread package selection. A thread package now only
2044 implements a small set of pthread like functions and Guile
2045 implements the rest on top of that. Guile's implementation is
2046 what the "coop-pthreads" package has been previously. Support for
2047 "coop" threads has been removed until I get time to add it again.
2048
2049 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
2050 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
2051 null-threads.c, coop-pthreads.c.
2052 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
2053 pthread-threads.h.
2054
2055 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
2056
2057 * threads.h: Do not include "libguile/coop-defs.h". Include
2058 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
2059 (previously deprecated) C level thread API prototypes. They are
2060 now in the thread package specific headers, "null-threads.h" and
2061 "pthread-threads.h".
2062 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
2063 New.
2064 (scm_threads_init): Removed.
2065 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
2066 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
2067 SCM_I_THREAD_SWITCH_COUNT): Define here.
2068 (scm_single_thread_p): Removed.
2069 (scm_call_with_new_thread): Take two args directly instead of list
2070 of two args.
2071 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
2072 SCM_SET_THREAD_LOCAL_DATA): Define here.
2073
2074 * threads.c: Merged with "coop-pthreads.c".
2075
2076 * null-threads.h: Implement pthread-like API as a set of macros.
2077
2078 * pthread-threads.h: New, implement pthread-like API by deferring
2079 to pthread itself.
2080
2081 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
2082 has been lost in the reorganization.
2083
504d99c5
MD
20842002-12-01 Mikael Djurfeldt <mdj@linnaeus>
2085
2086 The following change makes it possible to move procedure
2087 application dispatch outside inner loops. The motivation was
2088 clean implementation of efficient replacements of R5RS primitives
2089 in SRFI-1.
2090
2091 The semantics is clear: scm_trampoline_N returns an optimized
2092 version of scm_call_N (or NULL if the procedure isn't applicable
2093 on N args).
2094
2095 Applying the optimization to map and for-each increases efficiency
2096 noticeably. For example, (map abs ls) is 8 times faster than
2097 before.
2098
2099 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
2100
2101 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
2102
2103 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
2104 (map, for-each): Handle also application on two args as a special
2105 case; Use trampolines.
2106
2107 Other changes:
2108
2109 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
2110 (subr2oless): Removed.
2111 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
2112 vector GC protected.
2113
2114 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
2115 scm_out_of_range.
2116
63dd3413
DH
21172002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
2118
2119 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
2120
4ba5f279
MD
21212002-11-17 Mikael Djurfeldt <mdj@linnaeus>
2122
2123 * debug.c (scm_make_iloc): Added missing "return".
2124
56ae231f
MV
21252002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
2126
2127 * strports.c (scm_eval_string_in_module): Validate second arg to
2128 be a module. Thanks to Arno Peters!
2129
80b28865
DH
21302002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2131
2132 * .cvsignore: remove goops.c
2133
c88b1456
DH
21342002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2135
2136 * modules.c (scm_env_top_level, scm_lookup_closure_module,
2137 module_variable, scm_module_lookup_closure,
2138 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
2139 scm_system_module_env_p): Don't compare SCM values with C
2140 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
2141 over SCM_NFALSEP.
2142
a8a19efc
DH
21432002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2144
2145 * eval.h (SCM_MAKE_ILOC): New macro.
2146
2147 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
2148 the iloc bitpattern here.
2149
76734914
MD
21502002-11-14 Mikael Djurfeldt <mdj@linnaeus>
2151
2152 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
2153 part of the API, otherwise it's difficult to write Guile
2154 extensions using non-blocking I/O => moved #include
2155 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
2156
2157 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
2158 s_unlock_mutex.
2159
8b5b4a75
MV
21602002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
2161
2162 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
2163 are defined in configure.in.
2164
2165 * threads.c: Removed SCM_API from function definitions. SCM_API
2166 is only for declarations.
2167
e5a83084
MD
21682002-11-07 Mikael Djurfeldt <mdj@linnaeus>
2169
9be8bb45
MD
2170 * coop-pthreads.h: Added support for thread specific data to the
2171 generic C API for the coop-pthreads case.
2172
e5a83084
MD
2173 * threads.c, threads.h (scm_cond_init): Undo unintentional API
2174 change.
6c214b62 2175 (scm_cond_broadcast): Added missing function.
e5a83084 2176
7edf178e
MV
21772002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2178
2179 * coop.c (coop_next_runnable_thread): Removed, wich should have
2180 happened when GUILE_ISELECT was hard-wired.
2181
7f5b1b77
MV
21822002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
2183
7caa1b07
MV
2184 * Makefile.am (libguile_la_SOURCES): Added threads.c
2185 (DOT_DOC_FILES): Added threads.doc.
2186 (DOT_X_FILES): Added threads.x.
2187 (EXTRA_libguile_la_SOURCES): Removed threads.c.
2188 (noinst_HEADERS): Added coop-pthreads.c.
2189 (modinclude_HEADERS): Added coop-pthreads.h.
2190
2191 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
2192 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
2193
bb11cbf4
MV
2194 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
2195 Thanks to Bill Schottstaedt!
2196
1d4cbbed
MV
2197 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
2198
7f5b1b77
MV
2199 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
2200 SCM_COPT_THREADS is defined.
2201 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
2202 is defined.
2203
2204 * coop-pthreads.c: Some harmless renamings of internal stuff.
2205 (create_thread): New, generalized version of
2206 scm_call_with_new_thread.
2207 (scm_call_with_new_thread): Use it.
2208 (scm_spawn_thread): New, use create_thread.
2209
d52f53b1
MV
22102002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
2211
2212 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
2213 start testing it now.
2214
2215 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
2216 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
2217 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
2218 is defined.
2219
30f920c3
MV
22202002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
2221
2222 * scmsigs.c (signal_cell_handlers, install_handler_data,
2223 scm_delq_spine_x, really_install_handler, install_handler): New
2224 scheme for triggering signal handlers, to simplify take_signal.
2225 (take_signal): Simplified, to avoid race conditions.
2226 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
2227 hasn't exited yet.
2228
2229 * async.c (scm_async_click): Reset pending_asyncs, handle
2230 signal_asyncs. Don't set cdr of a non-signal async to #f.
2231 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
2232 always. Set pending_asyncs.
2233 (scm_system_async_mark_for_thread): Check that thread has not
2234 exited.
2235 (scm_unmask_signals, decrease_block): Call scm_async_click after
2236 block_asyncs becomes zero.
2237
2238 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
2239 active_asyncs.
2240
2241 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
2242 fields.
2243 * root.c (root_mark): Mark them.
2244 (make_root): Initialize them.
2245
2246 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
2247 USE_COOP_THREADS.
2248 (scm_internal_select): Define one version for USE_COOP_THREADS and
2249 one for USE_NULL_THREADS.
2250 (scm_init_iselect): Likewise.
2251
2252 * inline.h (scm_cell, scm_double_cell): Also allow
2253 USE_COPT_THREADS to not protect the slot initializers.
2254
2255 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
2256 because threads need to be initialized before the stack, but
2257 gsubrs such as scm_timed_condition_variable_wait can only be
2258 created later.
2259
2260 * threads.h: Include "coop-pthreads.h" when requested.
2261 (scm_threads_make_mutex, scm_threads_lock_mutex,
2262 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
2263 not implemented anyway.
2264 (scm_init_thread_procs, scm_try_mutex,
2265 scm_timed_condition_variable_wait,
2266 scm_broadcast_condition_variable, scm_c_thread_exited_p,
2267 scm_thread_exited_p): New prototypes.
2268 (struct timespec): Define if not already defined.
2269 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
2270 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
2271 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
2272 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
2273 deprecated.
2274
2275 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
2276 requested.
2277 (scm_thread_exited_p): New.
2278 (scm_try_mutex, scm_broadcast_condition_variable): Newly
2279 registered procedures.
2280 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
2281 Use the latter as the procedure for "wait-condition-variable",
2282 thus offering a optional timeout parameter to Scheme.
2283 (scm_wait_condition_variable): Implement in terms of
2284 scm_timed_wait_condition_variable.
2285 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
2286 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
2287 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
2288 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
2289 scm_make_mutex, etc, and deprecate.
2290 (scm_init_threads): Do not create smobs, leave this to
2291 scm_threads_init. Do not include "threads.x" file.
2292 (scm_init_thread_procs): New, include "threads.x" here.
2293
2294 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
2295 scm_null_mutex_lock, scm_null_mutex_unlock,
2296 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
2297 scm_null_condvar_wait, scm_null_condvar_signal,
2298 scm_null_condvar_destroy): Removed.
2299 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
2300 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
2301 scm_cond_destory): Do not define, they are now deprecated and
2302 handled by threads.{h,c}.
2303
2304 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
2305 (scm_threads_init): Create smobs here, using the appropriate
2306 sizes.
2307 (block): Removed, now unused.
2308 (scm_c_thread_exited_p): New.
2309 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
2310 scm_null_mutex_destroy, scm_null_condvar_init,
2311 scm_null_condvar_wait, scm_null_condvar_signal,
2312 scm_null_condvar_destroy): Removed and updated users to do their
2313 task directly.
2314 (scm_try_mutex, timeval_subtract,
2315 scm_timed_wait_condition_variable,
2316 scm_broadcast_condition_variable): New.
2317 (scm_wait_condition_variable): Removed.
2318
2319 * coop-defs.h (coop_m): Added 'level' field.
2320 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
2321 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
2322 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
2323 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
2324 define.
2325 (coop_condition_variable_broadcast): New.
2326
2327 * coop-threads.c (scm_threads_init): Create smobs here, using the
2328 appropriate sizes.
2329 (scm_c_thread_exited_p, scm_try_mutex,
2330 scm_timed_wait_condition_variable,
2331 scm_broadcast_condition_variable): New.
2332 (scm_wait_condition_variable): Removed.
2333
2334 * coop.c (coop_new_mutex_init): Initialize level.
2335 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
2336 level.
2337 (coop_condition_variable_signal): Renamed to
2338 coop_condition_variable_broadcast and reimplemented in terms of
2339 that. Thus...
2340 (coop_condition_variable_broadcast): New.
2341
2342 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
2343
2344 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
2345
087ed40d
MV
23462002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
2347
65a23095
MV
2348 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
2349 of system headers.
2350
087ed40d
MV
2351 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
2352 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 2353 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 2354
5ec1d2c8
DH
23552002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
2356
2357 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
2358 scm_definedp to scm_defined_p and deprecated scm_definedp.
2359
100ae50d
DH
23602002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
2361
2362 * async.h, async.c (scm_system_async): Fixed deprecation to work
2363 correctly when deprecated features are excluded.
2364
2794cb50
MV
23652002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2366
2367 * async.c (scm_system_async_mark_for_thread): Validate thread
2368 argument.
2369
2370 * coop-threads.c (scm_i_thread_root): Do not validate argument.
2371
2372 * feature.c (scm_init_feature): Don't add 'threads' for
2373 USE_NULL_THREADS.
2374
2375 * inline.h (scm_cell, scm_double_cell): Also allow
2376 USE_NULL_THREADS to not protect the slot initializers.
2377
2378 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
2379 "USE_THREAD".
2380
2381 * Makefile.am (noinst_HEADERS): Added null-threads.c.
2382 (modinclude_HEADERS): Added null-threads.h.
2383
2384 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
2385 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
2386 (scm_init_threads): Use generic type names scm_t_mutex and
2387 scm_t_cond instead of coop_m and coop_c.
2388
2389 * null-threads.c, null-threads.h: New files.
2390
ff810d7a
MV
23912002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
2392
2393 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
2394 This is to support makes that know about "$<" only in pattern
2395 rules, like Sun's make.
2396
a90bdb73
MV
23972002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
2398
2399 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
2400 substitution. Thanks to David Allouche!
2401
e71a8bf2
DH
24022002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
2403
2404 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
2405 !SCM_ENABLE_DEPRECATED.
2406
41f77ff5
MV
24072002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2408
504d99c5 2409 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
2410 scm_i_thread_root when USE_THREADS is defined. Use scm_root
2411 otherwise.
2412
2413 * scmsigs.c (take_signal): Only call scm_i_thread_root when
2414 USE_THREADS is defined. Use scm_root otherwise.
2415 (scm_sigaction_for_thread): Ignore THREAD argument when
2416 USE_THREADS is not defined. Also, move THREAD argument defaulting
2417 out of HAVE_SIGACTION section, which was a bug.
2418
6d16b125
MV
24192002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2420
2421 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
2422 signal_handlers, not the closure that is used as the async.
2423 The closure is stored in signal_handler_cells, as previously.
2424
acfa1f52
MV
24252002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
2426
2427 * root.h (scm_root_state): Added 'block_async' slot.
2428 (scm_active_asyncs): Removed abbrev.
2429 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
2430
2431 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
2432 abbrev.
2433
2434 * async.h (scm_call_with_blocked_asyncs,
2435 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
2436 scm_c_call_with_unblocked_asyncs): New prototypes.
2437 (scm_mask_signals, scm_unmask_signals): Deprecated.
2438 (scm_mask_ints): Turned into a macro.
2439 * async.c (scm_mask_ints): Removed.
2440 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
2441 this should not be necessary.
2442 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
2443 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
2444 deprecation warning and check for errornous use. Set block_asyncs
2445 instead of scm_mask_ints.
2446 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
2447 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
2448 scm_c_call_with_unblocked_asyncs): New.
2449
2450 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
2451 Asyncs are enabled by default.
2452
34010f56
NJ
24532002-10-09 Neil Jerram <neil@ossau.uklinux.net>
2454
2455 * vports.c (scm_make_soft_port): Allow vector argument to carry a
2456 6th element: an input waiting thunk.
2457 (sf_input_waiting): New.
2458
9310d6f2
MV
24592002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
2460
2461 * root.c (root_mark): Mark active_asyncs slot.
2462
2463 * async.c (scm_async_click): Set the cdr of a executed handler
2464 cell to SCM_BOOL_F, not SCM_EOL.
2465 (scm_i_queue_async_cell): Queue the cell at the end of the list,
2466 and only if the handler procedure is not already present.
2467 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
2468 with SCM_BOOL_F.
2469 * scmsigs.c (scm_sigaction_for_thread): Likewise.
2470
ac48c719
RB
24712002-10-04 Rob Browning <rlb@defaultvalue.org>
2472
1360a142
RB
2473 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
2474
2475 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
2476 scm_lt_dlopenext, and scm_lt_dlerror.
2477 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
2478 and scm_lt_dlerror.
2479 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
2480 and scm_lt_dlerror.
2481 (sysdep_dynl_init): switch to scm_lt_dlinit();
2482
2483 * Makefile.am (libguile_la_LIBADD): switch to use
2484 libguile-ltdl.la.
2485
504d99c5 2486 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 2487
497092c9
MV
24882002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
2489
2490 * scmsigs.h (scm_sigaction_for_thread): New prototype.
2491 * scmsigs.c (got_signal): Removed.
2492 (signal_handler_cells, signal_handler_threads): New.
2493 (take_signal): Queue the cell of the signal for the specified
2494 thread. Reset the signal handler on systems that don't have
2495 sigaction.
2496 (sys_deliver_signals): Removed.
2497 (close_1): New.
2498 (scm_sigaction_for_thread): Renamed from scm_sigaction and
2499 extended to also set the thread of a signal and allocate a cell
2500 for it. Keep the Scheme name "sigaction". Check that signum is
2501 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
2502 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
2503 (scm_init_scmsigs): Allocate signal_handler_cells and
2504 signal_handler_threads vectors.
2505
2506 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
2507 that system asnycs and user asyncs are separated. Reimplemented
2508 system asyncs to work per-thread.
2509
2510 * gc.c (scm_init_gc): Do not use scm_system_async.
2511
2512 * async.h (scm_asyncs_pending, scm_set_tick_rate,
2513 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
2514 Removed prototypes.
2515 (scm_i_queue_async_cell): New.
2516
2517 * __scm.h (scm_asyncs_pending_p): Removed.
2518 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
2519 scm_asyncs_pending_p.
2520
2521 * async.h (scm_system_async_mark_for_thread): New prototype.
2522
2523 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
2524
2525 * root.h (scm_root_state): Added new "active_asyncs" slot.
2526 * root.c (scm_make_root): Initialize it to SCM_EOL.
2527
2528 * coop-defs.h (coop_t): Added new "handle" slot.
2529 * coop-threads.c (all_threads, scm_current_thread,
2530 scm_all_threads, scm_i_thread_root): New.
2531 (scm_threads_init): Add main thread to all_threads.
2532 (scheme_launch_thread): Remove thread from all_threads when it
2533 terminates.
2534 (scm_call_with_new_thread): Initialize handle slot of coop_t
2535 structure and add new thread to all_threads.
2536 (scm_spawn_thread): Likewise.
2537
2538 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
2539 * threads.c (scm_current_thread, scm_all_threads): Register as
2540 primitives.
2541
2542 * dynl.c: Use scm_lt_ prefix for libltdl functions.
2543
480fa28d
NJ
25442002-09-29 Neil Jerram <neil@ossau.uklinux.net>
2545
2546 * script.c (scm_compile_shell_switches): Fix bad spelling of
2547 `explicitly' in comment.
2548
25492002-09-28 Neil Jerram <neil@ossau.uklinux.net>
2550
2551 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
2552 Refer to provided? in doc string rather than deprecated feature?.
2553
3553e1d1
GH
25542002-09-24 Gary Houston <ghouston@arglist.com>
2555
2556 * inline.h (scm_double_cell): prevent reordering of statements
2557 with any following code (for GCC 3 strict-aliasing).
2558 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
2559 the earlier version of the reordering prevention.
2560
4ad0814a
HWN
25612002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2562
2563 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
2564
e88e4f2e
HWN
25652002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2566
2567 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
2568 protection.
2569
1e71eafb
HWN
25702002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2571
2572 * inline.h: include stdio.h
2573
2574 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
2575
61ef9c1f
HWN
25762002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2577
dac04e9f
HWN
2578 * gc-segment.c (scm_i_make_initial_segment): check user settings
2579 for sanity.
2580
2581 * gc-malloc.c (scm_gc_init_malloc): check user settings for
2582 sanity.
dac04e9f
HWN
2583
2584 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
2585
ffd72400
HWN
2586 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
2587
2588 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
2589 these won't ever wrap around with high memory usage. Thanks to
2590 Sven Hartrumpf for finding this.
ffd72400 2591
5bd4a949
HWN
2592 * gc-freelist.c: include <stdio.h>
2593
61ef9c1f
HWN
2594 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
2595
ffd0ef3b
MV
25962002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
2597
a27e3d14
MV
2598 * vectors.h (SCM_VECTOR_REF): New.
2599
ffd0ef3b
MV
2600 * snarf.h (SCM_DEFINE_PUBLIC): New.
2601
f8a1712b
MV
26022002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
2603
2604 * socket.c (scm_addr_vector): Added size of address to arguments.
2605 Use it to avoid accessing a non-existent path in a sockaddr_un.
2606 Changed all callers.
2607
7200a36b
HWN
26082002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2609
1383773b
HWN
2610 * gc.h: remove DOUBLECELL card flags.
2611
2612 * gc-malloc.c (scm_calloc): try to use calloc() before calling
2613 scm_realloc().
2614
2615 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
2616 init loop; handle this from scm_init_card_freelist()
2617
2618 * gc-card.c (scm_init_card_freelist): init bit vector here.
2619
7200a36b 2620 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 2621 num2float.i.c (FLOAT2NUM): idem
7200a36b 2622
9981de3a
HWN
26232002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2624
2625 * eval.h: prepend libguile/ to include path
2626
19647556
MV
26272002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
2628
2629 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
2630