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