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