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