(scm_c_scm2thread): New function.
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
92e64b87
MD
12004-03-03 Mikael Djurfeldt <mdj@chunk.mit.edu>
2
3 * threads.c, threads.h (scm_c_scm2thread): New function.
4
004ad931
KR
52004-02-29 Kevin Ryde <user42@zip.com.au>
6
7 * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
8 available. Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
9 particular don't assume "defined (__alpha__) && ! defined (linux)"
10 means OSF. Remove "SCO" code, which was not really SCO specific and
11 which John W. Eaton advises should be long past being needed.
12
13 * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
14 error throw.
15
72ea45ac
KR
162004-02-24 Kevin Ryde <user42@zip.com.au>
17
18 * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
19
2af0602e
KR
202004-02-22 Kevin Ryde <user42@zip.com.au>
21
22 * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
23 complex, same as for two args. (Handle only inum, big, real, frac).
24
b114eafe
KR
252004-02-21 Kevin Ryde <user42@zip.com.au>
26
27 * posix.c (scm_crypt): Use new HAVE_CRYPT.
28 (<crypt.h>): Remove HAVE_LIBCRYPT condition.
db752bb5 29 Reported by Andreas Voegele.
b114eafe 30
1e55d288
NJ
312004-02-20 Neil Jerram <neil@ossau.uklinux.net>
32
33 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
34 validation.
35
36 * read.c (scm_lreadparen): Removed.
37 (scm_lreadparen1): Renamed scm_i_lreadparen.
38
eb741d98
HWN
392004-02-20 Han-Wen Nienhuys <hanwen@xs4all.nl>
40
41 * list.c (scm_list_n): validate non-immediate arguments;
42 this will catch forgotten a SCM_UNDEFINED.
43
4e28ba5e
MV
442004-02-18 Marius Vollmer <mvo@zagadka.de>
45
46 * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
47 Thanks to Bill Schottstaedt!
48
49 * socket.h (scm_gethost): Removed prototype it is already in
50 "net_db.h". Thanks to Bill Schottstaedt!
51
ef861ead
KR
522004-02-18 Kevin Ryde <user42@zip.com.au>
53
54 * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
55 order parameter to mpz_import, in fact with just one word there's no
56 order to worry about at all.
57
58 * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
59 and frac==complex, make an exact comparison rather than converting
60 with fraction2double.
61
62 * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
63 shared library, since environ is not directly available there.
64
65 * script.c (scm_shell_usage): Print to stdout for --help, per GNU
66 standard.
67
68 * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
69 errno EINVAL in case localtime and gmtime don't set it.
70 (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
71 SCM_SYSERROR, since mktime and strptime generally don't set errno.
72
ae43d08e 732004-02-16 Kevin Ryde <kevin@swox.se>
292dfa7f 74
c9ea6462
KR
75 * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
76 which were permitted in the past for these.
77
292dfa7f
KR
78 * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
79 previous change to numbers.c.
80
ae43d08e
KR
81 * script.c (scm_shell_usage): Print bug-guile email address, as per
82 GNU standard. Reported by Han-Wen Nienhuys.
83
711a9fd7
MD
842004-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
85
86 * unif.c (scm_make_uve): Removed local variable and simplified
87 code in order to avoid compiler used uninitialized warnings.
88
89 * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
90 scm_hash_map.
91 (scm_hash_fold): Use scm_call_3 directly in the call to
92 scm_internal_hash_fold instead of going via fold_proc (which is
93 now removed).
94 (scm_hash_for_each): Use a trampoline +
95 scm_internal_hash_for_each_handle.
96 (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
97 functions.
98
3da7f6b2
KR
992004-02-12 Kevin Ryde <user42@zip.com.au>
100
344a212f
KR
101 * ports.c (scm_port_line): In docstring, note first line is 0.
102 (scm_set_port_line_x): In docstring, note first line is 0.
103 (scm_port_column): In docstring, there's no default to current input
104 port, and remove shared port-line @defun.
105 (scm_set_port_column_x): In docstring, there's no default to current
106 input port, note first column is 0, remove shared set-port-line!
107 @defun.
108
3da7f6b2
KR
109 * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
110 convert args the same way that array-set! does.
111
112 * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
113 for dvect.
114 (scm_array_p): Add missing "break"s in switch, fix llvect test look
115 for "l" not "s", fix dvect to be false for singp(prot) since such a
116 value is for fvect.
117 (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
88531a74
KR
118 (exactly_one_third): New variable.
119 (scm_init_unif): Initialize it.
3da7f6b2 120
cd21f5eb
NJ
1212004-02-10 Neil Jerram <neil@ossau.uklinux.net>
122
123 * read.c (scm_read_opts): Change `escaped-parens' to
124 `elisp-strings'.
125
16353acc
NJ
1262004-02-08 Neil Jerram <neil@ossau.uklinux.net>
127
128 * read.c (scm_read_opts): New opts `elisp-vectors' and
129 `escaped-parens'.
130 (s_vector): New.
131 (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen. Make
132 handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
133 `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
134 Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
135 `escaped-parens' option set.
136 (scm_read_token): If elisp vector syntax active, disallow [ and ]
137 in tokens.
138 (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
139 (scm_lreadparen1): New.
140
141 * read.h: Remove conditionally compiled last arg to
142 scm_lreadparen.
143 (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
144
f62b9dff
HWN
1452004-01-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
146
147 * eval.c (m_expand_body): remove stray variable new_body.
148
ef5b6b61
MV
1492004-01-22 Marius Vollmer <mvo@zagadka.de>
150
151 * eval.c (m_expand_body): Rewrite the expression in place (by
152 overwriting FORMS) also when a letrec is constructed, not only
153 when no definitions are found. Do not return rewritten expression
154 to emphasize the in-place rewriting. Changed all users.
155
7eec4c37
HWN
1562004-01-19 Han-Wen Nienhuys <hanwen@xs4all.nl>
157
158 * gc.c: add protected_object_count, a number that is dumped from
159 gc_stats()
160
25ffbdac
MV
1612004-01-11 Marius Vollmer <mvo@zagadka.de>
162
163 * dynwind.h, dynwind.c (scm_frame_unwind,
164 scm_frame_unwind_handler): Renamed and changed all uses.
165 (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
166
08568c95
KR
1672004-01-11 Kevin Ryde <user42@zip.com.au>
168
169 * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
170 s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
171 changes made to scheme-compound.texi.
172
5565749c
MV
1732004-01-10 Marius Vollmer <mvo@zagadka.de>
174
25ffbdac
MV
175 * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
176 #{.}#, and all numeric strings specially. Thanks to Paul Jarc!
177
178 * guile-snarf.in: Use mkdir to create a unique temporary directory
179 that we can safely use. Thanks to Stefan Nordhausen!
5565749c 180
fc6bb283
MV
1812004-01-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
182
7ebccde8
MV
183 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
184 argument since it is always zero now. Changed all callers.
185 Removed code for handling fluids.
96e3b2f8
MV
186
187 * fluids.c (scm_c_with_fluids): Use frames instead of adding to
188 the wind chain explicitely. Use scm_c_with_fluid for the common
189 case of only one fluid.
190 (scm_with_fluid): New.
191 (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
192
fc6bb283 193 * fluids.h, fluids.c (scm_frame_fluid): New.
96e3b2f8
MV
194 (scm_with_fluid): New.
195 (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
fc6bb283
MV
196
197 * dynwind.c (scm_frame_end): Do not use scm_i_dowinds. Instead,
198 do the unwinding directly. It is simple enough.
199
200 * dynwind.h, dynwind.c: Did the following renamings:
201 scm_begin_frame -> scm_frame_begin,
202 scm_end_frame -> scm_frame_end,
203 scm_on_unwind -> scm_frame_unwind,
204 scm_on_rewind -> scm_frame_rewind,
205 scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
206 scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
207 Changed all uses.
208
209 * aync.h, async.c: Did the follwing renamings:
210 scm_with_blocked_asyncs -> scm_frame_block_asyncs,
211 scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
212 Changed all uses.
213
214 * ports.h, ports.c: Did the follwing renamings:
215 scm_with_current_input_port -> scm_frame_current_input_port,
216 scm_with_current_output_port -> scm_frame_current_output_port,
217 scm_with_current_error_port -> scm_frame_current_error_port.
218 Changed all uses.
219
298ab996
KR
2202004-01-07 Kevin Ryde <user42@zip.com.au>
221
222 * numbers.c (s_bignum): Remove, not used since gmp bignums.
223 Reported by Richard Todd.
224
ba40113e
KR
225 * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
226 for the benefit of powerpc-apple-darwin5.5. Reported by Richard Todd.
227
298ab996
KR
228 * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
229 traversing the args list, fixes segv if an improper list is given.
230 Reported by Rouben Rostamian.
231
aacff585
MV
2322004-01-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
233
234 * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
235 swap_data on stack, use a 'malloc obj'.
236
237 * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
238 scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
239 scm_i_... since they are internal. Changed all uses.
240
241 * dynwind.c (frame_print): Removed, use the default printer.
242 (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
243 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
244 to protect SCM values.
245
246 * dynwind.h (SCM_F_WIND_EXPLICITELY,
247 SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
248 Changed all uses.
249 (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
250
49c00ecc
MV
2512004-01-05 Marius Vollmer <mvo@zagadka.de>
252
253 * ports.h, ports.c (scm_with_current_input_port,
254 scm_with_current_output_port, scm_with_current_error_port): New.
255
256 * async.h, async.c (scm_with_blocked_asyncs,
257 scm_with_unblocked_asyncs): New.
258
dab514a8
MV
2592004-01-03 Marius Vollmer <mvo@zagadka.de>
260
261 * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
262 scm_begin_frame, scm_end_frame, scm_on_unwind, scm_on_rewind):
263 New.
264 (scm_dowinds, scm_i_dowinds): scm_dowinds has been renamed to
265 scm_i_dowinds and extended to handle frames and to invoke a 'turn'
266 function when the outermost wind point has been reached. The
267 latter is used to copy a continuation stack at the right time.
268 scm_dowinds remains available.
269 (SCM_GUARDSP, SCM_BEFORE_GUARD, SCM_AFTER_GUARD, SCM_GUARD_DATA,
270 tc16_guard, guards_print): Removed.
271 (scm_internal_dynamic_wind): Reimplemented using frames.
272
273 * continuations.c (copy_stack): New, do only the stack copying
274 part of copy_stack_and_call.
275 (copy_stack_and_call): Copy the stack after unwinding and before
276 rewinding.
277 (scm_dynthrow): Do not call scm_dowinds, this is now done by
278 copy_stack_and_call.
279
441a25d9
KR
2802004-01-04 Kevin Ryde <user42@zip.com.au>
281
282 * numbers.c (scm_less_p): Don't convert frac to float for compares,
dab514a8 283 can give bad results due to rounding.
441a25d9 284
e0499207
KR
285 * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
286 setzone/restorezone protection for DOS.
287
89fcf1b4
MV
2882003-12-26 Marius Vollmer <mvo@zagadka.de>
289
290 * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax
291 and scm_t_uintmax to be defined in scmconfig.h
292
caff34d4
KR
2932003-12-03 Kevin Ryde <user42@zip.com.au>
294
295 * numbers.c (scm_less_p): Remove spurious xisnan from frac+big case.
296
297 * numbers.c (scm_make_ratio): Check for numerator equal to
298 SCM_MOST_NEGATIVE_FIXNUM and bignum denominator the negative of that,
299 giving integer -1.
300
301 * numbers.c (scm_real_part): Return fraction unchanged rather than
302 converting to flonum.
303
2d0b85ac
DH
3042003-11-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
305
306 * modules.c (module_variable): Fixed (and thus simplified) the
307 definition of SCM_BOUND_THING_P to reflect the fact that since
308 after the 1.4 series of guile, obarrays only hold variable
309 objects.
310
2297981d
MV
3112003-11-30 Marius Vollmer <mvo@zagadka.de>
312
313 * numbers.c (scm_logand): It's "#b...", not "#\b...".
314
315 From Paul Jarc:
316
317 * read.c (scm_lreadr): Signal an error for invalid escape
318 sequences in strings. Code cleanups too.
319
320 * print.c (scm_iprin1): use \xNN hexadecimal sequences when
321 writing control characters in strings.
322
3232003-11-21 Marius Vollmer <mvo@zagadka.de>
324
325 * ports.c (scm_drain_input): Bug fix: only access the port after
326 checking that it indeed is one.
327
5c264007
DH
3282003-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
329
330 * eval.c (s_bad_define): New static identifier.
331
332 (m_body): Fixed comment.
333
334 (scm_m_define): Don't generate memoized code for definitions that
335 are not on the top level. As a consequence, no memoized code at
336 all is generated for definitions any more: Top level definitions
337 are executed immediately during memoization and internal
338 definitions are handled separately in m_expand_body.
339
340 (scm_unmemocopy, unmemocopy): Removed code for unmemoizing
341 definitions. Consequently, there is no unmemoizing code any more
342 that might modify the environment. Thus, the old scm_unmemocopy
343 is removed and the old unmemocopy is renamed to scm_unmemocopy.
344
345 (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in
346 memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP
347 over SCM_NIMP in places, where the argument is known to be part of
348 a proper list.
349
018d4730
KR
3502003-11-21 Kevin Ryde <user42@zip.com.au>
351
352 * numbers.c (scm_abs): Allocate a new real only for negatives, as done
353 for bignums.
354
355 * numbers.c (scm_bit_extract): Use mpz functions, rearrange inum case
356 to share some shifting.
357
358 * numbers.c (scm_integer_expt): Don't mpz_init after scm_i_clonebig or
359 scm_i_mkbig, since they do so already. Don't mpz_clear a bignum SCM,
360 since gc does this.
361
4bca30d8
MV
3622003-11-19 Marius Vollmer <mvo@zagadka.de>
363
fb16d26e
MV
364 * numbers.c (scm_make_ratio): Rewritten to have a simpler
365 structure. Previously, not all cases with a negative denominator
366 were covered.
367
4bca30d8
MV
368 * numbers.c (mem2decimal_from_point): use scm_divide instead of
369 scm_divide2real when forming the fractional part. This allows
370 "#e1.2" to yield 6/5.
371
372 * numbers.c (scm_i_fraction_equalp): Do not treat the return value
373 of scm_equal_p as a C boolean, use SCM_FALSEP. Previously, all
374 fractions were equal to each other regardless of value. Ooops.
375
376 * numbers.c (scm_rationalize): Return an inexact result when given
377 inexact arguments.
378
379 * numbers.c (scm_exact_p, scm_inexact_p): Throw error for
380 non-numbers.
381
bdf26b60
MV
3822003-11-18 Marius Vollmer <marius.vollmer@uni-dortmund.de>
383
384 Support for exact fractions from Bill Schottstaedt! Thanks!
385
386 * print.c (scm_iprin1): Handle fractions.
387
388 * objects.h (scm_class_fraction): New.
389 * objects.c (scm_class_fraction): New.
390 (scm_class_of): Handle fractions.
391
392 * hash.c (scm_hasher): Handle fractions.
393
394 * numbers.c: New code for handling fraction all over the place.
395 (scm_odd_p, scm_even_p): Handle inexact integers.
396 (scm_rational_p): New function, same as scm_real_p.
397 (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor):
398 New exact functions that replace the inexact 'dsubr'
399 implementations.
400 (scm_numerator, scm_denominator): New.
401
402 * numbers.h (SCM_NUMP): Recognize fractions.
403 (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR,
404 SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR,
405 SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
406 SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
407 SCM_FRACTION_REDUCED): New.
408 (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number):
409 New prototypes.
410 (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator,
411 scm_rational_p): New prototypes.
412 (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp,
413 scm_i_print_fraction): New prototypes.
414
415 * goops.c (create_standard_classes): Create "<fraction>" class.
416
417 * gc-mark.c (scm_gc_mark_dependencies): Handle fractions.
418
419 * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a
420 case in the switch, but do nothing for now.
421
422 * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions
423 to doubles when calling 'dsubr' functions.
424
425 * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
426
28fda544
RB
4272003-11-18 Rob Browning <rlb@defaultvalue.org>
428
429 * gen-scmconfig.c (main): remove public definition of
430 SCM_SIZEOF___INT64 and SCM_SIZEOF_UNSIGNED___INT64 and add
431 direct typedef of long_long and ulong_long inside deprecated block
432 when appropriate.
433
434 * deprecated.h: move long_long and ulong_long definitions to
435 gen-scmconfig.c so that we don't need to add SCM_SIZEOF___INT64
436 and SCM_SIZEOF_UNSIGNED___INT64 to the public namespace.
437
b58e7420
MV
4382003-11-17 Marius Vollmer <mvo@zagadka.de>
439
9a1d7d7c
MV
440 * hash.c (scm_string_hash): New hashing algorithm that takes the
441 complete string into account.
442
b58e7420
MV
443 * eval.c (scm_m_generalized_set_x): Macroexpand the target when it
444 is a list. This allows (@ ...) to work with set!.
9a1d7d7c
MV
445 (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of
446 SCM_ASSYNT.
b58e7420
MV
447
448 * script.c (scm_compile_shell_switches): Use scm_c_read_string for
449 the "-e" option instead of scm_str2symbol. This allows things
450 like (@ ...) to be specified for the entry point.
451
461bffb1
DH
4522003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
453
454 * eval.c (scm_m_letstar): Create memoized code in place to
455 minimize consing.
456
6f81708a
DH
4572003-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
458
459 * eval.c (s_splicing): Commented and reformulated.
460
461 (lookup_global_symbol, lookup_symbol): New static functions.
462
463 (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed.
464
465 (try_macro_lookup, literal_p): Use lookup_symbol instead of
466 creating a temporary pair for scm_lookupcar.
467
468 (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar,
469 created deprecated wrapper function scm_unmemocar.
470
471 (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else,
472 scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
473 scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply,
474 undefineds, sym_three_question_marks): Moved around without
475 modifications.
476
477 * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
478
910b5125
DH
4792003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
480
481 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,
482 m_expand_body, scm_m_expand_body): Grouped together with m_body.
483 No further modifications.
484
c86c440b
DH
4852003-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
486
487 * eval.c (s_mixed_body_forms): New static identifier.
488
489 (canonicalize_define, scm_m_define): The check for a bad
490 expression is performed in canonicalize_define now.
491
492 (try_macro_lookup, expand_user_macros, is_system_macro_p): New
493 static helper functions for m_expand_body.
494
495 (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only
496 expand user defined macros. Fixed handling of the definition/
497 expression boundary. Fixed handling of definitions grouped with
498 'begin. Use canonicalize_define to expand definitions.
499
3890131a
MV
5002003-11-13 Marius Vollmer <mvo@zagadka.de>
501
b58e7420
MV
502 * read.c (scm_lreadr): detect EOF after backslash, and interpret
503 \xNN hexadecimal sequences. From Paul Jarc, thanks!
504
5df36eac
MV
505 * snarf.h (SCM_SMOB, SCM_GLOBAL_SMOB, SCM_SMOB_MARK,
506 SCM_GLOBAL_SMOB_MARK, SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE,
507 SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT, SCM_SMOB_EQUALP,
508 SCM_GLOBAL_SMOB_EQUALP, SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY):
509 New macros from Paul Jarc. Thanks!
510
3890131a
MV
511 * gc_os_dep.c (scm_get_stack_base): Provide a definition that
512 return NULL when the machine type is unknown. Previously,
513 gc_os_dep.c would refuse to compile.
514
430b8401
DH
5152003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
516
517 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,
518 scm_m_let, scm_m_letrec, m_expand_body): Renamed static function
519 scm_m_body to m_body.
520
328dc9a3
DH
5212003-11-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
522
523 * eval.c, eval.h (scm_m_expand_body, m_expand_body): Deprecated
524 public use of scm_m_expand_body in eval.h. In eval.c, renamed
525 scm_m_expand_body to m_expand_body and made it static. Added
526 deprecated wrapper scm_m_expand_body.
527
528 (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead
529 of scm_m_expand_body.
530
c2337a61
KR
5312003-11-09 Kevin Ryde <user42@zip.com.au>
532
533 * dynl.c (scm_dynamic_unlink): Need scm_list_1 on error message
534 argument. Reported by Mike Gran.
535
ced8edb0
DH
5362003-11-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
537
538 * eval.c (s_missing_body_expression): New static identifier.
539
540 (s_body): Removed.
541
542 (scm_m_expand_body): Fixed core dump when passing a body with
543 defines, but without expressions (see additions to syntax.test).
544 Use ASSERT_SYNTAX to signal syntax errors.
545
0f572ba7
DH
5462003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
547
548 * eval.c (canonicalize_define): New static helper function.
549
550 (memoize_define, canonicalize_define): Extract handling of
551 function currying to canonicalize_define.
552
2510c810
DH
5532003-11-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
554
555 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
556 Make sure that error checking in debug mode is not worse than in
557 standard mode.
558
34adf7ea
DH
5592003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
560
561 * eval.c (scm_m_body, scm_m_lambda): Documentation strings are not
562 handled in scm_m_body any more, but rather in scm_m_lambda.
563
564 (scm_m_body, memoize_named_let, scm_m_let, scm_m_letstar,
565 scm_m_letrec, scm_m_expand_body): Check for validity is done by
566 calling functions of scm_m_body.
567
568 (scm_m_lambda): Avoid unnecessary consing when creating the
569 memoized code.
570
89bff2fc
DH
5712003-11-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
572
573 * eval.c (s_expression): Added comment.
574
575 (s_empty_combination, error_unbound_variable): New static
576 identifiers.
577
578 (SCM_VALIDATE_NON_EMPTY_COMBINATION, SCM_EVALIM2, scm_lookupcar1):
579 Use ASSERT_SYNTAX, syntax_error or error_unbound_variable to
580 signal syntax errors.
581
582 (SCM_CEVAL): Separated handling of evaluator bytecodes and other
583 scheme objects.
584
60a49842
DH
5852003-10-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
586
587 * eval.c (unmemocar, sym_three_question_marks, scm_unmemocar):
588 Grouped together with unmemocopy, without modifications.
589
590 (build_binding_list, unmemocopy): Renamed names of list arguments
591 and variables to reflect the actual order of the list elements.
592
70c1c108
DH
5932003-10-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
594
595 * eval.c (s_defun): New static identifier.
596
597 (scm_m_nil_cond, scm_m_atfop, scm_m_undefine): Add comments. Use
598 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
599 when creating the memoized code.
600
0ee39677
KR
6012003-10-19 Kevin Ryde <user42@zip.com.au>
602
603 * numbers.c (scm_ash): Revise docstring as per recent update to manual.
604
605 * numbers.c (scm_i_big2dbl): Rewrite, carefully rounding to "closest"
606 in accordance with R5RS, which just mpz_get_d doesn't really give.
607
9a848baf
DH
6082003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
609
610 * eval.c (s_bad_slot_number): New static identifier.
611
612 (scm_m_atslot_ref, scm_m_atslot_set_x): Use ASSERT_SYNTAX to
613 signal syntax errors. Avoid unnecessary consing when creating the
614 memoized code.
615
da48db62
DH
6162003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
617
618 * eval.c (scm_m_cont, scm_m_at_call_with_values,
619 scm_m_generalized_set_x): Use ASSERT_SYNTAX to signal syntax
620 errors. Avoid unnecessary consing when creating the memoized
621 code.
622
623 (scm_m_generalized_set_x): Let scm_m_set_x handle the R5RS
624 standard case. Make sure line and file information are copied to
625 every created expression.
626
82b3e2c6
DH
6272003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
628
629 * eval.c (scm_m_set_x, scm_m_apply, scm_m_atbind): Use
630 ASSERT_SYNTAX to signal syntax errors. Avoid unnecessary consing
631 when creating the memoized code.
632
633 (scm_m_atbind): Reversed the order, in which the init expressions
634 are stored and executed. The order of execution is now equal to
635 the order in which the initializers of the let-forms are executed.
636 Use check_bindings and transform_bindings.
637
638 (SCM_CEVAL): Eliminated SCM_NIMP in favor of more appropriate
639 !SCM_NULLP. Added some comments.
640
21628685
DH
6412003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
642
643 * eval.c: Sorted include files alphabetically.
644
645 (scm_m_begin): Added comment.
646
647 (scm_m_or): Use ASSERT_SYNTAX to signal syntax errors. Avoid
648 unnecessary consing when creating the memoized code.
649
650 (iqq, scm_m_quasiquote, scm_m_quote): Use ASSERT_SYNTAX to signal
651 syntax errors. Be more specific about the kind of error that was
652 detected.
653
654 (scm_m_quote, unmemocopy): As an optimization, vector constants
655 are now inserted unquoted into the memoized code. During
656 unmemoization the quotes are added again to provide syntactically
657 correct code.
658
d6754c23
DH
6592003-10-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
660
661 * eval.c (scm_m_let, scm_m_letstar, scm_m_letrec,
662 scm_m_expand_body, check_bindings): Extracted syntax checking of
663 bindings to new static function check_bindings.
664
665 (scm_m_let, memoize_named_let): Extracted handling of named let to
666 new static function memoize_named_let.
667
668 (transform_bindings, scm_m_let, scm_m_letstar, scm_m_letrec): Use
669 ASSERT_SYNTAX to signal syntax errors. Be more specific about the
670 kind of error that was detected. Avoid use of SCM_CDRLOC. Avoid
671 unnecessary consing when creating the memoized code.
672
03a3e941
DH
6732003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
674
675 * eval.c (s_bad_formals, s_bad_formal, s_duplicate_formal): New
676 static identifiers.
677
678 (s_clauses, s_formals, s_duplicate_formals): Removed.
679
680 (scm_m_lambda): Use ASSERT_SYNTAX to signal syntax errors. Be more
681 specific about the kind of error that was detected. Prepare for
682 easier integration of changes for separated memoization.
683
da48db62 6842003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4610b011
DH
685
686 * eval.c (s_duplicate_binding): New static identifier.
687
688 (scm_m_case): Call scm_c_memq instead of implementing it inline.
689
690 (scm_m_define): Added comment about how we check for duplicate
691 formals.
692
693 (scm_m_do): Added check for duplicate bindings.
694
695 (scm_m_if): Use ASSERT_SYNTAX to signal syntax errors. Avoid
696 unnecessary consing when creating the memoized code.
697
698 (scm_c_improper_memq, c_improper_memq, scm_m_lambda): Renamed
699 scm_c_improper_memq to c_improper_memq, since it is not exported.
700
701 (transform_bindings): Call scm_c_memq rather than
702 scm_c_improper_memq.
703
704 (SCM_CEVAL): Simplified handling of SCM_IM_IF forms.
705
da48db62 7062003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
a954ce1d
DH
707
708 * eval.c (s_bad_bindings, s_bad_binding, s_bad_exit_clause): New
709 static identifiers.
710
711 (scm_m_do): Use ASSERT_SYNTAX to signal syntax errors. Be more
712 specific about the kind of error that was detected. Avoid use of
713 SCM_CDRLOC. Avoid unnecessary consing when creating the memoized
714 code, this way also making sure that file name, line number
715 information etc. remain available.
716
da48db62 7172003-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
8ae95199
DH
718
719 * eval.c (memoize_as_thunk_prototype): New static function.
720
721 (scm_m_delay, scm_m_future): Use memoize_as_thunk_prototype.
722 Avoid unnecessary consing when creating the memoized code.
723
9b9a35b6
KR
7242003-10-12 Kevin Ryde <user42@zip.com.au>
725
726 * list.c (scm_append): Track argument number and use in error.
727
cc56ba80
DH
7282003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
729
730 * eval.c (s_missing_expression, s_bad_variable): New static
731 identifiers.
732
733 (scm_m_define): Use ASSERT_SYNTAX to signal syntax errors. Prefer
734 R5RS terminology for the naming of variables. Be more specific
735 about the kind of error that was detected. Make sure file name,
736 line number etc. are added to all freshly created expressions.
737 Avoid unnecessary consing when creating the memoized code.
738
609a8b86
DH
7392003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
740
741 * eval.c (s_extra_expression, s_misplaced_else_clause,
742 s_bad_cond_clause, s_missing_recipient): New static identifiers.
743
744 (s_extra_case_clause): Removed.
745
746 (scm_m_case, scm_m_cond): If a clause appears after an else
747 clause, report a misplaced else clause.
748
749 (scm_m_cond): Use ASSERT_SYNTAX to signal syntax errors. Be more
750 specific about the kind of error that was detected. Handle bound
751 'else and '=>. Avoid unnecessary consing when creating the
752 memoized code.
753
754 (scm_m_cond, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
755 the syntactic keyword 'else and SCM_IM_ARROW to memoize the
756 syntactic keyword '=>.
757
58a2510b
DH
7582003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
759
760 * eval.c (scm_m_case): Allow empty lists of case labels.
761
2a6f7afe
DH
7622003-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
763
764 * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
765
766 * print.c (scm_isymnames): Add names for the new memoizer codes.
767
768 * eval.c (s_missing_clauses, s_bad_case_clause,
769 s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
770 literal_p): New static identifiers.
771
772 (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors. Be more
773 specific about the kind of error that was detected. Check for
774 duplicate case labels. Handle bound 'else. Avoid unnecessary
775 consing when creating the memoized code.
776
777 (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
778 the syntactic keyword 'else.
779
e6729603
DH
7802003-10-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
781
782 * eval.c (s_bad_expression, syntax_error_key, syntax_error,
783 ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
784
785 (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors. Avoid
786 unnecessary consing when creating the memoized code.
787
9ddeb776
KR
7882003-10-09 Kevin Ryde <user42@zip.com.au>
789
790 * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
791 cast gives for values bigger than a long, or for nan or inf.
792
df5af69a
DH
7932003-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
794
795 * smob.h (scm_make_smob_type): Made the declaration match the
796 definition.
797
da0e6c2b
MV
7982003-10-07 Marius Vollmer <mvo@zagadka.de>
799
800 * goops.c, objects.h, smob.c, smob.h: Make type names char
801 const * instead of char *. Thanks to Paul Jarc!
802
591924eb
KR
8032003-10-02 Kevin Ryde <user42@zip.com.au>
804
ff6ea7b9 805 * strports.c (scm_call_with_output_string): scm_get_output_string
591924eb
KR
806 rather than scm_strport_to_string, so as to guard against the port
807 having been closed by the called procedure. Reported by Nic Ferrier.
808
f03314f9
DH
8092003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
810
811 * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
812
813 * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
814 tags.h to deprecated.h.
815
534c55a9
DH
8162003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
817
818 This set of patches introduces a new tc7 code scm_tc7_number for
819 numbers. Bignums, reals and complex numbers are turned from smobs
820 into subtypes of scm_tc7_number.
821
822 * tags.h (scm_tc7_number): New.
823
824 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
825 (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
826 (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
827 (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
828 (scm_class_of), print.c (scm_iprin1), smob.c
829 (scm_smob_prehistory): Don't handle bignums, reals and complex
830 numbers as subtypes of scm_tc7_smob any more.
831
832 * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
833 scm_tc16_complex): Moved definitions from tags.h to numbers.h.
834
29c4382a
DH
8352003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
836
837 * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
838 sizeof (scm_t_complex) to determine the memory size of the
839 malloc'd area for complex numbers.
840
47ae1f0e
DH
8412003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
842
843 * numbers.c (scm_bigequal): Fixed.
844
859b6b2f
MV
8452003-09-16 Marius Vollmer <mvo@zagadka.de>
846
847 * stime.c (scm_current_time): 'time' does not set errno so don't
848 use SCM_SYSERROR for reporting errors.
849
e17d318f
DH
8502003-09-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
851
852 This set of patches eliminates the dependency between the
853 implementation of evaluator specific memoization codes and special
854 constants like #f, '() etc. ('flags'), which are not evaluator
855 specific. The goal is to remove definitions of evaluator
856 memoization codes completely from the public interface. This will
857 make it possible to experiment more freely with optimizations of
858 guile's internal representation of memoized code.
859
860 * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
861
862 * print.c (iflagnames): New array, holding the printed names of
863 guile's special constants ('flags').
864
865 (scm_isymnames): Now holds only the printed names of the
866 memoization codes.
867
868 (scm_iprin1): Separate the handling of memoization codes and
869 guile's special constants.
870
871 * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
872 SCM_IFLAGNUM): new
873
874 (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
875 SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
876 SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
877 SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
878 SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
879 values.
880
881 (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
882
883 (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
884 tc9 macros and scm_tc9_flag.
885
eecac806
MV
8862003-09-15 Marius Vollmer <mvo@zagadka.de>
887
888 * posix.c (scm_setgroups): Check that the gid list is not too
889 long. Thanks to Paul Jarc!
890
22f2cf2d
DH
8912003-09-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
892
893 * tags.h: Reduced the number of short instructions from 14 to 13.
894 The typecode of the former 14th short instruction is now used to
895 represent long instructions. Changed some comments to reflect
896 this fact.
897
898 (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
899 previously used by SCM_IM_DEFINE.
900
901 (SCM_IM_DEFINE): Turned into a long instruction.
902
903 * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
904 instruction.
905
906 * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
907 code that is separate from all instructions, one level of dispatch
908 for long instructions can be eliminated.
909
910 * print.c (scm_isymnames): Removed some commented code.
911
62f548e1
MV
9122003-09-12 Marius Vollmer <mvo@zagadka.de>
913
97a61c5f
MV
914 * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
915 compiler on IA64.
916
50e0ba57
MV
917 * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
918
919 * modules.c (scm_module_reverse_lookup): Check that the obarray
920 really is a hashtable and do nothing if not.
921
62f548e1
MV
922 * inline.h: Use "extern inline" only with GCC. Use "static
923 inline" else.
924
0d5e3480
DH
9252003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
926
927 * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
928 of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
929
930 * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
931 SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
932 deprecated.h.
933
6b412e91
DH
9342003-09-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
935
936 * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
937 SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
938
939 * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
940 0.0==some_expression to some_expression==0.0. The latter is
941 better readable. The former is preferred by some people, since it
942 leads to a compiler error when confusing == with =. However, when
943 using gcc, a warning will be issued if in an if-statement an
944 assigment appears. Since many Guile developers are using gcc,
945 such errors will not remain unnoticed anyway. We can therefore
946 focus on better readability.
947
7e3b25bf
DH
9482003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
949
950 * tags.h: Added description of Guile's type system. Removed some
951 old and misleading comments.
952
3ea39242
DH
9532003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
954
955 * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
956 SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
957
5d7d39ff
DH
9582003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
959
960 * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
961
962 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
963 respective SLOPPY macro.
964
baa84a20
DH
9652003-09-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
966
967 * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
968 type string, not SCM_TYP7S.
969
ba15f500
KR
9702003-09-03 Kevin Ryde <user42@zip.com.au>
971
972 * numbers.c (scm_lognot): Correction to docstring, ones-complement not
973 2s-complement.
974
53bb8782
KR
975 * stime.c (scm_strptime): Add comment about glibc strptime %s and
976 current timezone requiring SCM_DEFER_INTS.
977
defdc4b4
NJ
9782003-08-30 Neil Jerram <neil@ossau.uklinux.net>
979
980 * script.c (scm_compile_shell_switches): Make -s switch optional
981 if file to be loaded does not begin with a `-'. (Thanks to Aaron
982 VanDevender for the patch!)
983
0f008a15
KR
9842003-08-30 Kevin Ryde <user42@zip.com.au>
985
986 * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
987 and to have non-integer types rejected as per other logical funcs.
988
438a3ba1
KR
9892003-08-28 Kevin Ryde <user42@zip.com.au>
990
991 * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
992
98dceb37
KR
9932003-08-23 Kevin Ryde <user42@zip.com.au>
994
995 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
996 thread safe, and could take a long time too.
997
1fa79a38
KR
9982003-08-22 Kevin Ryde <user42@zip.com.au>
999
1000 * numbers.c (scm_difference): Correction to bignum - negative inum.
1001
d97f9b42
KR
10022003-08-14 Kevin Ryde <user42@zip.com.au>
1003
1004 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
1005 [__GNUC__]: Use volatile asm macros rather than a function call.
1006 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
1007 macros while defining functions.
1008
1009 * simpos.c (getenv): Use <stdlib.h> for prototype.
1010 (scm_system): In docstring, refer to status:exit-val rather than
1011 "functions above".
1012
b9052fcc
KR
10132003-08-09 Kevin Ryde <user42@zip.com.au>
1014
1015 * srcprop.c (scm_source_properties): Return plist from hash if it's a
1016 list set by source-properties! rather than an SRCPROPS object,
1017
8e5b4b9e
KR
10182003-07-29 Kevin Ryde <user42@zip.com.au>
1019
1020 * properties.c (scm_primitive_property_ref): In docstring, note
1021 parameters to not-found-proc, use hyphens rather than underscores for
1022 that parameter name.
1023 (scm_primitive_property_set_x): In docstring, VAL is the value
1024 parameter not CODE.
1025
20703ac4
MV
10262003-07-27 Marius Vollmer <mvo@zagadka.de>
1027
c6ccee34
MV
1028 * print.c (scm_print_symbol_name): handle more weird characters by
1029 escaping the symbol name properly. Thanks to Paul Jarc!
1030
2f4931bf
MV
1031 * posix.h (scm_setgroups): New prototype.
1032 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
1033 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
1034 Don't use SCM_WRITABLE_VELTS.
1035
265c456f
MV
1036 * gc.h (SCM_GC_SET_CELL_BVEC): New.
1037 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
1038 Matthias Koeppe!
1039
20703ac4
MV
1040 * __scm.h (SCM_C_INLINE_KEYWORD): New.
1041 * numbers.c: Use it in place of SCM_C_INLINE so that the code
1042 compiles when SCM_C_INLINE is undefined.
1043
59c4bb82
DH
10442003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
1045
1046 * __scm.h: Reformulated the architecture and compiler properties
1047 in terms of properties of scm_t_bits and SCM variables rather than
1048 in terms of c standard types. This is since it is not known which
1049 of the standard types scm_t_bits and SCM variables will be defined
1050 to.
1051
d7850c8d
KR
10522003-07-24 Kevin Ryde <user42@zip.com.au>
1053
1054 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
1055 and real.
1056
8a0c514f
KR
10572003-07-18 Kevin Ryde <user42@zip.com.au>
1058
1059 * numbers.c (scm_product): In complex * bignum, correction to
1060 REAL/IMAG fetch, x is the complex, not y.
1061
0aacf84e
MD
10622003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1063
1064 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
1065 scm_inf_p test as Scheme values.
1066 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
1067 and a positive inum.
1068 Use GNU indentation style.
1069
192de9a4
DH
10702003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
1071
1072 * values.c (scm_values): Build lists of length 1 by using
1073 scm_list_1 instead of using scm_cons.
1074
bbb4438a
KR
10752003-07-10 Kevin Ryde <user42@zip.com.au>
1076
b58c85ce
KR
1077 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
1078 * list.c (scm_list_n): Ditto.
1079
bbb4438a
KR
1080 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
1081
287f8ad1
KR
10822003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
1083
1084 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
1085 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
1086 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
1087 the other using intptr_t.
1088
005d2366
KR
10892003-07-08 Kevin Ryde <user42@zip.com.au>
1090
0aacf84e 1091 * numbers.c (scm_make_polar): Use sincos, when available.
005d2366
KR
1092 (scm_magnitude): Use hypot.
1093
1094 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
1095 @footnote since it doesn't go through to guile-procedures.txt.
1096
1097 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
1098 outside @var to quieten makeinfo, and use @code.
1099
cbfe8e62
HWN
11002003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1101
1102 * gc-malloc.c (decrease_mtrigger): new function
1103 (increase_mtrigger): new function, separate debug registering and
1104 mtrigger administration.
1105 (scm_gc_realloc): bugfix: do mtrigger administration before the
1106 actual realloc, for the realloc might invalidate a GC-d segment of
1107 memory. Thanks to Sam Hocevar for pointing this out.
1108 (scm_gc_realloc): use scm_malloc_reregister instead of
1109 unregistering and registering in sequence.
1110
aeb4c2e1
HWN
11112003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1112
1113 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
1114
4c27f8d2
HWN
11152003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1116
1117 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
1118 clauses.
1119
983e697d
MV
11202003-06-29 Marius Vollmer <mvo@zagadka.de>
1121
1122 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
1123 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
1124 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
1125 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
1126 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
1127 the release_1_6 branch.
1128
78b6566e
SJ
11292003-06-25 Stefan Jahn <stefan@lkcc.org>
1130
1131 * continuations.c: Redeclaration of getcontext() via the
1132 __asm__ ("getcontext") directive.
1133
1134 * continuations.h: Include <ucontext.h> instead of
1135 <sys/ucontext.h>.
1136
1ebb8497
KR
11372003-06-21 Kevin Ryde <user42@zip.com.au>
1138
1139 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
1140 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
1141 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
1142 available.
1143 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
1144 (isfinite): Remove, conflicts with C99 isfinite().
1145
fbf85ba4
MV
11462003-06-19 Marius Vollmer <mvo@zagadka.de>
1147
1148 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
1149 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
1150 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
1151 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
1152 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
1153 the release_1_6 branch.
1154
fcc5d734
SJ
11552003-06-14 Stefan Jahn <stefan@lkcc.org>
1156
1157 * threads.h: Redefined scm_getspecific() and scm_setspecific()
1158 to be functions instead of macros.
1159
1160 * threads.c: Conditionalized inclusion of <sys/time.h> and
1161 <unistd.h>.
1162 (scm_getspecific, scm_setspecific): Made these two function
1163 real part of the API.
1164
1165 * posix.c (s_scm_putenv): Added some code to make a
1166 (putenv "FOO="), i.e. setting an empty string, work also on
1167 Win32 systems. Thanks to Kevin Ryde for the proposal.
1168
c3ae8e07
KR
11692003-06-12 Kevin Ryde <user42@zip.com.au>
1170
75b14838
KR
1171 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
1172 freebsd to comment about need to use unsetenv.
c3ae8e07 1173
9d9fa092
MV
11742003-06-02 Marius Vollmer <mvo@zagadka.de>
1175
1176 * ports.c (scm_peek_char): Safe the column of the port around the
1177 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
1178
f2478375
KR
11792003-06-07 Kevin Ryde <user42@zip.com.au>
1180
1181 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
1182 and friends required by scm_t_bits setups.
1183
6375e040
DH
11842003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
1185
1186 * tags.h (scm_tc2_int): Added.
1187
1188 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
1189 scm_tc2_int.
1190
1191 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
1192 scm_tcs_closures): Hard coded values replaced by symbolic ones.
1193
f5c6ec2f
DH
11942003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
1195
1196 * eval.c: Partially undid my patch from 2003-05-31. This patch
1197 caused the segfault referenced in the previous changelog entry.
1198
47dbd81e
DH
11992003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
1200
1201 * tags.h: Fixed comment about the immediate type code layout.
1202
1203 * eval.c: Fixed handling of non-special instructions. Without
1204 this patch, guile will segfault on (#\0) and similar instructions.
1205
3ec52c51
KR
12062003-06-05 Kevin Ryde <user42@zip.com.au>
1207
1208 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
1209 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
1210
e418bd7c
KR
1211 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
1212 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
1213
d0624e39
DH
12142003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
1215
1216 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
1217 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
1218 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
1219 generalized it to apply not only to C level functions but also to
1220 scheme level functions.
1221
1222 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
1223 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
1224 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
1225 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
1226 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
1227 respectively.
1228
1229 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
1230 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
1231 eval.h into eval.c and a copy is placed into deprecated.h.
1232
1233 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
1234 into eval.c. This definition was not part of the API in any
1235 officially released version of guile and thus does not need to go
1236 through a phase of deprecation.
1237
e90c3a89
DH
12382003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
1239
d0624e39
DH
1240 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
1241 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
1242 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
e90c3a89
DH
1243 definitions are make static and renamed from scm_s_xxx to s_xxx.
1244 In deprecated.c the original definitions are copied.
1245
d0624e39
DH
1246 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
1247 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
e90c3a89
DH
1248 eval.h into eval.c and a copy (slightly modified to work in user
1249 code) is placed into deprecated.h.
1250
1251 * eval.c: Use the local static s_xxx definitions instead of the
1252 scm_s_xxx definitions throughout.
1253
14b18ed6
DH
12542003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
1255
1256 This set of patches separates the representation of the cxr family
1257 of functions (car, cdr etc.) from the dsubr family of functions
1258 (i. e. functions that take a double precision floating point
1259 argument). Further, the algorithm for handling the cxr function
1260 is improved.
1261
1262 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
1263 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
1264 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
1265 cosh, tanh), objects.c (scm_class_of), procprop.c
1266 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
1267 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
1268 typecode for the dsubr family of functions.
1269
1270 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
1271 ramap_dsubr.
1272
1273 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
1274 (scm_init_pairs): Make use of the (now usable) second cell element
1275 of a scm_tc7_cxr function to implement the cxr family of functions
1276 more efficiently.
1277
2ca0d207
DH
12782003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
1279
1280 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
1281 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
1282 end of an if-else-if-sequence of checks.
1283
9a069bdd
DH
12842003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
1285
1286 * eval.c (SCM_CEVAL): Improved readability of call-with-values
1287 execution. Generalize apply_closure to apply_proc and use that
1288 for call-with-values.
1289
e910e9d2
DH
12902003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
1291
1292 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
1293 a non closure.
1294
1e498fbd
SJ
12952003-05-30 Stefan Jahn <stefan@lkcc.org>
1296
1297 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
1298 appropriately for mingw32 hosts.
1299
1300 * numbers.h: Defining copysign(), isnan() and finite() to
1301 be prefixed by a single '_' for mingw32 hosts.
1302
c47e2599
KR
13032003-05-30 Kevin Ryde <user42@zip.com.au>
1304
1305 * numbers.c (z_negative_one): New variable.
1306 (scm_init_numbers): Initialize it.
1307 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
1308
2e945bcc
SJ
13092003-05-29 Stefan Jahn <stefan@lkcc.org>
1310
1311 * win32-dirent.c: Use malloc() instead of scm_malloc().
1312
1313 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
1314 warning.
1315
1316 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
1317 mingw32 build.
1318
1319 * modules.c (s_scm_module_import_interface): Renamed local
1320 variable interface to _interface. Seems like 'interface'
1321 is a special compiler directive for the mingw32 compiler.
1322
1323 * mkstemp.c: Provide prototype to avoid compiler warning.
1324
1325 * load.c (s_scm_search_path): Fixed absolute and relative
1326 path detections for native Windows platforms.
1327
1328 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
1329 to build on mingw32).
1330
1331 * gc-freelist.c ("s_scm_map_free_list",
1332 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
1333
1334 * fports.c (fport_fill_input): Disable use of
1335 fport_wait_for_input() on Win32 platforms.
1336
1337 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
1338
1339 * Makefile.am: Modified some rules for cross compiling.
1340
ddd8f927
DH
13412003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1342
1343 * eval.c (SCM_CEVAL): In case of an application, all checks for a
1344 proper function object and the correct number of arguments are now
1345 performed in the application part of SCM_CEVAL.
1346
1347 (scm_badformalsp): Removed.
1348
f8ba2197
DH
13492003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1350
1351 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
1352
79f55b7c
MD
13532003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1354
a502595f
MD
1355 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
1356 always being false by inserting preprocessor conditional. (Thanks
1357 to Bruce Korb.)
1358
79f55b7c
MD
1359 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
1360 (void *) in order to avoid an aliasing warning; thanks to Bruce
1361 Korb.)
1362
1363 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
1364
1365 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
1366 SCM_STACK_PTR.
1367
1368 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
1369 thread->base --> t->base.
1370
1371 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
1372
47dee228
MV
13732003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1374
1375 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
1376 scm_variable_set_name_hint, scm_builtin_variable,
1377 scm_internal_with_fluids, scm_make_gsubr,
1378 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
1379 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
1380 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
85494587
MV
1381 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
1382 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
1383 scm_make_subr_with_generic, scm_make_subr_opt,
1384 scm_call_catching_errors, scm_make_smob_type_mfpe,
1385 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
1386 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
1387 branch. Some have been slightly rewritten.
1388 (scm_i_object_chars, scm_i_object_length): New, to support
1389 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
1390
e681d187
DH
13912003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
1392
1393 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
1394 names and inits in the memoized code of do.
1395
7e59d9d4
MD
13962003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1397
1398 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
1399 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
1400 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
1401 a compilation error if error-on-warning is enabled).
1402
9950a42c
MV
14032003-05-17 Marius Vollmer <mvo@zagadka.de>
1404
1405 * c-tokenize.lex: Gobble up complete lines after a '#'. This
1406 removes preprocessor directives from the snarfage that might
1407 otherwise confuse us. These directives appear when compiling with
1408 "-g3", for example.
1409
0068984b
HWN
14102003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1411
26e68795
HWN
1412 * ChangeLog: add my surname
1413
0068984b
HWN
1414 * srcprop.c (scm_finish_srcprop): use
1415 scm_gc_register_collectable_memory()
1416 (scm_make_srcprops): idem.
1417
131805f0
HWN
14182003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1419
1420 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
1421 wrap-around for scm_mtrigger
1422 (scm_gc_register_collectable_memory): abort on overflowing
1423 scm_mallocated().
1424
d4611024
KR
14252003-05-13 Kevin Ryde <user42@zip.com.au>
1426
1427 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
1428 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
1429
7aaf8dc9
MD
14302003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1431
dfd03fb9
MD
1432 * backtrace.c (scm_display_error_message): Introduced fancy
1433 printing with max level 7 and length 10. (Purpose: avoid printing
1434 gigantic objects in error messages.)
1435
1436 * print.c, print.h (scm_i_port_with_print_state): New function.
1437
1438 * print.c (scm_iprin1, scm_printer_apply,
1439 scm_port_with_print_state): Use scm_i_port_with_print_state.
1440 (scm_simple_format): Modified not to destroy print states.
1441 (print_state_mutex): New mutex.
1442 (scm_make_print_state, scm_free_print_state, scm_prin1):
1443 Lock/unlock print_state_mutex.
1444
7aaf8dc9
MD
1445 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
1446 Use current names in definitions.
1447
a4d9ffa1
KR
14482003-05-10 Kevin Ryde <user42@zip.com.au>
1449
1450 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
1451
d25e96a4
KR
1452 * numbers.c (scm_integer_length): On negative bignums, adjust
1453 mpz_sizeinbase to account for it looking at absolute value where we
1454 want ones-complement.
1455
1456 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
1457 since we're only using the ulong return value, and x might not fit.
1458
5bf6a6f0
DH
14592003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
1460
1461 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
1462 read. This will allow to make the definition in read.c static.
1463
f58c472a
DH
14642003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
1465
1466 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
1467 from evalext to eval. This will allow to make some of the
1468 definitions in eval.c static.
1469
90382aeb
KR
14702003-05-06 Kevin Ryde <user42@zip.com.au>
1471
1472 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
1473 (scm_logcount): Use mpz_com, not mpz_neg.
1474
3b88ed2a
DH
14752003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
1476
1477 The purpose of this patch is to make guile's internal memoizers
1478 distinguishable from memoizing macros created on the scheme level
1479 or from user provided primitive memoizing macros. The reason is,
1480 that the internal memoizers are the only ones that are allowed to
1481 transform their scheme input into memoizer byte code, while all
1482 other memoizing macros may only transform scheme code into new
1483 scheme code.
1484
1485 To achieve this, a new macro type 'builtin-macro!' is introduced.
1486 Currently, 'builtin-macro!'s are handled as memoizing macros, but
1487 this will change when the memoizer and executor are separated.
1488
1489 * macros.[ch] (scm_i_makbimacro): New.
1490
1491 * macros.h (SCM_BUILTIN_MACRO_P): New.
1492
1493 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
1494
1495 * eval.c, goops.c: All of guile's primitive memoizing macros are
1496 primitive builtin-macros now.
1497
1498 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
1499 builtin-macros are handled equally to memoizing macros.
1500
b0780eb1
MV
15012003-05-04 Marius Vollmer <mvo@zagadka.de>
1502
1503 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
1504 work around a bug in GCC 2.95.2 but is now a bug in itself.
1505
1cbf4fe9
MV
15062003-05-02 Marius Vollmer <mvo@zagadka.de>
1507
1508 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
1509 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
1510 scm_tcs_symbols): New.
1511
1a61d41b
MV
15122003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1513
096ecbaf
MV
1514 * deprecated.h, deprecated.c (scm_protect_object,
1515 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
1516 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
1517 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
1518 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
1519 scm_ensure_user_module, scm_load_scheme_module, scm_port,
1520 scm_ptob_descriptor, scm_port_rw_active,
1521 scm_close_all_ports_except): New.
1522
1a61d41b
MV
1523 * ports.c (scm_c_port_for_each): New function, mostly copied from
1524 scm_port_for_each.
1525 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
1526 * ports.h (scm_c_port_for_each): New prototype.
1527
c8e1d354
MD
15282003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1529
1530 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
1531 macro was introduced in anticipation of GOOPS method compilation
1532 code.)
1533
1534 * goops.c: Removed binding of @dispatch.
1535
a4aa2134
DH
15362003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
1537
1538 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
1539 instructions that bind the macros on the scheme level back to
1540 goops.c in order to make sure again that the bindings go into the
1541 (oop goops) module and are not visible from the outside.
1542
9fbee57e
DH
15432003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
1544
1545 * eval.c: Non functional change: Separated R5RS and non-R5RS
1546 macros into different sections of the file and ordered the
1547 memoizers alphabetically.
1548
12841895
DH
15492003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
1550
1551 * eval.c (scm_ilookup): Rewritten to improve readability.
1552
6a3f13f0
DH
15532003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
1554
1555 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
1556 Partially reverted patch from 2003-04-23 in oder to find a better
1557 compromise between readability and debuggability.
1558
b0c5d67b
DH
15592003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
1560
1561 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
1562 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
1563 definitions of the special goops memoizers from goops.[ch] to
1564 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
1565 throughout guile.
1566
b9ad392e
MD
15672003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1568
1569 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
1570
1571 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
1572
1573 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
1574
1575 * ioext.c (scm_fdes_to_ports): Ditto.
1576
1577 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
1578 lock/unlock scm_i_port_table_mutex.
1579
1580 * strports.c (scm_mkstrport): Ditto.
1581
1582 * ports.c (scm_void_port, scm_port_for_each): Ditto.
1583
1584 * fports.c (scm_fdes_to_port): Ditto.
1585
d0b07b5d
DH
15862003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
1587
1588 This set of patches contains no functional changes, only debatable
1589 minor stylistic ones. Still, in order to prepare a patch between
1590 my local copy and the CVS version, I decided to submit the changes
1591 below. Then, the patch will hopefully only contain relevant
1592 modifications :-)
1593
1594 * eval.c (iqq): Added const specifier.
1595
1596 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
1597 Use NULL instead of 0 to indicate that a pointer is returned.
1598 Removed some misleading 'fall through' comments.
1599
1600 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
1601 Split up long expressions into smaller ones to be more debugging
1602 friendly.
1603
a98e8e98
DH
16042003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
1605
1606 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
1607 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
1608 rather than casting to SCM.
1609
c178c3a6
DH
16102003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
1611
1612 * sort.c, pairs.h: Removed unnecessary includes.
1613
d339981a
DH
16142003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
1615
1616 * sort.c: Replaced hand-made trampline code by the new official
1617 mechanism from eval.c. This fixes a segfault in the new test file
1618 sort.test.
1619
1620 (quicksort, compare_function, scm_restricted_vector_sort_x,
1621 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
1622 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
1623 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
1624 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
1625 eval.c.
1626
1627 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
1628 cmp_fun_t): Removed.
1629
1630 (compare_function): Added.
1631
1632 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
1633 arithmetics with index arithmetics. Changed quicksort to work on
1634 an array of SCM values instead of an array of characters. Avoid
1635 bytewise copying of SCM elements. Avoid allocating memory on the
1636 stack with alloca. Fixed some comments.
1637
821f18a4
DH
16382003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1639
1640 * eval.c (EXTEND_ENV): Eliminated.
1641
1642 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
1643 EXTEND_ENV.
1644
94fb5a6e
DH
16452003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1646
1647 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
1648
1649 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
1650 compiling with SCM_DEBUG==1 by moving definition behind prototype.
1651
1652 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
1653 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
1654 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
1655 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
1656 functions such that they check if the object is a non-immediate.
1657 Further, renamed identifiers to use the scm_dbg_ prefix and made
1658 their inclusion into the lib dependent of the
1659 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
1660
fce0b22d
DH
16612003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1662
1663 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
1664 debug option.
1665
1685446c
DH
16662003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1667
821f18a4 1668 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
1685446c
DH
1669 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
1670 any calls to SCM_NCONSP any more.
1671
1672 * unif.c (l2ra): Eliminate redundant check.
1673
9ff1720f
DH
16742003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1675
1676 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
1677 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
1678 SCM_NNULLP. Now, guile itself does not include any calls to
1679 SCM_NNULLP any more.
1680
05b15362
DH
16812003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1682
1683 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
1684 scm_copy_tree): Place assignment expressions which are part of
1685 other expressions into an expression of their own.
1686
0c88d7df
DH
16872003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
1688
1689 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
1690 compare SCM values with !=.
1691
5cb22e96
DH
16922003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
1693
1694 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
1695 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
1696 and definition of the memoizer for the generalized set! macro from
1697 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
1698 define the macro object.
1699
1700 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
1701 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
1702 eval.c, it is made static and renamed to s_set_x.
1703
1704 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
1705 over SCM_N<foo>.
1706
a44a9715
DH
17072003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
1708
1709 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
1710 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
1711 to undefineds and registered the object as a permanent object.
1712
1713 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
1714 static in eval.c, renamed it to f_apply and registered the object
1715 as a permanent object.
1716
1b43d24c
DH
17172003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
1718
5cb22e96 1719 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
1b43d24c
DH
1720 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
1721
aec16f99
DH
17222003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
1723
1724 * numbers.c (scm_logtest): Fixed argument bug in the call to
1725 mpz_and, which showed up when compiling with SCM_DEBUG defined.
1726
f96460ce
DH
17272003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
1728
1729 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
1730 type errors that showed up when compiling with SCM_DEBUG defined.
1731
d0f6ceb8
DH
17322003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
1733
1734 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
1735 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
1736 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
1737 fix compile errors with --disable-deprecated.
1738
19a7a089
RB
17392003-04-17 Rob Browning <rlb@defaultvalue.org>
1740
1741 * numbers.c (scm_integer_expt): fix case where we were declaring
1742 vars in the middle of a statement block. Thanks to Thamer
1743 Al-Harbash.
1744
47cd67db
MD
17452003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1746
0fd7dcd3
MD
1747 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
1748 change.
1749
47cd67db
MD
1750 * eq.c (scm_eqv_p): Turned into a primitive generic.
1751
3b8b889c
RB
17522003-04-16 Rob Browning <rlb@defaultvalue.org>
1753
312006bb
RB
1754 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
1755 Thanks to Boyd Gerber.
1756 Added check for __arm__ in addition to arm for LINUX and copied
1757 __s390__ defines from upstream libgc. Thanks to James Treacy for
1758 reporting the problems.
c7ef2ea1 1759
3b8b889c
RB
1760 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
1761
1762 * socket.c: use SCM_CHAR_BIT.
1763
1764 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
1765
1766 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
1767
43261b39
MD
17682003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1769
1770 * feature.c (scm_init_feature): Always add threads feature.
1771
58241edc
MD
17722003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1773
1774 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
1775 scm_at_assert_bound_ref. (We don't want the unbound check. See
1776 oop/goops/active-slot.scm.)
1777
94e91275
RB
17782003-04-14 Rob Browning <rlb@defaultvalue.org>
1779
1780 * tags.h: scm_t_intptr should have been intptr_t.
1781
3071ea27
RB
17822003-04-13 Rob Browning <rlb@defaultvalue.org>
1783
1784 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
1785 test. Instead use
1786 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
1787 as gc_os_dep.c suggests is appropriate.
1788
1789 * goops.c (prep_hashsets): make static to match prototype.
1790 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
1791 Chin.
1792
1793 * c-tokenize.lex: remove trailing comma from enum. Thanks to
1794 Albert Chin.
1795
1796 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
1797 Klausner.
1798
21ab2aeb
MD
17992003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1800
1801 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
1802 indicated through extra fields in getters-n-setters.
1803 (scm_add_slot): Adapted to new format of getters_n_setters slot.
1804 (Thanks to Andy Wingo.)
1805
dff96e95
HWN
18062003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1807
1808 * gc-segment.c: add comment
1809
07921c76
RB
18102003-04-07 Rob Browning <rlb@defaultvalue.org>
1811
b5331f10
RB
1812 * debug.h: change "id" arg name to "info_id" to avoid objective-c
1813 clash.
1814
07921c76
RB
1815 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
1816 and add regression test to standalone/.
1817
18182003-04-06 Rob Browning <rlb@defaultvalue.org>
1819
1820 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
1821 Thanks to Dale P. Smith.
1822
1823 * random.c: #include gmp.h.
1824 (scm_c_random_bignum): normalize result on return.
1825
1826 * init.c: #include gmp.h.
1827
1828 * numbers.h: remove the gmp.h #include (not needed now).
1829
1830 * posix.h: change occurences of "id" to something else so we don't
1831 cause trouble when included via objective-c (can't hurt, might
1832 help). Still have usage in debug.h, though.
1833
938f6b7c
MD
18342003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1835
372691d8
MD
1836 * random.c (scm_c_random_bignum): Don't generate a random number
1837 equal to m (the second argument of scm_c_random_bignum); only
1838 generate numbers in the range 0 <= r < m.
c5f268f8
MD
1839 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
1840 scm_var_random_state.
372691d8 1841
938f6b7c
MD
1842 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
1843 clause.
1844
6cdb8c3f
RB
18452003-04-05 Rob Browning <rlb@defaultvalue.org>
1846
938f6b7c 1847 * modules.c (scm_module_import_interface): move declaration of
6cdb8c3f
RB
1848 uses before any code.
1849
15635be5
MD
18502003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1851
1ecfd013
MD
1852 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
1853 not top_srcdir.
1854
15635be5
MD
1855 * hashtab.c (rehash_after_gc): Clear to_rehash list before
1856 processing it in order to avoid an infinite loop.
1857
1858 * print.c (scm_prin1): Remember old state of pstate->writingp.
1859
73be1d9e
MV
18602003-04-05 Marius Vollmer <mvo@zagadka.de>
1861
1862 * Changed license terms to the plain LGPL thru-out.
1863
ad815c06
RB
18642003-04-04 Rob Browning <rlb@defaultvalue.org>
1865
1866 * socket.c (FLIPCPY_NET_HOST_128): new macro.
1867 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
1868 rewrite to handle GMP bignums.
1869
1870
1871 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
1872
1873 * ports.c (scm_getc): minor tweak.
1874
1875 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
1876 rewrite to handle GMP bignums.
1877
1878 * numbers.c: rewrite *many* functions to handle GMP bignums.
1879
1880 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
1881 handle GMP bignums.
1882
1883 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
1884
1885 * init.c (check_config): remove SCM_BIGDIG conditionals.
1886 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
1887
1888 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
1889
1890 * eval.c: remove SCM_BIGDIG conditionals.
1891
1892 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
1893
6cdb8c3f
RB
18942003-03-31 Rob Browning <rlb@defaultvalue.org>
1895
1896 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
1897 to Kevin Ryde.)
1898
18992003-03-27 Rob Browning <rlb@defaultvalue.org>
1900
1901 * threads.h: fix various preprocessor usages of new public
1902 symbols to expect 0 or 1 values rather than 1 or undefined.
1903 i.e. change #ifdef to #if, etc.
1904
1905 * threads.c: fix various preprocessor usages of new public
1906 symbols to expect 0 or 1 values rather than 1 or undefined.
1907 i.e. change #ifdef to #if, etc.
1908
1909 * tags.h: fix various preprocessor usages of new public
1910 symbols to expect 0 or 1 values rather than 1 or undefined.
1911 i.e. change #ifdef to #if, etc.
1912
1913 * stacks.c: fix various preprocessor usages of new public
1914 symbols to expect 0 or 1 values rather than 1 or undefined.
1915 i.e. change #ifdef to #if, etc.
1916
1917 * stackchk.h: fix various preprocessor usages of new public
1918 symbols to expect 0 or 1 values rather than 1 or undefined.
1919 i.e. change #ifdef to #if, etc.
1920
1921 * stackchk.c: fix various preprocessor usages of new public
1922 symbols to expect 0 or 1 values rather than 1 or undefined.
1923 i.e. change #ifdef to #if, etc.
1924
1925 * sort.c: fix various preprocessor usages of new public
1926 symbols to expect 0 or 1 values rather than 1 or undefined.
1927 i.e. change #ifdef to #if, etc.
1928
1929 * read.c: fix various preprocessor usages of new public
1930 symbols to expect 0 or 1 values rather than 1 or undefined.
1931 i.e. change #ifdef to #if, etc.
1932
1933 * random.c: fix various preprocessor usages of new public
1934 symbols to expect 0 or 1 values rather than 1 or undefined.
1935 i.e. change #ifdef to #if, etc.
1936
1937 * print.c: fix various preprocessor usages of new public
1938 symbols to expect 0 or 1 values rather than 1 or undefined.
1939 i.e. change #ifdef to #if, etc.
1940
1941 * objects.c: fix various preprocessor usages of new public
1942 symbols to expect 0 or 1 values rather than 1 or undefined.
1943 i.e. change #ifdef to #if, etc.
1944
1945 * numbers.h: fix various preprocessor usages of new public
1946 symbols to expect 0 or 1 values rather than 1 or undefined.
1947 i.e. change #ifdef to #if, etc.
1948
1949 * null-threads.c: fix various preprocessor usages of new public
1950 symbols to expect 0 or 1 values rather than 1 or undefined.
1951 i.e. change #ifdef to #if, etc.
1952
1953 * lang.c: fix various preprocessor usages of new public
1954 symbols to expect 0 or 1 values rather than 1 or undefined.
1955 i.e. change #ifdef to #if, etc.
1956
1957 * lang.h: fix various preprocessor usages of new public
1958 symbols to expect 0 or 1 values rather than 1 or undefined.
1959 i.e. change #ifdef to #if, etc.
1960
1961 * iselect.h: fix various preprocessor usages of new public
1962 symbols to expect 0 or 1 values rather than 1 or undefined.
1963 i.e. change #ifdef to #if, etc.
1964
1965 * init.c: fix various preprocessor usages of new public
1966 symbols to expect 0 or 1 values rather than 1 or undefined.
1967 i.e. change #ifdef to #if, etc.
1968
1969 * gh_data.c: fix various preprocessor usages of new public
1970 symbols to expect 0 or 1 values rather than 1 or undefined.
1971 i.e. change #ifdef to #if, etc.
1972
1973 * gh.h: fix various preprocessor usages of new public
1974 symbols to expect 0 or 1 values rather than 1 or undefined.
1975 i.e. change #ifdef to #if, etc.
1976
1977 * gen-scmconfig.c: change most new public symbols to be defined to
1978 0 or 1 rather than being either 1 or undefined.
1979
1980 * gc_os_dep.c: fix various preprocessor usages of new public
1981 symbols to expect 0 or 1 values rather than 1 or undefined.
1982 i.e. change #ifdef to #if, etc.
1983 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
1984
1985 * gc.h: fix various preprocessor usages of new public
1986 symbols to expect 0 or 1 values rather than 1 or undefined.
1987 i.e. change #ifdef to #if, etc.
1988
1989 * gc-card.c: fix various preprocessor usages of new public
1990 symbols to expect 0 or 1 values rather than 1 or undefined.
1991 i.e. change #ifdef to #if, etc.
1992
1993 * gc-mark.c: fix various preprocessor usages of new public
1994 symbols to expect 0 or 1 values rather than 1 or undefined.
1995 i.e. change #ifdef to #if, etc.
1996
1997 * feature.c: fix various preprocessor usages of new public
1998 symbols to expect 0 or 1 values rather than 1 or undefined.
1999 i.e. change #ifdef to #if, etc.
2000
2001 * evalext.c: fix various preprocessor usages of new public
2002 symbols to expect 0 or 1 values rather than 1 or undefined.
2003 i.e. change #ifdef to #if, etc.
2004
2005 * eval.h: fix various preprocessor usages of new public
2006 symbols to expect 0 or 1 values rather than 1 or undefined.
2007 i.e. change #ifdef to #if, etc.
2008
2009 * eval.c: fix various preprocessor usages of new public
2010 symbols to expect 0 or 1 values rather than 1 or undefined.
2011 i.e. change #ifdef to #if, etc.
2012
2013 * eq.c: fix various preprocessor usages of new public
2014 symbols to expect 0 or 1 values rather than 1 or undefined.
2015 i.e. change #ifdef to #if, etc.
2016
2017 * coop.c: fix various preprocessor usages of new public
2018 symbols to expect 0 or 1 values rather than 1 or undefined.
2019 i.e. change #ifdef to #if, etc.
2020
2021 * coop-threads.c: fix various preprocessor usages of new public
2022 symbols to expect 0 or 1 values rather than 1 or undefined.
2023 i.e. change #ifdef to #if, etc.
2024
2025 * coop-pthreads.c: fix various preprocessor usages of new public
2026 symbols to expect 0 or 1 values rather than 1 or undefined.
2027 i.e. change #ifdef to #if, etc.
2028
2029 * coop-defs.h: fix various preprocessor usages of new public
2030 symbols to expect 0 or 1 values rather than 1 or undefined.
2031 i.e. change #ifdef to #if, etc.
2032
2033 * convert.i.c: fix various preprocessor usages of new public
2034 symbols to expect 0 or 1 values rather than 1 or undefined.
2035 i.e. change #ifdef to #if, etc.
2036
2037 * continuations.c: fix various preprocessor usages of new public
2038 symbols to expect 0 or 1 values rather than 1 or undefined.
2039 i.e. change #ifdef to #if, etc.
2040
2041 * _scm.h: fix various preprocessor usages of new public symbols to
2042 expect 0 or 1 values rather than 1 or undefined. i.e. change
2043 #ifdef to #if, etc.
2044
d11d697a
MV
20452003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2046
9686f86d
MV
2047 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
2048
2049 * deprecated.c, deprecated.h: New files, to collect deprecated
2050 things in one place.
2051 * Makefile.am: Added them in all the right places.
2052
d11d697a
MV
2053 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
2054 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
2055 builds work.
9686f86d
MV
2056 (DOT_X_FILES): Removed "iselect.x".
2057 (DOT_DOC_FILES): Removed "iselect.doc".
d11d697a 2058
e3c0c3b9
RB
20592003-03-25 Rob Browning <rlb@defaultvalue.org>
2060
2061 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
2062 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
2063
2064 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
2065
2066 * vports.c: #include <config.h> if HAVE_CONFIG_H.
2067
2068 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
2069 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
2070
2071 * threads.h: replace usage of struct timespect with
2072 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
2073 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
2074 favor of scm_t_timespec from scmconfig.h.
2075
2076 * threads.c: move libguile/_scm.h include to the top so we pick up
2077 any critical defines like _GNU_SOURCE early. Replace usage of
2078 struct timespect with scm_t_timespec. Replace usage of
2079 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
2080 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
2081
2082 * threads-plugin.h: replace usage of struct timespect with
2083 scm_t_timespec.
2084
2085 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
2086 usage of struct timespect with scm_t_timespec.
2087
2088 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
2089 HAVE_INTTYPES_H handling to scmconfig.h. #include
2090 "libguile/__scm.h". Rework handling for scm_t_bits,
2091 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
2092 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
2093 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
2094 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
2095 SCM_HAVE_ARRAYS.
2096
2097 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
2098
2099 * struct.c: #include <config.h> if HAVE_CONFIG_H.
2100
2101 * strports.c: #include <config.h> if HAVE_CONFIG_H.
2102
2103 * strop.c: #include <config.h> if HAVE_CONFIG_H.
2104
2105 * stime.h: move handling of time related headers to scmconfig.h.
2106
2107 * stime.c: #include <config.h> if HAVE_CONFIG_H.
2108
2109 * stacks.c: replace usage of STACK_GROWS_UP with
2110 SCM_STACK_GROWS_UP.
2111
2112 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
2113 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2114
2115 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
2116 of uint32 and HAVE_UINT_32 with scm_t_int32.
2117
2118 * smob.c: #include <config.h> if HAVE_CONFIG_H.
2119
2120 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
2121
2122 * script.c: #include <config.h> if HAVE_CONFIG_H.
2123
2124 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
2125
2126 * scmconfig.h.top: new file -- preamble for scmconfig.h.
2127
2128 * rw.c: #include <config.h> if HAVE_CONFIG_H.
2129
2130 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
2131
2132 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2133
2134 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
2135
2136 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
2137 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
2138 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
2139 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2140
2141 * ramap.c: replace usage of HAVE_LONG_LONGS with
2142 "SCM_SIZEOF_LONG_LONG != 0".
2143
2144 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
2145 "libguile/scmconfig.h".
2146
2147 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
2148
2149 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2150 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
2151
2152 * posix.c: #include <config.h> if HAVE_CONFIG_H.
2153
2154 * ports.c: #include <config.h> if HAVE_CONFIG_H.
2155
2156 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2157
2158 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
2159 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
2160 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
2161 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
2162 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
2163 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
2164 "SCM_SIZEOF_LONG_LONG != 0".
2165
2166 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
2167 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
2168 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
2169 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
2170
2171 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
2172
2173 * null-threads.h: replace usage of struct timespect with
2174 scm_t_timespec.
2175
2176 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
2177
2178 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
2179 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
2180 scm_t_uint64 and rename usages.
2181
2182 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
2183
2184 * load.c: #include <config.h> if HAVE_CONFIG_H.
2185
2186 * iselect.h: move handling of time related headers to scmconfig.h.
2187 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
2188 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
2189 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
2190
2191 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
2192 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
2193 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
2194
2195 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
2196
2197 * inline.h: #include "libguile/__scm.h" at the top. Change code
2198 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
2199 what to do instead of creating a new public #define. Rename usage
2200 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
2201 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
2202 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
2203
2204 * inline.c: rearrange handling -- now we just #define
2205 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
2206 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
2207 appropriate, and we use that in inline.h along with the above
2208 define to determine how to respond.
2209
2210 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
2211 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2212
2213 * guile.c: #include <config.h> if HAVE_CONFIG_H.
2214
2215 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
2216 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2217
2218 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2219
2220 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
2221
2222 * gen-scmconfig.c: new file -- see comments in file for details.
2223
2224 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
2225
2226 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
2227 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
2228
2229 * gc.h: replace usage of SIZEOF_LONG with
2230 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
2231 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
2232 since we handle that in scmconfig.h now.
2233
2234 * gc.c: #include <config.h> if HAVE_CONFIG_H.
2235
2236 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
2237 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
2238 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
2239
2240 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
2241
2242 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2243 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
2244
2245 * fports.c: #include <config.h> if HAVE_CONFIG_H.
2246
2247 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
2248
2249 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
2250 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
2251
2252 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
2253
2254 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2255 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
2256
2257 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
2258 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
2259 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
2260 with "SCM_SIZEOF_LONG_LONG != 0".
2261
2262 * error.c: #include <config.h> if HAVE_CONFIG_H.
2263
2264 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
2265 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
2266 with "SCM_SIZEOF_LONG_LONG != 0".
2267
2268 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
2269
2270 * coop.c: replace usage of struct timespect with scm_t_timespec.
2271 #include <config.h> if HAVE_CONFIG_H.
2272
2273 * coop-threads.c: #include "libguile/_scm.h" early. Replace
2274 usage of struct timespect with scm_t_timespec. Replace usage of
2275 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
2276
2277 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
2278 usage of struct timespect with scm_t_timespec. Replace usage of
2279 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
2280
2281 * coop-defs.h: move handling of time related headers to
2282 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
2283 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
2284 timespect with scm_t_timespec.
2285
2286 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2287
2288 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2289
2290 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
2291 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
2292
2293 * continuations.c: move libguile/_scm.h include to the top so we
2294 pick up any critical defines like _GNU_SOURCE early.
2295
2296 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
2297
2298 * async.c: #include <config.h> if HAVE_CONFIG_H.
2299
2300 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
2301
2302 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
2303 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
2304
2305 * __scm.h: move libguile/scmconfig.h include up to the top, so
2306 we're sure to pick up any critical defines like _GNU_SOURCE early.
2307 #include <limits.h> removed in favor of scmconfig.h inclusion when
2308 appropriate. STDC_HEADERS based inclusion of stdlib.h,
2309 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
2310 scmconfig.h inclusion when appropriate. Various Win32 related
2311 definitions removed in favor of scmconfig.h inclusion when
2312 appropriate.
2313 (HAVE_UINTPTR_T): definition removed (see NEWS).
2314 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
2315 (HAVE_LONG_LONGS): definition removed (see NEWS).
2316 (HAVE_LONG_LONG): definition removed (see NEWS).
2317 (HAVE_PTRDIFF_T): definition removed (see NEWS).
2318
2319 * Makefile.am: scmconfig.h is now generated by building and
2320 running gen-scmconfig.h and capturing its output. gen-scmconfig
2321 uses config.h and the configure.in generated gen-scmconfig.h to
2322 decide what to output. See gen-scmconfig.c for details.
2323 (noinst_PROGRAMS): add gen-scmconfig.
2324 (gen_scmconfig_SOURCES): new variable.
2325 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
2326 cross-compiling right.
2327 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
2328 (BUILT_SOURCES): add scmconfig.h.
2329
25e0bf97
MV
23302003-03-19 Marius Vollmer <mvo@zagadka.de>
2331
2332 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
2333 Adrian Bunk. Thanks!
2334
74b6d6e4
MD
23352003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2336
2337 * goops.c (make_class_from_template): New fourth arg:
2338 applicablep.
2339 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
2340 cpls.
2341
2342 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
2343
2344 * goops.c, objects.c, objects.h (scm_make_extended_class): New
2345 second arg: applicablep.
2346 (scm_i_inherit_applicable): New function.
2347
2348 * goops.c, goops.h (scm_class_applicable,
2349 scm_class_extended_accessor): New classes.
2350
5c9e7dad
DH
23512003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
2352
2353 * procs.c (scm_procedure_documentation): Removed redundant
2354 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
2355 predicates.
2356
f8af5c6d
MD
23572003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2358
c614a00b
MD
2359 * list.c, list.h (scm_filter, scm_filter_x): New functions.
2360
109c2c9f
MD
2361 * modules.c (scm_module_import_interface): New function.
2362
f8af5c6d
MD
2363 * goops.c, goops.h (scm_class_accessor_method): Renamed from
2364 scm_class_accessor.
2365 (scm_class_accessor): New class.
2366
a48d60b1
MD
23672003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2368
2369 * goops.c (scm_primitive_generic_generic): Enable primitive
2370 generic if not enabled.
2371 (scm_sys_goops_loaded): Setup unextended primitive generics.
2372
2373 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
2374
2375 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
2376 snarf macros.
2377
2378 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
2379 testing example. All uses of SCM_GPROC should be converted.)
2380
2381 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
2382 scm_assoc.
2383
2384 * eq.c (scm_equal_p): Turned into a primitive generic.
2385
84edc049
RB
23862003-02-27 Rob Browning <rlb@defaultvalue.org>
2387
2388 * Makefile.am (scmconfig.h): new target -- generate file from
2389 ../config.h.
2390 (modinclude_HEADERS): remove version.h.
2391 (nodist_modinclude_HEADERS): add version.h.
2392
ea5c9285
MD
23932003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2394
b4a1358c
MD
2395 This fixes a serious GC bug, introduced during the latest
2396 reorganization of the GC, which disabled freeing of structs and
2397 GOOPS objects:
2398
2399 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
2400 SCM_EOL.
53af8255
MD
2401 (scm_struct_prehistory): Move scm_free_structs to
2402 scm_before_mark_c_hook.
ea5c9285 2403
b4a1358c
MD
2404 * gc-card.c (sweep_card): Check that we haven't swept structs on
2405 this card before. That can happen if scm_i_sweep_all_segments has
2406 been called from some other place than scm_igc.
2407
c35738c1
MD
24082003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2409
231a4ea8
MD
2410 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
2411 (since hash tables now adapt their size).
2412
2413 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
2414 (current number of prehistory bindings; hashtable code will select
2415 a prime which is greater than this value).
2416
2417 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
2418 (current number of initial symbols).
2419
2420 * properties.c (scm_init_properties): Don't specify size of
2421 scm_properties_whash.
2422
2423 * objprop.c (scm_init_objprop): Don't specify size of
2424 scm_object_whash.
2425
2426 * keywords.c (scm_init_keywords): Don't specify a hash table size.
2427
c35738c1
MD
2428 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
2429
2430 The following changes introduce the use of resizable hash tables
2431 throughout Guile. It also renames the old *-hash-table* functions
2432 to *-alist-vector* and places them, together with the rest of the
2433 weak vector support, in the module (ice-9 weak-vector). We should
2434 probably introduce a new, better, API for weak references, for
2435 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
2436 look like and are used like ordinary pairs.)
2437
2438 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
2439 leaf_environment_fold, obarray_remove_all): Use hashtable
2440 accessors.
2441
2442 * gc.c (scm_init_storage): Moved hook initialization to
2443 scm_storage_prehistory.
2444 (scm_storage_prehistory): New function.
2445 (scm_igc): Added commentary about placement of
2446 scm_after_sweep_c_hook.
2447
2448 * gc-mark.c (scm_mark_all): Use hashtable accessors.
2449 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
2450 SCM_WVECT_WEAK_VALUE_P.
2451
2452 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
2453 functions.
2454 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
2455 Removed.
2456 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
2457 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
2458
2459 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
2460 calls to scm_storage_prehistory and scm_hashtab_prehistory.
2461
2462 * modules.c (module-reverse-lookup): Use hashtable accessors.
2463
2464 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
2465
2466 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
2467 scm_make_weak_value_alist_vector,
2468 scm_make_doubly_weak_alist_vector): New functions.
2469
2470 * weaks.c (scm_init_weaks_builtins): New function.
2471
2472 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
2473 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
2474 SCM_WVECT_NOSCAN_P): New macros.
2475
2476 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
2477 and SCM_WVECT_WEAK_VALUE_P.
2478
2479 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
2480 allocate_weak_vector and exported.
2481
0a4c1355
MD
24822003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2483
2484 * hashtab.c: Undid thread safety. (We decided that it's better to
2485 let the user explicitly protect the tables (or not) according what
2486 is suitable for the application.)
2487
87ca11ff
MD
24882003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2489
2490 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
2491 thread safe and handle resizing tables.
2492 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
2493 SCM_DEFER/ALLOW_INTS.
2494
f59a096e
MD
24952003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2496
2497 * hashtab.c (scm_vector_to_hash_table,
2498 scm_c_make_resizing_hash_table, scm_make_hash_table): New
2499 functions.
2500 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
2501 safe and handle resizing tables.
2502
2503 * weaks.c (scm_make_weak_key_hash_table,
2504 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
2505 Size argument made optional. Return resizable table if not
2506 specified.
2507
4b612c5b
MD
25082003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2509
2510 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
2511 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
2512
b3d7f6df
MD
25132003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2514
2515 * debug.c (scm_procedure_source): Handle all objects for which
2516 procedure? is #t. (Thanks to Bill Schottstaedt.)
2517
756414cf
MD
25182003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2519
361d631f
MD
2520 * futures.c (mark_futures): Don't need to mark data of recycled
2521 futures.
2522 (scan_futures, cleanup_undead): Be smarter about marking
2523 futures---avoid unnecessary passes through future lists.
2524
756414cf
MD
2525 * futures.h, futures.c: New files; Introduced recycling of
2526 futures. For fine-grained threading this lifts performance to
2527 another level. We can now use parallelization in inner loops of
2528 Guile programs without impossible overhead.
2529
2530 * threads.h, threads.c: Moved futures to their own file.
2531
2532 * Makefile.am (libguile_la_SOURCES): Added futures.c.
2533 (DOT_X_FILES): Added futures.x.
2534 (DOT_DOC_FILES): Added futures.doc.
2535 (modinclude_HEADERS): Added futures.h.
2536
2537 * threads.c, threads.h (scm_i_create_thread): Renamed from
2538 create_thread and made global.
2539
2540 * futures.c (scm_make_future): New procedure.
2541
2542 * eval.c: #include "libguile/futures.h".
2543
2544 * init.c: #include "futures.h"
2545 (scm_init_guile_1): Call scm_init_futures.
2546
2547 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
2548
2549 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
2550
2551 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
2552 functions.
2553
2554 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
2555
b4debead
MD
25562003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2557
2558 * threads.c (create_thread): Don't unwind dynwind chain of parent
2559 thread before creation. Just start the new thread with an empty
2560 dynwind chain.
2561
93f26b7b
MD
25622003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2563
2564 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
2565
38d8927c
MD
25662003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2567
41c96c32
MD
2568 * threads.c (scm_timed_wait_condition_variable): Support timed
2569 waiting also for simple condition variables.
2570
38d8927c
MD
2571 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
2572 of calling the procedure change-object-class.
2573
9cf5d9b7
MD
25742003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2575
2576 * ramap.c (scm_ramapc): Typo in error message.
2577
bbf8d523
MD
25782003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2579
b46fae00
MD
2580 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
2581 slots with instance allocation.
2582
bbf8d523
MD
2583 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
2584 class.
2585 (scm_compute_applicable_methods): Use scm_generic_function_methods.
2586
2587 * goops.c (scm_generic_function_methods): Support extended
2588 generic functions.
2589
ebf9b47c
MD
25902002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2591
2592 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
2e37d6a2 2593 Thanks to Neil for pointing this out!
ebf9b47c 2594
14a9ba3f
NJ
25952002-12-29 Neil Jerram <neil@ossau.uklinux.net>
2596
2597 * lang.h: Remove declarations matching definitions removed from
2598 lang.c (just below).
2599
c6a040a8
NJ
26002002-12-28 Neil Jerram <neil@ossau.uklinux.net>
2601
6054d805
NJ
2602 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
2603 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
2604 and already commented out.
2605
c6a040a8
NJ
2606 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
2607 scm_lreadparen): Support reading vectors with Elisp syntax if
2608 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
2609 is not currently defined, and there isn't even a configure switch
2610 to enable it yet.)
2611
3742c12f
MV
26122002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
2613
2614 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
2615 builds work.
2616 (EXTRA_DIST): Added version.h.in.
2617
fb50ef08
MD
26182002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2619
2620 This change makes it possible for one thread to do lazy sweeping
2621 while other threads are running. Now only the mark phase need to
2622 have all threads asleep. We should look further into this issue.
2623 Presently, I've put the locking of scm_i_sweep_mutex at
2624 "conservative" places due to my current lack of knowledge about
2625 the garbage collector. Please feel free to restrict these regions
2626 further to allow for maximal parallelism!
2627
2628 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
2629
2630 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
2631 scm_gc_register_collectable_memory): Substitute locking of
2632 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
2633 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
2634 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
2635 the single-thread section (which now only contains the mark
2636 phase).
2637 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
2638 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
2639
2640 * threads.c (gc_section_mutex): Removed.
2641
9ed24633
MD
26422002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
2643
0d48aca5
MD
2644 * threads.c (create_thread): Clear parent field in root state in
2645 order not to unnecessarily remember dead threads.
2646
9ed24633
MD
2647 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
2648 (scm_trampoline_1, scm_trampoline_2): Use them.
2649
29717c89
MD
26502002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
2651
2652 Partial introduction of real plugin interface.
2653
2654 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
2655 (EXTRA_DIST): Added threads-plugin.c.
2656
2657 * threads-plugin.h, threads-plugin.c: New files.
2658
2659 * threads.h: #include "libguile/threads-plugin.h".
2660
2661 * threads.c: #include "libguile/threads-plugin.c".
2662
2663 * pthread-threads.c: Temporarily remove debugging functions.
2664
2665 * threads.c, threads.h (scm_yield): Added back.
2666
e29e0b09
MD
26672002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
2668
2669 * threads.c (really_launch): Detach before unlocking
2670 thread_admin_mutex in order not to risk being joined.
2671 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
2672 thread_admin_mutex locked during GC.
2673
2674 * pthread-threads.c, pthread-threads.h: Improvements to debugging
2675 functions.
2676
0b6843b1 26772002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
93cd4dcd 2678
6da2dfc4
MD
2679 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
2680 support for debugging mutex operations.
2681
1b92fb6b
MD
2682 * threads.c (scm_thread): Removed filed joining_threads.
2683 (thread_print): Print thread number as well as address of thread
2684 structure.
0b6843b1
MD
2685 (scm_join_thread): Bugfix.
2686 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
2687 scm_timed_wait_condition_variable, scm_signal_condition_variable,
2688 scm_broadcast_condition_variable): Use the low-level API.
2689 (scm_all_threads): Return copy of thread list (to prevent
2690 unintended destruction).
2691 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1b92fb6b 2692
93cd4dcd
MD
2693 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
2694 pthread "native" recursive mutex support.
2695
2ff4f181
MD
26962002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2697
28d52ebb
MD
2698 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
2699 Simply lock a thread C API recursive mutex.
2700 (SCM_NONREC_CRITICAL_SECTION_START,
2701 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
2702 SCM_REC_CRITICAL_SECTION_END): Removed.
2703
2704 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
2705 direct calls to scm_rec_mutex_lock / unlock around the three calls
2706 to scm_m_expand_body.
2707
2708 * eval.c, eval.h (promise_free): New function.
2709 (scm_force): Rewritten; Now thread-safe; Removed
2710 SCM_DEFER/ALLOW_INTS.
2711
2712 * pthread-threads.h: Added partially implemented plugin interface
2713 for recursive mutexes. These are, for now, only intended to be
2714 used internally within the Guile implementation.
2715
2716 * pthread-threads.c: New file.
2717
2718 * threads.c: Conditionally #include "pthread-threads.c".
2719
2720 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
2721 thread-safe;
2722
2723 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
2724 SCM_GLOBAL_REC_MUTEX): New macros.
2725
2726 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
2727 macros---use mutexes instead.
2728
2729 * tags.h (SCM_IM_FUTURE): New tag.
2730
2731 * eval.c (scm_m_future): New primitive macro.
2732 (SCM_CEVAL): Support futures.
2733 (unmemocopy): Support unmemoization of futures.
2734
2735 * print.c (scm_isymnames): Name of future isym.
2736
2ff4f181
MD
2737 * version.c: Unmade some changes to my private copy that got
2738 committed by mistake.
2739
392d2833
MD
27402002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
2741
e200ddee
MD
2742 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
2743 2002-12-10.
2744
392d2833
MD
2745 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
2746
2747 * gc.c (scm_gc_sweep): Call it here instead, which is a more
2748 logical place.
2749
2750 * threads.c (create_thread): Remember root object until the handle
2751 of the new thread is on all_threads list.
2752
2753 * root.c (scm_make_root): Moved copying of fluids until after
2754 creation of root handle so that the fluids are GC protected. Also
2755 removed the critical section.
2756
c4c52ebe
MD
27572002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
2758
960c408c
MD
2759 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
2760
3cdde9d6 2761 * gc-malloc.c (malloc_mutex): New mutex.
960c408c 2762 (scm_gc_malloc_prehistory): Initialize it.
3cdde9d6
MD
2763 (scm_realloc): Serialize call to realloc
2764 (scm_calloc): Same for calloc.
2765 Thanks to Wolfgang Jaehrling!
2766 (Now we have to make sure all calls to malloc/realloc are made
2767 through scm_malloc.)
2768
960c408c
MD
2769 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
2770
c4c52ebe
MD
2771 * threads.c (really_launch): Release heap (to prevent deadlock).
2772 (create_thread): Release heap before locking thread admin mutex.
2773
b0dc3d71
MD
27742002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
2775
2776 * threads.c (scm_i_thread_invalidate_freelists): New
2777 function.
2778
2779 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
2780
2781 * modules.c (scm_export): Inserted a return statement.
2782
06e80f59
HWN
27832002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2784
2785 * modules.c (scm_export): new function
2786
2787 * gc-card.c: add a note about malloc()/free() overhead.
2788
a12611c3
MD
27892002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
2790
2791 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
2792 in srcdir.
2793
c7fabadf
MD
27942002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2795
2796 These changes remove scm_ints_disabled (which hasn't has any
2797 effect in Guile for quite some time).
2798
2799 * async.c, error.h (scm_ints_disabled): Removed.
2800
2801 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
2802 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
2803 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
2804 (old_ints): Removed.
2805
2806 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
2807 critical section.
2808 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
2809 SCM_ALLOW_INTS.
2810
9bc4701c
MD
28112002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2812
52340b65
MD
2813 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
2814 Removed accidental #if 0 around these functions.
2815
9bc4701c
MD
2816 These changes are the start of support for preemptive
2817 multithreading. Marius and I have agreed that I commit this code
2818 into the repository although it isn't thoroughly tested and surely
2819 introduces many bugs. The bugs should only be exposed when using
2820 threads, though. Signalling and error handling for threads is
2821 very likely broken. Work on making the implementation cleaner and
2822 more efficient is needed.
2823
2824 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
2825 (SCM_NONREC_CRITICAL_SECTION_START,
2826 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
2827 SCM_REC_CRITICAL_SECTION_END): New macros.
2828 (SCM_CRITICAL_SECTION_START/END): Defined here.
2829
2830 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
2831 the three calls to scm_m_expand_body.
2832
2833 * gc.h: #include "libguile/pthread-threads.h";
2834 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
2835
2836 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
2837 scm_t_key;
2838
2839 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
2840 access.
2841
2842 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
2843
2844 * gc-freelist.c, threads.c (really_launch): Use
2845 SCM_FREELIST_CREATE.
2846
2847 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
2848
2849 * gc.c (scm_i_expensive_validation_check, scm_gc,
2850 scm_gc_for_newcell): Put threads to sleep before doing GC-related
2851 heap administration so that those pieces of code are executed
2852 single-threaded. We might consider rewriting these code sections
2853 in terms of a "call_gc_code_singly_threaded" construct instead of
2854 calling the pair of scm_i_thread_put_to_sleep () and
2855 scm_i_thread_wake_up (). Also, we would want to have as many of
2856 these sections eleminated.
2857
2858 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
2859
2860 * inline.h: #include "libguile/threads.h"
2861
2862 * pthread-threads.h: Macros now conform more closely to the
2863 pthreads interface. Some of them now take a second argument.
2864
2865 * threads.c, threads.h: Many changes.
2866
28672002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
2868
2869 * Makefile.am (version.h): Changed $^ --> $< in rule for
2870 version.h.
2871
b2cbe8d8
RB
28722002-12-08 Rob Browning <rlb@defaultvalue.org>
2873
2874 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
2875 (SCM_MINOR_VERSION): use @--@ substitution now.
2876 (SCM_MICRO_VERSION): use @--@ substitution now.
2877 (scm_effective_version): new function prototype.
2878
2879 * version.c (scm_effective_version): new function, also add
2880 effective-version.
2881
2882 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
2883 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
2884 SCM_LIBRARY_DIR.
2885 (version.h): generate this here rather than configure.in. This
2886 approach tracks source edits better (i.e. more immediately).
2887 Might be worth considering for other .in files too.
2888
5441c65c
MV
28892002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
2890
2891 Reorganized thread package selection. A thread package now only
2892 implements a small set of pthread like functions and Guile
2893 implements the rest on top of that. Guile's implementation is
2894 what the "coop-pthreads" package has been previously. Support for
2895 "coop" threads has been removed until I get time to add it again.
2896
2897 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
2898 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
2899 null-threads.c, coop-pthreads.c.
2900 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
2901 pthread-threads.h.
2902
2903 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
2904
2905 * threads.h: Do not include "libguile/coop-defs.h". Include
2906 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
2907 (previously deprecated) C level thread API prototypes. They are
2908 now in the thread package specific headers, "null-threads.h" and
2909 "pthread-threads.h".
2910 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
2911 New.
2912 (scm_threads_init): Removed.
2913 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
2914 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
2915 SCM_I_THREAD_SWITCH_COUNT): Define here.
2916 (scm_single_thread_p): Removed.
2917 (scm_call_with_new_thread): Take two args directly instead of list
2918 of two args.
2919 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
2920 SCM_SET_THREAD_LOCAL_DATA): Define here.
2921
2922 * threads.c: Merged with "coop-pthreads.c".
2923
2924 * null-threads.h: Implement pthread-like API as a set of macros.
2925
2926 * pthread-threads.h: New, implement pthread-like API by deferring
2927 to pthread itself.
2928
2929 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
2930 has been lost in the reorganization.
2931
504d99c5
MD
29322002-12-01 Mikael Djurfeldt <mdj@linnaeus>
2933
2934 The following change makes it possible to move procedure
2935 application dispatch outside inner loops. The motivation was
2936 clean implementation of efficient replacements of R5RS primitives
2937 in SRFI-1.
2938
2939 The semantics is clear: scm_trampoline_N returns an optimized
2940 version of scm_call_N (or NULL if the procedure isn't applicable
2941 on N args).
2942
2943 Applying the optimization to map and for-each increases efficiency
2944 noticeably. For example, (map abs ls) is 8 times faster than
2945 before.
2946
2947 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
2948
2949 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
2950
2951 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
2952 (map, for-each): Handle also application on two args as a special
2953 case; Use trampolines.
2954
2955 Other changes:
2956
2957 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
2958 (subr2oless): Removed.
2959 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
2960 vector GC protected.
2961
2962 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
2963 scm_out_of_range.
2964
63dd3413
DH
29652002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
2966
2967 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
2968
4ba5f279
MD
29692002-11-17 Mikael Djurfeldt <mdj@linnaeus>
2970
2971 * debug.c (scm_make_iloc): Added missing "return".
2972
56ae231f
MV
29732002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
2974
2975 * strports.c (scm_eval_string_in_module): Validate second arg to
2976 be a module. Thanks to Arno Peters!
2977
80b28865
DH
29782002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2979
2980 * .cvsignore: remove goops.c
2981
c88b1456
DH
29822002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2983
2984 * modules.c (scm_env_top_level, scm_lookup_closure_module,
2985 module_variable, scm_module_lookup_closure,
2986 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
2987 scm_system_module_env_p): Don't compare SCM values with C
2988 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
2989 over SCM_NFALSEP.
2990
a8a19efc
DH
29912002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2992
2993 * eval.h (SCM_MAKE_ILOC): New macro.
2994
2995 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
2996 the iloc bitpattern here.
2997
76734914
MD
29982002-11-14 Mikael Djurfeldt <mdj@linnaeus>
2999
3000 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
3001 part of the API, otherwise it's difficult to write Guile
3002 extensions using non-blocking I/O => moved #include
3003 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
3004
3005 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
3006 s_unlock_mutex.
3007
8b5b4a75
MV
30082002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
3009
3010 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
3011 are defined in configure.in.
3012
3013 * threads.c: Removed SCM_API from function definitions. SCM_API
3014 is only for declarations.
3015
e5a83084
MD
30162002-11-07 Mikael Djurfeldt <mdj@linnaeus>
3017
9be8bb45
MD
3018 * coop-pthreads.h: Added support for thread specific data to the
3019 generic C API for the coop-pthreads case.
3020
e5a83084
MD
3021 * threads.c, threads.h (scm_cond_init): Undo unintentional API
3022 change.
6c214b62 3023 (scm_cond_broadcast): Added missing function.
e5a83084 3024
7edf178e
MV
30252002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3026
3027 * coop.c (coop_next_runnable_thread): Removed, wich should have
3028 happened when GUILE_ISELECT was hard-wired.
3029
7f5b1b77
MV
30302002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
3031
7caa1b07
MV
3032 * Makefile.am (libguile_la_SOURCES): Added threads.c
3033 (DOT_DOC_FILES): Added threads.doc.
3034 (DOT_X_FILES): Added threads.x.
3035 (EXTRA_libguile_la_SOURCES): Removed threads.c.
3036 (noinst_HEADERS): Added coop-pthreads.c.
3037 (modinclude_HEADERS): Added coop-pthreads.h.
3038
3039 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
3040 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
3041
bb11cbf4
MV
3042 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
3043 Thanks to Bill Schottstaedt!
3044
1d4cbbed
MV
3045 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
3046
7f5b1b77
MV
3047 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
3048 SCM_COPT_THREADS is defined.
3049 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
3050 is defined.
3051
3052 * coop-pthreads.c: Some harmless renamings of internal stuff.
3053 (create_thread): New, generalized version of
3054 scm_call_with_new_thread.
3055 (scm_call_with_new_thread): Use it.
3056 (scm_spawn_thread): New, use create_thread.
3057
d52f53b1
MV
30582002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
3059
3060 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
3061 start testing it now.
3062
3063 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
3064 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
3065 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
3066 is defined.
3067
30f920c3
MV
30682002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
3069
3070 * scmsigs.c (signal_cell_handlers, install_handler_data,
3071 scm_delq_spine_x, really_install_handler, install_handler): New
3072 scheme for triggering signal handlers, to simplify take_signal.
3073 (take_signal): Simplified, to avoid race conditions.
3074 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
3075 hasn't exited yet.
3076
3077 * async.c (scm_async_click): Reset pending_asyncs, handle
3078 signal_asyncs. Don't set cdr of a non-signal async to #f.
3079 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
3080 always. Set pending_asyncs.
3081 (scm_system_async_mark_for_thread): Check that thread has not
3082 exited.
3083 (scm_unmask_signals, decrease_block): Call scm_async_click after
3084 block_asyncs becomes zero.
3085
3086 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
3087 active_asyncs.
3088
3089 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
3090 fields.
3091 * root.c (root_mark): Mark them.
3092 (make_root): Initialize them.
3093
3094 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
3095 USE_COOP_THREADS.
3096 (scm_internal_select): Define one version for USE_COOP_THREADS and
3097 one for USE_NULL_THREADS.
3098 (scm_init_iselect): Likewise.
3099
3100 * inline.h (scm_cell, scm_double_cell): Also allow
3101 USE_COPT_THREADS to not protect the slot initializers.
3102
3103 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
3104 because threads need to be initialized before the stack, but
3105 gsubrs such as scm_timed_condition_variable_wait can only be
3106 created later.
3107
3108 * threads.h: Include "coop-pthreads.h" when requested.
3109 (scm_threads_make_mutex, scm_threads_lock_mutex,
3110 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
3111 not implemented anyway.
3112 (scm_init_thread_procs, scm_try_mutex,
3113 scm_timed_condition_variable_wait,
3114 scm_broadcast_condition_variable, scm_c_thread_exited_p,
3115 scm_thread_exited_p): New prototypes.
3116 (struct timespec): Define if not already defined.
3117 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
3118 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
3119 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
3120 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
3121 deprecated.
3122
3123 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
3124 requested.
3125 (scm_thread_exited_p): New.
3126 (scm_try_mutex, scm_broadcast_condition_variable): Newly
3127 registered procedures.
3128 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
3129 Use the latter as the procedure for "wait-condition-variable",
3130 thus offering a optional timeout parameter to Scheme.
3131 (scm_wait_condition_variable): Implement in terms of
3132 scm_timed_wait_condition_variable.
3133 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
3134 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
3135 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
3136 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
3137 scm_make_mutex, etc, and deprecate.
3138 (scm_init_threads): Do not create smobs, leave this to
3139 scm_threads_init. Do not include "threads.x" file.
3140 (scm_init_thread_procs): New, include "threads.x" here.
3141
3142 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
3143 scm_null_mutex_lock, scm_null_mutex_unlock,
3144 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
3145 scm_null_condvar_wait, scm_null_condvar_signal,
3146 scm_null_condvar_destroy): Removed.
3147 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
3148 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
3149 scm_cond_destory): Do not define, they are now deprecated and
3150 handled by threads.{h,c}.
3151
3152 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
3153 (scm_threads_init): Create smobs here, using the appropriate
3154 sizes.
3155 (block): Removed, now unused.
3156 (scm_c_thread_exited_p): New.
3157 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
3158 scm_null_mutex_destroy, scm_null_condvar_init,
3159 scm_null_condvar_wait, scm_null_condvar_signal,
3160 scm_null_condvar_destroy): Removed and updated users to do their
3161 task directly.
3162 (scm_try_mutex, timeval_subtract,
3163 scm_timed_wait_condition_variable,
3164 scm_broadcast_condition_variable): New.
3165 (scm_wait_condition_variable): Removed.
3166
3167 * coop-defs.h (coop_m): Added 'level' field.
3168 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
3169 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
3170 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
3171 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
3172 define.
3173 (coop_condition_variable_broadcast): New.
3174
3175 * coop-threads.c (scm_threads_init): Create smobs here, using the
3176 appropriate sizes.
3177 (scm_c_thread_exited_p, scm_try_mutex,
3178 scm_timed_wait_condition_variable,
3179 scm_broadcast_condition_variable): New.
3180 (scm_wait_condition_variable): Removed.
3181
3182 * coop.c (coop_new_mutex_init): Initialize level.
3183 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
3184 level.
3185 (coop_condition_variable_signal): Renamed to
3186 coop_condition_variable_broadcast and reimplemented in terms of
3187 that. Thus...
3188 (coop_condition_variable_broadcast): New.
3189
3190 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
3191
3192 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
3193
087ed40d
MV
31942002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
3195
65a23095
MV
3196 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
3197 of system headers.
3198
087ed40d
MV
3199 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
3200 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
30f920c3 3201 give better error messages. Thanks to Bill Schottstaedt!
087ed40d 3202
5ec1d2c8
DH
32032002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
3204
3205 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
3206 scm_definedp to scm_defined_p and deprecated scm_definedp.
3207
100ae50d
DH
32082002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
3209
3210 * async.h, async.c (scm_system_async): Fixed deprecation to work
3211 correctly when deprecated features are excluded.
3212
2794cb50
MV
32132002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3214
3215 * async.c (scm_system_async_mark_for_thread): Validate thread
3216 argument.
3217
3218 * coop-threads.c (scm_i_thread_root): Do not validate argument.
3219
3220 * feature.c (scm_init_feature): Don't add 'threads' for
3221 USE_NULL_THREADS.
3222
3223 * inline.h (scm_cell, scm_double_cell): Also allow
3224 USE_NULL_THREADS to not protect the slot initializers.
3225
3226 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
3227 "USE_THREAD".
3228
3229 * Makefile.am (noinst_HEADERS): Added null-threads.c.
3230 (modinclude_HEADERS): Added null-threads.h.
3231
3232 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
3233 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
3234 (scm_init_threads): Use generic type names scm_t_mutex and
3235 scm_t_cond instead of coop_m and coop_c.
3236
3237 * null-threads.c, null-threads.h: New files.
3238
ff810d7a
MV
32392002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
3240
3241 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
3242 This is to support makes that know about "$<" only in pattern
3243 rules, like Sun's make.
3244
a90bdb73
MV
32452002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
3246
3247 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
3248 substitution. Thanks to David Allouche!
3249
e71a8bf2
DH
32502002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
3251
3252 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
3253 !SCM_ENABLE_DEPRECATED.
3254
41f77ff5
MV
32552002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3256
504d99c5 3257 * async.c (scm_system_async_mark_for_thread): Only call
41f77ff5
MV
3258 scm_i_thread_root when USE_THREADS is defined. Use scm_root
3259 otherwise.
3260
3261 * scmsigs.c (take_signal): Only call scm_i_thread_root when
3262 USE_THREADS is defined. Use scm_root otherwise.
3263 (scm_sigaction_for_thread): Ignore THREAD argument when
3264 USE_THREADS is not defined. Also, move THREAD argument defaulting
3265 out of HAVE_SIGACTION section, which was a bug.
3266
6d16b125
MV
32672002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3268
3269 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
3270 signal_handlers, not the closure that is used as the async.
3271 The closure is stored in signal_handler_cells, as previously.
3272
acfa1f52
MV
32732002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
3274
3275 * root.h (scm_root_state): Added 'block_async' slot.
3276 (scm_active_asyncs): Removed abbrev.
3277 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
3278
3279 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
3280 abbrev.
3281
3282 * async.h (scm_call_with_blocked_asyncs,
3283 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
3284 scm_c_call_with_unblocked_asyncs): New prototypes.
3285 (scm_mask_signals, scm_unmask_signals): Deprecated.
3286 (scm_mask_ints): Turned into a macro.
3287 * async.c (scm_mask_ints): Removed.
3288 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
3289 this should not be necessary.
3290 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
3291 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
3292 deprecation warning and check for errornous use. Set block_asyncs
3293 instead of scm_mask_ints.
3294 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
3295 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
3296 scm_c_call_with_unblocked_asyncs): New.
3297
3298 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
3299 Asyncs are enabled by default.
3300
34010f56
NJ
33012002-10-09 Neil Jerram <neil@ossau.uklinux.net>
3302
3303 * vports.c (scm_make_soft_port): Allow vector argument to carry a
3304 6th element: an input waiting thunk.
3305 (sf_input_waiting): New.
3306
9310d6f2
MV
33072002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
3308
3309 * root.c (root_mark): Mark active_asyncs slot.
3310
3311 * async.c (scm_async_click): Set the cdr of a executed handler
3312 cell to SCM_BOOL_F, not SCM_EOL.
3313 (scm_i_queue_async_cell): Queue the cell at the end of the list,
3314 and only if the handler procedure is not already present.
3315 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
3316 with SCM_BOOL_F.
3317 * scmsigs.c (scm_sigaction_for_thread): Likewise.
3318
ac48c719
RB
33192002-10-04 Rob Browning <rlb@defaultvalue.org>
3320
1360a142
RB
3321 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
3322
3323 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
3324 scm_lt_dlopenext, and scm_lt_dlerror.
3325 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
3326 and scm_lt_dlerror.
3327 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
3328 and scm_lt_dlerror.
3329 (sysdep_dynl_init): switch to scm_lt_dlinit();
3330
3331 * Makefile.am (libguile_la_LIBADD): switch to use
3332 libguile-ltdl.la.
3333
504d99c5 3334 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
ac48c719 3335
497092c9
MV
33362002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
3337
3338 * scmsigs.h (scm_sigaction_for_thread): New prototype.
3339 * scmsigs.c (got_signal): Removed.
3340 (signal_handler_cells, signal_handler_threads): New.
3341 (take_signal): Queue the cell of the signal for the specified
3342 thread. Reset the signal handler on systems that don't have
3343 sigaction.
3344 (sys_deliver_signals): Removed.
3345 (close_1): New.
3346 (scm_sigaction_for_thread): Renamed from scm_sigaction and
3347 extended to also set the thread of a signal and allocate a cell
3348 for it. Keep the Scheme name "sigaction". Check that signum is
3349 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
3350 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
3351 (scm_init_scmsigs): Allocate signal_handler_cells and
3352 signal_handler_threads vectors.
3353
3354 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
3355 that system asnycs and user asyncs are separated. Reimplemented
3356 system asyncs to work per-thread.
3357
3358 * gc.c (scm_init_gc): Do not use scm_system_async.
3359
3360 * async.h (scm_asyncs_pending, scm_set_tick_rate,
3361 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
3362 Removed prototypes.
3363 (scm_i_queue_async_cell): New.
3364
3365 * __scm.h (scm_asyncs_pending_p): Removed.
3366 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
3367 scm_asyncs_pending_p.
3368
3369 * async.h (scm_system_async_mark_for_thread): New prototype.
3370
3371 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
3372
3373 * root.h (scm_root_state): Added new "active_asyncs" slot.
3374 * root.c (scm_make_root): Initialize it to SCM_EOL.
3375
3376 * coop-defs.h (coop_t): Added new "handle" slot.
3377 * coop-threads.c (all_threads, scm_current_thread,
3378 scm_all_threads, scm_i_thread_root): New.
3379 (scm_threads_init): Add main thread to all_threads.
3380 (scheme_launch_thread): Remove thread from all_threads when it
3381 terminates.
3382 (scm_call_with_new_thread): Initialize handle slot of coop_t
3383 structure and add new thread to all_threads.
3384 (scm_spawn_thread): Likewise.
3385
3386 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
3387 * threads.c (scm_current_thread, scm_all_threads): Register as
3388 primitives.
3389
3390 * dynl.c: Use scm_lt_ prefix for libltdl functions.
3391
480fa28d
NJ
33922002-09-29 Neil Jerram <neil@ossau.uklinux.net>
3393
3394 * script.c (scm_compile_shell_switches): Fix bad spelling of
3395 `explicitly' in comment.
3396
33972002-09-28 Neil Jerram <neil@ossau.uklinux.net>
3398
3399 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
3400 Refer to provided? in doc string rather than deprecated feature?.
3401
3553e1d1
GH
34022002-09-24 Gary Houston <ghouston@arglist.com>
3403
3404 * inline.h (scm_double_cell): prevent reordering of statements
3405 with any following code (for GCC 3 strict-aliasing).
3406 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
3407 the earlier version of the reordering prevention.
3408
4ad0814a
HWN
34092002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
3410
3411 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
3412
e88e4f2e
HWN
34132002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
3414
3415 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
3416 protection.
3417
1e71eafb
HWN
34182002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
3419
3420 * inline.h: include stdio.h
3421
3422 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
3423
61ef9c1f
HWN
34242002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
3425
dac04e9f
HWN
3426 * gc-segment.c (scm_i_make_initial_segment): check user settings
3427 for sanity.
3428
3429 * gc-malloc.c (scm_gc_init_malloc): check user settings for
3430 sanity.
dac04e9f
HWN
3431
3432 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
3433
ffd72400
HWN
3434 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
3435
3436 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
1e71eafb
HWN
3437 these won't ever wrap around with high memory usage. Thanks to
3438 Sven Hartrumpf for finding this.
ffd72400 3439
5bd4a949
HWN
3440 * gc-freelist.c: include <stdio.h>
3441
61ef9c1f
HWN
3442 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
3443
ffd0ef3b
MV
34442002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
3445
a27e3d14
MV
3446 * vectors.h (SCM_VECTOR_REF): New.
3447
ffd0ef3b
MV
3448 * snarf.h (SCM_DEFINE_PUBLIC): New.
3449
f8a1712b
MV
34502002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
3451
3452 * socket.c (scm_addr_vector): Added size of address to arguments.
3453 Use it to avoid accessing a non-existent path in a sockaddr_un.
3454 Changed all callers.
3455
7200a36b
HWN
34562002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
3457
1383773b
HWN
3458 * gc.h: remove DOUBLECELL card flags.
3459
3460 * gc-malloc.c (scm_calloc): try to use calloc() before calling
3461 scm_realloc().
3462
3463 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
3464 init loop; handle this from scm_init_card_freelist()
3465
3466 * gc-card.c (scm_init_card_freelist): init bit vector here.
3467
7200a36b 3468 * numbers.c (scm_make_real): prevent reordering of statements
8fa5786d 3469 num2float.i.c (FLOAT2NUM): idem
7200a36b 3470
9981de3a
HWN
34712002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
3472
3473 * eval.h: prepend libguile/ to include path
3474
19647556
MV
34752002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
3476
3477 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
3478