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