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