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