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