1 2003-08-23 Kevin Ryde <user42@zip.com.au>
3 * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
4 thread safe, and could take a long time too.
6 2003-08-22 Kevin Ryde <user42@zip.com.au>
8 * numbers.c (scm_difference): Correction to bignum - negative inum.
10 2003-08-14 Kevin Ryde <user42@zip.com.au>
12 * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
13 [__GNUC__]: Use volatile asm macros rather than a function call.
14 * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
15 macros while defining functions.
17 * simpos.c (getenv): Use <stdlib.h> for prototype.
18 (scm_system): In docstring, refer to status:exit-val rather than
21 2003-08-09 Kevin Ryde <user42@zip.com.au>
23 * srcprop.c (scm_source_properties): Return plist from hash if it's a
24 list set by source-properties! rather than an SRCPROPS object,
26 2003-07-29 Kevin Ryde <user42@zip.com.au>
28 * properties.c (scm_primitive_property_ref): In docstring, note
29 parameters to not-found-proc, use hyphens rather than underscores for
31 (scm_primitive_property_set_x): In docstring, VAL is the value
34 2003-07-27 Marius Vollmer <mvo@zagadka.de>
36 * print.c (scm_print_symbol_name): handle more weird characters by
37 escaping the symbol name properly. Thanks to Paul Jarc!
39 * posix.h (scm_setgroups): New prototype.
40 * posix.c (scm_setgroups): New. Thanks to Paul Jarc!
41 (scm_getgroups): Handle groups ids that don't fit into a fixnum.
42 Don't use SCM_WRITABLE_VELTS.
44 * gc.h (SCM_GC_SET_CELL_BVEC): New.
45 * gc-card.c (scm_i_init_card_freelist): Use it. Thanks to
48 * __scm.h (SCM_C_INLINE_KEYWORD): New.
49 * numbers.c: Use it in place of SCM_C_INLINE so that the code
50 compiles when SCM_C_INLINE is undefined.
52 2003-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
54 * __scm.h: Reformulated the architecture and compiler properties
55 in terms of properties of scm_t_bits and SCM variables rather than
56 in terms of c standard types. This is since it is not known which
57 of the standard types scm_t_bits and SCM variables will be defined
60 2003-07-24 Kevin Ryde <user42@zip.com.au>
62 * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
65 2003-07-18 Kevin Ryde <user42@zip.com.au>
67 * numbers.c (scm_product): In complex * bignum, correction to
68 REAL/IMAG fetch, x is the complex, not y.
70 2003-07-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
72 * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
73 scm_inf_p test as Scheme values.
74 (scm_sum): Bugfix: Normalize bignum created from a negative bignum
76 Use GNU indentation style.
78 2003-07-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
80 * values.c (scm_values): Build lists of length 1 by using
81 scm_list_1 instead of using scm_cons.
83 2003-07-10 Kevin Ryde <user42@zip.com.au>
85 * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
86 * list.c (scm_list_n): Ditto.
88 * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
90 2003-07-08 Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
92 * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
93 defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
94 scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
95 the other using intptr_t.
97 2003-07-08 Kevin Ryde <user42@zip.com.au>
99 * numbers.c (scm_make_polar): Use sincos, when available.
100 (scm_magnitude): Use hypot.
102 * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
103 @footnote since it doesn't go through to guile-procedures.txt.
105 * threads.c (scm_call_with_new_thread): In docstring, use "( )"
106 outside @var to quieten makeinfo, and use @code.
108 2003-07-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
110 * gc-malloc.c (decrease_mtrigger): new function
111 (increase_mtrigger): new function, separate debug registering and
112 mtrigger administration.
113 (scm_gc_realloc): bugfix: do mtrigger administration before the
114 actual realloc, for the realloc might invalidate a GC-d segment of
115 memory. Thanks to Sam Hocevar for pointing this out.
116 (scm_gc_realloc): use scm_malloc_reregister instead of
117 unregistering and registering in sequence.
119 2003-07-03 Han-Wen Nienhuys <hanwen@cs.uu.nl>
121 * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)"
123 2003-07-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
125 * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
128 2003-06-29 Marius Vollmer <mvo@zagadka.de>
130 * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
131 scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
132 scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
133 RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
134 SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
135 the release_1_6 branch.
137 2003-06-25 Stefan Jahn <stefan@lkcc.org>
139 * continuations.c: Redeclaration of getcontext() via the
140 __asm__ ("getcontext") directive.
142 * continuations.h: Include <ucontext.h> instead of
145 2003-06-21 Kevin Ryde <user42@zip.com.au>
147 * numbers.c (_GNU_SOURCE): #define, to get C99 things.
148 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
149 $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
151 (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
152 (isfinite): Remove, conflicts with C99 isfinite().
154 2003-06-19 Marius Vollmer <mvo@zagadka.de>
156 * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
157 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
158 scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
159 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
160 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
161 the release_1_6 branch.
163 2003-06-14 Stefan Jahn <stefan@lkcc.org>
165 * threads.h: Redefined scm_getspecific() and scm_setspecific()
166 to be functions instead of macros.
168 * threads.c: Conditionalized inclusion of <sys/time.h> and
170 (scm_getspecific, scm_setspecific): Made these two function
171 real part of the API.
173 * posix.c (s_scm_putenv): Added some code to make a
174 (putenv "FOO="), i.e. setting an empty string, work also on
175 Win32 systems. Thanks to Kevin Ryde for the proposal.
177 2003-06-12 Kevin Ryde <user42@zip.com.au>
179 * posix.c (scm_putenv): Free temporary ptr in mingw unset. Add
180 freebsd to comment about need to use unsetenv.
182 2003-06-02 Marius Vollmer <mvo@zagadka.de>
184 * ports.c (scm_peek_char): Safe the column of the port around the
185 getc/ungetc calls. Thanks to Dr. Peter Ivanyi!
187 2003-06-07 Kevin Ryde <user42@zip.com.au>
189 * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
190 and friends required by scm_t_bits setups.
192 2003-06-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
194 * tags.h (scm_tc2_int): Added.
196 * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
199 * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
200 scm_tcs_closures): Hard coded values replaced by symbolic ones.
202 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
204 * eval.c: Partially undid my patch from 2003-05-31. This patch
205 caused the segfault referenced in the previous changelog entry.
207 2003-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
209 * tags.h: Fixed comment about the immediate type code layout.
211 * eval.c: Fixed handling of non-special instructions. Without
212 this patch, guile will segfault on (#\0) and similar instructions.
214 2003-06-05 Kevin Ryde <user42@zip.com.au>
216 * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
217 operand is NaN, then return NaN. Also avoid passing NaN to mpz_cmp_d.
219 * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
220 rather than SCM_EOL. Needed by "Unknown # object" case in scm_lreadr.
222 2003-06-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
224 * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
225 SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
226 SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
227 generalized it to apply not only to C level functions but also to
228 scheme level functions.
230 * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
231 scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
232 scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
233 eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
234 only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
237 * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
238 SCM_IDSTMSK): Deprecated. The macro definitions are moved from
239 eval.h into eval.c and a copy is placed into deprecated.h.
241 * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
242 into eval.c. This definition was not part of the API in any
243 officially released version of guile and thus does not need to go
244 through a phase of deprecation.
246 2003-06-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
248 * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
249 scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
250 scm_s_clauses, scm_s_formals): Deprecated. In eval.c the
251 definitions are make static and renamed from scm_s_xxx to s_xxx.
252 In deprecated.c the original definitions are copied.
254 * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
255 SCM_XEVALCAR): Deprecated. The macro definitions are moved from
256 eval.h into eval.c and a copy (slightly modified to work in user
257 code) is placed into deprecated.h.
259 * eval.c: Use the local static s_xxx definitions instead of the
260 scm_s_xxx definitions throughout.
262 2003-06-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
264 This set of patches separates the representation of the cxr family
265 of functions (car, cdr etc.) from the dsubr family of functions
266 (i. e. functions that take a double precision floating point
267 argument). Further, the algorithm for handling the cxr function
270 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
271 (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
272 ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
273 cosh, tanh), objects.c (scm_class_of), procprop.c
274 (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
275 (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
276 typecode for the dsubr family of functions.
278 * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
281 * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
282 (scm_init_pairs): Make use of the (now usable) second cell element
283 of a scm_tc7_cxr function to implement the cxr family of functions
286 2003-05-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
288 * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
289 scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
290 end of an if-else-if-sequence of checks.
292 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
294 * eval.c (SCM_CEVAL): Improved readability of call-with-values
295 execution. Generalize apply_closure to apply_proc and use that
296 for call-with-values.
298 2003-05-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
300 * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
303 2003-05-30 Stefan Jahn <stefan@lkcc.org>
305 * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV
306 appropriately for mingw32 hosts.
308 * numbers.h: Defining copysign(), isnan() and finite() to
309 be prefixed by a single '_' for mingw32 hosts.
311 2003-05-30 Kevin Ryde <user42@zip.com.au>
313 * numbers.c (z_negative_one): New variable.
314 (scm_init_numbers): Initialize it.
315 (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
317 2003-05-29 Stefan Jahn <stefan@lkcc.org>
319 * win32-dirent.c: Use malloc() instead of scm_malloc().
321 * stime.c (s_scm_strftime): Add a type cast to avoid compiler
324 * posix.c (s_scm_putenv): Disable use of unsetenv() for the
327 * modules.c (s_scm_module_import_interface): Renamed local
328 variable interface to _interface. Seems like 'interface'
329 is a special compiler directive for the mingw32 compiler.
331 * mkstemp.c: Provide prototype to avoid compiler warning.
333 * load.c (s_scm_search_path): Fixed absolute and relative
334 path detections for native Windows platforms.
336 * gc.h, threads.h: Export some more symbols using SCM_API (necessary
337 to build on mingw32).
339 * gc-freelist.c ("s_scm_map_free_list",
340 "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
342 * fports.c (fport_fill_input): Disable use of
343 fport_wait_for_input() on Win32 platforms.
345 * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
347 * Makefile.am: Modified some rules for cross compiling.
349 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
351 * eval.c (SCM_CEVAL): In case of an application, all checks for a
352 proper function object and the correct number of arguments are now
353 performed in the application part of SCM_CEVAL.
355 (scm_badformalsp): Removed.
357 2003-05-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
359 * deprecated.c (scm_read_and_eval_x): Fixed C99-ism.
361 2003-05-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
363 * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
364 always being false by inserting preprocessor conditional. (Thanks
367 * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
368 (void *) in order to avoid an aliasing warning; thanks to Bruce
371 * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
373 * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
376 * threads.c (scm_threads_mark_stacks): Bugfix: Changed
377 thread->base --> t->base.
379 * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
381 2003-05-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
383 * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
384 scm_variable_set_name_hint, scm_builtin_variable,
385 scm_internal_with_fluids, scm_make_gsubr,
386 scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
387 SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
388 SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
389 scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
390 scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
391 scm_make_subr_with_generic, scm_make_subr_opt,
392 scm_call_catching_errors, scm_make_smob_type_mfpe,
393 scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
394 SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
395 branch. Some have been slightly rewritten.
396 (scm_i_object_chars, scm_i_object_length): New, to support
397 SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
399 2003-05-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
401 * eval.c (scm_m_do, unmemocopy, SCM_CEVAL): Reversed order of
402 names and inits in the memoized code of do.
404 2003-05-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
406 * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
407 yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
408 yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
409 a compilation error if error-on-warning is enabled).
412 2003-05-17 Marius Vollmer <mvo@zagadka.de>
414 * c-tokenize.lex: Gobble up complete lines after a '#'. This
415 removes preprocessor directives from the snarfage that might
416 otherwise confuse us. These directives appear when compiling with
419 2003-05-16 Han-Wen Nienhuys <hanwen@cs.uu.nl>
421 * ChangeLog: add my surname
423 * srcprop.c (scm_finish_srcprop): use
424 scm_gc_register_collectable_memory()
425 (scm_make_srcprops): idem.
427 2003-05-14 Han-Wen Nienhuys <hanwen@cs.uu.nl>
429 * gc-malloc.c (scm_gc_register_collectable_memory): avoid
430 wrap-around for scm_mtrigger
431 (scm_gc_register_collectable_memory): abort on overflowing
434 2003-05-13 Kevin Ryde <user42@zip.com.au>
436 * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
437 (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
439 2003-05-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
441 * backtrace.c (scm_display_error_message): Introduced fancy
442 printing with max level 7 and length 10. (Purpose: avoid printing
443 gigantic objects in error messages.)
445 * print.c, print.h (scm_i_port_with_print_state): New function.
447 * print.c (scm_iprin1, scm_printer_apply,
448 scm_port_with_print_state): Use scm_i_port_with_print_state.
449 (scm_simple_format): Modified not to destroy print states.
450 (print_state_mutex): New mutex.
451 (scm_make_print_state, scm_free_print_state, scm_prin1):
452 Lock/unlock print_state_mutex.
454 * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
455 Use current names in definitions.
457 2003-05-10 Kevin Ryde <user42@zip.com.au>
459 * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
461 * numbers.c (scm_integer_length): On negative bignums, adjust
462 mpz_sizeinbase to account for it looking at absolute value where we
463 want ones-complement.
465 * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
466 since we're only using the ulong return value, and x might not fit.
468 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
470 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
471 read. This will allow to make the definition in read.c static.
473 2003-05-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
475 * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
476 from evalext to eval. This will allow to make some of the
477 definitions in eval.c static.
479 2003-05-06 Kevin Ryde <user42@zip.com.au>
481 * numbers.c (scm_difference): In inum - bignum, handle negative inum.
482 (scm_logcount): Use mpz_com, not mpz_neg.
484 2003-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
486 The purpose of this patch is to make guile's internal memoizers
487 distinguishable from memoizing macros created on the scheme level
488 or from user provided primitive memoizing macros. The reason is,
489 that the internal memoizers are the only ones that are allowed to
490 transform their scheme input into memoizer byte code, while all
491 other memoizing macros may only transform scheme code into new
494 To achieve this, a new macro type 'builtin-macro!' is introduced.
495 Currently, 'builtin-macro!'s are handled as memoizing macros, but
496 this will change when the memoizer and executor are separated.
498 * macros.[ch] (scm_i_makbimacro): New.
500 * macros.h (SCM_BUILTIN_MACRO_P): New.
502 * macros.c (macro_print, scm_macro_type): Support builtin-macro!s.
504 * eval.c, goops.c: All of guile's primitive memoizing macros are
505 primitive builtin-macros now.
507 * eval.c (scm_macroexp, SCM_CEVAL): Make sure the primitive
508 builtin-macros are handled equally to memoizing macros.
510 2003-05-04 Marius Vollmer <mvo@zagadka.de>
512 * throw.c (scm_ithrow): Remove "asm volatile" hack. It used to
513 work around a bug in GCC 2.95.2 but is now a bug in itself.
515 2003-05-02 Marius Vollmer <mvo@zagadka.de>
517 * deprecated.h (scm_rstate, scm_rng, SCM_SLOPPY_CONSP,
518 SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol,
519 scm_tcs_symbols): New.
521 2003-04-30 Marius Vollmer <marius.vollmer@uni-dortmund.de>
523 * deprecated.h, deprecated.c (scm_protect_object,
524 scm_unprotect_object, SCM_SETAND_CAR, SCM_SETOR_CAR,
525 SCM_SET_AND_CDR, SCM_SET_OR_CDR, SCM_FREEP, SCM_NFREEP,
526 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
527 SCM_GCCDR, scm_remember, scm_the_root_module, scm_make_module,
528 scm_ensure_user_module, scm_load_scheme_module, scm_port,
529 scm_ptob_descriptor, scm_port_rw_active,
530 scm_close_all_ports_except): New.
532 * ports.c (scm_c_port_for_each): New function, mostly copied from
534 (scm_port_for_each): Reimplemented using scm_c_port_for_each.
535 * ports.h (scm_c_port_for_each): New prototype.
537 2003-04-28 Mikael Djurfeldt <djurfeldt@nada.kth.se>
539 * eval.c (scm_m_atdispatch): Removed until actually needed. (This
540 macro was introduced in anticipation of GOOPS method compilation
543 * goops.c: Removed binding of @dispatch.
545 2003-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
547 * eval.c, goops.c (@dispatch, @slot-ref, @slot-set!): Move the
548 instructions that bind the macros on the scheme level back to
549 goops.c in order to make sure again that the bindings go into the
550 (oop goops) module and are not visible from the outside.
552 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
554 * eval.c: Non functional change: Separated R5RS and non-R5RS
555 macros into different sections of the file and ordered the
556 memoizers alphabetically.
558 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
560 * eval.c (scm_ilookup): Rewritten to improve readability.
562 2003-04-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
564 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
565 Partially reverted patch from 2003-04-23 in oder to find a better
566 compromise between readability and debuggability.
568 2003-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
570 * eval.c, eval.h, goops.c, goops.h (scm_m_atslot_ref,
571 scm_m_atslot_set_x, scm_m_atdispatch): Move the declarations and
572 definitions of the special goops memoizers from goops.[ch] to
573 eval.[ch]. Hmm... it seems that scm_m_atdispatch is not used
576 2003-04-24 Mikael Djurfeldt <mdj@kvast.blakulla.net>
578 * ports.c, ports.h (scm_i_port_table_mutex): New mutex.
580 * fports.c (scm_evict_ports): Lock/unlock scm_i_port_table_mutex.
582 * ports.c (scm_close_port, scm_flush_all_ports): Ditto.
584 * ioext.c (scm_fdes_to_ports): Ditto.
586 * vports.c (scm_make_soft_port): Changed SCM_DEFER/ALLOW_INTS into
587 lock/unlock scm_i_port_table_mutex.
589 * strports.c (scm_mkstrport): Ditto.
591 * ports.c (scm_void_port, scm_port_for_each): Ditto.
593 * fports.c (scm_fdes_to_port): Ditto.
595 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
597 This set of patches contains no functional changes, only debatable
598 minor stylistic ones. Still, in order to prepare a patch between
599 my local copy and the CVS version, I decided to submit the changes
600 below. Then, the patch will hopefully only contain relevant
603 * eval.c (iqq): Added const specifier.
605 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
606 Use NULL instead of 0 to indicate that a pointer is returned.
607 Removed some misleading 'fall through' comments.
609 * eval.c (scm_i_call_closure_0, call_closure_1, call_closure_2):
610 Split up long expressions into smaller ones to be more debugging
613 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
615 * eval.h (SCM_ENTER_FRAME_HDLR, SCM_APPLY_FRAME_HDLR,
616 SCM_EXIT_FRAME_HDLR): Use SCM_PACK to convert data to a SCM value
617 rather than casting to SCM.
619 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
621 * sort.c, pairs.h: Removed unnecessary includes.
623 2003-04-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
625 * sort.c: Replaced hand-made trampline code by the new official
626 mechanism from eval.c. This fixes a segfault in the new test file
629 (quicksort, compare_function, scm_restricted_vector_sort_x,
630 scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
631 scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
632 scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
633 scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
636 (subr2less, lsubrless, closureless, applyless, scm_cmp_function,
639 (compare_function): Added.
641 * sort.c (quicksort, SWAP, stack_node): Replaced pointer
642 arithmetics with index arithmetics. Changed quicksort to work on
643 an array of SCM values instead of an array of characters. Avoid
644 bytewise copying of SCM elements. Avoid allocating memory on the
645 stack with alloca. Fixed some comments.
647 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
649 * eval.c (EXTEND_ENV): Eliminated.
651 (unmemocopy, SCM_CEVAL, SCM_APPLY): Use SCM_EXTEND_ENV instead of
654 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
656 * __scm.h (SCM_DEBUG_DEBUGGER_SUPPORT): New compile-time option.
658 * gc.card.c (scm_gc_marked_p): Fixed compiler warning when
659 compiling with SCM_DEBUG==1 by moving definition behind prototype.
661 * gc.card.c (scm_dbg_t_list_cell, scm_dbg_t_double_cell,
662 scm_dbg_gc_marked_p, scm_dbg_gc_get_card, scm_dbg_gc_get_bvec,
663 scm_t_list_cell_struct, scm_t_list_cell, scm_t_double_cell,
664 scm_gc_marked_p, scm_gc_get_card, scm_gc_get_bvec): Fixed
665 functions such that they check if the object is a non-immediate.
666 Further, renamed identifiers to use the scm_dbg_ prefix and made
667 their inclusion into the lib dependent of the
668 SCM_DEBUG_DEBUGGER_SUPPORT compile time option.
670 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
672 * __scm.h: Fixed comment about the SCM_DEBUG_TYPING_STRICTNESS
675 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
677 * list.c (scm_ilength, scm_last_pair), unif.c (l2ra): Prefer
678 !SCM_CONSP over SCM_NCONSP. Now, guile itself does not include
679 any calls to SCM_NCONSP any more.
681 * unif.c (l2ra): Eliminate redundant check.
683 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
685 * list.c (scm_cons_star), ramap.c (scm_ra_sum, scm_ra_product,
686 scm_array_map_x), unif.c (l2ra): Prefer !SCM_NULLP over
687 SCM_NNULLP. Now, guile itself does not include any calls to
690 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
692 * eval.c (unmemocopy, SCM_APPLY, scm_map, scm_for_each,
693 scm_copy_tree): Place assignment expressions which are part of
694 other expressions into an expression of their own.
696 2003-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
698 * goops.c (TEST_CHANGE_CLASS, scm_sys_initialize_object): Don't
699 compare SCM values with !=.
701 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
703 * eval.c, eval.h, evalext.c, evalext.h (scm_sym_setter,
704 scm_m_generalized_set_x, scm_init_evalext): Move the declaration
705 and definition of the memoizer for the generalized set! macro from
706 evalext.[ch] to eval.[ch]. Use the SCM_SYNTAX snarfer macro to
707 define the macro object.
709 * eval.c, eval.h (s_set_x, scm_s_set_x, scm_m_set_x,
710 scm_m_generalized_set_x): Since now scm_s_set_x is only used in
711 eval.c, it is made static and renamed to s_set_x.
713 * evalext.c (scm_defined_p, scm_m_undefine): Prefer !SCM_<foo>
716 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
718 * eval.c, root.h (scm_undefineds, SCM_NUM_PROTECTS, undefineds,
719 scm_init_eval): Made scm_undefineds static in eval.c, renamed it
720 to undefineds and registered the object as a permanent object.
722 * eval.c, eval.h (scm_f_apply, scm_init_eval): Made scm_f_apply
723 static in eval.c, renamed it to f_apply and registered the object
724 as a permanent object.
726 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
728 * eval.c (SCM_BIT7, SCM_BIT8, unmemocopy, SCM_CEVAL): Renamed
729 file-local macro SCM_BIT8 to SCM_BIT7, which is more appropriate.
731 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
733 * numbers.c (scm_logtest): Fixed argument bug in the call to
734 mpz_and, which showed up when compiling with SCM_DEBUG defined.
736 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
738 * gc-card.c (scm_i_sweep_card, scm_i_init_card_freelist): Fixed
739 type errors that showed up when compiling with SCM_DEBUG defined.
741 2003-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
743 * continuations.c, continuations.h, eval.c, eval.h, extensions.c,
744 gsubr.c, guile.c, init.c, read.c, root.c, root.h, stackchk.h,
745 throw.c: Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
746 fix compile errors with --disable-deprecated.
748 2003-04-17 Rob Browning <rlb@defaultvalue.org>
750 * numbers.c (scm_integer_expt): fix case where we were declaring
751 vars in the middle of a statement block. Thanks to Thamer
754 2003-04-17 Mikael Djurfeldt <djurfeldt@nada.kth.se>
756 * goops.c (TEST_CHANGE_CLASS): Update variable class after class
759 * eq.c (scm_eqv_p): Turned into a primitive generic.
761 2003-04-16 Rob Browning <rlb@defaultvalue.org>
763 * gc_os_dep.c: Added patch for UnixWare and OpenUNIX support.
764 Thanks to Boyd Gerber.
765 Added check for __arm__ in addition to arm for LINUX and copied
766 __s390__ defines from upstream libgc. Thanks to James Treacy for
767 reporting the problems.
769 * numbers.c (PTRDIFF_MIN): use SCM_CHAR_BIT.
771 * socket.c: use SCM_CHAR_BIT.
773 * random.c (scm_c_random_bignum): use SCM_CHAR_BIT.
775 * num2integral.i.c (NUM2INTEGRAL): use SCM_CHAR_BIT.
777 2003-04-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
779 * feature.c (scm_init_feature): Always add threads feature.
781 2003-04-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
783 * goops.c (scm_sys_fast_slot_ref): Use SCM_SLOT instead of
784 scm_at_assert_bound_ref. (We don't want the unbound check. See
785 oop/goops/active-slot.scm.)
787 2003-04-14 Rob Browning <rlb@defaultvalue.org>
789 * tags.h: scm_t_intptr should have been intptr_t.
791 2003-04-13 Rob Browning <rlb@defaultvalue.org>
793 * __scm.h (SCM_FLUSH_REGISTER_WINDOWS): don't just rely on "sparc"
795 #if defined (sparc) || defined (__sparc__) || defined (__sparc)
796 as gc_os_dep.c suggests is appropriate.
798 * goops.c (prep_hashsets): make static to match prototype.
799 (scm_sym_args): SCM_SYMBOL -> SCM_GLOBAL_SYMBOL. Thanks to Albert
802 * c-tokenize.lex: remove trailing comma from enum. Thanks to
805 * gc_os_dep.c: add NetBSD powerpc config info. Thanks to Thomas
808 2003-04-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
810 * goops.c (scm_sys_prep_layout_x): Instance allocation is now
811 indicated through extra fields in getters-n-setters.
812 (scm_add_slot): Adapted to new format of getters_n_setters slot.
813 (Thanks to Andy Wingo.)
815 2003-02-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
817 * gc-segment.c: add comment
819 2003-04-07 Rob Browning <rlb@defaultvalue.org>
821 * debug.h: change "id" arg name to "info_id" to avoid objective-c
824 * num2integral.i.c (NUM2INTEGRAL): fix bug pointed out by Mikael
825 and add regression test to standalone/.
827 2003-04-06 Rob Browning <rlb@defaultvalue.org>
829 * strings.c (scm_mem2string): use memcpy rather than by-hand loop.
830 Thanks to Dale P. Smith.
832 * random.c: #include gmp.h.
833 (scm_c_random_bignum): normalize result on return.
835 * init.c: #include gmp.h.
837 * numbers.h: remove the gmp.h #include (not needed now).
839 * posix.h: change occurences of "id" to something else so we don't
840 cause trouble when included via objective-c (can't hurt, might
841 help). Still have usage in debug.h, though.
843 2003-04-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
845 * random.c (scm_c_random_bignum): Don't generate a random number
846 equal to m (the second argument of scm_c_random_bignum); only
847 generate numbers in the range 0 <= r < m.
848 (scm_c_default_rstate): Use SCM_VARIABLE_REF to access
849 scm_var_random_state.
851 * num2integral.i.c (INTEGRAL2BIG): Put negation of n inside then
854 2003-04-05 Rob Browning <rlb@defaultvalue.org>
856 * modules.c (scm_module_import_interface): move declaration of
857 uses before any code.
859 2003-04-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
861 * Makefile.am (scmconfig.h): Look for config.h in top_builddir,
864 * hashtab.c (rehash_after_gc): Clear to_rehash list before
865 processing it in order to avoid an infinite loop.
867 * print.c (scm_prin1): Remember old state of pstate->writingp.
869 2003-04-05 Marius Vollmer <mvo@zagadka.de>
871 * Changed license terms to the plain LGPL thru-out.
873 2003-04-04 Rob Browning <rlb@defaultvalue.org>
875 * socket.c (FLIPCPY_NET_HOST_128): new macro.
876 (ipv6_net_to_num, ipv6_num_to_net, bignum_in_ipv6_range_p):
877 rewrite to handle GMP bignums.
880 * random.c (scm_c_random_bignum): rewrite to handle GMP bignums.
882 * ports.c (scm_getc): minor tweak.
884 * numbers.h: remove SCM_BIGDIG conditionals, reorganize, and
885 rewrite to handle GMP bignums.
887 * numbers.c: rewrite *many* functions to handle GMP bignums.
889 * num2integral.i.c (NUM2INTEGRAL, INTEGRAL2NUM, INTEGRAL2BIG):
892 * num2float.i.c (NUM2FLOAT): handle GMP bignums.
894 * init.c (check_config): remove SCM_BIGDIG conditionals.
895 (scm_init_guile_1): test to make sure mpz_t fits in a double_cell.
897 * gc-card.c ("sweep_card"): handle new mpz_t bignums.
899 * eval.c: remove SCM_BIGDIG conditionals.
901 * eq.c (s_scm_eqv_p): scm_i_bigcomp -> scm_i_bigcmp.
903 2003-03-31 Rob Browning <rlb@defaultvalue.org>
905 * Makefile.am (scmconfig.h): change srcdir to builddir. (Thanks
908 2003-03-27 Rob Browning <rlb@defaultvalue.org>
910 * threads.h: fix various preprocessor usages of new public
911 symbols to expect 0 or 1 values rather than 1 or undefined.
912 i.e. change #ifdef to #if, etc.
914 * threads.c: fix various preprocessor usages of new public
915 symbols to expect 0 or 1 values rather than 1 or undefined.
916 i.e. change #ifdef to #if, etc.
918 * tags.h: fix various preprocessor usages of new public
919 symbols to expect 0 or 1 values rather than 1 or undefined.
920 i.e. change #ifdef to #if, etc.
922 * stacks.c: fix various preprocessor usages of new public
923 symbols to expect 0 or 1 values rather than 1 or undefined.
924 i.e. change #ifdef to #if, etc.
926 * stackchk.h: fix various preprocessor usages of new public
927 symbols to expect 0 or 1 values rather than 1 or undefined.
928 i.e. change #ifdef to #if, etc.
930 * stackchk.c: fix various preprocessor usages of new public
931 symbols to expect 0 or 1 values rather than 1 or undefined.
932 i.e. change #ifdef to #if, etc.
934 * sort.c: fix various preprocessor usages of new public
935 symbols to expect 0 or 1 values rather than 1 or undefined.
936 i.e. change #ifdef to #if, etc.
938 * read.c: fix various preprocessor usages of new public
939 symbols to expect 0 or 1 values rather than 1 or undefined.
940 i.e. change #ifdef to #if, etc.
942 * random.c: fix various preprocessor usages of new public
943 symbols to expect 0 or 1 values rather than 1 or undefined.
944 i.e. change #ifdef to #if, etc.
946 * print.c: fix various preprocessor usages of new public
947 symbols to expect 0 or 1 values rather than 1 or undefined.
948 i.e. change #ifdef to #if, etc.
950 * objects.c: fix various preprocessor usages of new public
951 symbols to expect 0 or 1 values rather than 1 or undefined.
952 i.e. change #ifdef to #if, etc.
954 * numbers.h: fix various preprocessor usages of new public
955 symbols to expect 0 or 1 values rather than 1 or undefined.
956 i.e. change #ifdef to #if, etc.
958 * null-threads.c: fix various preprocessor usages of new public
959 symbols to expect 0 or 1 values rather than 1 or undefined.
960 i.e. change #ifdef to #if, etc.
962 * lang.c: fix various preprocessor usages of new public
963 symbols to expect 0 or 1 values rather than 1 or undefined.
964 i.e. change #ifdef to #if, etc.
966 * lang.h: fix various preprocessor usages of new public
967 symbols to expect 0 or 1 values rather than 1 or undefined.
968 i.e. change #ifdef to #if, etc.
970 * iselect.h: fix various preprocessor usages of new public
971 symbols to expect 0 or 1 values rather than 1 or undefined.
972 i.e. change #ifdef to #if, etc.
974 * init.c: fix various preprocessor usages of new public
975 symbols to expect 0 or 1 values rather than 1 or undefined.
976 i.e. change #ifdef to #if, etc.
978 * gh_data.c: fix various preprocessor usages of new public
979 symbols to expect 0 or 1 values rather than 1 or undefined.
980 i.e. change #ifdef to #if, etc.
982 * gh.h: fix various preprocessor usages of new public
983 symbols to expect 0 or 1 values rather than 1 or undefined.
984 i.e. change #ifdef to #if, etc.
986 * gen-scmconfig.c: change most new public symbols to be defined to
987 0 or 1 rather than being either 1 or undefined.
989 * gc_os_dep.c: fix various preprocessor usages of new public
990 symbols to expect 0 or 1 values rather than 1 or undefined.
991 i.e. change #ifdef to #if, etc.
992 (STACK_GROWS_DOWN): define to 0 or 1 rather than 1 or undef.
994 * gc.h: fix various preprocessor usages of new public
995 symbols to expect 0 or 1 values rather than 1 or undefined.
996 i.e. change #ifdef to #if, etc.
998 * gc-card.c: fix various preprocessor usages of new public
999 symbols to expect 0 or 1 values rather than 1 or undefined.
1000 i.e. change #ifdef to #if, etc.
1002 * gc-mark.c: fix various preprocessor usages of new public
1003 symbols to expect 0 or 1 values rather than 1 or undefined.
1004 i.e. change #ifdef to #if, etc.
1006 * feature.c: fix various preprocessor usages of new public
1007 symbols to expect 0 or 1 values rather than 1 or undefined.
1008 i.e. change #ifdef to #if, etc.
1010 * evalext.c: fix various preprocessor usages of new public
1011 symbols to expect 0 or 1 values rather than 1 or undefined.
1012 i.e. change #ifdef to #if, etc.
1014 * eval.h: fix various preprocessor usages of new public
1015 symbols to expect 0 or 1 values rather than 1 or undefined.
1016 i.e. change #ifdef to #if, etc.
1018 * eval.c: fix various preprocessor usages of new public
1019 symbols to expect 0 or 1 values rather than 1 or undefined.
1020 i.e. change #ifdef to #if, etc.
1022 * eq.c: fix various preprocessor usages of new public
1023 symbols to expect 0 or 1 values rather than 1 or undefined.
1024 i.e. change #ifdef to #if, etc.
1026 * coop.c: fix various preprocessor usages of new public
1027 symbols to expect 0 or 1 values rather than 1 or undefined.
1028 i.e. change #ifdef to #if, etc.
1030 * coop-threads.c: fix various preprocessor usages of new public
1031 symbols to expect 0 or 1 values rather than 1 or undefined.
1032 i.e. change #ifdef to #if, etc.
1034 * coop-pthreads.c: fix various preprocessor usages of new public
1035 symbols to expect 0 or 1 values rather than 1 or undefined.
1036 i.e. change #ifdef to #if, etc.
1038 * coop-defs.h: fix various preprocessor usages of new public
1039 symbols to expect 0 or 1 values rather than 1 or undefined.
1040 i.e. change #ifdef to #if, etc.
1042 * convert.i.c: fix various preprocessor usages of new public
1043 symbols to expect 0 or 1 values rather than 1 or undefined.
1044 i.e. change #ifdef to #if, etc.
1046 * continuations.c: fix various preprocessor usages of new public
1047 symbols to expect 0 or 1 values rather than 1 or undefined.
1048 i.e. change #ifdef to #if, etc.
1050 * _scm.h: fix various preprocessor usages of new public symbols to
1051 expect 0 or 1 values rather than 1 or undefined. i.e. change
1054 2003-03-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
1056 * init.c (scm_init_guile_1): Call scm_i_init_deprecated.
1058 * deprecated.c, deprecated.h: New files, to collect deprecated
1059 things in one place.
1060 * Makefile.am: Added them in all the right places.
1062 * Makefile.am (EXTRA_DIST): Added "scmconfig.h.top".
1063 (scmconfig.h): Get "scmconfig.h.top" from $(srcdir) so that VPATH
1065 (DOT_X_FILES): Removed "iselect.x".
1066 (DOT_DOC_FILES): Removed "iselect.doc".
1068 2003-03-25 Rob Browning <rlb@defaultvalue.org>
1070 * win32-socket.h: #include "libguile/__scm.h". Replace usage of
1071 HAVE_WINSOCK2_H with SCM_HAVE_WINSOCK2_H.
1073 * win32-socket.c: #include <config.h> if HAVE_CONFIG_H.
1075 * vports.c: #include <config.h> if HAVE_CONFIG_H.
1077 * unif.c: #include <config.h> if HAVE_CONFIG_H. Replace usage of
1078 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
1080 * threads.h: replace usage of struct timespect with
1081 scm_t_timespec. Replace usage of USE_PTHREAD_THREADS with
1082 SCM_USE_PTHREAD_THREADS. Remove typedef for struct timespec in
1083 favor of scm_t_timespec from scmconfig.h.
1085 * threads.c: move libguile/_scm.h include to the top so we pick up
1086 any critical defines like _GNU_SOURCE early. Replace usage of
1087 struct timespect with scm_t_timespec. Replace usage of
1088 STACK_GROWS_UP with SCM_STACK_GROWS_UP. Replace usage of
1089 USE_PTHREAD_THREADS with SCM_USE_PTHREAD_THREADS.
1091 * threads-plugin.h: replace usage of struct timespect with
1094 * threads-plugin.c: #include <config.h> if HAVE_CONFIG_H. Replace
1095 usage of struct timespect with scm_t_timespec.
1097 * tags.h: move HAVE_STDINT_H handling to scmconfig.h. Move
1098 HAVE_INTTYPES_H handling to scmconfig.h. #include
1099 "libguile/__scm.h". Rework handling for scm_t_bits,
1100 scm_t_signed_bits, SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
1101 SCM_T_SIGNED_BITS_MIN, and SIZEOF_SCM_T_BITS to use scm_t_intptr,
1102 scm_t_uintptr, SCM_SIZEOF_INTPTR_T, and SCM_SIZEOF_UINTPTR_T, and
1103 SCM_SIZEOF_UNSIGNED_LONG. Rename usage of HAVE_ARRAYS to
1106 * symbols.c: #include <config.h> if HAVE_CONFIG_H.
1108 * struct.c: #include <config.h> if HAVE_CONFIG_H.
1110 * strports.c: #include <config.h> if HAVE_CONFIG_H.
1112 * strop.c: #include <config.h> if HAVE_CONFIG_H.
1114 * stime.h: move handling of time related headers to scmconfig.h.
1116 * stime.c: #include <config.h> if HAVE_CONFIG_H.
1118 * stacks.c: replace usage of STACK_GROWS_UP with
1121 * sort.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
1122 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1124 * socket.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
1125 of uint32 and HAVE_UINT_32 with scm_t_int32.
1127 * smob.c: #include <config.h> if HAVE_CONFIG_H.
1129 * simpos.c: #include <config.h> if HAVE_CONFIG_H.
1131 * script.c: #include <config.h> if HAVE_CONFIG_H.
1133 * scmsigs.c: #include <config.h> if HAVE_CONFIG_H.
1135 * scmconfig.h.top: new file -- preamble for scmconfig.h.
1137 * rw.c: #include <config.h> if HAVE_CONFIG_H.
1139 * regex-posix.c: #include <config.h> if HAVE_CONFIG_H.
1141 * read.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1143 * rdelim.c: #include <config.h> if HAVE_CONFIG_H.
1145 * random.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
1146 of LONG32, LONG64, SIZEOF_LONG, and HAVE_LONG_LONGS with
1147 scm_t_int32, scm_t_int64, and SCM_HAVE_T_INT64. Rename usage of
1148 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1150 * ramap.c: replace usage of HAVE_LONG_LONGS with
1151 "SCM_SIZEOF_LONG_LONG != 0".
1153 * putenv.c: #include <config.h> if HAVE_CONFIG_H. #include
1154 "libguile/scmconfig.h".
1156 * pthread-threads.c: #include <config.h> if HAVE_CONFIG_H.
1158 * print.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1159 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
1161 * posix.c: #include <config.h> if HAVE_CONFIG_H.
1163 * ports.c: #include <config.h> if HAVE_CONFIG_H.
1165 * objects.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1167 * numbers.h: replace usage of HAVE_FLOATINGPOINT_H with
1168 SCM_HAVE_FLOATINGPOINT_H. Replace usage of HAVE_IEEEFP_H with
1169 SCM_HAVE_IEEEFP_H. Replace usage of HAVE_NAN_H with
1170 SCM_HAVE_NAN_H. Replace usage of STDC_HEADERS with
1171 SCM_HAVE_STDC_HEADERS. Replace usage of ptrdiff_t with
1172 scm_t_ptrdiff. Replace usage of HAVE_LONG_LONGS with
1173 "SCM_SIZEOF_LONG_LONG != 0".
1175 * numbers.c: #include <config.h> if HAVE_CONFIG_H. Replace usage
1176 of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0". Replace
1177 usage of ptrdiff_t with scm_t_ptrdiff. Replace usage of
1178 SIZEOF_PTRDIFF_T with SCM_SIZEOF_SCM_T_PTRDIFF.
1180 * num2integral.i.c: #include <config.h> if HAVE_CONFIG_H.
1182 * null-threads.h: replace usage of struct timespect with
1185 * net_db.c: #include <config.h> if HAVE_CONFIG_H.
1187 * mkstemp.c: #include <config.h> if HAVE_CONFIG_H. #include
1188 "libguile/__scm.h". Remove definition of gcc_uint64_t in favor of
1189 scm_t_uint64 and rename usages.
1191 * mallocs.c: #include <config.h> if HAVE_CONFIG_H.
1193 * load.c: #include <config.h> if HAVE_CONFIG_H.
1195 * iselect.h: move handling of time related headers to scmconfig.h.
1196 Rename usage of HAVE_SYS_SELECT_H to SCM_HAVE_SYS_SELECT_H.
1197 Rename usage of HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Rename
1198 usage of USE_COOP_THREADS to SCM_USE_COOP_THREADS.
1200 * iselect.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
1201 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
1202 USE_NULL_THREADS to SCM_USE_NULL_THREADS.
1204 * ioext.c: #include <config.h> if HAVE_CONFIG_H.
1206 * inline.h: #include "libguile/__scm.h" at the top. Change code
1207 to use SCM_C_INLINE and SCM_INLINE_C_INCLUDINT_INLINE_H to decide
1208 what to do instead of creating a new public #define. Rename usage
1209 of USE_COOP_THREADS to SCM_USE_COOP_THREADS. Rename usage of
1210 USE_NULL_THREADS to SCM_USE_NULL_THREADS. Rename usage of
1211 USE_COPT_THREADS to SCM_USE_COPT_THREADS.
1213 * inline.c: rearrange handling -- now we just #define
1214 SCM_INLINE_C_INCLUDING_INLINE_H to 1 and #include
1215 "libguile/inline.h". scmconfig.h will define SCM_C_INLINE as
1216 appropriate, and we use that in inline.h along with the above
1217 define to determine how to respond.
1219 * init.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
1220 HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1222 * guile.c: #include <config.h> if HAVE_CONFIG_H.
1224 * gh_data.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
1225 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1227 * gh.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1229 * gen-scmconfig.h.in: new file -- see gen-scmconfig.c for details.
1231 * gen-scmconfig.c: new file -- see comments in file for details.
1233 * gdbinit.c: #include <config.h> if HAVE_CONFIG_H.
1235 * gc_os_dep.c: #include <config.h> if HAVE_CONFIG_H. Replace
1236 usage of STACK_GROWS_UP with SCM_STACK_GROWS_UP.
1238 * gc.h: replace usage of SIZEOF_LONG with
1239 SCM_SIZEOF_UNSIGNED_LONG. Replace usage of USE_PTHREAD_THREADS
1240 with SCM_USE_PTHREAD_THREADS. Remove SCM_SIZEOF_LONG definition
1241 since we handle that in scmconfig.h now.
1243 * gc.c: #include <config.h> if HAVE_CONFIG_H.
1245 * gc-mark.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
1246 of HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of
1247 HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
1249 * gc-malloc.c: #include <config.h> if HAVE_CONFIG_H.
1251 * gc-card.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1252 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
1254 * fports.c: #include <config.h> if HAVE_CONFIG_H.
1256 * filesys.c: #include <config.h> if HAVE_CONFIG_H.
1258 * feature.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
1259 of USE_NULL_THREADS to SCM_USE_NULL_THREADS.
1261 * extensions.c: #include <config.h> if HAVE_CONFIG_H.
1263 * evalext.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1264 Replace usage of HAVE_LONG_LONGS with "SCM_SIZEOF_LONG_LONG != 0".
1266 * eval.c: #include <config.h> if HAVE_CONFIG_H. #include
1267 "libguile/__scm.h" rather than scmconfig.h. Rename usage of
1268 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
1269 with "SCM_SIZEOF_LONG_LONG != 0".
1271 * error.c: #include <config.h> if HAVE_CONFIG_H.
1273 * eq.c: #include <config.h> if HAVE_CONFIG_H. Rename usage of
1274 HAVE_ARRAYS to SCM_HAVE_ARRAYS. Replace usage of HAVE_LONG_LONGS
1275 with "SCM_SIZEOF_LONG_LONG != 0".
1277 * deprecation.c: #include <config.h> if HAVE_CONFIG_H.
1279 * coop.c: replace usage of struct timespect with scm_t_timespec.
1280 #include <config.h> if HAVE_CONFIG_H.
1282 * coop-threads.c: #include "libguile/_scm.h" early. Replace
1283 usage of struct timespect with scm_t_timespec. Replace usage of
1284 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
1286 * coop-pthreads.c: #include "libguile/_scm.h" early. Replace
1287 usage of struct timespect with scm_t_timespec. Replace usage of
1288 STACK_GROWS_UP with SCM_STACK_GROWS_UP.
1290 * coop-defs.h: move handling of time related headers to
1291 scmconfig.h. Add #include "libguile/__scm.h". Rename usage of
1292 HAVE_WINSOCK2_H to SCM_HAVE_WINSOCK2_H. Replace usage of struct
1293 timespect with scm_t_timespec.
1295 * convert.i.c: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1297 * convert.h: rename usage of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1299 * convert.c: #include <config.h> if HAVE_CONFIG_H. Rename usage
1300 of HAVE_ARRAYS to SCM_HAVE_ARRAYS.
1302 * continuations.c: move libguile/_scm.h include to the top so we
1303 pick up any critical defines like _GNU_SOURCE early.
1305 * backtrace.c: #include <config.h> if HAVE_CONFIG_H.
1307 * async.c: #include <config.h> if HAVE_CONFIG_H.
1309 * alloca.c: #include <config.h> if HAVE_CONFIG_H.
1311 * _scm.h: #include <config.h> if HAVE_CONFIG_H.
1312 Rename usage of USE_PTHREAD_THREADS to SCM_USE_PTHREAD_THREADS.
1314 * __scm.h: move libguile/scmconfig.h include up to the top, so
1315 we're sure to pick up any critical defines like _GNU_SOURCE early.
1316 #include <limits.h> removed in favor of scmconfig.h inclusion when
1317 appropriate. STDC_HEADERS based inclusion of stdlib.h,
1318 sys/types.h, stddef.h, and sys/stdtypes.h removed in favor of
1319 scmconfig.h inclusion when appropriate. Various Win32 related
1320 definitions removed in favor of scmconfig.h inclusion when
1322 (HAVE_UINTPTR_T): definition removed (see NEWS).
1323 (SIZEOF_PTRDIFF_T): definition removed (see NEWS).
1324 (HAVE_LONG_LONGS): definition removed (see NEWS).
1325 (HAVE_LONG_LONG): definition removed (see NEWS).
1326 (HAVE_PTRDIFF_T): definition removed (see NEWS).
1328 * Makefile.am: scmconfig.h is now generated by building and
1329 running gen-scmconfig.h and capturing its output. gen-scmconfig
1330 uses config.h and the configure.in generated gen-scmconfig.h to
1331 decide what to output. See gen-scmconfig.c for details.
1332 (noinst_PROGRAMS): add gen-scmconfig.
1333 (gen_scmconfig_SOURCES): new variable.
1334 (gen-scmconfig.$(OBJEXT)): new target - be careful to handle
1335 cross-compiling right.
1336 (scmconfig.h): build scmconfig.h from gen-scmconfig's output.
1337 (BUILT_SOURCES): add scmconfig.h.
1339 2003-03-19 Marius Vollmer <mvo@zagadka.de>
1341 * gc_os_dep.c: Added defines for sparc-unknown-netbsdelf1.5 from
1342 Adrian Bunk. Thanks!
1344 2003-03-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1346 * goops.c (make_class_from_template): New fourth arg:
1348 (scm_class_extended_generic_with_setter, scm_class_self): Fixed
1351 * smob.c (scm_set_smob_apply): Call scm_i_inherit_applicable.
1353 * goops.c, objects.c, objects.h (scm_make_extended_class): New
1354 second arg: applicablep.
1355 (scm_i_inherit_applicable): New function.
1357 * goops.c, goops.h (scm_class_applicable,
1358 scm_class_extended_accessor): New classes.
1360 2003-03-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
1362 * procs.c (scm_procedure_documentation): Removed redundant
1363 SCM_NIMP test and replaced other calls to SCM_IMP by more explicit
1366 2003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1368 * list.c, list.h (scm_filter, scm_filter_x): New functions.
1370 * modules.c (scm_module_import_interface): New function.
1372 * goops.c, goops.h (scm_class_accessor_method): Renamed from
1374 (scm_class_accessor): New class.
1376 2003-03-06 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1378 * goops.c (scm_primitive_generic_generic): Enable primitive
1379 generic if not enabled.
1380 (scm_sys_goops_loaded): Setup unextended primitive generics.
1382 * goops.c, goops.h (scm_c_extend_primitive_generic): New function.
1384 * snarf.h (SCM_PRIMITIVE_GENERIC, SCM_PRIMITIVE_GENERIC_1): New
1387 * numbers.c (scm_abs): Use SCM_PRIMITIVE_GENERIC. (This is only a
1388 testing example. All uses of SCM_GPROC should be converted.)
1390 * procprop.c (scm_stand_in_scm_proc): Use scm_assq instead of
1393 * eq.c (scm_equal_p): Turned into a primitive generic.
1395 2003-02-27 Rob Browning <rlb@defaultvalue.org>
1397 * Makefile.am (scmconfig.h): new target -- generate file from
1399 (modinclude_HEADERS): remove version.h.
1400 (nodist_modinclude_HEADERS): add version.h.
1402 2003-02-24 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1404 This fixes a serious GC bug, introduced during the latest
1405 reorganization of the GC, which disabled freeing of structs and
1408 * struct.c (scm_struct_prehistory): Init scm_i_structs_to_free to
1410 (scm_struct_prehistory): Move scm_free_structs to
1411 scm_before_mark_c_hook.
1413 * gc-card.c (sweep_card): Check that we haven't swept structs on
1414 this card before. That can happen if scm_i_sweep_all_segments has
1415 been called from some other place than scm_igc.
1417 2003-02-19 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1419 * environments.c (DEFAULT_OBARRAY_SIZE): Changed from 137 to 31
1420 (since hash tables now adapt their size).
1422 * modules.c (scm_modules_prehistory): Changed from 2001 to 1533
1423 (current number of prehistory bindings; hashtable code will select
1424 a prime which is greater than this value).
1426 * symbols.c (scm_symbols_prehistory): Changed from 1009 to 2139
1427 (current number of initial symbols).
1429 * properties.c (scm_init_properties): Don't specify size of
1430 scm_properties_whash.
1432 * objprop.c (scm_init_objprop): Don't specify size of
1435 * keywords.c (scm_init_keywords): Don't specify a hash table size.
1437 * hooks.c (scm_c_hook_add): Fixed bug in append mode.
1439 The following changes introduce the use of resizable hash tables
1440 throughout Guile. It also renames the old *-hash-table* functions
1441 to *-alist-vector* and places them, together with the rest of the
1442 weak vector support, in the module (ice-9 weak-vector). We should
1443 probably introduce a new, better, API for weak references, for
1444 example "weak pairs" a la MIT-Scheme. (In Chez scheme, they even
1445 look like and are used like ordinary pairs.)
1447 * environments.c (obarray_enter, obarray_retrieve, obarray_remove,
1448 leaf_environment_fold, obarray_remove_all): Use hashtable
1451 * gc.c (scm_init_storage): Moved hook initialization to
1452 scm_storage_prehistory.
1453 (scm_storage_prehistory): New function.
1454 (scm_igc): Added commentary about placement of
1455 scm_after_sweep_c_hook.
1457 * gc-mark.c (scm_mark_all): Use hashtable accessors.
1458 (scm_gc_mark_dependencies): Use SCM_WVECT_WEAK_KEY_P and
1459 SCM_WVECT_WEAK_VALUE_P.
1461 * hashtab.c, hashtab.h (scm_hash_for_each, scm_hash_map): New
1463 (scm_vector_to_hash_table, scm_c_make_resizing_hash_table):
1465 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table,
1466 scm_make_doubly_weak_hash_table): Moved here from weaks.c.
1468 * init.c (scm_init_guile_1): Removed call to scm_init_weaks; Added
1469 calls to scm_storage_prehistory and scm_hashtab_prehistory.
1471 * modules.c (module-reverse-lookup): Use hashtable accessors.
1473 * symbols.c, symbols.h (scm_i_hash_symbol): New function.
1475 * weaks.c, weaks.h (scm_make_weak_key_alist_vector,
1476 scm_make_weak_value_alist_vector,
1477 scm_make_doubly_weak_alist_vector): New functions.
1479 * weaks.c (scm_init_weaks_builtins): New function.
1481 * weaks.h (SCM_WVECTF_WEAK_KEY, SCM_WVECTF_WEAK_VALUE,
1482 SCM_WVECTF_NOSCAN, SCM_WVECT_WEAK_KEY_P, SCM_WVECT_WEAK_VALUE_P,
1483 SCM_WVECT_NOSCAN_P): New macros.
1485 * weaks.c (scm_scan_weak_vectors): Use SCM_WVECT_WEAK_KEY_P
1486 and SCM_WVECT_WEAK_VALUE_P.
1488 * weaks.c, weaks.h (scm_i_allocate_weak_vector): Renamed from
1489 allocate_weak_vector and exported.
1491 2003-02-13 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1493 * hashtab.c: Undid thread safety. (We decided that it's better to
1494 let the user explicitly protect the tables (or not) according what
1495 is suitable for the application.)
1497 2003-02-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1499 * hashtab.c (scm_hash_fn_remove_x, scm_internal_hash_fold): Made
1500 thread safe and handle resizing tables.
1501 (scm_ihashx, scm_sloppy_assx, scm_delx_x): Removed
1502 SCM_DEFER/ALLOW_INTS.
1504 2003-02-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1506 * hashtab.c (scm_vector_to_hash_table,
1507 scm_c_make_resizing_hash_table, scm_make_hash_table): New
1509 (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x): Made thread
1510 safe and handle resizing tables.
1512 * weaks.c (scm_make_weak_key_hash_table,
1513 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
1514 Size argument made optional. Return resizable table if not
1517 2003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1519 * eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
1520 Fixed formals tests for closures. (Thanks to Kevin Ryde.)
1522 2003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1524 * debug.c (scm_procedure_source): Handle all objects for which
1525 procedure? is #t. (Thanks to Bill Schottstaedt.)
1527 2003-01-23 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1529 * futures.c (mark_futures): Don't need to mark data of recycled
1531 (scan_futures, cleanup_undead): Be smarter about marking
1532 futures---avoid unnecessary passes through future lists.
1534 * futures.h, futures.c: New files; Introduced recycling of
1535 futures. For fine-grained threading this lifts performance to
1536 another level. We can now use parallelization in inner loops of
1537 Guile programs without impossible overhead.
1539 * threads.h, threads.c: Moved futures to their own file.
1541 * Makefile.am (libguile_la_SOURCES): Added futures.c.
1542 (DOT_X_FILES): Added futures.x.
1543 (DOT_DOC_FILES): Added futures.doc.
1544 (modinclude_HEADERS): Added futures.h.
1546 * threads.c, threads.h (scm_i_create_thread): Renamed from
1547 create_thread and made global.
1549 * futures.c (scm_make_future): New procedure.
1551 * eval.c: #include "libguile/futures.h".
1553 * init.c: #include "futures.h"
1554 (scm_init_guile_1): Call scm_init_futures.
1556 * stime.c (SCM_TIME_UNITS_PER_SECOND): Renamed from CLKTCK.
1558 * stime.h (SCM_TIME_UNITS_PER_SECOND): Definition moved here.
1560 * eval.c, eval.h (scm_trampoline_0, scm_i_call_closure_0): New
1563 * eval.c (scm_trampoline_1): Fixed arguments test for closures.
1565 2003-01-22 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1567 * threads.c (create_thread): Don't unwind dynwind chain of parent
1568 thread before creation. Just start the new thread with an empty
1571 2003-01-20 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1573 * evalext.c, evalext.h (scm_self_evaluating_p): New function.
1575 2003-01-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1577 * threads.c (scm_timed_wait_condition_variable): Support timed
1578 waiting also for simple condition variables.
1580 * goops.c (TEST_CHANGE_CLASS): Use scm_change_object_class instead
1581 of calling the procedure change-object-class.
1583 2003-01-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1585 * ramap.c (scm_ramapc): Typo in error message.
1587 2003-01-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1589 * goops.c (scm_sys_prep_layout_x): Bugfix: Only create layout for
1590 slots with instance allocation.
1592 * goops.c, goops.h (scm_class_extended_generic_with_setter): New
1594 (scm_compute_applicable_methods): Use scm_generic_function_methods.
1596 * goops.c (scm_generic_function_methods): Support extended
1599 2002-12-29 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1601 * eval.c (unmemocopy): Bugfix: scm_sym_delay --> scm_sym_future.
1602 Thanks to Neil for pointing this out!
1604 2002-12-29 Neil Jerram <neil@ossau.uklinux.net>
1606 * lang.h: Remove declarations matching definitions removed from
1607 lang.c (just below).
1609 2002-12-28 Neil Jerram <neil@ossau.uklinux.net>
1611 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
1612 scm_m_while, scm_nil_eq): Remove definitions that were superfluous
1613 and already commented out.
1615 * read.h (scm_lreadparen), read.c (scm_lreadr, scm_read_token,
1616 scm_lreadparen): Support reading vectors with Elisp syntax if
1617 SCM_ELISP_READ_EXTENSIONS is defined. (SCM_ELISP_READ_EXTENSIONS
1618 is not currently defined, and there isn't even a configure switch
1621 2002-12-26 Marius Vollmer <mvo@zagadka.ping.de>
1623 * Makefile.am (c-tokenize.o): Refer to source via $< so that vpath
1625 (EXTRA_DIST): Added version.h.in.
1627 2002-12-21 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1629 This change makes it possible for one thread to do lazy sweeping
1630 while other threads are running. Now only the mark phase need to
1631 have all threads asleep. We should look further into this issue.
1632 Presently, I've put the locking of scm_i_sweep_mutex at
1633 "conservative" places due to my current lack of knowledge about
1634 the garbage collector. Please feel free to restrict these regions
1635 further to allow for maximal parallelism!
1637 * gc.c, gc.h (scm_i_sweep_mutex): New mutex.
1639 * gc.c (scm_gc_for_newcell), gc-malloc.c (scm_realloc,
1640 scm_gc_register_collectable_memory): Substitute locking of
1641 scm_i_sweep_mutex for calls to scm_i_thread_put_to_sleep.
1642 (scm_igc): Lock sweep mutex here instead of in callers; Calls to
1643 scm_i_thread_put_to_sleep/scm_i_thread_wake_up used to demarkate
1644 the single-thread section (which now only contains the mark
1646 (scm_gc): Don't lock sweeo mutex here since scm_igc locks it;
1647 Removed SCM_DEFER/ALLOW_INTS. Simply call scm_igc directly.
1649 * threads.c (gc_section_mutex): Removed.
1651 2002-12-19 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1653 * threads.c (create_thread): Clear parent field in root state in
1654 order not to unnecessarily remember dead threads.
1656 * eval.c (call_subr2o_1, call_lsubr2_2): New functions.
1657 (scm_trampoline_1, scm_trampoline_2): Use them.
1659 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1661 Partial introduction of real plugin interface.
1663 * Makefile.am (modinclude_HEADERS): Added threads-plugin.h.
1664 (EXTRA_DIST): Added threads-plugin.c.
1666 * threads-plugin.h, threads-plugin.c: New files.
1668 * threads.h: #include "libguile/threads-plugin.h".
1670 * threads.c: #include "libguile/threads-plugin.c".
1672 * pthread-threads.c: Temporarily remove debugging functions.
1674 * threads.c, threads.h (scm_yield): Added back.
1676 2002-12-18 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1678 * threads.c (really_launch): Detach before unlocking
1679 thread_admin_mutex in order not to risk being joined.
1680 (scm_i_thread_put_to_sleep, scm_i_thread_wake_up): Keep
1681 thread_admin_mutex locked during GC.
1683 * pthread-threads.c, pthread-threads.h: Improvements to debugging
1686 2002-12-16 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1688 * pthread-threads.c, pthread-threads.h (SCM_DEBUG_THREADS): Added
1689 support for debugging mutex operations.
1691 * threads.c (scm_thread): Removed filed joining_threads.
1692 (thread_print): Print thread number as well as address of thread
1694 (scm_join_thread): Bugfix.
1695 (scm_lock_mutex, scm_try_mutex, scm_unlock_mutex,
1696 scm_timed_wait_condition_variable, scm_signal_condition_variable,
1697 scm_broadcast_condition_variable): Use the low-level API.
1698 (scm_all_threads): Return copy of thread list (to prevent
1699 unintended destruction).
1700 (scm_threads_prehistory): Initialize heap_mutex of fake thread.
1702 * pthread-threads.c, pthread-threads.h, threads.c: Fixes to
1703 pthread "native" recursive mutex support.
1705 2002-12-15 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1707 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): New definitions.
1708 Simply lock a thread C API recursive mutex.
1709 (SCM_NONREC_CRITICAL_SECTION_START,
1710 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
1711 SCM_REC_CRITICAL_SECTION_END): Removed.
1713 * eval.c: Replaced SOURCE_SECTION_START / SOURCE_SECTION_END with
1714 direct calls to scm_rec_mutex_lock / unlock around the three calls
1715 to scm_m_expand_body.
1717 * eval.c, eval.h (promise_free): New function.
1718 (scm_force): Rewritten; Now thread-safe; Removed
1719 SCM_DEFER/ALLOW_INTS.
1721 * pthread-threads.h: Added partially implemented plugin interface
1722 for recursive mutexes. These are, for now, only intended to be
1723 used internally within the Guile implementation.
1725 * pthread-threads.c: New file.
1727 * threads.c: Conditionally #include "pthread-threads.c".
1729 * eval.c, eval.h (scm_makprom, scm_force): Rewritten to be
1732 * snarf.h (SCM_MUTEX, SCM_GLOBAL_MUTEX, SCM_REC_MUTEX,
1733 SCM_GLOBAL_REC_MUTEX): New macros.
1735 * eval.c, threads.c, threads.h, snarf.h: Rewrote critical section
1736 macros---use mutexes instead.
1738 * tags.h (SCM_IM_FUTURE): New tag.
1740 * eval.c (scm_m_future): New primitive macro.
1741 (SCM_CEVAL): Support futures.
1742 (unmemocopy): Support unmemoization of futures.
1744 * print.c (scm_isymnames): Name of future isym.
1746 * version.c: Unmade some changes to my private copy that got
1747 committed by mistake.
1749 2002-12-11 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1751 * gc-malloc.c, gc.h, init.c: Reverted gc-malloc change of
1754 * gc.c (scm_igc): Don't call scm_i_thread_invalidate_freelists.
1756 * gc.c (scm_gc_sweep): Call it here instead, which is a more
1759 * threads.c (create_thread): Remember root object until the handle
1760 of the new thread is on all_threads list.
1762 * root.c (scm_make_root): Moved copying of fluids until after
1763 creation of root handle so that the fluids are GC protected. Also
1764 removed the critical section.
1766 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1768 * gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
1770 * gc-malloc.c (malloc_mutex): New mutex.
1771 (scm_gc_malloc_prehistory): Initialize it.
1772 (scm_realloc): Serialize call to realloc
1773 (scm_calloc): Same for calloc.
1774 Thanks to Wolfgang Jaehrling!
1775 (Now we have to make sure all calls to malloc/realloc are made
1776 through scm_malloc.)
1778 * init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
1780 * threads.c (really_launch): Release heap (to prevent deadlock).
1781 (create_thread): Release heap before locking thread admin mutex.
1783 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1785 * threads.c (scm_i_thread_invalidate_freelists): New
1788 * gc.c (scm_igc): Call scm_i_thread_invalidate_freelists.
1790 * modules.c (scm_export): Inserted a return statement.
1792 2002-12-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
1794 * modules.c (scm_export): new function
1796 * gc-card.c: add a note about malloc()/free() overhead.
1798 2002-12-10 Mikael Djurfeldt <mdj@kvast.blakulla.net>
1800 * Makefile.am (c-tokenize.$(OBJEXT)): Don't look for c-tokenize.c
1803 2002-12-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1805 These changes remove scm_ints_disabled (which hasn't has any
1806 effect in Guile for quite some time).
1808 * async.c, error.h (scm_ints_disabled): Removed.
1810 * gc.c (scm_gc_for_newcell), init.c (scm_init_guile_1),
1811 root.c (scm_internal_cwdr), gdbint.c (SCM_BEGIN_FOREIGN_BLOCK,
1812 SCM_END_FOREIGN_BLOCK): Don't touch scm_ints_disabled.
1813 (old_ints): Removed.
1815 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Define as a recursive
1817 (SCM_REDEFER_INTS, SCM_ALLOW_INTS): Define as SCM_DEFER_INTS and
1820 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1822 * threads.c (scm_mutex_lock, scm_cond_wait, scm_cond_timedwait):
1823 Removed accidental #if 0 around these functions.
1825 These changes are the start of support for preemptive
1826 multithreading. Marius and I have agreed that I commit this code
1827 into the repository although it isn't thoroughly tested and surely
1828 introduces many bugs. The bugs should only be exposed when using
1829 threads, though. Signalling and error handling for threads is
1830 very likely broken. Work on making the implementation cleaner and
1831 more efficient is needed.
1833 * __scm.h (SCM_ALLOW_INTS_ONLY): Removed.
1834 (SCM_NONREC_CRITICAL_SECTION_START,
1835 SCM_NONREC_CRITICAL_SECTION_END, SCM_REC_CRITICAL_SECTION_START,
1836 SCM_REC_CRITICAL_SECTION_END): New macros.
1837 (SCM_CRITICAL_SECTION_START/END): Defined here.
1839 * eval.c: Insert SOURCE_SECTION_START / SOURCE_SECTION_END around
1840 the three calls to scm_m_expand_body.
1842 * gc.h: #include "libguile/pthread-threads.h";
1843 (SCM_FREELIST_CREATE, SCM_FREELIST_LOC): New macros.
1845 * gc.c (scm_i_freelist, scm_i_freelist2): Defined to be of type
1848 * gc.c, gc-freelist.c, inline.h: Use SCM_FREELIST_LOC for freelist
1851 * gc-freelist.c (scm_gc_init_freelist): Create freelist keys.
1853 * gc-freelist.c, threads.c (really_launch): Use
1854 SCM_FREELIST_CREATE.
1856 * gc-malloc.c (scm_realloc, scm_gc_register_collectable_memory):
1858 * gc.c (scm_i_expensive_validation_check, scm_gc,
1859 scm_gc_for_newcell): Put threads to sleep before doing GC-related
1860 heap administration so that those pieces of code are executed
1861 single-threaded. We might consider rewriting these code sections
1862 in terms of a "call_gc_code_singly_threaded" construct instead of
1863 calling the pair of scm_i_thread_put_to_sleep () and
1864 scm_i_thread_wake_up (). Also, we would want to have as many of
1865 these sections eleminated.
1867 * init.c (scm_init_guile_1): Call scm_threads_prehistory.
1869 * inline.h: #include "libguile/threads.h"
1871 * pthread-threads.h: Macros now conform more closely to the
1872 pthreads interface. Some of them now take a second argument.
1874 * threads.c, threads.h: Many changes.
1876 2002-12-09 Mikael Djurfeldt <djurfeldt@nada.kth.se>
1878 * Makefile.am (version.h): Changed $^ --> $< in rule for
1881 2002-12-08 Rob Browning <rlb@defaultvalue.org>
1883 * version.h.in (SCM_MICRO_VERSION): use @--@ substitution now.
1884 (SCM_MINOR_VERSION): use @--@ substitution now.
1885 (SCM_MICRO_VERSION): use @--@ substitution now.
1886 (scm_effective_version): new function prototype.
1888 * version.c (scm_effective_version): new function, also add
1891 * Makefile.am (schemelibdir): VERSION -> GUILE_EFFECTIVE_VERSION.
1892 (libpath.h): use GUILE_EFFECTIVE_VERSION to compute
1894 (version.h): generate this here rather than configure.in. This
1895 approach tracks source edits better (i.e. more immediately).
1896 Might be worth considering for other .in files too.
1898 2002-12-02 Marius Vollmer <mvo@zagadka.ping.de>
1900 Reorganized thread package selection. A thread package now only
1901 implements a small set of pthread like functions and Guile
1902 implements the rest on top of that. Guile's implementation is
1903 what the "coop-pthreads" package has been previously. Support for
1904 "coop" threads has been removed until I get time to add it again.
1906 * Makefile.am (libguile_la_SOURCES): Removed iselect.c.
1907 (noinst_HEADERS): Removed coop-threads.c, coop-threads.h, coop.c,
1908 null-threads.c, coop-pthreads.c.
1909 (modinclude_HEADERS): Removed coop-defs.h, coop-pthreads.h. Added
1912 * validate.h (SCM_VALIDATE_THREAD): Moved to threads.h.
1914 * threads.h: Do not include "libguile/coop-defs.h". Include
1915 "libguile/pthread-threads.h" for USE_COPT_THREADS. Removed
1916 (previously deprecated) C level thread API prototypes. They are
1917 now in the thread package specific headers, "null-threads.h" and
1918 "pthread-threads.h".
1919 (SCM_VALIDATE_THREAD, SCM_VALIDATE_MUTEX, SCM_VALIDATE_CONDVAR):
1921 (scm_threads_init): Removed.
1922 (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END,
1923 SCM_THREAD_SWITCHING_CODE, scm_i_switch_counter,
1924 SCM_I_THREAD_SWITCH_COUNT): Define here.
1925 (scm_single_thread_p): Removed.
1926 (scm_call_with_new_thread): Take two args directly instead of list
1928 (scm_i_thread_data, scm_i_set_thread_data, SCM_THREAD_LOCAL_DATA,
1929 SCM_SET_THREAD_LOCAL_DATA): Define here.
1931 * threads.c: Merged with "coop-pthreads.c".
1933 * null-threads.h: Implement pthread-like API as a set of macros.
1935 * pthread-threads.h: New, implement pthread-like API by deferring
1938 * init.c (scm_init_guile_1): Do not call scm_init_iselect, which
1939 has been lost in the reorganization.
1941 2002-12-01 Mikael Djurfeldt <mdj@linnaeus>
1943 The following change makes it possible to move procedure
1944 application dispatch outside inner loops. The motivation was
1945 clean implementation of efficient replacements of R5RS primitives
1948 The semantics is clear: scm_trampoline_N returns an optimized
1949 version of scm_call_N (or NULL if the procedure isn't applicable
1952 Applying the optimization to map and for-each increases efficiency
1953 noticeably. For example, (map abs ls) is 8 times faster than
1956 * eval.h (scm_t_trampoline_1, scm_t_trampoline_2): New types.
1958 * eval.c, eval.h (scm_trampoline_1, scm_trampoline_2): New functions.
1960 * eval.c (call_subr2_2, call_lsubr_2, call_closure_2): New functions;
1961 (map, for-each): Handle also application on two args as a special
1962 case; Use trampolines.
1966 * sort.c (scm_cmp_function): Choose subr2less for scm_tc7_subr_2o;
1967 (subr2oless): Removed.
1968 (scm_restricted_vector_sort_x): Use scm_return_first to keep the
1969 vector GC protected.
1971 * eval.c (check_map_args): Use scm_out_of_range_pos instead of
1974 2002-11-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
1976 * evalext.[ch] (scm_m_undefine, undefine): Deprecated.
1978 2002-11-17 Mikael Djurfeldt <mdj@linnaeus>
1980 * debug.c (scm_make_iloc): Added missing "return".
1982 2002-11-17 Marius Vollmer <mvo@zagadka.ping.de>
1984 * strports.c (scm_eval_string_in_module): Validate second arg to
1985 be a module. Thanks to Arno Peters!
1987 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
1989 * .cvsignore: remove goops.c
1991 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
1993 * modules.c (scm_env_top_level, scm_lookup_closure_module,
1994 module_variable, scm_module_lookup_closure,
1995 scm_module_transformer, scm_sym2var, scm_module_reverse_lookup,
1996 scm_system_module_env_p): Don't compare SCM values with C
1997 operators == or !=. Avoid SCM_IMP predicates. Prefer !SCM_FALSEP
2000 2002-11-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
2002 * eval.h (SCM_MAKE_ILOC): New macro.
2004 * debug.c (scm_make_iloc): Use SCM_MAKE_ILOC instead of computing
2005 the iloc bitpattern here.
2007 2002-11-14 Mikael Djurfeldt <mdj@linnaeus>
2009 * coop-pthreads.c, coop-pthreads.h: scm_internal_select should be
2010 part of the API, otherwise it's difficult to write Guile
2011 extensions using non-blocking I/O => moved #include
2012 "libguile/iselect.h" from coop-pthreads.c --> coop-pthreads.h.
2014 * coop-pthreads.c (scm_unlock_mutex): Changed s_lock_mutex -->
2017 2002-11-10 Marius Vollmer <mvo@zagadka.ping.de>
2019 * __scm.h (USE_THREADS, GUILE_ISELECT): Do not define here. They
2020 are defined in configure.in.
2022 * threads.c: Removed SCM_API from function definitions. SCM_API
2023 is only for declarations.
2025 2002-11-07 Mikael Djurfeldt <mdj@linnaeus>
2027 * coop-pthreads.h: Added support for thread specific data to the
2028 generic C API for the coop-pthreads case.
2030 * threads.c, threads.h (scm_cond_init): Undo unintentional API
2032 (scm_cond_broadcast): Added missing function.
2034 2002-11-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2036 * coop.c (coop_next_runnable_thread): Removed, wich should have
2037 happened when GUILE_ISELECT was hard-wired.
2039 2002-11-03 Marius Vollmer <mvo@zagadka.ping.de>
2041 * Makefile.am (libguile_la_SOURCES): Added threads.c
2042 (DOT_DOC_FILES): Added threads.doc.
2043 (DOT_X_FILES): Added threads.x.
2044 (EXTRA_libguile_la_SOURCES): Removed threads.c.
2045 (noinst_HEADERS): Added coop-pthreads.c.
2046 (modinclude_HEADERS): Added coop-pthreads.h.
2048 * __scm.h (USE_THREADS, GUILE_ISELECT): Define when
2049 SCM_DEBUG_DEPRECATED. Removed their use thru-out Guile.
2051 * iselect.c: Include "_scm.h" before testing HAVE_UNISTD_H.
2052 Thanks to Bill Schottstaedt!
2054 * numbers.c (scm_integer_expt): Make 0^z == 0 for z != 0.
2056 * _scm.h (HAVE_RESTARTABLE_SYSCALLS): Do define even when
2057 SCM_COPT_THREADS is defined.
2058 (SCM_SYSCALL): Use EINTR-expection version when SCM_COPT_THREADS
2061 * coop-pthreads.c: Some harmless renamings of internal stuff.
2062 (create_thread): New, generalized version of
2063 scm_call_with_new_thread.
2064 (scm_call_with_new_thread): Use it.
2065 (scm_spawn_thread): New, use create_thread.
2067 2002-11-02 Marius Vollmer <mvo@zagadka.ping.de>
2069 * coop-pthreads.c, coop-pthreads.h: Redone completely, you might
2070 start testing it now.
2072 * _scm.h: Include <errno.h< so that SCM_SYSCALL is correctly
2073 defined when HAVE_RESTARTABLE_SYSCALLS is not defined.
2074 (HAVE_RESTARTABLE_SYSCALLS): Do not define when USE_COPT_THREADS
2077 2002-10-27 Marius Vollmer <mvo@zagadka.ping.de>
2079 * scmsigs.c (signal_cell_handlers, install_handler_data,
2080 scm_delq_spine_x, really_install_handler, install_handler): New
2081 scheme for triggering signal handlers, to simplify take_signal.
2082 (take_signal): Simplified, to avoid race conditions.
2083 (scm_sigaction_for_thread): Use new Scheme. Validate that thread
2086 * async.c (scm_async_click): Reset pending_asyncs, handle
2087 signal_asyncs. Don't set cdr of a non-signal async to #f.
2088 (scm_i_queue_async_cell): Do not check cdr of cell for #f, queue
2089 always. Set pending_asyncs.
2090 (scm_system_async_mark_for_thread): Check that thread has not
2092 (scm_unmask_signals, decrease_block): Call scm_async_click after
2093 block_asyncs becomes zero.
2095 * __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
2098 * root.h (scm_root_state): Added pending_asyncs and signal_asyncs
2100 * root.c (root_mark): Mark them.
2101 (make_root): Initialize them.
2103 * iselect.c, iselect.h: Replaced GUILE_ISELECT with
2105 (scm_internal_select): Define one version for USE_COOP_THREADS and
2106 one for USE_NULL_THREADS.
2107 (scm_init_iselect): Likewise.
2109 * inline.h (scm_cell, scm_double_cell): Also allow
2110 USE_COPT_THREADS to not protect the slot initializers.
2112 * init.c (scm_init_guile_1): Call scm_init_thread_procs. This is
2113 because threads need to be initialized before the stack, but
2114 gsubrs such as scm_timed_condition_variable_wait can only be
2117 * threads.h: Include "coop-pthreads.h" when requested.
2118 (scm_threads_make_mutex, scm_threads_lock_mutex,
2119 scm_threads_unlock_mutex, scm_threads_monitor): Removed, they were
2120 not implemented anyway.
2121 (scm_init_thread_procs, scm_try_mutex,
2122 scm_timed_condition_variable_wait,
2123 scm_broadcast_condition_variable, scm_c_thread_exited_p,
2124 scm_thread_exited_p): New prototypes.
2125 (struct timespec): Define if not already defined.
2126 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
2127 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
2128 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
2129 scm_cond_broadcast, scm_cond_destroy): Declarations moved here and
2132 * threads.c: Include <errno.h>. Include "coop-pthreads.c" when
2134 (scm_thread_exited_p): New.
2135 (scm_try_mutex, scm_broadcast_condition_variable): Newly
2136 registered procedures.
2137 (scm_wait_condition_variable, scm_timed_wait_condition_variable):
2138 Use the latter as the procedure for "wait-condition-variable",
2139 thus offering a optional timeout parameter to Scheme.
2140 (scm_wait_condition_variable): Implement in terms of
2141 scm_timed_wait_condition_variable.
2142 (scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
2143 scm_mutex_unlock, scm_mutex_destroy, scm_cond_init,
2144 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
2145 scm_cond_broadcast, scm_cond_destroy): Implement in terms of
2146 scm_make_mutex, etc, and deprecate.
2147 (scm_init_threads): Do not create smobs, leave this to
2148 scm_threads_init. Do not include "threads.x" file.
2149 (scm_init_thread_procs): New, include "threads.x" here.
2151 * null-threads.h (scm_null_mutex, scm_null_mutex_init,
2152 scm_null_mutex_lock, scm_null_mutex_unlock,
2153 scm_null_mutex_destroy, scm_null_condvar, scm_null_condvar_init,
2154 scm_null_condvar_wait, scm_null_condvar_signal,
2155 scm_null_condvar_destroy): Removed.
2156 (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, scm_cond_init,
2157 scm_cond_wait, scm_cond_signal, scm_cond_broadcast,
2158 scm_cond_destory): Do not define, they are now deprecated and
2159 handled by threads.{h,c}.
2161 * null-threads.c (scm_null_mutex, scm_null_cond): Define here.
2162 (scm_threads_init): Create smobs here, using the appropriate
2164 (block): Removed, now unused.
2165 (scm_c_thread_exited_p): New.
2166 (scm_null_mutex_init, scm_null_mutex_lock, scm_null_mutex_unlock,
2167 scm_null_mutex_destroy, scm_null_condvar_init,
2168 scm_null_condvar_wait, scm_null_condvar_signal,
2169 scm_null_condvar_destroy): Removed and updated users to do their
2171 (scm_try_mutex, timeval_subtract,
2172 scm_timed_wait_condition_variable,
2173 scm_broadcast_condition_variable): New.
2174 (scm_wait_condition_variable): Removed.
2176 * coop-defs.h (coop_m): Added 'level' field.
2177 (scm_t_mutex, scm_mutex_init, scm_mutex_lock, scm_mutex_trylock,
2178 scm_mutex_unlock, scm_mutex_destroy, scm_t_cond, scm_cond_init,
2179 scm_cond_wait, scm_cond_timedwait, scm_cond_signal,
2180 scm_cond_broadcast, scm_cond_destroy, struct timespec): Do not
2182 (coop_condition_variable_broadcast): New.
2184 * coop-threads.c (scm_threads_init): Create smobs here, using the
2186 (scm_c_thread_exited_p, scm_try_mutex,
2187 scm_timed_wait_condition_variable,
2188 scm_broadcast_condition_variable): New.
2189 (scm_wait_condition_variable): Removed.
2191 * coop.c (coop_new_mutex_init): Initialize level.
2192 (coop_mutex_trylock, coop_mutex_lock, coop_mutex_unlock): maintain
2194 (coop_condition_variable_signal): Renamed to
2195 coop_condition_variable_broadcast and reimplemented in terms of
2197 (coop_condition_variable_broadcast): New.
2199 * goops.c (hell_mutex): Reimplemented using scm_make_mutex, etc.
2201 * coop-pthreads.h, coop-pthreads.c: New, but unfinished.
2203 2002-10-21 Marius Vollmer <mvo@zagadka.ping.de>
2205 * null-threads.c: Include <time.h>. Also, use <...> for inclusion
2208 * async.c, goops.h, modules.h, validate.h (SCM_MAKE_VALIDATE_MSG):
2209 New. Use it instead of SCM_MAKE_VALIDATE in lots of places to
2210 give better error messages. Thanks to Bill Schottstaedt!
2212 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
2214 * evalext.h, evalext.c (scm_definedp, scm_defined_p): Renamed
2215 scm_definedp to scm_defined_p and deprecated scm_definedp.
2217 2002-10-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
2219 * async.h, async.c (scm_system_async): Fixed deprecation to work
2220 correctly when deprecated features are excluded.
2222 2002-10-16 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2224 * async.c (scm_system_async_mark_for_thread): Validate thread
2227 * coop-threads.c (scm_i_thread_root): Do not validate argument.
2229 * feature.c (scm_init_feature): Don't add 'threads' for
2232 * inline.h (scm_cell, scm_double_cell): Also allow
2233 USE_NULL_THREADS to not protect the slot initializers.
2235 * scmsigs.c (scm_sigaction_for_thread): It's "USE_THREADS" not
2238 * Makefile.am (noinst_HEADERS): Added null-threads.c.
2239 (modinclude_HEADERS): Added null-threads.h.
2241 * threads.h: Include null-threads.h when !USE_COOP_THREADS.
2242 * threads.c: Include null-threads.c when !USE_COOP_THREADS.
2243 (scm_init_threads): Use generic type names scm_t_mutex and
2244 scm_t_cond instead of coop_m and coop_c.
2246 * null-threads.c, null-threads.h: New files.
2248 2002-10-15 Marius Vollmer <mvo@zagadka.ping.de>
2250 * Makefile.am: Replaced "$<" in non-pattern rules with its value.
2251 This is to support makes that know about "$<" only in pattern
2252 rules, like Sun's make.
2254 2002-10-13 Marius Vollmer <mvo@zagadka.ping.de>
2256 * Makefile.am (libpath.h): Fixed typo in top_srcdir_absolute
2257 substitution. Thanks to David Allouche!
2259 2002-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
2261 * evalext.h: Replaced SCM_DEBUG_DEPRECATED with
2262 !SCM_ENABLE_DEPRECATED.
2264 2002-10-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2266 * async.c (scm_system_async_mark_for_thread): Only call
2267 scm_i_thread_root when USE_THREADS is defined. Use scm_root
2270 * scmsigs.c (take_signal): Only call scm_i_thread_root when
2271 USE_THREADS is defined. Use scm_root otherwise.
2272 (scm_sigaction_for_thread): Ignore THREAD argument when
2273 USE_THREADS is not defined. Also, move THREAD argument defaulting
2274 out of HAVE_SIGACTION section, which was a bug.
2276 2002-10-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2278 * scmsigs.c (scm_sigaction_for_thread): Store original handler in
2279 signal_handlers, not the closure that is used as the async.
2280 The closure is stored in signal_handler_cells, as previously.
2282 2002-10-10 Marius Vollmer <mvo@zagadka.ping.de>
2284 * root.h (scm_root_state): Added 'block_async' slot.
2285 (scm_active_asyncs): Removed abbrev.
2286 * root.c (scm_make_root): Initialize 'block_asyncs' slot.
2288 * __scm.h (SCM_ASYNC_TICK): Do without the scm_active_asyncs
2291 * async.h (scm_call_with_blocked_asyncs,
2292 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
2293 scm_c_call_with_unblocked_asyncs): New prototypes.
2294 (scm_mask_signals, scm_unmask_signals): Deprecated.
2295 (scm_mask_ints): Turned into a macro.
2296 * async.c (scm_mask_ints): Removed.
2297 (scm_run_asyncs): Do not set scm_mask_ints while running an async.
2298 this should not be necessary.
2299 (scm_async_click): Test block_asyncs instead of scm_mask_ints.
2300 (scm_mask_signals, scm_unmask_signals): Deprecated. Emit
2301 deprecation warning and check for errornous use. Set block_asyncs
2302 instead of scm_mask_ints.
2303 (increase_block, decrease_block, scm_call_with_blocked_asyncs,
2304 scm_call_with_unblocked_asyncs, scm_c_call_with_blocked_asyncs,
2305 scm_c_call_with_unblocked_asyncs): New.
2307 * script.c (scm_compile_shell_switches): Do not set scm_mask_ints.
2308 Asyncs are enabled by default.
2310 2002-10-09 Neil Jerram <neil@ossau.uklinux.net>
2312 * vports.c (scm_make_soft_port): Allow vector argument to carry a
2313 6th element: an input waiting thunk.
2314 (sf_input_waiting): New.
2316 2002-10-05 Marius Vollmer <mvo@zagadka.ping.de>
2318 * root.c (root_mark): Mark active_asyncs slot.
2320 * async.c (scm_async_click): Set the cdr of a executed handler
2321 cell to SCM_BOOL_F, not SCM_EOL.
2322 (scm_i_queue_async_cell): Queue the cell at the end of the list,
2323 and only if the handler procedure is not already present.
2324 (scm_system_async_mark_for_thread): Initialize cdr of handler cell
2326 * scmsigs.c (scm_sigaction_for_thread): Likewise.
2328 2002-10-04 Rob Browning <rlb@defaultvalue.org>
2330 * guile.c (main): switch to scm_lt_dlset_preloaded_symbols;
2332 * dynl.c (sysdep_dynl_link): switch to scm_lt_dlhandle,
2333 scm_lt_dlopenext, and scm_lt_dlerror.
2334 (sysdep_dynl_unlink): switch to scm_lt_dlhandle, scm_lt_dlclose,
2336 (sysdep_dynl_func): switch to scm_lt_dlhandle, scm_lt_dlsym,
2338 (sysdep_dynl_init): switch to scm_lt_dlinit();
2340 * Makefile.am (libguile_la_LIBADD): switch to use
2343 * numbers.c (scm_integer_expt): (expt 0 1) should be 1.
2345 2002-10-04 Marius Vollmer <mvo@zagadka.ping.de>
2347 * scmsigs.h (scm_sigaction_for_thread): New prototype.
2348 * scmsigs.c (got_signal): Removed.
2349 (signal_handler_cells, signal_handler_threads): New.
2350 (take_signal): Queue the cell of the signal for the specified
2351 thread. Reset the signal handler on systems that don't have
2353 (sys_deliver_signals): Removed.
2355 (scm_sigaction_for_thread): Renamed from scm_sigaction and
2356 extended to also set the thread of a signal and allocate a cell
2357 for it. Keep the Scheme name "sigaction". Check that signum is
2358 within range. Also, use SCM_VECTOR_REF instead of SCM_VELTS.
2359 (scm_sigaction): Implement in terms of scm_sigaction_for_thread.
2360 (scm_init_scmsigs): Allocate signal_handler_cells and
2361 signal_handler_threads vectors.
2363 * async.c: Removed GUILE_OLD_ASYNC_CLICK code. Reorganized so
2364 that system asnycs and user asyncs are separated. Reimplemented
2365 system asyncs to work per-thread.
2367 * gc.c (scm_init_gc): Do not use scm_system_async.
2369 * async.h (scm_asyncs_pending, scm_set_tick_rate,
2370 scm_set_switch_rate, scm_system_async_mark_from_signal_handler):
2372 (scm_i_queue_async_cell): New.
2374 * __scm.h (scm_asyncs_pending_p): Removed.
2375 (SCM_ASYNC_CLICK): Check scm_active_asyncs instead of
2376 scm_asyncs_pending_p.
2378 * async.h (scm_system_async_mark_for_thread): New prototype.
2380 * __scm.h: Removed GUILE_OLD_ASYNC_CLICK code.
2382 * root.h (scm_root_state): Added new "active_asyncs" slot.
2383 * root.c (scm_make_root): Initialize it to SCM_EOL.
2385 * coop-defs.h (coop_t): Added new "handle" slot.
2386 * coop-threads.c (all_threads, scm_current_thread,
2387 scm_all_threads, scm_i_thread_root): New.
2388 (scm_threads_init): Add main thread to all_threads.
2389 (scheme_launch_thread): Remove thread from all_threads when it
2391 (scm_call_with_new_thread): Initialize handle slot of coop_t
2392 structure and add new thread to all_threads.
2393 (scm_spawn_thread): Likewise.
2395 * threads.h (scm_current_thread, scm_all_threads): New prototypes.
2396 * threads.c (scm_current_thread, scm_all_threads): Register as
2399 * dynl.c: Use scm_lt_ prefix for libltdl functions.
2401 2002-09-29 Neil Jerram <neil@ossau.uklinux.net>
2403 * script.c (scm_compile_shell_switches): Fix bad spelling of
2404 `explicitly' in comment.
2406 2002-09-28 Neil Jerram <neil@ossau.uklinux.net>
2408 * posix.c (scm_geteuid, scm_getegid, scm_seteuid, scm_setegid):
2409 Refer to provided? in doc string rather than deprecated feature?.
2411 2002-09-24 Gary Houston <ghouston@arglist.com>
2413 * inline.h (scm_double_cell): prevent reordering of statements
2414 with any following code (for GCC 3 strict-aliasing).
2415 * numbers.c (scm_make_real), num2float.i.c (FLOAT2NUM): removed
2416 the earlier version of the reordering prevention.
2418 2002-09-19 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2420 * inline.h (scm_double_cell): move SET_GCMARK set out of if body.
2422 2002-09-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2424 * gc-malloc.c (scm_gc_register_collectable_memory): more overflow
2427 2002-09-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2429 * inline.h: include stdio.h
2431 * smob.c (free_print): abort if scm_debug_cell_accesses_p is set
2433 2002-09-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2435 * gc-segment.c (scm_i_make_initial_segment): check user settings
2438 * gc-malloc.c (scm_gc_init_malloc): check user settings for
2441 * gc-freelist.c (scm_init_freelist): check user settings for sanity.
2443 * struct.h: change scm_structs_to_free to scm_i_structs_to_free
2445 * gc-malloc.c (scm_gc_register_collectable_memory): use floats;
2446 these won't ever wrap around with high memory usage. Thanks to
2447 Sven Hartrumpf for finding this.
2449 * gc-freelist.c: include <stdio.h>
2451 * gc-malloc.c: add DEBUGINFO for mtrigger GCs.
2453 2002-09-01 Marius Vollmer <mvo@zagadka.ping.de>
2455 * vectors.h (SCM_VECTOR_REF): New.
2457 * snarf.h (SCM_DEFINE_PUBLIC): New.
2459 2002-08-30 Marius Vollmer <mvo@zagadka.ping.de>
2461 * socket.c (scm_addr_vector): Added size of address to arguments.
2462 Use it to avoid accessing a non-existent path in a sockaddr_un.
2463 Changed all callers.
2465 2002-08-29 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2467 * gc.h: remove DOUBLECELL card flags.
2469 * gc-malloc.c (scm_calloc): try to use calloc() before calling
2472 * gc-segment.c (scm_i_initialize_heap_segment_data): remove card
2473 init loop; handle this from scm_init_card_freelist()
2475 * gc-card.c (scm_init_card_freelist): init bit vector here.
2477 * numbers.c (scm_make_real): prevent reordering of statements
2478 num2float.i.c (FLOAT2NUM): idem
2480 2002-08-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2482 * eval.h: prepend libguile/ to include path
2484 2002-08-26 Marius Vollmer <mvo@zagadka.ping.de>
2486 * script.c (scm_compile_shell_switches): Added "2002" to Copyright
2487 years. Thanks to Martin Grabmüller!
2489 2002-08-25 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2491 * gc-segment.c (scm_i_get_new_heap_segment): use float in stead of
2492 unsigned numbers for computing minimum heap increment. This
2493 prevents weird results when a a negative minimum increment is
2496 2002-08-24 Marius Vollmer <mvo@zagadka.ping.de>
2498 * gc_os_dep.c: When we have __libc_stack_end, use that directly
2499 instead of the old tricks.
2501 * guile-snarf.in: Do not expect the input file to be the first
2502 argument after the optional "-o" option, just pass everything to
2503 the pre-processor without extracting the input file name.
2505 2002-08-23 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2507 * gc-segment.c (scm_i_get_new_heap_segment): Oops. We want segment
2508 length *at* least SCM_MIN_HEAP_SEG_SIZE, not at most.
2510 2002-08-22 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2512 * gc.h, gc.c: make scm_cells_allocated unsigned again. Thanks to
2513 Bill Schottstaedt for the bug report
2515 2002-08-20 Marius Vollmer <mvo@zagadka.ping.de>
2517 * print.c (scm_iprin1): Print primitives generics always as
2518 "primitive-generic" even when they have no primitive methods yet.
2520 2002-08-17 Gary Houston <ghouston@arglist.com>
2522 * coop.c (coop_create): removed bogus 2nd argument in scm_malloc
2525 2002-08-17 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2527 * ports.c (scm_add_to_port_table): small bugfix.
2529 * mallocs.c (scm_malloc_obj): use scm_gc_malloc in stead of
2532 * gc-segment.c (scm_i_get_new_heap_segment): remove cluster cruft:
2533 only use SCM_MIN_HEAP_SEG_SIZE.
2535 * ports.c (scm_add_to_port_table): add backwards compatibility
2538 * ports.h: use scm_i_ prefix for port table and port table size.
2540 2002-08-15 Mikael Djurfeldt <mdj@linnaeus>
2542 * vports.c (scm_make_soft_port): Initialize pt variable.
2544 2002-08-13 Marius Vollmer <mvo@zagadka.ping.de>
2546 * strports.h (scm_c_eval_string_in_module,
2547 scm_eval_string_in_module): New prototypes.
2548 * strports.c (scm_eval_string_in_module): New, but use
2549 "eval-string" as the Scheme name and make second parameter
2551 (scm_eval_string): Implement using scm_eval_string_in_module.
2552 (scm_c_eval_string_in_module): New.
2553 Thanks to Ralf Mattes for the suggestion!
2555 2002-08-09 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2557 * gc-card.c ("sweep_card"): remove SCM_MISC_ERROR messages: print
2560 * gc-mark.c ("scm_gc_mark_dependencies"): idem.
2562 * ports.c ("scm_new_port_table_entry"): return a boxed SCM in
2563 stead of scm_t_port*. The function now takes a tag argument.
2565 2002-08-08 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2567 * gc.h: add scm_debug_cells_gc_interval to public interface
2569 * gc-card.c ("sweep_card"): set scm_gc_running while sweeping.
2571 * gc.c (scm_i_expensive_validation_check): separate expensive
2572 validation checks from cheap ones.
2574 2002-08-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2576 * read.c (scm_input_error): new function: give meaningful error
2577 messages, and throw read-error
2579 * gc-malloc.c (scm_calloc): add scm_calloc.
2581 2002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2583 * tags.h: remove GC bits documentation from the tags table.
2585 * read.c (INPUT_ERROR): Prepare for file:line:column error
2586 messages for errors in scm_lreadr() and friends.
2588 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2590 * gc-malloc.c (scm_malloc): use scm_realloc() (simplifies
2592 (scm_gc_calloc): new function
2594 2002-08-04 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2596 * ports.c (scm_new_port_table_entry): init port entry to 0
2599 * ports.c (scm_new_port_table_entry): change function from
2600 scm_add_to_port_table. This prevents cells with null-pointers from
2601 being exposed to GC.
2603 * vports.c (scm_make_soft_port) strports.c (scm_mkstrport),
2604 fports.c (scm_fdes_to_port): Use scm_new_port_table_entry().
2606 * gc.c (scm_gc_stats): add cell-yield and malloc-yield statistic
2609 * numbers.c (big2str): return "0" for 0 iso. ""
2611 * gc-segment.c, gc-malloc.c gc-mark.c, gc-freelist.c, gc-card.c,
2612 private-gc.h: new file
2614 * gc.c: completely revised and cleaned up the GC. It now uses lazy
2615 sweeping. More documentation in workbook/newgc.text
2617 2002-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2619 * random.c (rstate_free): Return zero.
2621 2002-07-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
2623 * environments.c (remove_key_from_alist): Removed.
2625 (obarray_remove): Simplified.
2627 2002-07-24 Stefan Jahn <stefan@lkcc.org>
2629 * continuations.h: ia64: Include <signal.h> before
2632 2002-07-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
2634 * modules.c (scm_sym2var): Don't compare SCM values with ==.
2636 2002-07-21 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2638 * goops.c (scm_compute_applicable_methods): use
2639 scm_remember_upto_here_1 iso scm_remember_upto_here
2641 * macros.c: include deprecation.h
2643 * vectors.c (scm_vector_move_right_x): remove side effect in
2645 (scm_vector_move_left_x): idem.
2647 * net_db.c, posix.c, socket.c: variable naming: change ans to
2650 * sort.c (scm_merge_vector_x): accept vector as argument
2651 iso. SCM*. This is needed for full GC correctness.
2653 * gc.h: undo previous undocumented changes related to #ifdef
2656 2002-07-20 Han-Wen Nienhuys <hanwen@cs.uu.nl>
2658 * *.c: add space after commas everywhere.
2660 * *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
2661 Document cases where SCM_WRITABLE_VELTS() is used.
2663 * vectors.h (SCM_VELTS): prepare for write barrier, and let
2664 SCM_VELTS() return a const pointer
2665 (SCM_VECTOR_SET): add macro.
2667 2002-07-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
2669 * eval.c (SCM_CEVAL), macros.c (macro_print, scm_makmacro,
2670 scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
2671 Deprecated the special kind of built-in dynamic syntax transformer
2672 that was inaccurately named "macro". Note: The built-in syntax
2673 transformers that are named "mmacro" or "memoizing-macro" still
2674 exist, and it is these which come much closer to what one would
2677 2002-07-13 Neil Jerram <neil@ossau.uklinux.net>
2679 * eval.c (unmemocopy): Fix for
2680 1001-local-eval-error-backtrace-segfaults (unmemoization crash
2681 with internal definitions and local-eval).
2683 2002-07-12 Gary Houston <ghouston@arglist.com>
2685 * dynl.c: Don't define stub procedures if DYNAMIC_LINKING is not
2686 defined. They don't do anything useful, especially since the
2687 only case where DYNAMIC_LINKING is undefined seems to be
2688 when --with-modules=no is given to configure, which is basically
2689 requesting that the "dynamic linking module" be omitted.
2691 * Makefile.am (libguile_la_SOURCES): move dynl.c from
2692 libguile_la_SOURCES to EXTRA_libguile_la_SOURCES.
2694 * extensions.c (load_extension): check DYNAMIC_LINKING for
2696 * init.c (scm_init_guile_1): check DYNAMIC_LINKING for
2697 scm_init_dynamic_linking.
2699 2002-07-10 Marius Vollmer <mvo@zagadka.ping.de>
2701 * guile.c, iselect.h, net_db.c, posix.c, socket.c: No need to
2702 check for Cygwin when including <winsock2.h>, this is already
2703 check for by configure. Thus, revert change from 2002-07-07.
2705 2002-07-10 Gary Houston <ghouston@arglist.com>
2707 * eq.c: include <string.h>
2708 * dynl.c: docstring editing.
2710 2002-07-09 Gary Houston <ghouston@arglist.com>
2712 * dynl.c (scm_dynamic_call): docstring editing.
2714 2002-07-08 Rob Browning <rlb@defaultvalue.org>
2716 * gc_os_dep.c: HURD fixes.
2718 2002-07-07 Marius Vollmer <mvo@zagadka.ping.de>
2720 Crosscompiling and Cygwin fixes by Jan Nieuwenhuizen. Thanks!
2722 * Makefile.am: Override default rule for c-tokenize.$(OBJECT);
2723 this should be compiled for BUILD host.
2724 Override default rule for
2725 guile_filter_doc_snarfage$(EEXECT); this should run on BUILD host.
2726 Add missing $(EXEEXT) to guile_filter_doc_snarfage invocation.
2727 (snarf2checkedtexi): Use GUILE_FOR_BUILD instead of preinstguile.
2729 * guile.c, iselect.h, net_db.c, posix.c, socket.c: Do not include
2730 <winsock2.h> on Cygwin even when we have it.
2732 2002-07-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
2734 * __scm.h (SCM_CAUTIOUS), eval.c (scm_eval_args, deval_args,
2735 SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
2736 the code. Full number of arguments checking of closures is
2737 mandatory now. However, the option to disable the checking has
2738 most probably not been used anyway.
2740 2002-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
2742 * __scm.h (SCM_RECKLESS), backtrace.c (SCM_ASSERT), debug.c
2743 (scm_debug_options), eval.c (scm_lookupcar, scm_lookupcar1,
2744 scm_badargsp, SCM_CEVAL, SCM_APPLY, scm_map, scm_for_each),
2745 feature.c (scm_init_feature), gsubr.c (scm_gsubr_apply), numbers.c
2746 (scm_logand, scm_logior, scm_logxor, scm_i_dbl2big), srcprop.c
2747 (scm_source_properties, scm_set_source_properties_x,
2748 scm_source_property): Removed compile time option SCM_RECKLESS to
2749 clean up the code. Full number of arguments checking of closures
2750 is mandatory now. However, the option to disable the checking has
2751 most probably not been used anyway.
2753 * srcprop.c (scm_source_properties, scm_set_source_properties_x,
2754 scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
2756 2002-06-30 Gary Houston <ghouston@arglist.com>
2758 * dynl.c: Removed all SCM_DEFER_INTS/SCM_ALLOW_INTS, which won't
2759 do anything useful. Added a comment about need for a mutex if
2760 pre-emptive threading is supported.
2762 * posix.c (scm_convert_exec_args), dynl.c
2763 (scm_make_argv_from_stringlist): static procs: 1) renamed both to
2764 allocate_string_pointers. 2) simplified: don't reallocate the
2765 strings, just make an array of pointers 3) avoid memory leaks on
2766 error 4) let the procedure report errors in its own name.
2767 Consequences: 1) the procedures now assume that SCM strings are
2768 nul-terminated, which should always be the case. 2) Since strings
2769 are not reallocated, it's now possible for strings passed to
2770 dynamic-args-call to be mutated.
2772 2002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
2774 * __scm.h, eval.c, eval.h: Removed compile time option
2775 MEMOIZE_LOCALS to clean up the code. Now, caching of local
2776 variable positions during memoization is mandatory. However, the
2777 option to disable the caching has most probably not been used
2780 2002-06-18 Marius Vollmer <mvo@zagadka.ping.de>
2782 * print.c (scm_simple_format): Print missing part of format before
2783 ~% control. Thanks to Daniel Skarda!
2785 2002-06-01 Marius Vollmer <mvo@zagadka.ping.de>
2787 * mkstemp.c: Added exception notice to license statement.
2789 2002-05-22 Marius Vollmer <mvo@zagadka.ping.de>
2791 * numbers.c (mem2ureal): When returning an inexact zero, make sure
2792 it is represented as a floating point value so that we can change
2795 From John W. Eaton <jwe@bevo.che.wisc.edu>
2797 * numbers.c (idbl2str): Don't omit sign when printing negative zero.
2799 2002-05-14 Thien-Thi Nguyen <ttn@giblet.glug.org>
2801 * gc_os_dep.c: For I386/OPENBSD, allow for `__i386__'
2802 in addition to `i386'. Thanks to Dale P. Smith.
2804 2002-05-08 Marius Vollmer <mvo@zagadka.ping.de>
2806 * eq.c (real_eqv): New.
2807 (scm_eqv_p): Use it when comparing reals and complexes.
2809 * numbers.c: Include <string.h>, for strncmp.
2810 (mem2complex): Do not create negative NaNs.
2811 (scm_leq_p, scm_geq_p): Explicitely return #f when comparing a
2813 (scm_inexact_to_exact): Signal error when converting a NaN.
2815 2002-05-06 Marius Vollmer <mvo@zagadka.ping.de>
2817 * posix.c (scm_putenv): Handle removing variables explicitely by
2822 * numbers.h: Conditionally include floatingpoint.h, ieeefp.h, and
2823 nan.h. Provide declarations for scm_inf_p, scm_nan_p, scn_inf,
2825 * numbers.c: [SCO && ! HAVE_ISNAN] (isnan): New function.
2826 [SCO && ! HAVE_ISINF] (isinf): New function.
2827 (xisinf, xisnan): New functions.
2829 (isfinite): Define in terms of xisinf.
2830 (scm_inf_p, scm_nan_p): New functions.
2831 (guile_Inf, guile_NaN): New file-scope vars.
2832 (guile_ieee_init): New function.
2833 (scm_inf, scm_nan): New functions.
2834 (idbl2str): Handle Inf and NaN. Remove funny label and
2835 corresponding gotos.
2836 (ALLOW_DIVIDE_BY_ZERO): New macro.
2837 (scm_divide): Allow division by zero to occur if
2838 ALLOW_DIVIDE_BY_ZERO is defined.
2839 Handle bignums and ints as special cases.
2841 Additional stuff by me:
2843 numbers.c (mem2ureal): Recognize "inf.0" and "nan.xxx".
2844 (scm_even_p, scm_odd_p): Treat infinity as even and odd.
2845 (iflo2str): Don't output a '+' for negative numbers or for Inf and
2846 NaN. They will provide their own sign.
2847 (scm_divide): Only allow divides by inexact zeros. Dividing by
2848 exact zeros still signals an errors.
2850 2002-04-22 Thien-Thi Nguyen <ttn@giblet.glug.org>
2852 * goops.h (scm_slot_exists_p): Rename from scm_slots_exists_p.
2853 * goops.c (scm_slot_exists_p): Rename from scm_slots_exists_p.
2854 (scm_slot_exists_p): Rename from scm_slots_exists_p.
2855 Thanks to Andreas Rottmann.
2857 2002-04-20 Gary Houston <ghouston@arglist.com>
2859 * removal of unused fields in root state (thanks to Christopher
2860 Cramer for pointing out the disuse.)
2861 * root.h (scm_root_state): removed def_inp, def_outp, def_errp.
2862 (scm_def_inp, scm_def_outp, scm_def_errp): removed.
2864 * root.c (root_mark): don't mark them.
2865 (scm_make_root): don't set them to #f.
2866 * init.c (scm_init_standard_ports): don't initialise with the
2869 2002-04-17 Marius Vollmer <mvo@zagadka.ping.de>
2871 * Makefile.am (EXTRA_DIST): Added cpp_err_symbols.c and
2874 2002-04-16 Marius Vollmer <mvo@zagadka.ping.de>
2876 * guile-snarf.in: Do not clean input file. This would write to
2877 the $(srcdir) during a VPATH build, which is not allowed. It also
2878 isn't needed since it only works when an output filename has been
2879 specified and in that case we don't need to clean the input file
2880 because the output file will already exist.
2882 2002-03-31 Marius Vollmer <mvo@zagadka.ping.de>
2884 * guile-snarf: Install the trap for removing $cleanfile only when
2885 the value of $cleanfile is actually known.
2887 2002-04-10 Rob Browning <rlb@defaultvalue.org>
2889 * .cvsignore: add versiondat.h and *.c.clean.c.
2891 2002-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
2893 * srcprop.[ch] (scm_c_source_property_breakpoint_p): New
2894 function, replaces macro SRCBRKP.
2896 (SRCBRKP): Deprecated.
2898 * eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
2899 scm_c_source_property_breakpoint_p. Removed some use of arg1 as
2902 2002-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
2904 * debug.h, eval.c: Deprecated CHECK_ENTRY, CHECK_APPLY and
2905 CHECK_EXIT and removed all references to them.
2907 2002-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
2909 * debug.h (scm_ready_p, debug_print): Removed declarations.
2911 * eval.c (EVALCELLCAR): Removed.
2913 (SCM_CEVAL): Eliminated label loopnoap. Removed side-effecting
2914 operation from condition.
2916 2002-03-24 Marius Vollmer <mvo@zagadka.ping.de>
2918 * guile-snarf.in: When the output filename is "-", write to
2919 stdout. When no "-o" option is given, use "-" as the output
2920 filename (i.e., stdout). Only 'clean' the inputfile or remove the
2921 output file on error when the output file name is not "-". Define
2922 the preprocessor macro SCM_MAGIC_SNARFER while snarfing.
2924 * Makefile.am (.c.x): Pass "-o $@" to guile-snarf.
2926 2002-03-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
2928 * eval.c (SCM_CEVAL, SCM_APPLY): Eliminated labels wrongnumargs
2929 and the corresponding goto statements. Removed redundant code.
2931 2002-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
2933 * eval.c (SCM_CEVAL): Minimized scope of variable arg2.
2934 Eliminated redundant SCM_IMP check. Exlined call to EVALCAR.
2935 Re-enabled handing of rpsubrs and asubrs.
2937 2002-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
2939 * eval.c (SIDEVAL): Removed.
2941 (SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
2942 goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
2943 argument checking order for set! to locals, variables and symbols.
2944 Improvements to control structure. Removed some uses of arg1 and
2945 arg2 as temporary variables.
2947 2002-03-15 Thien-Thi Nguyen <ttn@giblet.glug.org>
2949 * guile-snarf.in: Remove "--compat=1.4" support.
2950 Add "-d" and "-D" support.
2952 (deprecated_list): New var.
2953 (compat_mode_clean_xxx): Delete.
2954 (grep_deprecated): New func.
2955 ("main"): If "-d" or "-D", call `grep_deprecated'.
2957 2002-03-15 Neil Jerram <neil@ossau.uklinux.net>
2959 * hooks.h: Change scm_t_c_hookype_t everywhere to
2964 * strings.c (scm_string_p): Change unnecessary `iff' to `if'.
2966 * ports.c (scm_sys_make_void_port): Use `@file'.
2968 * numbers.c (scm_number_p, scm_real_p): Use `otherwise' rather
2971 * macros.c (scm_makmacro): Don't say that the form replaces its
2972 source, because it doesn't.
2973 (scm_makmmacro): Clarify difference between this and scm_makmacro.
2975 * backtrace.c (scm_display_error), filesys.c (scm_umask,
2976 scm_select, scm_basename), goops.c (scm_method_generic_function),
2977 numbers.c (scm_integer_length), posix.c (scm_getgroups, scm_execl,
2978 scm_setlocale, scm_flock), socket.c (scm_shutdown): Correct
2981 * debug.c (scm_debug_options), eval.c
2982 (scm_eval_options_interface), read.c (scm_read_options): Change
2983 incorrect @var in docstring to @code.
2985 2002-03-14 Marius Vollmer <mvo@zagadka.ping.de>
2987 * unif.c (singp): Use SCM_REALP instead of SCM_SLOPPY_REALP.
2989 * snarf.h (SCM_SNARF_INIT): Add "^:^" after code so that
2990 guile-snarf can remove trailing non-init code.
2992 * guile-snarf.in (modern_snarf): Remove everything following and
2993 including "^:^" from the output.
2995 2002-03-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
2997 * eval.c (SCM_CEVAL), srcprop.h (SRCBRKP): Eliminated union 't'.
2999 * eval.c (SCM_CEVAL): Exlined call to EVALCAR.
3001 2002-03-13 Thien-Thi Nguyen <ttn@giblet.glug.org>
3003 * guile-snarf.in: Update copyright.
3004 Rewrite to internalize error handling.
3005 Add "--compat=1.4" handling.
3008 * Makefile.am (libpath.h): Use @top_srcdir_absolute@.
3009 (snarfcppopts): New var.
3010 (.c.x): Use $(snarfcppopts). Rework guile-snarf usage.
3011 (.c.doc): Use $(snarfcppopts).
3013 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
3014 continuations.c, debug-malloc.c, debug.c, deprecation.c, dynl.c,
3015 dynwind.c, environments.c, eq.c, error.c, eval.c, evalext.c,
3016 extensions.c, feature.c, filesys.c, fluids.c, fports.c, gc.c,
3017 goops.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
3018 ioext.c, iselect.c, keywords.c, lang.c, list.c, load.c, macros.c,
3019 modules.c, net_db.c, numbers.c, objects.c, objprop.c, options.c,
3020 pairs.c, ports.c, posix.c, print.c, procprop.c, procs.c,
3021 properties.c, ramap.c, random.c, rdelim.c, read.c, regex-posix.c,
3022 root.c, rw.c, scmsigs.c, script.c, simpos.c, socket.c, sort.c,
3023 srcprop.c, stackchk.c, stacks.c, stime.c, strings.c, strop.c,
3024 strorder.c, strports.c, struct.c, symbols.c, threads.c, throw.c,
3025 unif.c, values.c, variable.c, vectors.c, version.c, vports.c,
3026 weaks.c: Retire inclusion guard macro SCM_MAGIC_SNARFER.
3028 2002-03-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
3030 * eval.c (SCM_CEVAL): Got rid of the last reference to t.lloc.
3031 The next step will be to remove the union 't' and simplify the
3032 code of SCM_CEVAL that way.
3034 2002-03-12 Neil Jerram <neil@ossau.uklinux.net>
3036 * iselect.c (collisionp, gnfds, greadfds, gwritefds, gexceptfds,
3037 rreadfds, rwritefds, rexceptfds): Made static.
3039 * gc.c (terminating), fports.c (terminating): Renamed
3042 2002-03-11 Marius Vollmer <mvo@zagadka.ping.de>
3044 * numbers.c (scm_divide): Adapt code from libstdc++/f2c to void
3045 potential overflow problems. Thanks to John W Eaton!
3047 * strop.c (string_capitalize_x): Treat characters as unsigned so
3048 that 8-bit chars work. Thanks to David Pirotte!
3050 2002-03-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
3052 * eval.c (SCM_CEVAL): Cleaned up the handling of 'slot-ref',
3053 'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
3054 proc as temporary variables. Introduced temporary variables with
3055 hopefully descriptive names for clarification. Replaced SCM_N?IMP
3056 by a more explicit predicate in some places.
3058 2002-03-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
3060 * eval.c (SCM_CEVAL): Cleaned up the handling of #@dispatch.
3061 Added lots of comments regarding the implementation of #@dispatch.
3062 Changed intra-procedure communication to use t.arg1 instead of
3063 arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
3064 variables. Introduced temporary variables with hopefully
3065 descriptive names for clarification. Replaced SCM_N?IMP by a more
3066 explicit predicate in some places. Use SCM_INSTANCE_HASH instead
3067 of computing the expression explicitly. Eliminate now unused
3068 label nontoplevel_cdrxbegin.
3070 * goops.h (SCM_INSTANCE_HASH): New macro.
3072 * objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
3074 2002-03-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
3076 * Makefile.am (bin_SCRIPTS): Revive this decl, w/ initial element
3077 "guile-snarf" moved back from `noinst_SCRIPTS'.
3079 2002-03-08 Neil Jerram <neil@ossau.uklinux.net>
3081 * srcprop.c (scm_set_source_property_x): If SRCPROPS obj already
3082 exists when adding a source property other than those that are
3083 handled explicitly, add the new property to the SRCPROPS obj's
3086 * debug.h (SCM_MAX_FRAME_SIZE): Remove incorrect comment about use
3087 of SCM_MAX_FRAME_SIZE as a bit mask; it isn't used like this.
3089 * eval.c (SCM_CEVAL): Don't store scm_debug_eframe_size in
3090 debug.status. It isn't needed, and it can overflow the bits
3091 reserved for it (which may lead to a segv or a GC abort).
3093 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
3095 * eval.c (SCM_CEVAL): Cleaned up the handling of 'apply'. Removed
3096 side-effecting operations from conditions and macro calls.
3097 Replaced SCM_N?IMP by a more explicit predicate in some places.
3098 Minimized the scope of some variables.
3100 2002-03-02 Stefan Jahn <stefan@lkcc.org>
3102 * convert.i.c: Fixed int <-> long conversions which would have
3103 failed if their sizes were different.
3105 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
3107 * eval.c (SCM_CEVAL): Cleaned up the handling of 'if', 'let',
3108 'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
3109 as temporary variables. Removed side-effecting operations from
3110 conditions and macro calls. Introduced temporary variables with
3111 hopefully descriptive names for clarification. Replaced SCM_N?IMP
3112 by a more explicit predicate in some places. Removed code that
3113 was conditionally compiled if SICP was defined - which it never
3116 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
3118 * eval.c (SCM_CEVAL): Cleaned up the handling of 'cons' and 'do':
3119 Removed some uses of t.arg1 and proc as temporary variables.
3120 Removed side-effecting operations from conditions and macro calls.
3121 Introduced temporary variables with hopefully descriptive names
3122 for clarification. Replaced SCM_N?IMP by a more explicit
3123 predicate in some places.
3125 2002-03-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
3127 * eval.c (scm_badargsp, SCM_CEVAL): Replaced SCM_N?IMP by a more
3128 explicit predicate in some places.
3130 (CHECK_EQVISH): Removed.
3132 (SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
3133 variables. Removed side-effecting operations from conditions and
3134 macro calls. Introduced temporary variables for clarification.
3135 Sorted if-else-if check for the type of the last form in a list by
3136 frequency. Avoided some unnecessary tail-recursion calls.
3138 2002-03-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
3140 * gc.c (SCM_HEAP_SEG_SIZE, CELL_UP, CELL_DN, NEXT_DATA_CELL,
3141 init_heap_seg, alloc_some_heap), gc.h (struct scm_cell, struct
3142 scm_t_cell, SCM_CELLPTR, SCM_GC_CARD_SIZE,
3143 SCM_GC_IN_CARD_HEADERP), tags.h (SCM_CELLP): Renamed the struct
3144 scm_cell and all its uses to scm_t_cell in accordance to Guile's
3145 naming scheme for types.
3147 * alist.c (scm_acons), convert.i.c (CTYPES2UVECT,
3148 CTYPES2UVECT_OPTIONAL), coop-threads.c (scm_call_with_new_thread,
3149 scm_spawn_thread), debug.c (scm_make_debugobj), environments.c
3150 (scm_make_environment), eval.c (scm_closure), fports.c
3151 (scm_fdes_to_port), gc.c (scm_deprecated_newcell,
3152 scm_deprecated_newcell2), inline.h (scm_alloc_cell, scm_cell),
3153 list.c (SCM_I_CONS), numbers.c (scm_i_mkbig), pairs.c (scm_cons),
3154 ports.c (scm_void_port), procs.c (scm_c_make_subr, scm_makcclo),
3155 smob.c (scm_make_smob), smob.h (SCM_NEWSMOB), strings.c
3156 (scm_take_str, scm_allocate_string), strports.c (scm_mkstrport),
3157 unif.c (scm_make_uve), variable.c (make_variable), vectors.c
3158 (scm_c_make_vector), vports.c (scm_make_soft_port): Renamed
3159 scm_alloc_cell to scm_cell.
3161 * environments.c (core_environments_observe), gc.c
3162 (scm_deprecated_newcell2), goops.c (wrap_init, scm_wrap_object),
3163 inline.h (scm_alloc_double_cell, scm_double_cell), num2float.i.c
3164 (FLOAT2NUM), numbers.c (scm_make_real), procs.c
3165 (scm_make_procedure_with_setter), smob.h (SCM_NEWSMOB2,
3166 SCM_NEWSMOB3), struct.c (scm_make_struct, scm_make_vtable_vtable),
3167 symbols.c (scm_mem2symbol, scm_mem2uninterned_symbol), weaks.c
3168 (allocate_weak_vector): Renamed scm_alloc_double_cell to
3171 2002-02-27 Stefan Jahn <stefan@lkcc.org>
3173 * convert.i.c, convert.c: Better range checking.
3175 * inet_aton.c, fports.c: Commented the inclusion of <winsock2.h>.
3177 * deprecation.c (vsnprintf): Define to `_vsnprintf' for
3180 2002-02-26 Thien-Thi Nguyen <ttn@giblet.glug.org>
3182 * Makefile.am: Update path to pre-inst-guile automake frag.
3184 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
3186 * gc.c (scm_gc_sweep): Make it compile even when deprecated
3187 features are excluded.
3189 2002-02-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
3191 * num2integral.i.c (NUM2INTEGRAL): Fixed signedness problem.
3193 2002-02-25 Gary Houston <ghouston@arglist.com>
3195 * convert.c: include <string.h> for convert_i.c.
3197 2002-02-24 Rob Browning <rlb@defaultvalue.org>
3199 * .cvsignore: add stamp-h1.
3201 2002-02-21 Neil Jerram <neil@ossau.uklinux.net>
3203 * unif.c (scm_array_to_list): Correct name, which had been
3204 accidentally changed to scm_t_arrayo_list!
3206 2002-02-20 Mikael Djurfeldt <mdj@linnaeus>
3208 * gc.c (scm_gc_sweep): Print an error message when aborting due to
3209 underflowing scm_mallocated.
3211 2002-02-14 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3213 * gc.h, gc.c (scm_must_malloc, scm_must_realloc, scm_must_strdup,
3214 scm_must_strndup, scm_done_malloc, scm_done_free, scm_must_free):
3215 Reimplemented using the new scm_gc_malloc, etc., functions and
3218 2002-02-11 Thien-Thi Nguyen <ttn@giblet.glug.org>
3220 * Makefile.am (bin_PROGRAMS): Move `guile_filter_doc_snarfage'
3221 to `noinst_PROGRAMS'.
3222 (bin_SCRIPTS): Move all values to `noinst_SCRIPTS'; delete.
3223 (noinst_PROGRAMS, noinst_SCRIPTS): New.
3225 2002-02-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3227 * gc.h, gc.c (scm_gc_sweep): Issue deprecation warning when
3228 non-zero is returned from a port or smob free function.
3229 (scm_malloc, scm_realloc, scm_strndup, scm_strdup,
3230 scm_gc_register_collectable_memory,
3231 scm_gc_unregister_collectable_memory, scm_gc_malloc,
3232 scm_gc_realloc, scm_gc_free, scm_gc_strndup, scm_gc_strdup): New.
3234 * backtrace.c, continuations.c, convert.i.c, coop-threads.c,
3235 debug-malloc.c, dynl.c, environments.c, environments.h,
3236 extensions.c, filesys.c, fports.c, gc.c, gc.h, gh_data.c, goops.c,
3237 guardians.c, hooks.c, init.c, keywords.c, load.c, numbers.c,
3238 ports.c, posix.c, procs.c, rdelim.c, regex-posix.c, root.c,
3239 smob.c, stime.c, strings.c, struct.c, struct.h, symbols.c, unif.c,
3240 vectors.c, weaks.c: Use scm_gc_malloc/scm_malloc and
3241 scm_gc_free/free instead of scm_must_malloc and scm_must_free, as
3242 appropriate. Return zero from smob and port free functions.
3244 * debug-malloc.c (scm_malloc_reregister): Handle "old == NULL".
3246 * deprecation.h, deprecation.c: Reimplemented to allow deprecation
3247 messages while the GC is running.
3248 (scm_c_issue_deprecation_warning_fmt): New.
3250 * fports.c (scm_setvbuf): Reset read buffer to saved values when
3251 it is pointing to the putback buffer.
3253 2002-02-08 Thien-Thi Nguyen <ttn@giblet.glug.org>
3255 * gsubr.c (create_gsubr): On "too many args" error,
3256 also display arg count and name. Thanks to Bill Schottstaedt.
3258 2002-02-05 Thien-Thi Nguyen <ttn@giblet.glug.org>
3260 * Makefile.am: Include $(top_srcdir)/pre-inst-guile.am.
3262 (bin_SCRIPTS): Remove guile-snarf-docs-texi.
3263 (alldotdocfiles, snarf2checkedtexi, dotdoc2texi): New vars.
3264 (guile.texi, guile-procedures.texi): Use $(dotdoc2texi).
3266 * guile-snarf-docs-texi.in: Bye bye.
3268 2002-02-04 Marius Vollmer <marius.vollmer@uni-dortmund.de>
3270 * symbols.c (scm_make_symbol): Fix typo in docstring.
3272 * symbols.h (scm_mem2uninterned_symbol, scm_symbol_interned_p,
3273 scm_make_symbol): New prototypes.
3275 2002-02-03 Marius Vollmer <mvo@zagadka.ping.de>
3277 * symbols.h (SCM_SET_SYMBOL_HASH): Removed.
3278 (SCM_SYMBOL_INTERNED_P): New.
3279 * symbols.c (scm_symbol_hash): Use scm_ulong2num instead of
3280 SCM_MAKINUM since hash values can well be bignums.
3281 (scm_mem2symbol): Only use hash values below SCM_T_BITS_MAX/2.
3282 This signals a interned symbol.
3283 (scm_mem2uninterned_symbol, scm_symbol_interned_p,
3284 scm_make_symbol): New.
3286 * print.c (scm_iprin1): Print uninterned symbols unreadably.
3288 2002-02-02 Thien-Thi Nguyen <ttn@giblet.glug.org>
3290 * __scm.h (HAVE_UINTPTR_T): Only define if UINTPTR_T attributes
3291 are defined: UINTPTR_MAX, INTPTR_MAX, INTPTR_MIN.
3292 Thanks to Dave Love.
3294 2002-01-31 Marius Vollmer <mvo@zagadka.ping.de>
3296 * symbols.c (scm_gensym): Use " g" as default prefix, not "g".
3297 This might help to make unintended clashes less likely.
3298 (scm_string_to_symbol): Protect the string until the symbols is
3301 2002-01-31 Stefan Jahn <stefan@lkcc.org>
3303 * convert.c, convert.h, convert.i.c: New files containing C
3304 array to Scheme conversion helpers meant to be replacement
3305 functions for the deprecated gh interface.
3307 * Makefile.am: Setup rules for new `convert.*' files.
3309 2002-01-28 Stefan Jahn <stefan@lkcc.org>
3311 * symbols.c (scm_c_symbol2str): New function, replacement for
3312 `gh_scm2newsymbol()'.
3314 * strings.c (scm_c_substring2str): New function. Proper
3315 replacement for `gh_get_substr()'.
3317 * socket.c: Include `stdint.h' if available for the `uint32_t'
3320 * scmsigs.c (scm_sigaction): Initialize `chandler' (inhibits
3323 * backtrace.c: Include `lang.h' for GUILE_DEBUG conditional.
3325 2002-01-22 Neil Jerram <neil@ossau.uklinux.net>
3327 Other changes unrelated to Elisp...
3329 * eval.c (scm_m_if): Use s_if rather than repeating string literal
3331 (comments): Fix a few typos.
3332 (scm_for_each): Add parentheses around oddly unparenthesized
3333 if/while conditions.
3335 * read.c (scm_read_opts): Add full stop at end of doc for
3338 * script.c (scm_compile_shell_switches): Use scm_str2symbol
3339 instead of gh_symbol2scm.
3341 * srcprop.h (SRCPROPBRK): Return C type rather than SCM.
3342 (SRCBRKP): Use SRCPROPBRK rather than duplicating its logic.
3344 * srcprop.c (scm_srcprops_to_plist, scm_source_property): Change
3345 SRCPROPBRK (x) to SCM_BOOL (SRCPROPBRK (x)).
3347 First batch of changes for Elisp support...
3349 * alist.c, async.c, boolean.c, dynl.c, eval.c, filesys.c,
3350 fluids.c, list.c, load.c, options.c, posix.c, print.c, sort.c,
3351 throw.c, vectors.c, weaks.c: Add #include for lang.h.
3353 * eval.c, eval.h, init.c, lang.c, lang.h: Use SCM_ENABLE_ELISP to
3354 conditionalize compilation and initialization of Elisp support
3357 * alist.c (scm_assq, scm_assv, scm_assoc), async.c
3358 (scm_asyncs_pending, scm_run_asyncs, noop), backtrace.c
3359 (scm_set_print_params_x), dynl.c (scm_make_argv_from_stringlist),
3360 filesys.c (fill_select_type, retrieve_select_type), fluids.c
3361 (scm_swap_fluids, scm_swap_fluids_reverse), list.c (scm_null_p,
3362 scm_ilength, scm_append_x, scm_last_pair, scm_reverse,
3363 scm_reverse_x, scm_list_ref, scm_list_set_x, scm_list_cdr_set_x,
3364 scm_c_memq, scm_memv, scm_member), load.c (scm_search_path),
3365 options.c (change_option_setting, scm_options), posix.c
3366 (environ_list_to_c), print.c (scm_iprlist), throw.c
3367 (scm_exit_status), vectors.c (scm_vector), weaks.c
3368 (scm_weak_vector): Use SCM_NULL_OR_NIL_P instead of SCM_NULLP.
3370 * boolean.c (scm_not): Use `SCM_FALSEP || SCM_NILP' instead of
3373 * boolean.c (scm_boolean_p): Use `SCM_BOOLP || SCM_NILP' instead
3376 * eval.c (scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
3377 s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify,
3378 scm_m_0_ify, s_1_ify, scm_m_1_ify): Removed.
3379 (scm_m_atfop): Support function aliasing. Support both function
3380 args, which need transformation, and macro args, which do not.
3381 Add explanatory comments.
3382 (SCM_CEVAL): In switch cases for SCM_IM_AND, SCM_IM_COND,
3383 SCM_IM_DO, SCM_IM_IF and SCM_IM_OR, add `|| SCM_NILP' to existing
3384 checks for SCM_FALSEP. In switch case for SCM_IM_NIL_COND, use
3385 SCM_NULLP || SCM_NILP instead of checks against (removed)
3386 scm_lisp_nil. Removed switch cases for SCM_IM_NIL_IFY,
3387 SCM_IM_T_IFY, SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY.
3389 * lang.c (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null,
3390 scm_m_while, scm_nil_eq): Commented out; I don't think we need
3391 these, but I don't want to remove them yet, just in case.
3392 (scm_init_lang): Define `%nil' variable on Scheme level to hold
3395 * lang.h (SCM_NILP): Test against Elisp nil value instead of
3396 against (removed) scm_lisp_nil.
3397 (SCM_NILNULLP, SCM_NIL2EOL, SCM_EOL2NIL): Commented out.
3398 (SCM_NULL_OR_NIL_P): New.
3400 * list.c (scm_append): Use SCM_VALIDATE_NULL_OR_NIL instead of
3403 * print.c (scm_isymnames): Fix comment. Remove #@nil-ify,
3404 #@t-ify, #@0-cond, #@0-ify, #@1-ify. Add #nil (for SCM_ELISP_NIL
3407 * sort.c (scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
3408 scm_sort_x, scm_sort, scm_stable_sort_x, scm_stable_sort): Use
3409 SCM_NULL_OR_NIL_P instead of SCM_NULLP. In constructions like `if
3410 (SCM_NULLP (x)) return SCM_EOL;', return x rather than SCM_EOL.
3412 * tags.h (SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
3413 SCM_IM_0_IFY, SCM_IM_1_IFY): Removed.
3414 (SCM_IM_BIND, SCM_IM_DELAY, SCM_IM_CALL_WITH_VALUES, SCM_UNBOUND):
3415 Numbering shifted down accordingly.
3416 (SCM_ELISP_NIL): New IFLAG.
3418 * validate.h (SCM_VALIDATE_NULL_OR_NIL): New.
3420 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
3422 * eval.c: Removed outdated references to "everr". Improved some
3425 (scm_deval_args, deval_args): Renamed scm_deval_args to
3426 deval_args, since it is not part of the interface.
3428 (SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
3429 use references to debug.vect[0] before it exists. Add parentheses
3430 to switch statement.
3432 * goops.h: Added local emacs variables.
3434 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
3436 * eval.[ch] (scm_deval_args): Made static.
3438 * srcprop.c (scm_source_property): Remove redundant SCM_IMP
3441 * strings.c (scm_c_string2str): Clarified comment. Replaced
3442 THINKME by FIXME for uniformness. Removed question about whether
3443 arguments need to be protected from garbage collection: Arguments
3444 must be protected as any other variable.
3446 2002-01-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
3448 * procs.h (SCM_CLOSURE_BODY): New Macro.
3450 * debug.c (scm_procedure_name, scm_procedure_source), eval.c
3451 (SCM_CEVAL, SCM_APPLY), goops.c (scm_sys_initialize_object,
3452 get_slot_value, set_slot_value), procs.c
3453 (scm_procedure_documentation), sort.c (closureless), stacks.c
3454 (get_applybody): Replace SCM_CDR (SCM_CODE (...)) by
3457 * sort.c (closureless): Prefer !SCM_FOOP over SCM_NFOOP.
3459 2001-12-26 Marius Vollmer <mvo@zagadka.ping.de>
3461 * Makefile.am (guile-procedures.txt): When we don't have makeinfo,
3464 2001-12-16 Marius Vollmer <mvo@zagadka.ping.de>
3466 * stacks.c, stacks.h (scm_t_stackype): Renamed to scm_stack_type
3469 * continuations.c (scm_make_continuation): Do not retain the
3470 throw_value when the continuation is invoked.
3472 2001-12-08 Stefan Jahn <stefan@lkcc.org>
3474 * strings.c (scm_c_string2str): New function. Converts a
3475 given Scheme string into a C string. Also put in two
3476 THINKME's regarding the malloc policy for the missing converter
3479 2001-12-01 Neil Jerram <neil@ossau.uklinux.net>
3481 * gh_data.c (gh_module_lookup): Use scm_str2symbol rather than
3484 2001-11-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
3486 * gc.h (SCM_GC_CELL_WORD, SCM_GC_CELL_OBJECT,
3487 SCM_GC_SET_CELL_WORD, SCM_GC_SET_CELL_OBJECT): New macros.
3489 (SCM_GC_CELL_TYPE, SCM_CELL_WORD, SCM_CELL_OBJECT,
3490 SCM_SET_CELL_WORD, SCM_SET_CELL_OBJECT, SCM_FREE_CELL_CDR,
3491 SCM_GC_SET_CELL_OBJECT): Express in terms of SCM_GC_CELL_*
3494 (SCM_FREE_CELL_P): Express in terms of SCM_GC_CELL_TYPE.
3496 * inline.h (scm_alloc_cell, scm_alloc_double_cell): Use
3497 SCM_GC_CELL_* macros when accessing free cells.
3499 2001-11-25 Marius Vollmer <mvo@zagadka.ping.de>
3501 * vectors.h (SCM_MAKE_VECTOR_TAG): New.
3502 * unif.h (SCM_MAKE_BITVECTOR_TAG, SCM_MAKE_UVECTOR_TAG): New.
3503 * symbols.h (SCM_MAKE_SYMBOL_TAG): New.
3504 * strings.h (SCM_MAKE_STRING_TAG): New.
3505 * procs.h (SCM_MAKE_CCLO_TAG): New.
3506 * numbers.h (SCM_MAKE_BIGNUM_TAG): New.
3508 * goops.h: Replaced SCM_DEBUG_DEPRECATED with
3509 !SCM_ENABLE_DEPRECATED.
3511 * async.c, async.h (scm_system_async_mark_from_signal_handler):
3514 * scmsigs.c (scm_take_signal): Removed all code that assumes that
3515 signal handlers are allowed to divert the flow of control. Call
3516 scm_system_async_mark_from_signal_handler instead of
3517 scm_system_async_mark.
3520 Deprecated SCM_NEWCELL and SCM_NEWCELL2. Added scm_alloc_cell and
3521 scm_alloc_double_cell in their place.
3523 * gc.h (SCM_GC_SET_ALLOCATED, scm_debug_newcell,
3524 scm_debug_newcell2, scm_tc16_allocated): Removed from header.
3525 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
3526 (SCM_NEWCELL, SCM_NEWCELL2): Implement in terms of
3527 scm_deprecated_newcell and scm_deprecated_newcell2.
3529 gc.c (scm_tc16_allocated): Only define when including deprecated
3531 (scm_debug_newcell, scm_debug_newcell2): Removed.
3532 (scm_init_storage): Do not initialize scm_tc16_allocated.
3533 (scm_init_gc): Do it here.
3534 (allocated_mark): New, from old code.
3535 (scm_deprecated_newcell, scm_deprecated_newcell2): New.
3537 * inline.c, inline.h: New files.
3538 * Makefile.am: Added them in all the right places.
3540 * _scm.h: Include "libguile/inline.h".
3542 * alist.c, coop-threads.c, debug.c, environments.c, eval.c,
3543 fports.c, gh_data.c, goops.c, guardians.c, lang.c, list.c,
3544 num2float.i.c, numbers.c, pairs.c, ports.c, print.c, procs.c,
3545 smob.c, smob.h, strings.c, strports.c, struct.c, symbols.c,
3546 unif.c, variable.c, vectors.c, vports.c, weaks.c: Replaced
3547 SCM_NEWCELL and SCM_NEWCELL2 with scm_alloc_cell and
3548 scm_alloc_double_cell, respectively.
3550 2001-11-23 Marius Vollmer <mvo@zagadka.ping.de>
3552 * modules.c (scm_c_use_module): Adapt to changes to
3553 `process-use-modules'.
3555 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
3557 * numbers.c (scm_divide): Fix more division by zero errors.
3559 2001-11-21 Gary Houston <ghouston@arglist.com>
3561 * Makefile.am (OMIT_DEPENDENCIES): removed, since it seems to be
3562 obsolete. autogen.sh says:
3563 invalid unused variable name: `OMIT_DEPENDENCIES'
3565 2001-11-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
3567 * numbers.c (scm_divide): Fix (/ 0). Thanks to Keith Wright for
3570 2001-11-21 Marius Vollmer <mvo@zagadka.ping.de>
3572 * Makefile.am (install-exec-hook): Prepend $(DESTDIR) to filename.
3573 Thanks to Eric Gillespie, Jr!
3575 2001-11-21 Stefan Jahn <stefan@lkcc.org>
3577 * win32-socket.c (getservent, setservent, endservent,
3578 getprotoent, setprotoent, endprotoent): New functions.
3579 Appropriate replacements for M$-Windows.
3581 * numbers.c (SIZE_MAX, PTRDIFF_MAX, PTRDIFF_MIN): Reintroduced
3582 these definitions for GUILE_DEBUG.
3584 * net_db.c: Include "win32-socket.h" if compiling with a native
3585 M$-Windows compiler. Include some pieces of code (protoent and
3586 servent interface) protected by HAVE_* macros when using a
3587 native M$-Windows compiler.
3589 2001-11-20 Marius Vollmer <mvo@zagadka.ping.de>
3591 * modules.c (scm_c_export): Do nothing when the first argument is
3592 already the terminating NULL. Thanks to Han-Wen Nienhuys!
3594 2001-11-20 Thien-Thi Nguyen <ttn@glug.org>
3596 * Makefile.am (libpath.h): In SCM_BUILD_INFO,
3597 also include `buildstamp'.
3599 2001-11-18 Rob Browning <rlb@defaultvalue.org>
3602 (s_scm_major_version): use SCM_MAJOR_VERSION.
3603 (s_scm_minor_version): use SCM_MINOR_VERSION.
3604 (s_scm_micro_version): use SCM_MICRO_VERSION.
3605 (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
3609 (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
3610 (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
3611 (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
3613 2001-11-18 Neil Jerram <neil@ossau.uklinux.net>
3615 * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
3616 Rewrite docstrings without reference to substring-move-left/right,
3617 since the latter no longer exist.
3619 2001-11-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
3621 * eval.c: Removed bogus comment about acros.
3623 (scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
3624 Minimize scope of local variable. Eliminate dependency on
3625 macro DEBUG_EXTENSIONS.
3627 (s_splicing): New error message string.
3629 (scm_m_body): Issue 'bad body' message rather than 'missing
3630 expression' message.
3632 (scm_m_quote): Eliminate unnecessary copying.
3634 (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
3635 checking of the body to scm_m_body.
3637 (scm_m_do): Move comment to function header. Rename arg1 to
3638 binding. Made the code a bit easier to read.
3642 (iqq): Added a comment. Changed the depth parameter to
3643 unsigned. Use size_t for vector lengths. Make sure vector object
3644 is gc protected as long as its contents are read. Add some syntax
3645 checks. Get rid of unnecessary SCM_IMP test. Clean up the
3646 control structure a bit.
3648 (scm_m_delay): Added comment about the implementation of
3651 (scm_m_define): Add comment about guile's currying define
3652 syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
3653 DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
3655 (scm_m_letrec1): Removed. Part of the functionality is taken
3656 over by the new function 'transform_bindings'.
3658 (transform_bindings): New function. Takes over some of the
3659 functionality of removed function 'scm_m_letrec1', namely to split
3660 a list of bindings into a reversed list of variables and a list of
3663 (scm_m_letrec): Call 'transform_bindings'.
3665 (scm_m_let): Minimized scope of local variables. Renamed 'proc'
3666 to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
3667 test. Use 'transform_bindings'. Fixed scoping error with named
3668 let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
3669 Jerram for suggesting the fix). Cleaned up the control structure
3672 (scm_m_expand_body): Use 'transform_bindings'. Eliminated
3673 unnecessary consing. Eliminated unnecessary
3674 SCM_DEFER/ALLOW_INTS.
3676 (SCM_CEVAL): Un-obfuscated some loops.
3678 2001-11-16 Neil Jerram <neil@ossau.uklinux.net>
3680 * gc.h (scm_unhash_name): Old declaration removed.
3682 * eval.c (s_scm_eval): Change @var{primitive-eval} to
3683 @code{primitive-eval}.
3685 * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
3686 version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
3687 Change @deffnx lines in docstrings to say {Scheme Procedure}
3688 rather than primitive or procedure.
3690 * posix.c (scm_execl), filesys.c (scm_close), unif.c
3691 (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
3692 scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
3693 scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
3694 scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
3695 (scm_string_split, scm_string_ci_to_symbol), strings.c
3696 (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
3697 macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
3698 Docstring fixes and improvements reflecting edits that have been
3699 made in the reference manual source.
3701 * objprop.c (scm_object_properties, scm_set_object_properties_x,
3702 scm_object_property, scm_set_object_property_x): Remove invalid
3703 @deffnx lines for corresponding procedure property primitives.
3705 These changes add a @deffnx C function declaration and function
3706 index entries for each Guile primitive to the copy of the doc
3707 snarf output that is used for reference manual synchronization.
3708 Online help is unchanged.
3710 * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
3711 (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
3712 name to SCM_SNARF_DOCS.
3714 * guile-snarf-docs-texi.in: Pass the shell script's arguments into
3715 snarf-check-and-output-texi.
3717 * Makefile.am (guile-procedures.texi): New rule.
3718 (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
3719 Changed so that the last stage of doc snarfing is now performed
3720 twice, once to produce guile-procedures.txt for online help, and
3721 once to produce guile.texi for reference manual synchronization.
3723 2001-11-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
3725 * eval.c (RETURN): Wrap in do{}while(0) in order to make it
3726 safely usable as a single statement followed by a ';', for example
3729 (SCM_CEVAL, SCM_APPLY): Clean up code using 'RETURN'.
3731 2001-11-13 Neil Jerram <neil@ossau.uklinux.net>
3733 * random.c (scm_random_solid_sphere_x,
3734 scm_random_hollow_sphere_x): Correct "shere" typos.
3736 * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
3738 * version.c (scm_version): Update docstring to include
3741 2001-11-13 Marius Vollmer <mvo@zagadka.ping.de>
3743 * modules.c (scm_c_export): Call va_end after collecting the
3746 * strop.h, strop.c (scm_substring_move_left_x,
3747 scm_substring_move_right_x): Removed.
3749 * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
3750 HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
3753 2001-11-12 Marius Vollmer <mvo@zagadka.ping.de>
3755 * numbers.c: Document macros to define when including
3756 num2integral.i.c. MAX_VALUE and MIN_VALU are no longer used, we
3757 now rely on SIZEOF_ macros that have been figured out at
3760 * num2integral.i.c: Adapt to new interface.
3761 (NUM2INTEGRAL): Test whether a fixnum can be represented in the
3762 target type by casting it and checking whether it is still the
3763 same. Do not try to handle bignums for integral types that are
3764 smaller than fixnums. When handling bignums, collect the
3765 magnituse first into a unsigned type, and correctly check for
3767 (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
3768 only -MIN_VALUE can still be negative of all negative numbers (in
3771 * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
3773 * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
3774 HAVE_LONG_LONG depending on whether their size is non-zero.
3776 2001-11-11 Thien-Thi Nguyen <ttn@glug.org>
3778 * strop.c (scm_string_null_p): Docfix; nfc.
3779 Thanks to Scott Lenser.
3781 2001-11-07 Neil Jerram <neil@ossau.uklinux.net>
3783 * extensions.c (scm_load_extension): Canonicalize docstring
3786 * unif.c (scm_uniform_array_write), ports.c
3787 (scm_current_output_port, scm_force_output), dynwind.c
3788 (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
3789 filesys.c (scm_open, scm_lstat), struct.c
3790 (scm_make_struct_layout), random.c (scm_random,
3791 scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
3792 (scm_i_index): Remove superfluous whitespace from end of docstring
3795 * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
3796 strings.c (scm_make_string), variable.c (scm_make_variable,
3797 scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
3798 scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
3799 posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
3800 (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
3801 newline at end of docstrings.
3803 * modules.c (scm_set_current_module): Add missing newline to
3806 2001-11-07 Stefan Jahn <stefan@lkcc.org>
3808 * win32-socket.[ch]: New files. Defines Winsock-API error codes
3809 and makes them available through Guile. That is because the
3810 Winsock-API does not store its errors in `errno' and thus cannot
3811 return error messages via `strerror (errno)'.
3813 * socket.c (scm_init_socket): Initialize `win32-socket' part
3814 here under M$-Windows.
3816 * numbers.h: Added missing declaration of
3817 `scm_sys_check_number_conversions()'.
3819 * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
3820 and use in `(strerror)' and `(system-error)'.
3822 * Makefile.am (EXTRA_libguile_la_SOURCES): Added
3823 `win32-socket.[ch]' to extra source and header files.
3825 2001-11-06 Marius Vollmer <mvo@zagadka.ping.de>
3827 * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
3828 a call to turn-on-debugging when --debug has been given instead of
3829 turning it on directly. Also, handle new `--no-debug' option,
3830 which might suppress the call to turn-on-debugging.
3832 2001-11-05 Stefan Jahn <stefan@lkcc.org>
3834 * struct.c (s_scm_struct_vtable_p): Corrected docstring.
3836 2001-11-04 Stefan Jahn <stefan@lkcc.org>
3838 * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
3839 here (was at guile_LDADD) which describes the dependency
3840 correctly and allows a clean build on Win32.
3842 * __scm.h (SCM_API): Follow-up patch. Renamed __FOO__ macros
3845 * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
3846 import macros for external libraries (libcrypt, libqthreads,
3847 libreadline and libregex).
3849 * coop-defs.h: Include <winsock2.h> for `struct timeval'.
3851 * posix.c (flock): Added support for flock() in M$-Windows.
3853 * guile.c (SCM_IMPORT): Follow-up patch. Use SCM_IMPORT instead
3856 * fports.c (getflags): Differentiate reading and writing pipes
3859 * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
3862 * coop.c (coop_condition_variable_timed_wait_mutex): Use
3863 conditionalized error code if `ETIMEDOUT' is not available.
3864 (scm_thread_usleep): Remove bogus declaration of `struct timeval
3867 * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
3868 belongs. That is because NO_PREPRO_MAGIC gets undefined after
3869 each inclusion of `num2integral.i.c'.
3870 (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
3872 2001-11-03 Marius Vollmer <mvo@zagadka.ping.de>
3874 * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
3875 (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
3877 2001-11-02 Mikael Djurfeldt <mdj@linnaeus>
3879 * print.c (scm_iprin1): Mark print state as revealed when
3880 dispatching to generic write or display.
3882 * unif.c (scm_ra2contig): Fixed memory overwrite bug.
3884 2001-11-02 Marius Vollmer <mvo@zagadka.ping.de>
3886 Support for native Win32. Thanks to Stefan Jahn!
3888 * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
3889 and win32-dirent.h to extra source and header files. These
3890 include the uname() and the POSIX dirent interface implementation
3891 for M$-Windows. Put `-no-undefined' into LDFLAGS to support
3892 linkers which do not allow unresolved symbols inside shared
3893 libraries. Corrected `guile_filter_doc_snarfage$(EXEEXT)'
3896 * __scm.h: Defined SCM_API. This macro gets prepended to all
3897 function and data definitions which should be exported or imported
3898 in the resulting dynamic link library in the Win32 port.
3900 * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
3901 chars.h, continuations.h, coop-defs.h, coop-threads.h,
3902 debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
3903 environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
3904 feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
3905 gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
3906 hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
3907 load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
3908 objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
3909 procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
3910 read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
3911 smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
3912 strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
3913 tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
3915 Prefixed each each exported symbol with SCM_API.
3917 * continuations.c: Added comment about the use of the extern
3918 declarations of {get,set}context() functions used in the ia64 port.
3920 * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
3921 is meant to be a `unsigned long *'.
3923 * filesys.c: Include `direct.h' if possible. Use local
3924 `win32-dirent.h' for the native M$-Windows port. Define S_IS*()
3925 macros for M$-Windows. Implementation of `fstat_Win32()' which is
3926 able to differentiate between sockets and other file descriptors.
3927 Use this function as wrapper in `scm_fstat()'. Fixed typo in
3930 * fports.c: Include `io.h' is possible. Put `*fp' into referring
3931 statement block in `scm_fport_buffer_add()'.
3932 Some corrections in `getflags()'.
3934 * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
3936 * guile.c: Make sure to define __SCM_IMPORT__ for shared library
3937 build on Win32. Disable preloaded symbols on Win2 platforms.
3939 * ioext.c, ports.c: Include `io.h' is possible.
3941 * mkstemp.c: Include `process.h' is possible.
3943 * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
3945 Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
3947 * posix.c: Remove unnecessary dirent includes and defines. Include
3948 local `win32-uname.h' for MinGW. Extern declaration of
3949 `mkstemp()' for systems where it does not exists. Make
3950 `getlogin()' available on M$-Windows.
3952 * scmsigs.c: Made `usleep()' avalable on MinGW.
3954 * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
3956 * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
3958 * win32-uname.c: Include "win32-uname.h", not "uname.h".
3960 2001-10-28 Mikael Djurfeldt <mdj@linnaeus>
3962 * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
3963 Don't apply scm_uniform_vector_length on arrays.
3965 2001-10-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
3967 * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
3968 scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
3969 scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
3970 SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
3971 scm_list_<n> over scm_cons[2]?.
3973 (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
3974 scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
3975 SCM_C[AD][AD]R instead of explicit form.
3977 (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
3978 comparison parameters.
3980 (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
3981 !SCM_NULLP instead of SCM_NIMP.
3983 (scm_m_case): Don't copy the form. Renamed proc to clause and
3984 minimized its scope. Renamed x to clauses. Removed side
3985 effecting operation from macro call.
3987 (scm_m_cond): Don't copy the form. Renamed arg1 to clause and
3988 minimized its scope. Renamed x to clauses. Minimized the scope
3989 of variable 'len'. Make sure the else clause is treated specially
3990 even in case of '=>' occurences. Don't change the else to #t in
3991 order to be able to distinguish this case in the evaluator. Leave
3992 type checking of the recipient to the evaluator.
3994 (scm_c_improper_memq): Made the comment somewhat clearer.
3996 (scm_m_lambda): Renamed proc to formals. Removed unnecessary
3997 test for SCM_IM_LET at the place of the formal parameters.
3998 Simplified the formal parameter checking.
4000 (scm_m_letstar): Added Comment. Renamed proc to bindings.
4001 Renamed arg1 to binding and minimized its scope. Eliminated
4002 unnecessary consing.
4004 (scm_m_do): Renamed proc to bindings. Minimized the scope of
4007 (build_binding_list): New static function.
4009 (unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
4010 Further, split up the 'letrec' unmemoizing code to the
4011 corresponding parts for 'do', 'let' and 'letrec', adding comments
4012 to each form. Cleanup the handling of the do form (This removes
4013 some *real* code :-).
4015 (SCM_CEVAL): Removed side effecting operation from macro call.
4016 Handle the 'else clause of the 'cond form specially - the symbol
4017 'else is not replaced with #t any more.
4019 2001-10-14 Gary Houston <ghouston@arglist.com>
4021 * version.c (scm_version): use sprintf instead of snprintf,
4022 for portability. thanks to Bill Schottstaedt.
4024 2001-10-14 Mikael Djurfeldt <mdj@linnaeus>
4026 * read.c (scm_lreadr): When user-defined hash procedure returns
4027 SCM_UNSPECIFIED: Fall back to standard handling instead of raising
4028 an exception. (This prevents parsing of uniform vectors from
4029 interfering with parsing of numbers.)
4031 2001-10-13 Marius Vollmer <mvo@zagadka.ping.de>
4033 * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
4034 PTRDIFF_MIN. Thanks to Ken Raeburn.
4036 2001-10-07 Marius Vollmer <mvo@zagadka.ping.de>
4038 * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
4040 * eval.c (scm_m_atbind): First try to find the variable without
4041 defining it locally; when it has not been found, define it
4044 * modules.c (module_variable): Pass over variables that exist but
4047 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
4049 * backtrace.c (display_backtrace_file_and_line): Only use
4050 scm_basename when POSIX support is compiled in. Thanks to Chris
4053 2001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
4055 * numbers.c (mem2uinteger): Return number read so far when coming
4056 across a hexdigit after having read a # or if not reading a hex
4057 value. This will enable the calling code to correctly handle
4058 forms like 1e2. (The background is, that the exponent markers d,
4059 e and f are also hexdigits.) Thanks to Mikael Djurfeldt for
4060 providing this patch.
4062 (mem2complex): Fix erroneous double-negation. Now, numbers like
4063 1-i will be read correctly.
4065 2001-10-12 Mikael Djurfeldt <mdj@linnaeus>
4067 * debug.c (scm_mem_to_proc): Fixed typo in previous change.
4069 * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
4071 2001-10-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
4073 * print.c (scm_print_state_vtable, print_state_pool):
4074 Initialize. These variables are now registered as gc roots.
4076 (scm_current_pstate): Update documentation.
4078 (scm_current_pstate, scm_make_print_state, scm_free_print_state,
4079 scm_prin1, scm_init_print): print_state_pool is registered as a
4080 gc root and thus does not need to be protected by a surrounding
4083 (make_print_state): The car of print_state_pool no longer holds
4084 the scm_print_state_vtable.
4086 (scm_current_pstate, scm_make_print_state, print_circref,
4087 scm_iprin1, scm_prin1, scm_iprlist): Prefer !SCM_<foo> over
4090 (scm_prin1): When building lists, prefer scm_list_<n> over
4093 (scm_iprlist): Removed a redundant SCM_IMP test.
4095 (scm_simple_format): Use SCM_EQ_P to compare SCM values.
4097 2001-10-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
4099 * debug.c (scm_make_iloc): Prefer !SCM_<foo> over SCM_N<foo>.
4101 (scm_memcons, scm_mem_to_proc): When building lists, prefer
4102 scm_list_<n> over scm_cons[2]?.
4104 (scm_mem_to_proc): Prefer SCM_CONSP over SCM_NIMP.
4106 (scm_procedure_name): Use SCM_CADR instead of explicit form.
4108 (debugobj_print): Coerce scm_intprint arg 1 to long, not int.
4109 Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
4110 for some reason his patch didn't make it into the cvs.
4112 2001-10-09 Dirk Herrmann <D.Herrmann@tu-bs.de>
4114 * numbers.c (mem2decimal_from_point): Cleaned up the parsing a
4115 little bit - should even be somewhat more accurate now.
4117 2001-10-08 Rob Browning <rlb@defaultvalue.org>
4119 * gc.c: support ia64 register backing store.
4120 (SCM_MARK_BACKING_STORE): new macro.
4122 * continuations.h: support ia64 register backing store.
4123 (struct scm_t_contregs): add ia64 register backing store.
4125 * continuations.c: support ia64 register backing store.
4126 (continuation_mark): mark ia64 register backing store.
4127 (continuation_free): free ia64 register backing store.
4128 (scm_make_continuation): capture ia64 register backing store.
4129 (copy_stack_and_call): copy ia64 register backing store.
4131 2001-10-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
4133 * hashtab.c (scm_hash_fn_create_handle_x): The result of assoc_fn
4134 is known to be #f if no entry is found. Thus, use !SCM_FALSEP
4135 instead of SCM_NIMP to test for that case.
4137 * strings.h (SCM_SET_STRING_LENGTH): Cast the length to
4138 scm_t_bits instead of long.
4140 2001-10-06 Marius Vollmer <mvo@zagadka.ping.de>
4142 * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
4143 SCM_T_SIGNED_BITS_MIN): New.
4144 * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
4145 Use them to make these macros computable by the preprocessor.
4147 * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
4148 whether the integral type fits in a fixnum, not the compiler.
4149 This removes a spurious compiler warning. Also, honor the
4150 NO_PREPRO_MAGIC flag to suppress any preprocessor tests. This is
4151 needed for `long long's.
4153 * numbers.c: Define NO_PREPRO_MAGOC when including
4154 num2integral.c.i for `long long' and `signed long long'.
4156 2001-10-06 Mikael Djurfeldt <mdj@linnaeus>
4158 These changes fixes a race condition in the Guile coop - pthread
4161 * coop.c (mother_awake_p): New variable.
4162 (coop_create): Set mother_awake_p before creating or signalling
4163 mother; wait until mother is going to sleep before returning.
4164 (mother): Reset mother_awake_p before going to sleep.
4166 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
4168 * options.c (protected_objects, scm_init_options): The content of
4169 protected_objects is now protected from garbage collection using
4170 scm_gc_register_root instead of scm_permanent_object.
4172 (get_option_setting): New static function that computes an option
4173 setting as it was formerly done in the function scm_options.
4175 (get_documented_option_setting): New static function that
4176 returns option documentation as it was formerly done in the
4177 function scm_options. Note that documentation C strings are no
4178 longer precomputed into SCM objects. Instead, they are converted
4179 into SCM strings every time get_documented_option_setting is
4182 (change_option_setting): New static functions that modifies the
4183 option setting as it was formerly done in the function
4184 scm_options. The function is now exception safe, i. e. won't
4185 cause a memory leak when interrupted. Further, only non-immediate
4186 option values are added to the protection list.
4188 (scm_options): This function now has only the purpose to dispatch
4189 to to get_option_setting, get_documented_option_setting or
4190 change_option_setting, depending on the arguments given to
4193 (scm_init_opts): Don't convert documentation C strings into SCM
4194 strings. Further, don't protect any object values: They _must_
4195 be immediate values, otherwise there is no guarantee that they
4196 have not been collected before anyway.
4198 * options.[ch] (scm_t_option): Made type unsigned, name into a
4199 constant char* and val into a scm_t_bits type.
4201 (scm_options, scm_init_opts): The number of options is guaranteed
4202 to be larger or equal to zero. Thus, the type is changed to
4205 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
4207 * num2integral.i.c (NUM2INTEGRAL): Eliminated some warnings about
4208 testing an unsigned value for being >= 0.
4210 2001-10-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
4212 * numbers.h: Removed old comment about using SCM_CAR to access
4215 (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM): Make sure
4216 the return value is signed. Thanks to Brian Crowder for the bug
4219 (SCM_SRS): Avoid unnecessary casting and don't unpack input
4220 values. With this patch, SCM_SRS can be safely used for other
4221 types than scm_t_signed_bits. However, it should still better be
4222 an internal macro and thus be renamed to SCM_I_SRS.
4224 (SCM_MAKINUM, SCM_INUM): Use proper casting.
4226 2001-10-03 Gary Houston <ghouston@arglist.com>
4228 * continuations.h, unif.h: in the descriptions of the bit patterns
4229 of the heap cells, make bit 0 the least significant.
4231 2001-09-25 Thien-Thi Nguyen <ttn@glug.org>
4233 * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
4234 Thanks to Golubev I. N.
4236 2001-09-25 Gary Houston <ghouston@arglist.com>
4238 * ports.c (scm_drain_input): extended the docstring. thanks to
4239 Alex Schroeder and Thien-Thi Nguyen.
4241 2001-09-23 Mikael Djurfeldt <mdj@linnaeus>
4243 * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
4244 SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
4245 macros. (The NUM names might soon change.)
4247 * numbers.h: Added missing declarations.
4249 2001-09-22 Mikael Djurfeldt <mdj@linnaeus>
4251 * Makefile.am: Distribute num2float.i.c.
4253 * num2float.i.c: New file, multiply included by numbers.c, used
4254 to "templatize" the float <-> num conversion routines.
4256 * numbers.c: New functions: scm_num2float, scm_float2num,
4257 scm_num2double, scm_double2num.
4259 2001-09-21 Rob Browning <rlb@defaultvalue.org>
4261 * .cvsignore: really add version.h
4263 * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
4264 Otherwise it fails on the alpha. However, we might rather choose
4265 this size conditionally.
4267 * numbers.c (scm_gcd): change "k" to a long from an int.
4268 Otherwise it fails on the alpha. However, we might rather choose
4269 this size conditionally.
4271 * error.c (scm_wta): coerce char* to intptr_t before int
4274 * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
4277 * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
4279 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
4281 * numbers.c (scm_integer_expt): Accept inexact integer in second
4282 argument. (Thanks to Bill Schottstaedt.)
4284 2001-09-20 Rob Browning <rlb@defaultvalue.org>
4286 * .cvsignore: add version.h
4288 * versiondat.h.in: removed (obsolete).
4290 * version.h.in: renamed from version.h.
4291 (SCM_GUILE_MAJOR_VERSION): new public macro.
4292 (SCM_GUILE_MINOR_VERSION): new public macro.
4293 (SCM_GUILE_MICRO_VERSION): new public macro.
4295 * version.h: renamed to version.h.in.
4298 (scm_major_version): support integer *_VERSION macros.
4299 (scm_minor_version): support integer *_VERSION macros.
4300 (scm_micro_version): support integer *_VERSION macros.
4301 (scm_version): support integer *_VERSION macros.
4303 2001-09-20 Mikael Djurfeldt <mdj@linnaeus>
4305 * error.c, error.h: Made error keys globally accessible.
4306 Applications might want to test for these or use them in a direct
4309 * num2integral.i.c (NUM2INTEGRAL): Report an error when these
4310 routines are passed an inexact. This change in behavior is
4311 motivated by concordance with R5RS: It is more common that a
4312 primitive doesn't want to accept an inexact for an exact.
4314 2001-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
4316 The following patch partially undoes my patch from 2001-06-30,
4317 where I added the function scm_gc_mark_cell_conservatively. The
4318 function is buggy, since it breaks guile during conservative
4319 marking if a pointer on the stack points directly into the list of
4320 free cells on the heap: With conservative cell marking this will
4321 cause the whole free list to be scanned and marked - boom!
4323 * gc.c (allocated_mark, MARK, heap_segment,
4324 scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
4325 (scm_gc_mark_cell_conservatively): Remove function
4326 scm_gc_mark_cell_conservatively and update the corresponding
4327 comments and uses accordingly. Thanks to Christopher Cramer for
4328 the patch. (Minor corrections by me.)
4330 2001-09-15 Gary Houston <ghouston@arglist.com>
4332 * root.h (scm_root_state): removed the continuation_stack and
4333 continuation_stack_ptr members, which have no apparent purpose.
4334 (scm_continuation_stack, scm_continuation_stack_ptr): #defines
4337 * root.c (root_mark), init.c (restart_stack, start_stack), gc
4338 (scm_igc): remove all references to contination_stack and
4339 continuation_stack_ptr, avoiding allocation of a vector and
4340 useless processing during gc.
4342 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
4344 * guardians.c (tconc_t, t_tconc): Renamed tconc_t to t_tconc.
4346 (TCONC_IN): Make sure that the cell word 0 is initialized last.
4348 (guardians_t, t_guardians): Renamed guardians_t to t_guardians.
4350 (GUARDIAN, GUARDIAN_DATA): Renamed GUARDIAN to GUARDIAN_DATA.
4352 (guardian_apply, scm_get_one_zombie, scm_make_guardian,
4353 mark_and_zombify): Prefer !SCM_<foo> over SCM_N<foo>.
4355 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
4357 * guardians.c (mark_dependencies_in_tconc,
4358 whine_about_self_centered_zombies, scm_init_guardians): Register
4359 the static global variable `self_centered_zombies' via
4360 scm_gc_register_root, to make some cdr-ing unnecessary.
4362 2001-09-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
4364 * backtrace.c (display_backtrace_file,
4365 display_backtrace_file_and_line): Use SCM_EQ_P when comparing SCM
4366 values, use SCM_FALSEP when comparing SCM values against #f.
4367 Thanks to Rob Browning for the bug report.
4369 2001-09-12 Martin Baulig <martin@home-of-linux.org>
4371 * strings.[ch] (scm_str2string): New function.
4373 2001-09-06 Marius Vollmer <mvo@zagadka.ping.de>
4375 * gc.c (scm_done_free): Always subtract size from scm_mallocated
4376 when computing nm, even if it's negative.
4377 (scm_must_malloc): Abort on overflow of scm_mtrigger.
4378 (scm_must_realloc): Likewise.
4380 2001-09-01 Michael Livshin <mlivshin@bigfoot.com>
4382 * numbers.c (scm_sys_check_number_conversions): new function,
4383 defined if Guile is compiled in debugging mode. currently checks
4384 `scm_num2ulong', should check much much more.
4386 * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
4387 unsigned, ensure that it's positive. thanks to Martin Baulig!
4389 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
4391 * __scm.h: Added new section about compile time selectable
4394 (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
4395 SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
4396 SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
4397 SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
4400 * deprecation.c (scm_include_deprecated_features): Simplified.
4402 * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
4403 `SCM_IMP´ instead of `!SCM_CELLP´.
4405 * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
4406 Extract side-effecting operations from macros.
4408 (scm_init_eval): Don't initialize *top-level-lookup-closure*,
4409 scm_top_level_lookup_closure_var and scm_system_transformer.
4411 * gc.c (CELL_P): New local definition to replace SCM_CELLP.
4413 (heap_segment): Use CELL_P instead of SCM_CELLP.
4415 * init.c (start_stack): Don't initialize
4416 scm_top_level_lookup_closure_var and scm_system_transformer.
4418 * modules.c (scm_set_current_module): Don't access
4419 scm_top_level_lookup_closure_var and scm_system_transformer.
4421 (scm_sym2var): Don't call scm_variable_set_name_hint.
4423 (scm_post_boot_init_modules): Removed deprecated initializations.
4425 * print.c (scm_ipruk): Don't access cell contents of non cells.
4427 * strings.c (scm_string_set_x): All strings are writable.
4429 * strings.h (SCM_STRINGP): Use SCM_TYP7 to determine the string
4430 type. There is only one string type now.
4432 (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
4434 * tags.h: Remove comments about two different string types.
4436 (SCM_CELLP, SCM_NCELLP): Deprecated.
4438 * variable.c (make_variable): Remove code variant for vcells.
4440 * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
4441 SCM_VARIABLE_LOC): Remove code variant for vcells.
4443 * __scm.h, deprecation.[ch]: Renamed SCM_DEBUG_DEPRECATED to
4444 SCM_ENABLE_DEPRECATED with the logic reversed.
4446 * dynl.c (moddata, registered_mods), dynl.[ch]
4447 (scm_register_module_xxx, scm_registered_modules,
4448 scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
4449 (*top-level-lookup-closure*), eval.[ch]
4450 (scm_top_level_lookup_closure_var, scm_system_transformer,
4451 scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
4452 SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
4453 SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
4454 SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
4455 scm_unprotect_object), modules.c (root_module_lookup_closure,
4456 scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
4457 beautify_user_module_x_var, try_module_autoload_var,
4458 scm_module_full_name), modules.[ch] (scm_the_root_module,
4459 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
4460 ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
4461 ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
4462 scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
4463 SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
4464 (scm_read_only_string_p, scm_makstr, scm_makfromstr,
4465 scm_make_shared_substring), tags.h (scm_tc7_substring,
4466 SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
4467 scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
4468 variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
4469 variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
4472 * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
4473 (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
4474 scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
4475 scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
4476 scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
4477 (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
4478 scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
4479 posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
4480 scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
4481 scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
4482 regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
4483 (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
4484 (setzone, scm_strftime, scm_strptime), vports.c
4485 (scm_make_soft_port): Remove calls to
4486 SCM_STRING_COERCE_0TERMINATION_X. Since the substring type is
4487 gone, all strings are 0-terminated anyway.
4489 * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
4490 SCM_RANDOM_H): Renamed the macros that are defined to inhibit
4491 double inclusion of the same headers to the SCM_<filename>_H
4494 * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
4495 (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
4496 print.c (scm_iprin1): The type scm_tc7_substring does not exist
4499 * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
4500 SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
4501 (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
4502 !SCM_<foo> over SCM_N<foo>.
4504 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
4506 * Makefile.am: Remove references to symbols-deprecated.c.
4508 * symbols.c (scm_init_symbols): Don't initialize deprecated
4511 * symbols-deprecated.c: Removed.
4513 * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
4514 (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
4515 (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
4516 scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
4517 scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
4518 (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
4519 scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
4520 scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
4521 (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
4522 scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
4523 setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
4524 (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
4525 (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
4526 (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
4527 SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
4528 SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
4529 SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
4530 scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
4531 scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
4532 scm_intern0, scm_sysintern, scm_sysintern0,
4533 scm_sysintern0_no_module_lookup, scm_symbol_value0,
4534 scm_string_to_obarray_symbol, scm_intern_symbol,
4535 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
4536 scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
4537 scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
4538 vectors.[ch] (scm_vector_set_length_x): Removed.
4540 * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
4541 list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
4542 (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
4543 Renamed the macros that are defined to inhibit double inclusion of
4544 the same headers to the SCM_<filename>_H format.
4546 * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
4547 (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
4550 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
4552 * continuations.h (scm_contregs), debug.h (scm_debug_info,
4553 scm_debug_frame, SCM_DSIDEVAL), filesys.h (SCM_OPDIRP), fports.h
4554 (scm_fport), options.h (scm_option), snarf.h (SCM_CONST_LONG,
4555 SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
4556 SCM_GLOBAL_VCELL_INIT), srcprop.h (scm_srcprops,
4557 scm_srcprops_chunk), stacks.h (scm_info_frame, scm_stack), unif.h
4558 (scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_HUGE_LENGTH),
4559 validate.h (SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
4560 SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
4561 SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
4562 SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
4563 SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR): Removed.
4565 * continuations.h (CONTINUATIONSH, SCM_CONTINUATIONS_H), filesys.h
4566 (FILESYSH, SCM_FILESYS_H), fports.h (FPORTSH, SCM_FPORTS_H),
4567 options.h (OPTIONSH, SCM_OPTIONS_H), regex-posix.h (REGEXPOSIXH,
4568 SCM_REGEX_POSIX_H), snarf.h (LIBGUILE_SNARF_H, SCM_SNARF_H),
4569 srcprop.h (SCM_SOURCE_PROPERTIES_H, SCM_SRCPROP_H), unif.h
4570 (SCM_UNIFORM_VECTORS_H, SCM_UNIF_H), validate.h (SCM_VALIDATE_H__,
4571 SCM_VALIDATE_H): Renamed the macros that are defined to inhibit
4572 double inclusion of the same headers to the SCM_<filename>_H
4575 * debug.h (SCM_RESET_DEBUG_MODE), regex-posix.h (SCM_RGXP),
4576 srcprop.h (SRCBRKP, PROCTRACEP), struct.h (SCM_STRUCTP),
4577 validate.h (SCM_VALIDATE_THUNK, SCM_VALIDATE_ARRAY,
4578 SCM_VALIDATE_VECTOR_OR_DVECTOR, SCM_VALIDATE_VTABLE): Prefer
4579 !SCM_<foo> over SCM_N<foo>.
4581 2001-08-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
4583 * _scm.h (_SCMH, SCM__SCM_H), alist.h (ALISTH, SCM_ALIST_H),
4584 arbiters.h (ARBITERSH, SCM_ARBITERS_H), backtrace.h (BACKTRACEH,
4585 SCM_BACKTRACE_H), boolean.h (BOOLEANH, SCM_BOOLEAN_H), chars.h
4586 (SCM_CHARSH, SCM_CHARS_H), coop-defs.h (COOP_DEFSH,
4587 SCM_COOP_DEFS_H), coop-threads.h (COOP_THREADSH,
4588 SCM_COOP_THREADS_H), debug-malloc.h (DEBUGMALLOCH,
4589 SCM_DEBUG_MALLOC_H), dynwind.h (DYNWINDH, SCM_DYNWIND_H),
4590 environments.h (ENVIRONMENTS_H, SCM_ENVIRONMENTS_H), eq.h (EQH,
4591 SCM_EQ_H), evalext.h (EVALEXTH, SCM_EVALEXT_H), extensions.h
4592 (LIBGUILE_EXTENSIONS_H, SCM_EXTENSIONS_H), feature.h (FEATUREH,
4593 SCM_FEATURE_H), gdbint.h (GDBINTH, SCM_GDBINT_H), guardians.h
4594 (SCM_GUARDIANH, SCM_GUARDIANS_H), hash.h (HASHH, SCM_HASH_H),
4595 hashtab.h (HASHTABH, SCM_HASHTAB_H), init.h (INITH, SCM_INIT_H),
4596 ioext.h (IOEXTH, SCM_IOEXT_H), iselect.h (ISELECTH,
4597 SCM_ISELECT_H), keywords.h (KEYWORDSH, SCM_KEYWORDS_H), lang.h
4598 (LANGH, SCM_LANG_H), mallocs.h (MALLOCSH, SCM_MALLOCS_H), net_db.h
4599 (SCM_NETDBH, SCM_NET_DB_H), objprop.h (OBJPROPH, SCM_OBJPROP_H),
4600 posix.h (POSIXH, SCM_POSIX_H), procprop.h (PROCPROPH,
4601 SCM_PROCPROP_H), properties.h (PROPERTIES_H, SCM_PROPERTIES_H),
4602 ramap.h (RAMAPH, SCM_RAMAP_H), rdelim.h (SCM_RDELIM,
4603 SCM_RDELIM_H), read.h (READH, SCM_READ_H), rw.h (SCM_RW,
4604 SCM_RW_H), scmsigs.h (SCMSIGSH, SCM_SCMSIGS_H), script.h (SCRIPTH,
4605 SCM_SCRIPT_H), simpos.h (SIMPOSH, SCM_SIMPOS_H), socket.h
4606 (SCM_SOCKETH, SCM_SOCKET_H), sort.h (SORTH, SCM_SORT_H),
4607 stackchk.h (STACKCHKH, SCM_STACKCHK_H), stime.h (STIMEH,
4608 SCM_STIME_H), strop.h (STROPH, SCM_STROP_H), strorder.h
4609 (STRORDERH, SCM_STRORDER_H), threads.h (THREADSH, SCM_THREADS_H),
4610 throw.h (THROWH, SCM_THROW_H), version.h (VERSIONH,
4611 SCM_VERSION_H), vports.h (VPORTSH, SCM_VPORTS_H): Renamed
4612 the macros that are defined to inhibit double inclusion of the
4613 same headers to the SCM_<filename>_H format.
4615 2001-08-27 Marius Vollmer <mvo@zagadka.ping.de>
4617 * ports.c, ports.h, fprots.c, gc.c, ioext.c: Replaced
4618 "scm_t_portable" with "scm_port_table" which was an artifact from
4619 the great "scm_*_t -> scm_t_" renaming.
4621 2001-08-25 Thien-Thi Nguyen <ttn@revel.glug.org>
4623 * gc_os_dep.c (GC_noop1): Move before `GC_find_limit' where it is
4624 used; nfc. Thanks to Bill Schottstaedt.
4626 * validate.h (SCM_VALIDATE_USHORT_COPY, SCM_VALIDATE_SHORT_COPY,
4627 SCM_VALIDATE_UINT_COPY, SCM_VALIDATE_INT_COPY): New macros.
4628 Thanks to Chris Cramer.
4630 2001-08-25 Marius Vollmer <mvo@zagadka.ping.de>
4632 * Makefile.am (AUTOMAKE_OPTIONS): Change "foreign" to "gnu".
4634 * eval.c (scm_m_atbind): Redesigned to behvae like `let', but with
4636 * dynwind.h (scm_swap_bindings): Declare.
4637 * dynwind.c (scm_swap_bindings): Make non-static.
4639 2001-08-25 Michael Livshin <mlivshin@bigfoot.com>
4641 * gc.c (scm_gc_sweep): now can sweep unreachable variables (by
4642 doing exactly nothing about them). thanks Neil!
4644 2001-08-18 Neil Jerram <neil@ossau.uklinux.net>
4646 * __scm.h (SCM_ENABLE_VCELLS): Fix spelling mistake in comment.
4648 2001-08-17 Thien-Thi Nguyen <ttn@revel.glug.org>
4650 * gc.c: Fix omission bug: Add `heap_segment' forward decl
4651 (proto) in the case when either `GUILE_DEBUG' or
4652 `GUILE_DEBUG_FREELIST' preprocessor symbols are defined.
4654 (map_free_list): Fix typo: Ref `f' correctly.
4656 Thanks to Chris Cramer.
4658 2001-08-15 Rob Browning <rlb@defaultvalue.org>
4660 * Makefile.am (libguile_la_LDFLAGS): use libtool interface version
4662 (libpath.h): change libguileversion to libguileinterface.
4664 2001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
4666 * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and
4667 ChangeLog-2000. Thanks to Daniel Skarda!
4669 2001-08-07 Michael Livshin <mlivshin@bigfoot.com>
4671 * guile-snarf-docs-texi.in: don't call the tokenizer here, we now
4672 do it from the Makefile.
4674 * Makefile.am: rearrange the snarfing slightly, so that .doc files
4675 are of a reasonable size.
4677 2001-08-02 Neil Jerram <neil@ossau.uklinux.net>
4679 * stacks.c (scm_make_stack): Improve docstring by explaining use
4682 2001-08-01 Marius Vollmer <mvo@zagadka.ping.de>
4684 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
4685 scm_char_whitespace_p, scm_char_upper_case_p,
4686 scm_char_lower_case_p, scm_char_is_both_p): Do not require
4687 characters to fulfill isascii in addition to the primary
4690 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4692 * numbers.c (DIGITS, scm_small_istr2int, scm_istr2int,
4693 scm_istr2flo, scm_istring2number): Removed.
4695 (iflo2str, scm_real_p, scm_integer_p): Use SCM_<foo> instead of
4698 (t_exactness, t_radix, DIGIT2UINT, XDIGIT2UINT, mem2uinteger,
4699 mem2decimal_from_point, mem2ureal, mem2complex, scm_i_mem2number):
4702 (scm_string_to_number): Use new number parser.
4704 (scm_exact_to_inexact): Replace dummy by a GPROC, which also
4705 handles complex numbers.
4707 * numbers.h (NUMBERSH, SCM_NUMBERS_H): Rename <foo>H to
4710 (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Prefer !SCM_<pred> over
4713 (scm_istr2int, scm_istr2flo, scm_istring2number): Removed.
4715 (scm_i_mem2number): Added.
4717 (scm_exact_to_inexact): Changed signature.
4719 * read.c (scm_lreadr): Perform the shortcut test for '+ and '-
4720 here instead of within scm_i_mem2number. Call scm_i_mem2number
4721 instead of scm_istr2int and scm_istring2number.
4723 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4725 * eval.c (scm_lookupcar, scm_m_body, scm_m_lambda, unmemocopy,
4726 scm_unmemocopy, scm_badargsp, scm_eval_body, CHECK_EQVISH,
4727 SCM_CEVAL, scm_nconc2last, SCM_APPLY, scm_copy_tree): Prefer
4728 !SCM_<pred> over SCM_N<pred>.
4730 (scm_eval_body): Remove side effecting code from macro call.
4732 (SCM_CEVAL, SCM_APPLY): Remove goto statement and redundant
4735 2001-07-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
4737 * pairs.h (SCM_VALIDATE_PAIR): Use SCM_CONSP, not SCM_ECONSP.
4739 2001-07-29 Marius Vollmer <mvo@zagadka.ping.de>
4741 Removed vcell slot from structs.
4743 * struct.h (scm_vtable_index_vcell): Removed. Renumbered
4746 * struct.c (scm_struct_vtable_p): Do not check vcell slot for
4747 zero. Use scm_vtable_index_layout instead of "0" when accessing
4749 (scm_init_struct): Remove vcell slot layout code from
4750 required_vtable_fields.
4752 * objects.h (scm_si_redefined, scm_si_hashsets): Renumbered.
4754 * goops.c (build_class_class_slots): Removed vcell slot
4757 * goops.h: Renumbered slot indices. (SCM_CLASS_CLASS_LAYOUT):
4758 Removed vcell slot layout code.
4759 (scm_si_vcell): Removed.
4761 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
4763 "Glocs" have been removed.
4765 * tags.h: Update tag system docs.
4766 (scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
4767 (scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
4768 (SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
4769 or SCM_NCONSP, respectively.
4771 * struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
4772 objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
4773 of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
4775 * print.c (scm_iprin1): Remove printing of glocs. Do not try to
4776 tell glocs from structs.
4778 * gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
4780 * eval.c (scm_m_atbind): Make a list of variables, not glocs.
4781 (scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
4782 instead of with glocs.
4783 (EVALCAR): Do not test for glocs.
4784 (scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
4786 (scm_unmemocar): Do not handle glocs.
4787 (scm_m_atfop): Memoize as a variable, not as a gloc.
4788 (scm_eval_args, scm_deval_args): Do not handle glocs.
4789 (scm_ceval, scm_deval): Likewise.
4791 * eval.h (SCM_XEVALCAR): Do not test for glocs.
4792 (SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
4795 * debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
4797 * dynwind.c (scm_swap_bindings): Likewise.
4798 (scm_dowinds): Updated to recognize lists of variables instead of
4801 * __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
4804 * gc_os_dep.c (GC_noop1): Moved into the same #if/#endif context
4807 2001-07-25 Gary Houston <ghouston@arglist.com>
4809 * numbers.c (scm_logand, scm_logior, scm_logxor): adjusted the
4810 docstrings to reflect the n-ary implementation.
4812 2001-07-26 Marius Vollmer <mvo@zagadka.ping.de>
4814 * eval.c (scm_ceval, scm_deval): Use "RETURN" macro when returning
4815 value of a variable, not the plain "return" statement.
4817 2001-07-25 Marius Vollmer <mvo@zagadka.ping.de>
4819 * eval.c: Allow variables in memoized code (in addition to glocs).
4820 (scm_lookupcar): Handle variables in lost races. Replace symbol
4821 with variable directly, do not make a gloc.
4822 (scm_unmemocar): Rewrite variables using a reverse lookup, just
4824 (scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
4827 2001-07-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
4829 * variable.c (scm_i_variable_print): Use "value" instead of
4830 "binding" since a binding is the mapping between symbols and
4831 variables, not between variables and their values.
4833 * tags.h (scm_tc7_variable): New.
4834 * gc.c (scm_gc_mark): Handle scm_tc7_variable objects.
4835 * print.c (scm_iprin1): Likewise.
4837 * variable.h (scm_tc16_variable): Removed.
4838 (SCM_VARIABLEP): Test for new tc7 code.
4839 (scm_i_variable_print): New.
4840 * variable.c (scm_tc16_variable): Removed.
4841 (variable_print): Renamed to scm_i_variable_print and made
4843 (variable_equal_p): Removed.
4844 (make_variable): Construct a tc7 object instead of a smob.
4845 (scm_init_variable): Do not register smob.
4847 2001-07-22 Marius Vollmer <mvo@zagadka.ping.de>
4849 * tags.h: Include inttypes.h when we have it.
4851 2001-07-13 Marius Vollmer <mvo@zagadka.ping.de>
4853 * tags.h (SCM_UNBOUND): Make it the 34th isym/iflag, the 33th slot
4854 is taken by the new SCM_IM_CALL_WITH_VALUES.
4855 * print.c (scm_isymnames): Update table accordingly.
4857 2001-07-22 Gary Houston <ghouston@arglist.com>
4859 * regex-posix.c (s_scm_regexp_exec): use scm_long2num not
4860 SCM_MAKINUM to convert regoff_t value to SCM.
4862 2001-07-21 Gary Houston <ghouston@arglist.com>
4864 * scmsigs.c: include sys/time.h for itimer stuff.
4866 2001-07-19 Rob Browning <rlb@defaultvalue.org>
4868 * gc_os_dep.c (GC_noop1): ifdef out (unused) to quiet warning.
4870 * c-tokenize.lex: add option %nounput to quiet warning.
4871 Add prototype for yylex to quiet warning.
4873 * scmconfig.h.in: add flags for setitimer and getitimer.
4875 * scmsigs.h (scm_init_scmsigs): new prototype.
4876 (scm_init_scmsigs): new prototype.
4878 * scmsigs.c (s_scm_setitimer): new function.
4879 (s_scm_setitimer): new function.
4881 2001-07-18 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4883 * alist.c, arbiters.c, async.h, backtrace.h, boolean.c, chars.c,
4884 chars.h, continuations.h, debug-malloc.h, dynl.c, feature.c,
4885 feature.h, filesys.h, fluids.h, fports.h, gc_os_dep.c,
4886 gdb_interface.h, gh_eval.c, gh_funcs.c, gh_io.c, gh_list.c,
4887 gh_predicates.c, gsubr.c, gsubr.h, guardians.h,
4888 guile-func-name-check.in, guile-snarf-docs-texi.in,
4889 guile-snarf-docs.in, guile-snarf.awk.in, guile-snarf.in,
4890 hashtab.h, iselect.h, keywords.h, lang.c, list.h, load.h,
4891 objprop.c, objprop.h, options.c, options.h, random.h,
4892 regex-posix.h, root.c, root.h, script.c, snarf.h, stackchk.c,
4893 strerror.c, strop.h, strports.h, threads.h, values.c, values.h,
4894 version.c, version.h: Updated copyright notice.
4896 2001-07-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
4898 * goops.c (sym_layout, sym_vcell, sym_vtable, sym_print,
4899 sym_procedure, sym_setter, sym_redefined, sym_h0, sym_h1, sym_h2,
4900 sym_h3, sym_h4, sym_h5, sym_h6, sym_h7, sym_name,
4901 sym_direct_supers, sym_direct_slots, sym_direct_subclasses,
4902 sym_direct_methods, sym_cpl, sym_default_slot_definition_class,
4903 sym_slots, sym_getters_n_setters, sym_keyword_access, sym_nfields,
4904 sym_environment, scm_sym_change_class): New static variables to
4905 hold predefined symbols.
4907 (build_class_class_slots): Build the list using scm_list_n
4908 instead of cons. Also, slots are already created as lists, thus
4909 making a call to maplist unnecessary.
4911 (scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
4912 scm_class_direct_subclasses, scm_class_direct_methods,
4913 scm_class_precedence_list, scm_class_slots, scm_class_environment,
4914 scm_method_procedure, create_standard_classes, purgatory): Use
4917 (build_slots_list, compute_getters_n_setters,
4918 scm_sys_initialize_object, scm_sys_inherit_magic_x,
4919 get_slot_value_using_name, set_slot_value_using_name,
4920 scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
4921 scm_compute_applicable_methods, scm_sys_method_more_specific_p,
4922 make_struct_class): Prefer !SCM_<pred> over SCM_N<pred>.
4924 (scm_sys_prep_layout_x): Minimize variable scopes.
4926 (scm_sys_prep_layout_x, scm_sys_fast_slot_ref,
4927 scm_sys_fast_slot_set_x): Fix signedness.
4929 (go_to_hell, go_to_heaven, purgatory, scm_change_object_class,
4930 lock_cache_mutex, unlock_cache_mutex, call_memoize_method,
4931 scm_memoize_method, scm_wrap_object): Use packing and unpacking
4932 when converting to and from SCM values.
4934 (scm_enable_primitive_generic_x): Add rest argument checking.
4936 (map, filter_cpl, maplist, scm_sys_initialize_object,
4937 scm_sys_prep_layout_x, slot_definition_using_name,
4938 scm_enable_primitive_generic_x, scm_compute_applicable_methods,
4939 call_memoize_method, scm_make, scm_make_class): Prefer explicit
4940 predicates over SCM_N?IMP tests.
4942 (scm_sys_prep_layout_x): Fix typo in error message. Fix type
4945 (burnin, go_to_hell): Use SCM_STRUCT_DATA instead of the SCM_INST
4948 2001-07-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
4950 * fports.c (fport_print): Don't use SCM_C[AD]R for non pairs.
4952 * num2integral.i.c (INTEGRAL2NUM, INTEGRAL2BIG): Fix signedness.
4954 * symbols-deprecated.c (scm_gentemp): Simplify vector test.
4956 * vectors.c (scm_vector_p): Eliminate redundant IMP test.
4958 2001-07-12 Michael Livshin <mlivshin@bigfoot.com>
4960 * strings.c (s_scm_string): fix arg position in assert.
4962 2001-07-11 Gary Houston <ghouston@arglist.com>
4964 * strports.c (st_write): use memcpy, not strncpy. thanks to
4967 2001-07-09 Thien-Thi Nguyen <ttn@revel.glug.org>
4969 * alist.c, alloca.c, arbiters.c, async.c, async.h, backtrace.c,
4970 boolean.c, chars.c, continuations.c, coop-defs.h, coop-threads.c,
4971 debug-malloc.h, debug.c, debug.h, dynl.c, dynwind.c, eq.c,
4972 error.c, eval.c, evalext.c, feature.c, feature.h, filesys.c,
4973 filesys.h, fluids.c, fluids.h, fports.c, fports.h, gc.c, gc.h,
4974 gdbint.c, gsubr.c, guardians.c, hash.c, hashtab.c, hooks.c,
4975 hooks.h, inet_aton.c, init.c, ioext.c, keywords.c, keywords.h,
4976 lang.c, list.c, load.c, macros.c, mallocs.c, memmove.c, modules.c,
4977 net_db.c, numbers.c, numbers.h, objects.c, objprop.c, options.c,
4978 pairs.c, pairs.h, ports.c, ports.h, posix.c, print.c, print.h,
4979 procprop.c, procs.c, procs.h, properties.c, putenv.c, ramap.c,
4980 random.c, random.h, read.c, regex-posix.c, regex-posix.h, root.c,
4981 root.h, scmsigs.c, script.c, simpos.c, smob.c, snarf.h, socket.c,
4982 sort.c, srcprop.c, srcprop.h, stackchk.c, stacks.c, stacks.h,
4983 stime.c, strerror.c, strings.c, strings.h, strop.c, strorder.c,
4984 strports.c, struct.c, struct.h, symbols-deprecated.c, symbols.c,
4985 symbols.h, tags.h, threads.c, threads.h, throw.c, unif.c, unif.h,
4986 variable.c, variable.h, vectors.c, vectors.h, version.c, vports.c,
4987 weaks.c, weaks.h: Remove "face-lift" comment.
4989 2001-07-08 Rob Browning <rlb@defaultvalue.org>
4991 * .cvsignore: add stamp-h.in.
4993 2001-07-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
4995 * hooks.c (scm_make_hook, scm_add_hook_x),
4996 (scm_remove_hook_x, scm_reset_hook_x, scm_run_hook): Added return
4997 value info to the docstrings.
4999 2001-07-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5001 Some more compatibility patches for Windows.
5003 * posix.c (getlogin): getlogin() implementation for Windows.
5005 * backtrace.c, ioext.c: Include <stdio.h>.
5007 * unif.c, script.c, rw.c, error.c: Include <io.h>, if it does
5010 * cpp_sig_symbols.in: Added SIGBREAK.
5012 2001-07-01 Marius Vollmer <mvo@zagadka.ping.de>
5014 * strports.c (scm_read_0str, scm_eval_0str): Call
5015 scm_c_read_string and scm_c_eval_string respectively, not
5016 themselves. Thanks to Dale P. Smith!
5018 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5020 * unif.c (scm_array_set_x): The variable args does not
5021 necessarily have to be a list. Further, got rid of a redundant
5024 2001-06-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
5026 * list.c (SCM_I_CONS): Make sure the cell type is initialized
5029 * gc.c (s_scm_map_free_list, scm_igc, scm_gc_sweep,
5030 init_heap_seg): Fixed signedness.
5032 (init_heap_seg): Replaced strange for-loop with a while loop.
5034 * weaks.h (WEAKSH, SCM_WEAKS_H): Rename <foo>H to SCM_<foo>_H.
5036 (SCM_WVECTP): Prefer !SCM_<pred> over SCM_N<pred>.
5038 The following patch adds conservative marking for the elements of
5039 free or allocated cells.
5041 * gc.c (allocated_mark, heap_segment): New static functions.
5043 (which_seg): Deleted, since the functionality is now provided by
5044 function heap_segment.
5046 (map_free_list): Use heap_segment instead of which_seg.
5048 (MARK): If cell debugging is disabled, mark free cells
5051 (scm_mark_locations, scm_cellp): Extracted the search for the
5052 heap segment of a SCM value into function heap_segment.
5054 (scm_init_storage): Allocated cells must be marked
5057 * gc.[ch] (scm_gc_mark_cell_conservatively): New function.
5059 The following patch changes the representation of weak vectors to
5060 double cells instead of using an extension of the vector's
5063 * gc.c (MARK): Use SCM_SET_WVECT_GC_CHAIN instead of assigning to
5064 the result of SCM_WVECT_GC_CHAIN.
5066 (scm_gc_sweep): Weak vectors don't have extra fields any more.
5068 * weaks.c (allocate_weak_vector): New static function. It does
5069 not patch any previously created vector object during the
5070 construction of a weak vector, and thus doesn't need to switch
5071 off interrupts during vector creation.
5073 (scm_make_weak_vector, scm_make_weak_key_hash_table,
5074 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
5075 Use allocate_weak_vector to provide the new weak vector object.
5077 * weaks.h (SCM_WVECT_TYPE, SCM_SET_WVECT_TYPE,
5078 SCM_SET_WVECT_GC_CHAIN): New macros. The weak vector subtype is
5079 now stored in the double cell.
5081 (SCM_IS_WHVEC, SCM_IS_WHVEC_V, SCM_IS_WHVEC_B, SCM_IS_WHVEC_ANY):
5084 (SCM_WVECT_GC_CHAIN): The weak objects are now chained together
5085 using an entry of the double cell.
5087 2001-06-30 Thien-Thi Nguyen <ttn@revel.glug.org>
5089 * stamp-h.in: bye bye
5091 2001-06-30 Marius Vollmer <mvo@zagadka.ping.de>
5093 * gh_eval.c (gh_eval_str): Use scm_c_eval_string instead of
5096 * load.c, load.h (scm_c_primitive_load,
5097 scm_c_primitive_load_path): New.
5099 * strports.c, strports.h (scm_c_read_string): Renamed from
5100 scm_read_0str. Also, added "const" qualifier to argument.
5101 (scm_c_eval_string): Renamed from scm_eval_0str.
5102 (scm_read_0str, scm_eval_0str): Deprecated.
5104 2001-06-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5106 * fluids.c (scm_c_with_fluid): Use scm_list_1() instead of
5109 2001-06-28 Keisuke Nishida <kxn30@po.cwru.edu>
5111 * list.h (scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5,
5112 scm_list_n): New functions.
5113 (SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
5114 SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify): Deprecated.
5115 (lots of files): Use the new functions.
5117 * goops.c (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4): Use scm_call_N.
5119 * strings.c: #include "libguile/deprecation.h".
5121 2001-06-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5123 * read.c (scm_lreadr): When reading a hash token, check for a
5124 user-defined hash procedure first, so that overriding the builtin
5125 hash characters is possible (this was needed for implementing
5126 SRFI-4's read synax `f32(...)').
5128 * num2integral.i.c: Use scm_t_signed_bits instead of scm_t_bits,
5129 because the latter is unsigned now and breaks comparisons like
5130 (n < (scm_t_signed_bits)MIN_VALUE).
5132 2001-06-26 Neil Jerram <neil@ossau.uklinux.net>
5134 * eval.h, eval.c (scm_call_4): New function.
5136 * eval.c (SCM_APPLY, SCM_CEVAL, ENTER_APPLY): Call trap handlers
5137 directly rather than dispatching to them via scm_ithrow and a lazy
5140 * eval.c (scm_evaluator_trap_table), eval.h (SCM_ENTER_FRAME_HDLR,
5141 SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR): Add three new options
5142 for trap handler procedures.
5144 * debug.h (SCM_RESET_DEBUG_MODE): Add checks for trap handler
5145 procedures not being #f.
5147 2001-06-27 Michael Livshin <mlivshin@bigfoot.com>
5149 * Makefile.am (c-tokenize.c): add rule to generate it.
5150 (EXTRA_DIST): add c-tokenize.lex, so it gets distributed.
5152 filter-doc-snarfage.c: remove.
5154 2001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5156 * ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
5158 The following set of changes makes compiling Guile under various
5159 Windows compilers easier. Compilation under GNU systems should
5160 not be affected at all.
5162 Thanks to Stefan Jahn for all necessary information, patches and
5165 * posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
5166 getpgrp, ttyname, primitive-fork and some header inclusion for
5169 * random.c: Define M_PI, if not predefined and use __int64 for
5170 LONG64 under Windows.
5172 * scmsigs.c: Emulate some functions (alarm, sleep, kill) under
5173 Windows and conditionalize some signal names.
5175 * socket.c (scm_getsockopt): Added missing comma.
5176 Include socket library header under Windows.
5178 * stime.c (CLKTCK): Add cast to int, to make it compile under
5181 * ports.c (truncate): New function, compiled only under Windows.
5183 * net_db.c: Do not declare errno under Windows.
5185 * iselect.h, inet_aton.c: Include socket library headers under
5188 * guile.c (inner_main): Under Windows, initialize socket library
5189 and initialize gdb_interface data structures.
5191 * gdb_interface.h: Under Windows, gdb_interface cannot be
5192 initialized statically. Initialize at runtime instead.
5194 * fports.c (write_all): ssize_t -> size_t.
5195 (fport_print): Conditionalize call to ttyname().
5196 (getflags): New function, compiled only under Windows.
5198 * filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
5199 primitives chown, link, fcntl.
5200 (scm_basename, scm_dirname): Under Windows, handle \ as well as /
5203 * backtrace.c: Include <io.h> under Windows.
5205 * async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
5207 * _scm.h: Added preprocessor conditional for __MINGW32__ for errno
5210 2001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
5212 * eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
5213 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): New functions.
5214 * eval.h (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
5215 scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3): Declared.
5216 * async.c (scm_run_asyncs), coop-threads.c (scheme_body_bootstrip,
5217 scheme_handler_bootstrip), debug.c (with_traps_inner), dynwind.c
5218 (scm_dynamic_wind, scm_dowinds), environments.c
5219 (import_environment_conflict), eval.c (scm_macroexp, scm_force,
5220 scm_primitive_eval_x, scm_primitive_eval), fluids.c (apply_thunk),
5221 goops.c (GETVAR, purgatory, make_class_from_template,
5222 scm_ensure_accessor), hashtab.c (scm_ihashx, scm_sloppy_assx,
5223 scm_delx_x, fold_proc), hooks.c (scm_c_run_hook), load.c
5224 (scm_primitive_load), modules.c (scm_resolve_module,
5225 scm_c_define_module, scm_c_use_module, scm_c_export,
5226 module_variable, scm_eval_closure_lookup, scm_sym2var,
5227 scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
5228 ports.c (scm_port_for_each), print.c (scm_printer_apply),
5229 properties.c (scm_primitive_property_ref), ramap.c (ramap,
5230 ramap_cxr, rafe, scm_array_index_map_x, read.c (scm_lreadr),
5231 scmsigs.c (sys_deliver_signals), sort.c (applyless), strports.c
5232 (scm_object_to_string, scm_call_with_output_string,
5233 scm_call_with_input_string), throw.c (scm_body_thunk,
5234 scm_handle_by_proc, hbpca_body), unif.c (scm_make_shared_array,
5235 scm_make_shared_array), vports.c (sf_flush, sf_write,
5236 sf_fill_input, sf_close): Use one of the above functions.
5237 * goops.c, hashtab.c, scmsigs.c, sort.c: #include "libguile/root.h".
5239 2001-06-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
5241 * filesys.c (scm_close), ports.c (scm_close_port,
5242 scm_port_closed_p), strop.c (scm_string_null_p): Use SCM_BOOL
5243 instead of SCM_NEGATE_BOOL.
5245 * filesys.c (scm_stat): Clean up type dispatch.
5247 * filesys.c (scm_stat), ports.c (scm_input_port_p,
5248 scm_output_port_p): Get rid of redundant IM type check.
5250 * filesys.c (scm_readdir, scm_getcwd, scm_readlink), gh_data.c
5251 (gh_str2scm), load.c (scm_primitive_load, scm_internal_parse_path,
5252 scm_search_path), net_db.c (scm_gethost, scm_getnet, scm_getproto,
5253 scm_return_entry), numbers.c (scm_number_to_string), objects.c
5254 (scm_make_subclass_object), ports.c (scm_port_mode), read.c
5255 (scm_lreadr), simpos.c (scm_getenv), socket.c (scm_inet_ntoa,
5256 scm_addr_vector), stime.c (scm_strftime), strings.c
5257 (scm_makfromstrs, scm_makfrom0str, scm_substring), strings.h
5258 (SCM_STRING_COERCE_0TERMINATION_X), strop.c (string_copy,
5259 scm_string_split), strports.c (scm_strport_to_string), symbols.c
5260 (scm_symbol_to_string), vports.c (sf_write): Use scm_mem2string
5261 instead of scm_makfromstr.
5263 * net_db.c (scm_sethost, scm_setnet, scm_setproto, scm_setserv),
5264 ports.c (scm_close_all_ports_except), read.c (scm_lreadr,
5265 scm_read_hash_extend), stime.c (scm_strftime), strings.c
5266 (scm_string_append, scm_string), strings.h (SCM_STRINGP,
5267 SCM_STRING_COERCE_0TERMINATION_X, SCM_RWSTRINGP), strop.c
5268 (string_capitalize_x): Prefer explicit type check over SCM_N?IMP,
5269 !SCM_<pred> over SCM_N<pred>.
5271 * strings.[ch] (scm_makfromstr): Deprecated.
5273 (scm_mem2string): New function, replaces scm_makfromstr.
5275 * strings.c (scm_substring), strop.c (string_copy,
5276 scm_string_split), strports.c (scm_strport_to_string), symbols.c
5277 (scm_symbol_to_string): Fix gc problem.
5279 * strings.h (STRINGSH, SCM_STRINGS_H): Rename <foo>H to
5282 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Eliminate
5283 warning about comparing signed and unsigned values. This fix is
5284 not optimal, since it won't work reliably if sizeof (c_start) >
5285 sizeof (size_t) or sizeof (c_end) > sizeof (size_t). A better
5286 solution is to define this macro as an inline function, thus
5287 allowing to specifiy the types of c_start and c_end.
5289 2001-06-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
5291 * debug.h (SCM_DEBUGOBJ_FRAME): Deliver result as a
5294 * debug.h (DEBUGH, SCM_DEBUG_H), stacks.h (STACKSH, SCM_STACKSH):
5295 Rename <foo>H to SCM_<foo>_H.
5297 * stacks.c (NEXT_FRAME, narrow_stack): Prefer explicit type check
5298 over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
5300 (narrow_stack): Make i unsigned. Don't use side-effecting
5301 operations in conditions.
5303 (narrow_stack, scm_make_stack, scm_stack_id,
5304 scm_last_stack_frame): Get rid of redundant SCM_N?IMP checks.
5306 (scm_make_stack, scm_stack_id, scm_last_stack_frame): Clean up
5307 type dispatch. No need to cast result of SCM_DEBUGOBJ_FRAME any
5310 (scm_stack_ref, scm_frame_previous, scm_frame_next): Fix
5313 (scm_last_stack_frame): Remove bogus `;´.
5315 * stacks.h (SCM_FRAMEP): Fix type check.
5317 2001-06-25 Michael Livshin <mlivshin@bigfoot.com>
5319 * Makefile.am (MAINTAINERCLEANFILES): be sure to remove
5320 c-tokenize.c when doing maintainer-clean.
5322 * snarf.h (SCM_SNARF_DOCS): change the "grammar" slightly.
5324 * guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
5327 * eval.c: all hash signs are in column 0.
5329 * Makefile.am (guile_filter_doc_snarfage): build using
5330 c-tokenize.c, not filter-doc-snarfage.c.
5331 rearrange snarfing dependencies a bit.
5333 * c-tokenize.lex: new file.
5335 2001-06-25 Marius Vollmer <mvo@zagadka.ping.de>
5337 * srcprop.h, srcprop.c (scm_srcprops_to_plist): Renamed from
5338 scm_t_srcpropso_plist. See the big type renaming.
5339 * coop-defs.h (scm_mutex_trylock, scm_cond_timedwait): Likewise.
5340 Thanks to Seth Alves!
5342 * numbers.c (SIZE_MAX, PTRDIFF_MIN, PTRDIFF_MAX): Only define when
5343 they aren't defined already.
5345 2001-06-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
5347 * backtrace.c (display_backtrace_body): Use SCM_VALIDATE_STACK
5348 and SCM_VALIDATE_OPOUTPORT instead of SCM_ASSERT. Fix signedness
5351 * backtrace.c (display_expression, scm_set_print_params_x,
5352 display_application, display_frame, scm_backtrace), numbers.c
5353 (scm_istring2number), objects.c (scm_class_of,
5354 scm_mcache_lookup_cmethod, scm_mcache_compute_cmethod): Prefer
5355 explicit type check over SCM_N?IMP, !SCM_<pred> over SCM_N<pred>.
5357 * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fluid numbers are
5360 * numbers.c (scm_i_mkbig): Remove unnecessary casts, remove
5361 unnecessary SCM_DEFER_INTS, SCM_ALLOW_INTS.
5363 * objects.c (scm_class_of): Type fix.
5365 (scm_mcache_lookup_cmethod): Improved comment, simplified,
5368 * pairs.h (scm_error_pair_access): The function can return if
5371 2001-06-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5373 * init.c (scm_init_guile_1): Removed initialization of tag.c.
5375 * gdbint.c, init.c: Removed inclusion of tag.h.
5377 * tag.h, tag.c: Removed files.
5379 * Makefile.am: Removed tag.{h,c,doc,x} in various places.
5381 2001-06-20 Gary Houston <ghouston@arglist.com>
5383 * deprecation.c, extensions.c, rw.c: include string.h.
5385 2001-06-19 Gary Houston <ghouston@arglist.com>
5387 * filter-doc-snarfage.c (process): added ungetc in
5388 MULTILINE_COOKIE case since otherwise it fails when there's no
5389 space between the '(' and the quote of the following string
5392 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
5394 Throughout: replace "scm_*_t" with "scm_t_*", except "scm_lisp_t".
5396 2001-06-14 Marius Vollmer <mvo@zagadka.ping.de>
5398 * unif.h (SCM_ARRAY_NDIM): Shift then cast so that no sign
5399 extension takes place.
5400 * strings.h (SCM_STRING_LENGTH): Likewise.
5401 (SCM_STRING_MAX_LENGTH): Use unsigned numbers.
5403 * __scm.h (ptrdiff_t): Typedef to long when configure didn't find
5406 * tags.h: Include <stdint.h> when we have it.
5407 (scm_bits_t): Changed to be a unsigned type. Use uintptr_t when
5408 available. Else use "unsigned long".
5409 (scm_signed_bits_t): New.
5411 * numbers.h (SCM_SRS): Cast shiftee to scm_signed_bits_t.
5412 (SCM_INUM): Cast result to scm_signed_bits_t.
5414 2001-06-13 Thien-Thi Nguyen <ttn@revel.glug.org>
5416 * mkstemp.c: Update path to #include file scmconfig.h.
5417 Thanks to Golubev I. N.
5419 2001-06-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
5421 * struct.h (SCM_STRUCT_VTABLE_FLAGS): New macro.
5423 * goops.h (SCM_NUMBER_OF_SLOTS): Removed bogus `\´ at the end of
5424 the macro definition.
5426 (SCM_CLASSP, SCM_INSTANCEP, SCM_PUREGENERICP, SCM_ACCESSORP,
5427 SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Use SCM_STRUCT_VTABLE_FLAGS
5428 instead of SCM_INST_TYPE.
5430 (SCM_ACCESSORP, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Make sure
5431 the object is a struct before accessing its struct flags.
5433 (SCM_INST_TYPE, SCM_SIMPLEMETHODP, SCM_FASTMETHODP): Deprecated.
5435 2001-06-10 Gary Houston <ghouston@arglist.com>
5437 * rdelim.c (scm_init_rdelim_builtins): don't try to activate the
5438 (ice-9 rdelim) module in (guile) and (guile-user). it didn't
5439 work reliably anymore. try it from boot-9.scm instead.
5441 2001-06-09 Marius Vollmer <mvo@zagadka.ping.de>
5443 * ports.c (scm_lfwrite): Maintain columnd and row count in port.
5444 Thanks to Matthias Köppe!
5446 2001-06-08 Michael Livshin <mlivshin@bigfoot.com>
5448 * snarf.h, filter-doc-snarfage.c: more changes to cope with
5449 space-happy C preprocessors.
5451 * filter-doc-snarfage.c, guile-snarf.in: try to cope with spaces
5452 inside cookies. thanks to Matthias Köppe!
5454 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5456 * keywords.c (keyword_print): Don't use SCM_C[AD]R to access
5457 keywords. Fix gc protection.
5459 * objects.c (scm_mcache_lookup_cmethod): Don't use side effecting
5460 operations in macro calls.
5462 * pairs.c (scm_error_pair_access): Avoid recursion.
5464 Thanks to Matthias Koeppe for reporting the bugs that correspond
5465 to the following set of patches.
5467 * unif.c (scm_bit_set_star_x, scm_bit_invert_x), vectors.h
5468 (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR): Obtain the
5469 bitvector base address using SCM_BITVECTOR_BASE.
5471 * unif.h (SCM_BITVECTOR_BASE): Return the base address as an
5474 2001-06-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
5476 * goops.c (SCM_CLASS_REDEF): Removed.
5478 * vectors.h (VECTORSH, SCM_VECTORS_H): Renamed <foo>H to
5481 Thanks to Matthias Koeppe for reporting the bugs that correspond
5482 to the following set of patches.
5484 * goops.c (scm_sys_prep_layout_x, scm_basic_basic_make_class,
5485 create_basic_classes, scm_sys_fast_slot_set_x, set_slot_value,
5486 scm_sys_allocate_instance, clear_method_cache,
5487 scm_sys_invalidate_method_cache_x, scm_make,
5488 create_standard_classes, scm_make_port_classes, scm_make_class,
5489 scm_add_slot): Use SCM_SET_SLOT to set slot values.
5491 (prep_hashsets): Use SCM_SET_HASHSET to set class hash values.
5493 * goops.h (SCM_SET_SLOT, SCM_SET_HASHSET): New macros.
5495 * ramap.c (BINARY_ELTS_CODE, BINARY_PAIR_ELTS_CODE,
5496 UNARY_ELTS_CODE): Remove bogus break statement.
5498 * vectors.h (SCM_BITVEC_REF, SCM_BITVEC_SET, SCM_BITVEC_CLR):
5499 Don't access bit vectors elements as SCM objects.
5501 * weaks.c (scm_make_weak_vector, scm_make_weak_key_hash_table,
5502 scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table):
5503 Don't assign to an unpacked value.
5505 2001-06-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
5507 * __scm.h (SCM_NORETURN): Moved here from error.h.
5509 (SCM_UNUSED): New macro.
5511 (SCM_DEBUG_PAIR_ACCESSES): New macro.
5513 * backtrace.c (display_error_handler), continuations.c
5514 (continuation_print), debug.c (debugobj_print), dynwind.c
5515 (guards_print), environments.c (observer_print,
5516 core_environments_finalize, leaf_environment_cell,
5517 leaf_environment_print, eval_environment_print,
5518 eval_environment_observer, import_environment_define,
5519 import_environment_undefine, import_environment_print,
5520 import_environment_observer, export_environment_define,
5521 export_environment_undefine, export_environment_print,
5522 export_environment_observer), eval.c (scm_m_quote, scm_m_begin,
5523 scm_m_if, scm_m_set_x, scm_m_and, scm_m_or, scm_m_case,
5524 scm_m_cond, scm_m_lambda, scm_m_letstar, scm_m_do, scm_m_delay,
5525 scm_m_letrec1, scm_m_apply, scm_m_cont, scm_m_nil_cond,
5526 scm_m_nil_ify, scm_m_t_ify, scm_m_0_cond, scm_m_0_ify,
5527 scm_m_1_ify, scm_m_atfop, scm_m_at_call_with_values), evalext.c
5528 (scm_m_generalized_set_x), fluids.c (fluid_print), fports.c
5529 (fport_print), gc.c (gc_start_stats, scm_remember_upto_here_1,
5530 scm_remember_upto_here_2, scm_remember_upto_here, mark_gc_async),
5531 gh_init.c (gh_standard_handler), goops.c (get_slot_value,
5532 set_slot_value, test_slot_existence, scm_change_object_class,
5533 scm_m_atslot_ref, scm_m_atslot_set_x, make_struct_class,
5534 default_setter), guardians.c (guardian_print, guardian_gc_init,
5535 guardian_zombify, whine_about_self_centered_zombies), guile.c
5536 (inner_main), init.c (stream_handler), keywords.c (keyword_print),
5537 mallocs.c (malloc_print), numbers.c (scm_print_real,
5538 scm_print_complex, scm_bigprint), ports.c (flush_port_default,
5539 end_input_default, scm_port_print, fill_input_void_port,
5540 write_void_port), root.c (root_print), smob.c (scm_mark0,
5541 scm_free0, scm_smob_print, scm_smob_apply_1_error,
5542 scm_smob_apply_2_error, scm_smob_apply_3_error, free_print),
5543 stime.c (restorezone), strings.c (scm_makfromstr), struct.c
5544 (scm_struct_free_0, scm_struct_free_standard,
5545 scm_struct_free_entity, scm_struct_gc_init, scm_free_structs),
5546 throw.c (jmpbuffer_print, lazy_catch_print, ss_handler,
5547 scm_handle_by_throw, scm_ithrow), weaks.c
5548 (scm_weak_vector_gc_init, scm_mark_weak_vector_spines,
5549 scm_scan_weak_vectors), ramap.c (scm_array_fill_int), filesys.c
5550 (scm_dir_print): Mark unused parameters with SCM_UNUSED.
5552 * error.h (SCM_NORETURN): Moved to __scm.h.
5554 * error.h (ERRORH, SCM_ERROR_H), pairs.h (PAIRSH, SCM_PAIRS_H):
5555 Renamed <foo>H to SCM_<foo>_H.
5557 * gc.c (debug_cells_gc_interval): New static variable.
5559 (scm_assert_cell_valid): If selected by the user, perform
5560 additional garbage collections.
5562 (scm_set_debug_cell_accesses_x): Extended to let the user specify
5563 if additional garbage collections are desired.
5565 (mark_gc_async): If additional garbage collections are selected
5566 by the user, don't call the after-gc-hook. Instead require the
5567 user to run the hook manually.
5569 * pairs.c (scm_error_pair_access): New function. Only compiled
5570 if SCM_DEBUG_PAIR_ACCESSES is set to 1.
5572 * pairs.h (SCM_VALIDATE_PAIR): New macro.
5574 (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): If
5575 SCM_DEBUG_PAIR_ACCESSES is set to 1, make sure that the argument
5576 is a real pair object. (Glocs are also accepted, but that may
5577 change.) If not, abort with an error message.
5579 2001-06-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
5581 * eval.c (SCM_VALIDATE_NON_EMPTY_COMBINATION): New macro.
5583 (SCM_CEVAL, SCM_APPLY): Replace calls to SCM_EVALIM2 with calls
5584 to SCM_VALIDATE_NON_EMPTY_COMBINATION.
5586 2001-06-05 Marius Vollmer <mvo@zagadka.ping.de>
5588 * extensions.c (scm_c_register_extension): Allow NULL as library
5590 (load_extension): Ignore NULL library names when comparing.
5592 * hash.c (scm_hasher): Use SCM_UNPACK in the case labels so that
5593 non-pointers are being compared. Thanks to Alexander Klimov!
5595 2001-06-04 Gary Houston <ghouston@arglist.com>
5597 * rw.c (scm_write_string_partial): new procedure implementing
5598 write-string/partial in (ice-9 rw).
5599 * rw.h: declare scm_write_string_partial.
5601 2001-06-04 Marius Vollmer <mvo@zagadka.ping.de>
5603 * keywords.c (keyword_print): Substract 1 from length of symbol
5604 name, accounting for the silly dash.
5606 * dynl.c (scm_registered_modules, scm_clear_registered_modules):
5607 Do not emit deprecation warning.
5609 Added exception notice to all files.
5611 * dynl.c: Include "deprecation.h".
5613 2001-06-03 Marius Vollmer <mvo@zagadka.ping.de>
5615 * dynl.c (scm_register_module_xxx, scm_registered_modules,
5616 scm_clear_registered_modules): Deprecated.
5618 2001-06-02 Rob Browning <rlb@cs.utexas.edu>
5620 * .cvsignore: add guile_filter_doc_snarfage guile-snarf-docs
5621 guile-snarf-docs-texi.
5623 * fports.c: HAVE_ST_BLKSIZE changed to
5624 HAVE_STRUCT_STAT_ST_BLKSIZE.
5625 (scm_fport_buffer_add): HAVE_ST_BLKSIZE changed to
5626 HAVE_STRUCT_STAT_ST_BLKSIZE.
5628 * filesys.c (scm_stat2scm): HAVE_ST_RDEV changed to
5629 HAVE_STRUCT_STAT_ST_RDEV.
5630 (scm_stat2scm): HAVE_ST_BLKSIZE changed to
5631 HAVE_STRUCT_STAT_ST_BLKSIZE.
5632 (scm_stat2scm): HAVE_ST_BLOCKS changed to
5633 HAVE_STRUCT_STAT_ST_BLOCKS.
5635 2001-06-02 Marius Vollmer <mvo@zagadka.ping.de>
5637 * strports.c (scm_eval_string): Use scm_primitive_eval_x instead
5638 of scm_eval_x to allow module changes between the forms in the
5639 string. Set/restore module using scm_c_call_with_current_module.
5641 * mkstemp.c: New file, slightly modified from libiberties
5644 2001-05-31 Michael Livshin <mlivshin@bigfoot.com>
5646 * guile-snarf-docs.in, guile-snarf-docs-texi.in,
5647 filter-doc-snarfage.c: new files.
5649 * Makefile.am: add stuff to [build,] use and distribute
5650 guile-snarf-docs, guile-snarf-docs-texi, guile_filter_doc_snarfage.
5652 * guile-snarf.in: grok the new snarf output.
5654 * snarf.h: make the output both texttools- and `read'-friendly.
5656 * guile-doc-snarf.in: reimplement in terms of guile-snarf and
5657 guile-snarf-docs. (should also deprecate, I guess. maybe not).
5659 2001-05-31 Marius Vollmer <mvo@zagadka.ping.de>
5661 * print.c (scm_simple_format): Support "~~" and "~%". Signal
5662 error for unsupported format controls and for superflous
5663 arguments. Thanks to Daniel Skarda!
5665 * print.h, print.c (scm_print_symbol_name): Factored out of
5667 (scm_iprin1): Call it.
5669 * keywords.c (keyword_print): Use scm_print_symbol_name so that
5670 weird names are printed correctly.
5672 * print.c (scm_print_symbol_name): Symbols whose name starts with
5673 `#' or `:' or ends with `:' are considered weird.
5675 2001-05-30 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5677 * numbers.c (scm_difference, scm_divide): Clarified comments for -
5680 2001-05-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5682 * debug.h: Removed prototype for scm_eval_string.
5684 2001-05-28 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5686 * symbols.c (scm_gensym): Fix buffer overrun (try `(gensym
5687 (make-string 2000 #\!))' in an older version).
5689 Change strncpy to memcpy to allow embedded NUL characters in
5692 2001-05-28 Michael Livshin <mlivshin@bigfoot.com>
5694 * hooks.c (scm_create_hook): deprecated.
5695 (make_hook): deleted.
5696 (scm_make_hook): all the hook creation code is now here.
5698 * gc.c (scm_init_gc): don't call `scm_create_hook'. instead make
5699 a hook, make it permanent, and do a `scm_c_define' on it.
5701 * strop.c (s_scm_string_capitalize_x): fix docstring quoting.
5703 * socket.c (s_scm_inet_pton): fix docstring quoting.
5704 (s_scm_inet_ntop): ditto.
5706 * num2integral.i.c (INTEGRAL2NUM): cast to fix a warning.
5708 * hashtab.c (scm_internal_hash_fold): fix argument position in
5711 * environments.c (s_scm_import_environment_set_imports_x): fix
5712 argument position in SCM_ASSERT.
5714 * debug.c (s_scm_make_gloc): fix SCM packing/unpacking.
5715 (s_scm_make_iloc): ditto.
5717 2001-05-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
5719 * __scm.h (SCM_DEBUG_TYPING_STRICTNESS): Make 1 the default.
5721 * eval.c (promise_print): Read the promise's value as an object.
5723 (SCM_CEVAL): Don't perform side-effecting operations in macro
5726 * eval.h (SCM_EVALIM2): Fix the typing strictness of the
5727 conditional expression.
5729 * gc.c (scm_master_freelist, scm_master_freelist2): Added missing
5732 * gh_data.c (gh_set_substr): Removed redundant unsigned >= 0
5733 text, removed redundant computation of effective_length and fixed
5736 * goops.c (test_slot_existence): Use SCM_EQ_P to compare SCM
5739 (wrap_init): Don't use SCM_C[AD]R for non pairs.
5741 (hell): Make it a scm_bits_t pointer rather than a SCM pointer.
5743 * goops.c (scm_sys_modify_class), strports.c (st_resize_port),
5744 struct.h (SCM_SET_STRUCT_PRINTER): Store unpacked values.
5746 * goops.h (SCM_ACCESSORS_OF, SCM_SLOT): Return a SCM value.
5748 * goops.h (GOOPSH, SCM_GOOPS_H), modules.h (MODULESH,
5749 SCM_MODULES_H), objects.h (OBJECTSH, SCM_OBJECTS_H), struct.h
5750 (STRUCTH, SCM_STRUCT_H), symbols.h (SYMBOLSH, SCM_SYMBOLS_H),
5751 __scm.h (__SCMH, SCM___SCM_H): Change <foo>H to SCM_<foo>_H.
5753 * modules.[ch] (scm_module_tag): Make it a scm_bits_t value.
5755 * objects.h (SCM_SET_CLASS_INSTANCE_SIZE): Fixed typing.
5757 * ramap.c (ramap_rp): Removed bogus `;´.
5759 * sort.c (scm_restricted_vector_sort_x): Fixed signedness
5762 * symbols.h (SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS, SCM_SYMBOL_FUNC,
5763 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS):
5764 Read SCM objects rather than scm_bits_t values.
5766 * tags.h (SCM_VOIDP_TEST): Removed.
5768 (SCM_DEBUG_TYPING_STRICTNESS): Now takes values 0, 1, 2. The
5769 value of 2 now corresponds to the former 1, the current 1
5770 corresponds to the former situation that SCM_VOIDP_TEST was
5773 (SCM): Now defined as typedef struct scm_unused_struct * SCM;
5774 If this appears to be not ANSI compliant, we will change it to
5775 typedef struct scm_unused_struct { } * SCM;
5776 Thanks to Han-Wen Nienhuys for the suggestion.
5778 * unif.c (scm_array_set_x): Fix typing problem, and use
5779 SCM_UVECTOR_BASE instead of SCM_VELTS or SCM_CELL_WORD_1 when
5780 dealing with uniform vectors.
5782 2001-05-27 Michael Livshin <mlivshin@bigfoot.com>
5784 * gc.c (scm_init_storage): init `scm_gc_registered_roots'.
5785 (scm_igc): mark from them, too (precisely, not conservatively!).
5787 * root.h (scm_gc_registered_roots): new object in
5790 * hooks.c (scm_create_hook): call `scm_gc_protect_object' instead
5791 `scm_protect_object'. shouldn't call it at all, though, it seems.
5793 * gc.c (scm_[un]protect_object): deprecated.
5794 (scm_gc_[un]protect_object): new names for scm_[un]protect_object.
5795 (scm_gc_[un]register_root[s]): new.
5797 * gc.h: add prototypes for scm_gc_[un]protect_object,
5798 scm_gc_[un]register_root[s].
5800 2001-05-26 Michael Livshin <mlivshin@bigfoot.com>
5802 revert the controversial part of the 2001-05-24 changes.
5804 2001-05-25 Marius Vollmer <mvo@zagadka.ping.de>
5806 * modules.c (scm_env_module): Exported to Scheme.
5808 * eval.c (scm_debug_opts): New option `show-file-name'.
5810 * debug.h (SCM_SHOW_FILE_NAME): New.
5812 * backtrace.c: Include "libguile/filesys.h".
5813 (sym_base, display_backtrace_get_file_line,
5814 display_backtrace_file, display_backtrace_file_and_line): New.
5815 (display_frame): Call display_backtrace_file_and_line if that is
5817 (display_backtrace_body): Call scm_display_backtrace_file if
5820 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr):
5821 Prototypes removed since there's no definition for these
5824 2001-05-24 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
5826 * unif.c (scm_make_ra, array_free), unif.h (SCM_ARRAY_DIMS):
5827 Changed use of scm_array->scm_array_t and
5828 scm_array_dim->scm_array_dim_t to enable build with
5829 --disable-deprecated.
5831 2001-05-24 Michael Livshin <mlivshin@bigfoot.com>
5833 The purpose of this set of changes is to regularize Guile's usage
5834 of ANSI C integral types, with the following ideas in mind:
5836 - SCM does not nesessarily have to be long.
5837 - long is not nesessarily enough to store pointers.
5838 - long is not nesessarily the same size as int.
5840 The changes are incomplete and possibly buggy. Please test on
5844 (SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
5847 * unif.h: type renaming:
5848 scm_array -> scm_array_t
5849 scm_array_dim -> scm_array_dim_t
5850 the old names are deprecated, all in-Guile uses changed.
5852 * tags.h (scm_ubits_t): new typedef, representing unsigned
5855 * stacks.h: type renaming:
5856 scm_info_frame -> scm_info_frame_t
5857 scm_stack -> scm_stack_t
5858 the old names are deprecated, all in-Guile uses changed.
5860 * srcprop.h: type renaming:
5861 scm_srcprops -> scm_srcprops_t
5862 scm_srcprops_chunk -> scm_srcprops_chunk_t
5863 the old names are deprecated, all in-Guile uses changed.
5865 * gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
5866 rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
5867 strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
5868 vectors.c, vports.c, weaks.c:
5869 various int/size_t -> size_t/scm_bits_t changes.
5871 * random.h: type renaming:
5872 scm_rstate -> scm_rstate_t
5873 scm_rng -> scm_rng_t
5874 scm_i_rstate -> scm_i_rstate_t
5875 the old names are deprecated, all in-Guile uses changed.
5877 * procs.h: type renaming:
5878 scm_subr_entry -> scm_subr_entry_t
5879 the old name is deprecated, all in-Guile uses changed.
5881 * options.h (scm_option_t.val): unsigned long -> scm_bits_t.
5883 scm_option -> scm_option_t
5884 the old name is deprecated, all in-Guile uses changed.
5886 * objects.c: various long -> scm_bits_t changes.
5887 (scm_i_make_class_object): flags: unsigned long -> scm_ubits_t
5889 * numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
5892 * num2integral.i.c: new file, multiply included by numbers.c, used
5893 to "templatize" the various integral <-> num conversion routines.
5895 * numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
5896 scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
5898 (scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
5899 scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
5900 scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
5901 scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
5902 scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
5903 scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
5904 scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
5905 scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
5906 scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
5907 scm_num2size): new functions.
5909 * modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.
5911 * load.c: change int -> size_t in various places (where the
5912 variable is used to store a string length).
5913 (search-path): call scm_done_free, not scm_done_malloc.
5915 * list.c (scm_ilength): return a scm_bits_t, not long.
5916 some other {int,long} -> scm_bits_t changes.
5918 * hashtab.c: various [u]int -> scm_bits_t changes.
5919 scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
5920 (scm_ihashx): n: uint -> scm_bits_t
5921 use scm_bits2num instead of scm_ulong2num.
5923 * gsubr.c: various int -> scm_bits_t changes.
5925 * goops.[hc]: various {int,long} -> scm_bits_t changes.
5927 * gh_data.c (gh_num2int): no loss of precision any more.
5929 * gh.h (gh_str2scm): len: int -> size_t
5930 (gh_{get,set}_substr): start: int -> scm_bits_t,
5932 (gh_<num>2scm): n: int -> scm_bits_t
5933 (gh_*vector_length): return scm_[u]size_t, not unsigned long.
5934 (gh_length): return scm_bits_t, not unsigned long.
5936 * gc.[hc]: various small changes relating to many things stopping
5937 being long and starting being scm_[u]bits_t instead.
5938 scm_mallocated should no longer wrap around.
5940 * fports.h: type renaming:
5941 scm_fport -> scm_fport_t
5942 the old name is deprecated, all in-Guile uses changed.
5944 * fports.c (fport_fill_input): count: int -> scm_bits_t
5945 (fport_flush): init_size, remaining, count: int -> scm_bits_t
5947 * debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
5948 those prototypes, as the functions they prototype don't exist.
5950 * fports.c (default_buffer_size): int -> size_t
5951 (scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
5952 default_size: int -> size_t
5953 (scm_setvbuf): csize: int -> scm_bits_t
5955 * fluids.c (n_fluids): int -> scm_bits_t
5956 (grow_fluids): old_length, i: int -> scm_bits_t
5957 (next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
5959 (scm_c_with_fluids): flen, vlen: int -> scm_bits_t
5961 * filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
5962 the new and shiny SCM_NUM2INT.
5964 * extensions.c: extension -> extension_t (and made a typedef).
5966 * eval.h (SCM_IFRAME): cast to scm_bits_t, not int. just so
5967 there are no nasty surprises if/when the various deeply magic tag
5968 bits move somewhere else.
5970 * eval.c: changed the locals used to store results of SCM_IFRAME,
5971 scm_ilength and such to be of type scm_bits_t (and not int/long).
5972 (iqq): depth, edepth: int -> scm_bits_t
5973 (scm_eval_stack): int -> scm_bits_t
5974 (SCM_CEVAL): various vars are not scm_bits_t instead of int.
5975 (check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
5976 i: int -> scm_bits_t
5978 * environments.c: changed the many calls to scm_ulong2num to
5980 (import_environment_fold): proc_as_ul: ulong -> scm_ubits_t
5982 * dynwind.c (scm_dowinds): delta: long -> scm_bits_t
5984 * debug.h: type renaming:
5985 scm_debug_info -> scm_debug_info_t
5986 scm_debug_frame -> scm_debug_frame_t
5987 the old names are deprecated, all in-Guile uses changed.
5988 (scm_debug_eframe_size): int -> scm_bits_t
5990 * debug.c (scm_init_debug): use scm_c_define instead of the
5991 deprecated scm_define.
5993 * continuations.h: type renaming:
5994 scm_contregs -> scm_contregs_t
5995 the old name is deprecated, all in-Guile uses changed.
5996 (scm_contregs_t.num_stack_items): size_t -> scm_bits_t
5997 (scm_contregs_t.num_stack_items): ulong -> scm_ubits_t
5999 * continuations.c (scm_make_continuation): change the type of
6000 stack_size from long to scm_bits_t.
6002 * ports.h: type renaming:
6003 scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
6004 scm_port -> scm_port_t
6005 scm_ptob_descriptor -> scm_ptob_descriptor_t
6006 the old names are deprecated, all in-Guile uses changed.
6007 (scm_port_t.entry): int -> scm_bits_t.
6008 (scm_port_t.line_number): int -> long.
6009 (scm_port_t.putback_buf_size): int -> size_t.
6011 * __scm.h (long_long, ulong_long): deprecated (they pollute the
6012 global namespace and have little value beside that).
6013 (SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
6015 (ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
6016 exist (for size_t & ptrdiff_t).
6017 (scm_sizet): deprecated.
6019 * Makefile.am (noinst_HEADERS): add num2integral.i.c
6021 2001-05-23 Marius Vollmer <mvo@zagadka.ping.de>
6023 * snarf.h (SCM_CONST_LONG): Use SCM_VCELL_INIT instead of
6024 SCM_VARIABLE_INIT since that it what it used to be.
6026 * deprecation.c (scm_include_deprecated_features): Make docstring
6027 ANSIsh. Thanks to Matthias Köppe!
6029 2001-05-21 Marius Vollmer <mvo@zagadka.ping.de>
6031 * symbols.c (scm_mem2symbol): Re-introduce indirect cell. It is
6032 needed for weak-key hashtables.
6034 * procs.c (scm_make_subr_with_generic): Add missing last argument
6035 in call to scm_c_define_gsubr_with_generic. Thanks to Ariel Rios.
6037 * eval.c: Use SCM_EQ_P instead of `==' or `!=' in certain
6038 places. (scm_c_improper_memq): Return 1 instead of SCM_BOOL_T.
6040 * eval.h (SCM_EVALIM2): Use SCM_EQ_P instead of `=='.
6042 2001-05-20 Marius Vollmer <mvo@zagadka.ping.de>
6044 * symbols.c (scm_mem2symbol): Call `scm_must_strndup' instead of
6045 `duplicate_string'. Do not use an indirect cell, store symbol
6046 directly in collision list of hash table.
6047 (duplicate_string): Removed.
6049 * init.c (scm_init_guile_1): Call scm_init_extensions.
6051 * Makefile.am: Add "extensions.c" and related files in all the
6054 * extensions.h, extension.c: New files.
6056 * gc.h, gc.c (scm_must_strdup, scm_must_strndup): New.
6058 * modules.h (scm_system_module_env_p): Move out of deprecated
6061 * rw.h (scm_init_rw): Added prototype.
6063 * gsubr.h, gsubr.c (scm_c_make_gsubr, scm_c_define_gsubr,
6064 scm_c_make_gsubr_with_generic, scm_c_define_gsubr_with_generic):
6065 New functions. They replace scm_make_gsubr and
6066 scm_make_gsubr_with_generic. The `make' variants only create the
6067 gsubr object, while the `define' variants also put it into the
6068 current module. Changed all callers.
6069 (scm_make_gsubr, scm_make_gsubr_with_generic): Deprecated.
6071 * procs.h, procs.c (scm_c_make_subr, scm_c_define_subr,
6072 scm_c_make_subr_with_generic, scm_c_define_subr_with_generic): New
6073 functions. They replace scm_make_subr, scm_make_subr_opt and
6074 scm_make_subr_with_generic. The `make' variants only create the
6075 subr object, while the `define' variants also put it into the
6076 current module. Changed all callers.
6077 (scm_make_subr, scm_make_subr_opt, scm_make_subr_with_generic):
6080 * eval.c, gc.c, gh_funcs.c, goops.c, macros.c, pairs.c, ramap.c,
6081 rdelim.c, rw.c, scmsigs.c, snarf.h, values.c: Changed according to
6084 2001-05-19 Neil Jerram <neil@ossau.uklinux.net>
6086 * throw.c (scm_lazy_catch): Slight docstring clarification.
6088 2001-05-19 Marius Vollmer <mvo@zagadka.ping.de>
6090 * throw.c: Lazy-catch handlers are no longer allowed to return.
6091 Fixed comments throughout.
6092 (scm_ithrow): Signal an error when a lazy-catch handler returns.
6093 Moved actual jump to jmpbuf into if-branch where the jmpbuf is
6096 * version.c (s_scm_micro_version): Fix typo in FUNC_NAME, it
6097 refered to s_scm_minor_version previously.
6099 * modules.h, modules.c: Moved around a lot of code so that
6100 deprecated features appear at the bottom.
6101 (root_module_lookup_closure, scm_sym_app, scm_sym_modules,
6102 module_prefix, make_modules_in_var, beautify_user_module_x_var,
6103 scm_the_root_module, scm_make_module, scm_ensure_user_module,
6104 scm_load_scheme_module): Deprecated.
6105 (scm_system_module_env_p): Return SCM_BOOL_T directly for
6106 environments corresponding to the root module.
6107 (convert_module_name, scm_c_resolve_module,
6108 scm_c_call_with_current_module, scm_c_define_module,
6109 scm_c_use_module, scm_c_export): New.
6110 (the_root_module): New static variant of scm_the_root_module. Use
6111 it everywhere instead of scm_the_root_module.
6113 * fluids.h, fluids.c (scm_internal_with_fluids): Deprecated.
6114 (scm_c_with_fluids): Renamed from scm_internal_with_fluids.
6115 (scm_c_with_fluid): New.
6116 (scm_with_fluids): Use scm_c_with_fluids instead of
6117 scm_internal_with_fluids.
6119 * goops.h, goops.c (scm_init_goops_builtins): Renamed from
6120 `scm_init_goops'. Do not explicitly create/switch modules.
6121 Return SCM_UNSPECIFIED.
6122 (scm_init_goops): Only register `%init-goops-builtins' procedure.
6123 (scm_load_goops): Use scm_c_resolve_module instead of
6126 * init.c (scm_init_guile_1): Call `scm_init_goops' instead of
6127 `scm_init_oop_goops_goopscore_module'. Call `scm_init_rdelim' and
6128 `scm_init_rw' prior to loading the startup files.
6130 * rdelim.h, rdelim.c: (scm_init_rdelim_builtins): Renamed from
6131 scm_init_rdelim. Do not explicitly create/switch modules.
6132 Return SCM_UNSPECIFIED.
6133 (scm_init_rdelim): Only register `%init-rdelim-builtins'
6136 * rw.c (scm_init_rw_builtins): Renamed from scm_init_rw. Do not
6137 explicitly create/switch modules. Return SCM_UNSPECIFIED.
6138 (scm_init_rw): Only register `%init-rw-builtins' procedure.
6140 * script.c (scm_shell): Evaluate the compiled switches in the
6141 current module, not in the root module.
6143 2001-05-18 Marius Vollmer <mvo@zagadka.ping.de>
6145 * fluids.c (scm_c_with_fluids): Rename from
6146 scm_internal_with_fluids.
6147 (scm_internal_with_fluids): Deprecated.
6148 (scm_c_with_fluid): New.
6150 2001-05-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
6152 * print.h (PRINTH, SCM_PRINT_H): Renamed PRINTH to SCM_PRINT_H.
6154 (SCM_PORT_WITH_PS_PORT, SCM_PORT_WITH_PS_PS): Only pairs may be
6155 accessed with SCM_C[AD]R.
6157 (SCM_COERCE_OUTPORT): Removed redundant SCM_NIMP test.
6159 2001-05-16 Rob Browning <rlb@cs.utexas.edu>
6161 * version.c (s_scm_major_version): doc fixes.
6162 (s_scm_minor_version): doc fixes.
6163 (s_scm_minor_version): new function.
6165 * version.h (scm_init_version): new function.
6167 * versiondat.h.in: add GUILE_MICRO_VERSION.
6169 2001-05-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
6171 * deprecation.c (scm_init_deprecation): Renamed
6172 GUILE_WARN_DEPRECATED_DEFAULT to SCM_WARN_DEPRECATED_DEFAULT.
6174 2001-05-16 Marius Vollmer <mvo@zagadka.ping.de>
6176 * Makefile.am (cpp_sig_symbols.c, cpp_err_symbols.c): Make
6177 dependent on cpp_cnvt.awk
6179 2001-05-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6181 * script.c (scm_compile_shell_switches): New command line option
6182 `--use-srfi' for loading a list of SRFIs on startup.
6183 (scm_shell_usage): Added `--use-srfi' to help message.
6185 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
6187 Merged from mvo-vcell-cleanup-1-branch.
6189 The concept of vcells has been removed from Guile. With it,
6190 explicit obarrays and associated operations are gone. Use
6191 hashtables instead of obarrays.
6193 Throughout: use scm_sym2var instead of scm_sym2vcell and treat
6194 result as variable instead of vcell. Glocs no longer point to a
6195 vcell but to a variable. Use scm_c_define instead of
6196 scm_sysintern and treat the result as a variable (which it is),
6199 * variable.c, variable.h (SCM_VARVCELL, SCM_UDVARIABLEP,
6200 SCM_DEFVARIABLEP): Deprecated.
6201 (SCM_VARIABLE_REF, SCM_VARIABLE_SET, SCM_VARIABLE_LOC): New.
6202 (variable_print): Do not print name of variable.
6203 (variable_equalp): Compare values, not vcells.
6204 (anonymous_variable_sym): Removed.
6205 (make_vcell_variable): Removed.
6206 (make_variable): New, as replacement.
6207 (scm_make_variable, scm_make_undefined_variable): Do not take name
6209 (scm_variable_ref): Check for SCM_UNDEFINED and throw "unbound"
6211 (scm_builtin_variable): Deprecated.
6213 * symbols.c, symbols.h (scm_sym2vcell, scm_sym2ovcell_soft,
6214 scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
6215 scm_intern, scm_intern0, scm_sysintern0_no_module_lookup,
6216 scm_sysintern, scm_sysintern0, scm_symbol_value0,
6217 scm_string_to_obarray_symbol, scm_intern_symbol,
6218 scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned,
6219 scm_symbol_bound_p, scm_symbol_set_x, scm_gentmp, gentmp_counter):
6220 Deprecated and moved to "symbols-deprecated.c".
6221 (copy_and_prune_obarray, scm_builtin_bindings): Removed.
6222 (scm_init_symbols): Call scm_init_symbols_deprecated.
6223 * symbols-deprecated.c: New file.
6224 * Makefile.am: Added symbols-deprecated.c and related files in all
6227 * snarf.h (SCM_VCELL, SCM_GLOBAL_VCELL, SCM_VCELL_INIT,
6228 SCM_GLOBAL_VCELL_INIT): Deprecated.
6229 (SCM_VARIABLE, SCM_GLOBAL_VARIABLE, SCM_VARIABLE_INIT,
6230 SCM_GLOBAL_VARIABLE_INIT): New, as replacement. Changed all uses.
6232 * print.c (scm_iprin1): Use scm_module_reverse_lookup instead of
6235 * evalext.c, filesys.c, fports.c, gdbint.c, gh_data.c, gsubr.c,
6236 hooks.c, load.c, numbers.c, objects.c, ports.c, posix.c, procs.c,
6237 ramap.c, random.c, read.c, regex-posix.c, scmsigs.c, script.c,
6238 socket.c, srcprop.c, stacks.c, stime.c, struct.c, tag.c, throw.c:
6239 Changed according to the `throughout' comments.
6241 * modules.h, modules.c (scm_module_system_booted_p): Changed type
6243 (scm_module_type): Removed.
6244 (the_root_module): Renamed to the_root_module_var. Now points to
6245 a variable instead of a vcell. Updated all uses.
6246 (scm_the_root_module): Return SCM_BOOL_F when module systems
6247 hasn't been booted yet.
6248 (SCM_VALIDATE_STRUCT_TYPE): Removed.
6249 (scm_post_boot_init_modules): Made static.
6250 (scm_set_current_module): Call scm_post_boot_init_modules on first
6252 (make_modules_in, beautify_user_module_x, resolve_module,
6253 try_module_autoload, module_make_local_var_x): Tacked on "_var"
6254 suffix. Now point to variables instead of vcells. Updated all
6256 (scm_module_lookup_closure): Deal with the module being SCM_BOOL_F
6257 and return SCM_BOOL_F in that case.
6258 (scm_module_transformer): Likewise.
6259 (sym_module, scm_lookup_closure_module, scm_env_module): New.
6260 (SCM_F_EVAL_CLOSURE_INTERFACE, SCM_EVAL_CLOSURE_INTERFACE_P): New.
6261 (scm_eval_closure_lookup): Do not allow new definitions when
6262 `interface' flag is set.
6263 (scm_standard_interface_eval_closure): New.
6264 (scm_pre_modules_obarray, scm_sym2var, scm_module_lookup,
6265 scm_lookup, scm_module_define, scm_define, scm_c_module_lookup,
6266 scm_c_lookup, scm_c_module_define, scm_c_define,
6267 scm_module_reverse_lookup, scm_get_pre_modules_obarray,
6268 scm_modules_prehistory): New.
6269 (scm_post_boot_init_modules): Use scm_c_define and scm_c_lookup
6270 instead of scm_intern0.
6272 * macros.c (scm_make_synt): Return SCM_UNSPECIFIED instead of the
6275 * keywords.c (s_scm_make_keyword_from_dash_symbol): Use a regular
6276 hashtable operations to maintain the keywords, not obarray ones.
6278 * init.c (scm_load_startup_files): Do not call
6279 scm_post_boot_init_modules. This is done by
6280 scm_set_current_module now.
6281 (scm_init_guile_1): Call scm_modules_prehistory. Call
6282 scm_init_variable early on.
6284 * goops.c (s_scm_sys_goops_loaded): Get
6285 var_compute_applicable_methods from scm_sym2var, not from a direct
6286 invocation of scm_goops_lookup_closure.
6288 * gh_funcs.c (gh_define): Return SCM_UNSPECIFIED instead of vcell.
6290 * gc.c: Added simple debugging hack to mark phase of GC: When
6291 activated, do not tail-call scm_gc_mark. This gives nice
6293 (scm_unhash_name): Removed.
6295 * feature.c (features): Renamed to features_var. Now points to a
6296 variable instead of a vcell. Updated all uses.
6298 * eval.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Use
6299 `scm_current_module_lookup_closure' which will do the right thing
6300 when the module system hasn't been booted yet.
6301 (SCM_GLOC_SYM): Removed.
6302 (SCM_GLOC_VAR, SCM_GLOC_SET_VAL): New.
6303 (SCM_GLOC_VAL, SCM_GLOC_LOC): Reimplemented in terms of variables.
6305 * eval.c (scm_lookupcar, scm_lookupcar1): Deal with variables
6306 instead of with vcells. Do not overwrite `var' with the result of
6307 the lookup, use the new `real_var' instead. Remove `var2' in
6308 exchange (which was only used with threads).
6309 (sym_three_question_marks): New.
6310 (scm_unmemocar): Use `scm_module_reverse_lookup' instead of
6312 (scm_lisp_nil, scm_lisp_t): Directly define as symbols.
6313 (scm_m_atfop): Expect the function definition to be a variable
6315 (scm_macroexp): Do not use `unmemocar', explicitely remember the
6317 (scm_unmemocopy): Removed thoughts about anti-macro interface.
6318 (scm_eval_args): Use more explicit code in the gloc branch of the
6319 atrocious struct ambiguity test. The optimizer will sort this
6321 (scm_deval_args): Likewise.
6322 (SCM_CEVAL): Likewise. Also, do not use unmemocar, explicitely
6323 remember the symbol instead. Added some comments where
6324 scm_tc3_cons_gloc really exclusively refers to structs.
6325 (scm_init_eval): Use scm_define to initialize "nil" and "t" to
6326 scm_lisp_nil and scm_lisp_t, respectively. Use scm_define instead
6327 of scm_sysintern in general.
6329 * dynwind.c (scm_swap_bindings): Use SCM_GLOC_SET_VAL instead of
6332 * debug.c (s_scm_make_gloc): Only allow proper variables, no
6333 pairs. Put the variable directly in the gloc.
6334 (s_scm_gloc_p): Use `scm_tc3_cons_gloc' instead of the magic `1'.
6335 (scm_init_debug): Use scm_c_define instead scm_sysintern.
6337 * cpp_cnvt.awk: Emit "scm_c_define" instead of "scm_sysintern".
6339 * backtrace.h, backtrace.c (scm_the_last_stack_fluid): Renamed to
6340 scm_the_last_stack_fluid_var. It now points to a variable instead
6341 of a vcell. Updated all uses.
6342 (scm_has_shown_backtrace_hint_p_var): Now points to a variable
6343 instead of a vcell. Updated all uses.
6345 * _scm.h: Include "variables.h" and "modules.h" since almost
6346 everybody needs them now.
6348 * root.h (scm_symhash, scm_symhash_vars): Removed.
6349 * gc.c (scm_init_storage): Do not initialize them.
6351 2001-05-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
6353 * eval.c (scm_init_eval): Initialize scm_undefineds and
6356 * gc.c (scm_debug_newcell, scm_debug_newcell2): Fixed to behave
6357 like the SCM_NEWCELL macro counterparts.
6359 (scm_init_storage, scm_init_gc): Moved initialization of
6360 scm_tc16_allocated from scm_init_gc to scm_init_storage.
6362 (scm_init_storage): Moved initialization of scm_undefineds and
6363 scm_listofnull to eval.c, initializion of scm_nullstr to
6364 strings.c, initializion of scm_nullvect to vectors.c.
6366 * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Prefer SCM_NULLP over
6367 SCM_IMP, as in scm_debug_newcell and scm_debug_newcell2.
6369 * init.c (scm_init_guile_1): Reordered some initializations and
6370 added dependcy information comments.
6372 * load.c (scm_init_load): Use scm_nullstr.
6374 * strings.c (scm_init_strings): Initialize scm_nullstr.
6376 * vectors.c (scm_init_vectors): Initialize scm_nullvect.
6378 2001-05-15 Marius Vollmer <mvo@zagadka.ping.de>
6380 * values.c (print_values): Print as a unreadable object, not as
6381 multiple lines. Thanks to Matthias Köppe!
6383 2001-05-14 Dirk Herrmann <D.Herrmann@tu-bs.de>
6385 * deprecation.c: Fixed copyright date.
6387 * deprecation.h (DEPRECATION_H, SCM_DEPRECATION_H): Renamed
6388 DEPRECATION_H to SCM_DEPRECATION_H.
6390 2001-05-10 Thien-Thi Nguyen <ttn@revel.glug.org>
6392 * guile-doc-snarf.in: Update copyright.
6393 Fix relative path bug. Thanks to Sergey Poznyakoff.
6395 2001-05-10 Marius Vollmer <mvo@zagadka.ping.de>
6397 * ports.c (scm_port_revealed, scm_set_port_revealed_x): Only
6398 accept open ports. Thanks to Quetzalcoatl Bradley!
6400 2001-05-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6402 * procs.c: Increased `scm_subr_table_room' to 800 because Guile now
6403 has 779 primitives on startup.
6405 2001-05-09 Marius Vollmer <mvo@zagadka.ping.de>
6407 * eval.c (scm_i_eval): Copy expression before passing it to
6408 SCM_XEVAL. The copy operation was removed unintendedly during my
6409 change on 2001-03-25.
6411 2001-05-09 Michael Livshin <mlivshin@bigfoot.com>
6413 from Matthias Köppe (thanks!):
6415 * ports.c (scm_c_read): pointer arithmetic on void pointers isn't
6418 * deprecation.c (s_scm_include_deprecated_features): ANSI'fied the
6421 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6423 * gc.c (scm_init_gc): Added FIXME comment.
6425 * hooks.c: Since hooks don't have a name any more, it is not
6426 necessary to include objprop.h.
6428 (hook_print, scm_add_hook_x): Replace SCM_NFALSEP by !SCM_FALSEP.
6430 (symbol_name, scm_make_hook_with_name): Removed.
6432 (scm_create_hook): Don't set the hook's name property.
6434 * hooks.h (HOOKSH, SCM_HOOKS_H): Renamed HOOKSH to SCM_HOOKS_H.
6436 (SCM_HOOK_NAME, scm_make_hook_with_name): Removed.
6438 * init.c (scm_init_guile_1): Hooks don't use objprops any more.
6440 * numbers.c (SCM_FLOBUFLEN, FLOBUFLEN, scm_number_to_string,
6441 scm_print_real, scm_print_complex): Renamed SCM_FLOBUFLEN to
6442 FLOBUFLEN and define it unconditionally.
6444 2001-05-07 Marius Vollmer <mvo@zagadka.ping.de>
6446 * gh_data.c (gh_lookup): Call gh_module_lookup with
6447 `scm_current_module ()', not `#f'.
6448 (gh_module_lookup): Expect a module instead of an obarray as first
6449 argument and do lookup in that module.
6451 * ramap.c (raeql_1): Do not call scm_uniform_vector_length on
6452 arrays. The length of array is already determined differently and
6453 scm_uniform_vector_length does not work on arrays.
6455 2001-05-06 Marius Vollmer <mvo@zagadka.ping.de>
6457 * snarf.h (SCM_FUNC_CAST_ARBITRARY_ARGS): Use "SCM (*)()" for C++
6458 as well. "SCM (*)(...)" does not work on RedHat 7.1.
6460 * __scm.h (SCM_WTA_DISPATCH_0): Removed ARG and POS parameters,
6461 they are not used. Changed `wrong type' error into `wrong num
6462 args' error. Changed all callers.
6464 * numbers.c (scm_difference): Call SCM_WTA_DISPATCH_0 when zero
6465 arguments are supplied.
6467 2001-05-05 Thien-Thi Nguyen <ttn@revel.glug.org>
6469 * regex-posix.c (scm_regexp_exec): Expand docstring to briefly
6470 describe `regexp/notbol' and `regexp/noteol' execution flags.
6472 * strop.c (scm_substring_move_x): Doc fix; nfc.
6474 2001-05-05 Marius Vollmer <mvo@zagadka.ping.de>
6476 * objects.c, objects.h (scm_valid_object_procedure_p): New.
6477 (scm_set_object_procedure_x): Use it to check argument. Fix
6480 * evalext.c (scm_definedp): Fix docstring.
6482 2001-05-05 Gary Houston <ghouston@arglist.com>
6484 * socket.c: use HAVE_IPV6 instead of AF_INET6 to enable IPv6
6487 2001-05-04 Neil Jerram <neil@ossau.uklinux.net>
6489 * eval.c (scm_promise_p), list.c (scm_append_x, scm_reverse_x),
6490 symbols.c (scm_symbol_to_string), vports.c (scm_make_soft_port):
6491 Change R4RS references to R5RS.
6493 * guile-snarf.awk.in: Fixes so that (i) blank lines in the
6494 docstring source are correctly reproduced in the output (ii)
6495 we don't anymore get occasional trailing quotes. Also reorganized
6496 and commented the code a little.
6498 * scmsigs.c (scm_raise), throw.c (scm_throw): Docstring format
6501 2001-05-04 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6503 * strop.c (scm_string_split): New procedure.
6505 * strop.h (scm_string_split): Added prototype.
6507 2001-05-04 Gary Houston <ghouston@arglist.com>
6509 * socket.c: define uint32_t if netdb.h doesn't. thanks to
6512 2001-05-02 Marius Vollmer <mvo@zagadka.ping.de>
6514 * rw.c: Include "modules.h" and "strports.h".
6516 * net_db.h (scm_gethost): Added prototype.
6518 * deprecation.h, deprecation.c: New.
6519 * Makefile.am (libguile_la_SOURCES): Added "deprecation.c".
6520 (DOT_X_FILES): Added "deprecation.x".
6521 (modinclude_HEADERS): Added "deprecation.h".
6523 * init.c: Include "deprecation.h".
6524 (scm_init_guile_1): Call scm_init_deprecation.
6526 2001-05-01 Marius Vollmer <mvo@zagadka.ping.de>
6528 * gh.h (gh_init_guile, gh_make_string, gh_string_length,
6529 gh_string_ref, gh_string_set_x, gh_substring, gh_string_append):
6532 2001-04-29 Gary Houston <ghouston@arglist.com>
6534 * rw.c: new file, implementing C part of module (ice-9 rw).
6535 (scm_read_string_x_partial): moved from ioext.c
6536 (scm_init_rw): new proc.
6538 init.c: include rw.h and call scm_init_rw.
6539 Makefile.am: include rw.c and rw.h.
6541 2001-04-28 Rob Browning <rlb@cs.utexas.edu>
6543 * numbers.c: enabled local definition of SCM_FLOBUFLEN until we
6544 know what's supposed to happen to it.
6546 * list.h (scm_list_star): deprecation expired - removed.
6548 * numbers.h (scm_dblproc): deprecation expired - removed.
6549 (SCM_UNEGFIXABLE): deprecation expired - removed.
6550 (SCM_FLOBUFLEN): deprecation expired - removed.
6551 (SCM_INEXP): deprecation expired - removed.
6552 (SCM_CPLXP): deprecation expired - removed.
6553 (SCM_REAL): deprecation expired - removed.
6554 (SCM_IMAG): deprecation expired - removed.
6555 (SCM_REALPART): deprecation expired - removed.
6556 (scm_makdbl): deprecation expired - removed.
6557 (SCM_SINGP): deprecation expired - removed.
6558 (SCM_NUM2DBL): deprecation expired - removed.
6559 (SCM_NO_BIGDIG): deprecation expired - removed.
6561 * tags.h (SCM_DOUBLE_CELLP): deprecation expired - removed.
6562 (scm_tc_dblr): deprecation expired - removed.
6563 (scm_tc_dblc): deprecation expired - removed.
6564 (scm_tc16_flo): deprecation expired - removed.
6565 (scm_tc_flo): deprecation expired - removed.
6567 * tag.h (scm_tag): deprecation expired - removed.
6569 * tag.c: (scm_tag): deprecation expired - removed.
6571 * ioext.c: (scm_fseek): deprecation expired - removed.
6573 * ioext.h (scm_fseek): deprecation expired - removed.
6575 * gh_data.c (gh_int2scmb): deprecation expired - removed.
6577 * gh.h (gh_int2scmb): deprecation expired - removed.
6579 2001-04-28 Neil Jerram <neil@ossau.uklinux.net>
6581 * stacks.c (scm_make_stack): Fix typo in docstring.
6583 2001-04-27 Rob Browning <rlb@cs.utexas.edu>
6585 * error.c (scm_sysmissing): deprecation expired - removed.
6587 * error.h (scm_sysmissing): deprecation expired - removed.
6590 (scm_init_gc): gc-thunk deprecation expired - removed.
6591 (scm_gc_vcell): deprecation expired - removed.
6592 (gc_async_thunk): scm_gc_vcell related code removed.
6594 * vectors.h (SCM_NVECTORP): deprecation expired - removed.
6597 (SCM_NSTRINGP): deprecation expired - removed.
6598 (SCM_NRWSTRINGP): deprecation expired - removed.
6600 * continuations.h (SCM_SETJMPBUF): deprecation expired - removed.
6603 (SCM_ICHRP): deprecation expired - removed.
6604 (SCM_ICHR): deprecation expired - removed.
6605 (SCM_MAKICHR): deprecation expired - removed.
6608 (SCM_INPORTP): deprecation expired - removed.
6609 (SCM_OUTPORTP): deprecation expired - removed.
6611 2001-04-25 Marius Vollmer <mvo@zagadka.ping.de>
6613 * modules.c (scm_module_type): New.
6614 (scm_post_boot_init_modules): Initialize from Scheme value.
6615 (the_module, scm_current_module, scm_init_modules): the_module is
6617 (scm_current_module): Export to Scheme.
6618 (scm_set_current_module): Do not call out to Scheme, do all the
6619 work in C. Export procedure to Scheme. Only accept modules, `#f'
6620 is no longer valid as the current module. Only set
6621 scm_top_level_lookup_closure_var and scm_system_transformer when
6622 they are not deprecated.
6623 (scm_module_transformer, scm_current_module_transformer): New.
6625 * modules.h (scm_module_index_transformer, SCM_MODULE_TRANSFORMER,
6626 scm_current_module_transformer, scm_module_transformer): New.
6628 * gh_data.c: Removed FIXME comment about gh_lookup returning
6629 SCM_UNDEFINED. That's the right thing to do.
6631 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
6632 into the conditionally compiled sections.
6633 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
6634 scm_current_module_transformer instead of scm_system_transformer.
6635 * init.c (start_stack): Move initialization of
6636 scm_system_transformer to the deprecated section.
6638 2001-04-22 Neil Jerram <neil@ossau.uklinux.net>
6640 * throw.c (scm_throw): Correct docstring.
6642 2001-04-22 Gary Houston <ghouston@arglist.com>
6644 * socket.c: attempted to improve the docstrings slightly.
6646 * net_db.c: remove bogus "close" declaration.
6647 (inet_aton declaration, scm_inet_aton, scm_inet_ntoa,
6648 scm_inet_netof, scm_lnaof, scm_inet_makeaddr, INADDR_ANY etc.):
6650 * net_db.h: declarations moved too.
6652 * socket.c (scm_htonl, scm_ntohl): use uint32_t instead of unsigned
6654 (ipv6_net_to_num, ipv6_num_to_net): new static procedures.
6655 (VALIDATE_INET6): new macro.
6656 (scm_inet_pton, scm_inet_ntop): new procedures, implementing
6657 inet-pton and inet-ntop.
6658 (scm_fill_sockaddr): use VALIDATE_INET6 and ipv6_num_to_net.
6659 (scm_addr_vector): use ipv6_net_to_num.
6661 2001-04-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
6663 * eq.c (scm_equal_p), ramap.c (scm_init_ramap): Don't compute the
6664 smob number explicitly. Use SCM_TC2SMOBNUM instead.
6666 * gc.c (MARK, scm_gc_sweep): Only check for illegal heap objects
6667 when compiled in debug mode.
6669 (scm_gc_sweep): Only call smob's free function if it is defined.
6671 * print.c (scm_iprin1): No need to check for validity of smob
6672 type or existence of print function.
6674 * smob.[ch] (scm_smobs): Made into a fixed size global array.
6675 Resizing will not work well with preemptive threading.
6677 * smob.c (scm_smob_print): Don't use SCM_CDR to access smob data.
6679 (scm_make_smob_type): Extracted initialization of smob
6680 descriptors to scm_smob_prehistory. Don't use scm_numsmob outside
6681 of the critical section.
6683 (scm_smob_prehistory): Initialize all smob descriptors. By
6684 default, don't assign a smob free function: Most smob types don't
6687 * smob.h (SMOBH, SCM_SMOB_H): Renamed SMOBH to SCM_SMOB_H.
6689 2001-04-21 Gary Houston <ghouston@arglist.com>
6691 * socket.c (FLIP_NET_HOST_128): new macro.
6692 (scm_fill_sockaddr): use new macro.
6693 (scm_addr_vector): completed IPv6 address support. added const
6694 to the address parameter.
6696 2001-04-20 Gary Houston <ghouston@arglist.com>
6698 * socket.c (scm_fill_sockaddr): call htons for sin6_port.
6699 Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
6701 (scm_addr_vector): use a switch instead of multiple if statements.
6702 Add support for IPv6 (incomplete) .
6703 MAX_ADDR_SIZE: increase to size of struct sockaddr_in6 if needed.
6705 2001-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
6707 * struct.c (scm_free_structs): Only pairs may be accessed with
6710 2001-04-19 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6712 * unif.h (SCM_ARRAY_CONTIGUOUS): Reintroduced as deprecated.
6714 * __scm.h (SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
6715 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Inserted required
6716 parentheses in order to get the correct associativity.
6718 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6720 * unif.c (scm_array_to_list): Added missing handling of arrays of
6721 bytes. Thanks to Masao Uebayashi for the bug report.
6723 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6725 * debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
6728 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6730 * procs.h (SCM_CLOSURE_FORMALS): New macro.
6732 * debug.c (scm_procedure_source), eval.c (scm_badformalsp,
6733 SCM_CEVAL, SCM_APPLY), goops.c (get_slot_value, set_slot_value),
6734 procprop.c (scm_i_procedure_arity), sort.c (closureless): Use
6735 SCM_CLOSURE_FORMALS.
6737 * eval.c (scm_badformalsp, SCM_CEVAL), procprop.c
6738 (scm_i_procedure_arity): Prefer stronger predicates like
6739 SCM_NULLP or SCM_FALSEP over SCM_IMP.
6741 * macros.c (macro_print): Extracted macro printing code from
6742 print.c and simplified it.
6744 (scm_macro_type): Use SCM_MACRO_TYPE;
6746 (scm_init_macros): Use macro_print for printing macros.
6748 * print.c (scm_print_opts): Improved option documentation.
6750 (scm_iprin1): Extracted printing of macros to macros.c.
6751 Simplified printing of ordinary closures.
6753 * procs.c (scm_thunk_p): Fixed handling of closures. Thanks to
6754 Martin Grabmueller for the bug report.
6756 2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
6758 This patch eliminates some further applications of SCM_C[AD]R to
6761 * gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR): Deprecated. These have
6762 never been applied to real pairs.
6764 * srcprop.h (SCM_SOURCE_PROPERTY_FLAG_BREAK): Added.
6766 (SRCPROPBRK): Use SCM_SOURCE_PROPERTY_FLAG_BREAK.
6768 * unif.h (SCM_ARRAY_CONTIGUOUS, SCM_ARRAY_FLAG_CONTIGUOUS,
6769 SCM_ARRAY_CONTP): Renamed SCM_ARRAY_CONTIGUOUS to
6770 SCM_ARRAY_FLAG_CONTIGUOUS and use it.
6772 (SCM_SET_ARRAY_CONTIGUOUS_FLAG, SCM_CLR_ARRAY_CONTIGUOUS_FLAG):
6775 * srcprop.h (SRCPROPH), unif.h (UNIFH): Renamed to
6776 SCM_SOURCE_PROPERTIES_H and SCM_UNIFORM_VECTORS_H, respectively.
6778 * srcprop.h (SETSRCPROPBRK, CLEARSRCPROPBRK), unif.c
6779 (scm_dimensions_to_uniform_array, scm_ra_set_contp): Don't use
6780 SCM_SET{AND,OR}_CAR.
6782 2001-04-17 Gary Houston <ghouston@arglist.com>
6784 * some initial support for IPv6:
6786 * socket.c (scm_fill_sockaddr): improve the argument validation.
6787 don't allocate memory until all args are checked. instead of
6788 unconditional memset of soka, try setting sin_len to 0 if
6789 SIN_LEN is defined. add support for AF_INET6. define FUNC_NAME.
6790 (scm_socket, scm_connect): extend docstrings for IPv6.
6791 (scm_init_socket): intern AF_INET6 and PF_INET6.
6793 2001-04-17 Niibe Yutaka <gniibe@m17n.org>
6795 * srcprop.c (scm_make_srcprops): Added SCM_ALLOW_INTS which
6796 matches SCM_DEFER_INTS at the beginning of the function.
6798 * mallocs.c (scm_malloc_obj): Remove un-matched SCM_ALLOW_INTS.
6800 * gc.c (scm_igc): Unconditionally call
6801 SCM_CRITICAL_SECTION_START/END.
6803 * fluids.c (next_fluid_num): Unconditionally call
6804 SCM_CRITICAL_SECTION_START/END.
6805 (s_scm_make_fluid): Remove un-matched SCM_DEFER_INTS.
6807 * coop-defs.h (SCM_THREAD_DEFER, SCM_THREAD_ALLOW,
6808 SCM_THREAD_REDEFER, SCM_THREAD_REALLOW_1, SCM_THREAD_REALLOW_2):
6811 * __scm.h (SCM_CRITICAL_SECTION_START, SCM_CRITICAL_SECTION_END):
6812 Defined as nothing for the case of !defined(USE_THREADS).
6813 (SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER):
6815 (<stdio.h>): Include when (SCM_DEBUG_INTERRUPTS == 1).
6816 (SCM_CHECK_NOT_DISABLED, SCM_CHECK_NOT_ENABLED): Print FILE and
6818 (SCM_DEFER_INTS, SCM_ALLOW_INTS_ONLY, SCM_ALLOW_INTS,
6819 SCM_REDEFER_INTS, SCM_REALLOW_INTS): Don't use
6820 SCM_THREAD_DEFER/SCM_THREAD_ALLOW. Instead, use
6821 SCM_CRITICAL_SECTION_START/END.
6822 (SCM_REALLOW_INTS: Bug fix. Don't call
6823 SCM_THREAD_SWITCHING_CODE.
6824 (SCM_TICK): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS. Instead, use
6825 SCM_THREAD_SWITCHING_CODE directly.
6826 (SCM_ENTER_A_SECTION): Unconditionally use
6827 SCM_CRITICAL_SECTION_START/END. (was:
6828 SCM_DEFER_INTS/SCM_ALLOW_INTS when SCM_POSIX_THREADS defined).
6830 2001-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
6832 * __scm.h (SCM_CAREFUL_INTS, SCM_DEBUG_INTERRUPTS): Replaced the
6833 macro SCM_CAREFUL_INTS by the macro SCM_DEBUG_INTERRUPTS and
6834 allowed to explicitly set this macro via the CFLAGS variable
6837 * fluids.c (next_fluid_num), gc.c (scm_igc), coop-defs.h
6838 (SCM_THREAD_CRITICAL_SECTION_START,
6839 SCM_THREAD_CRITICAL_SECTION_END): Renamed
6840 SCM_THREAD_CRITICAL_SECTION_START/END to
6841 SCM_CRITICAL_SECTION_START/END.
6843 2001-04-11 Keisuke Nishida <kxn30@po.cwru.edu>
6845 * debug-malloc.c (grow, scm_debug_malloc_prehistory): Use memset
6848 * coop.c, iselect.c (FD_ZERO_N): Unconditionally use memset.
6849 (MISSING_BZERO_DECL): Remove the declaration.
6851 Thanks to NIIBE Yutaka.
6853 2001-04-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
6855 * init.c, goops.c, goops.h: Reverted change of 2001-03-29. (The
6856 goops module should be registered in order to work for an
6857 application which uses libguile statically linked.)
6859 2001-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
6861 * numbers.[ch] (scm_num2long, scm_num2long_long,
6862 scm_num2ulong_long, scm_num2ulong): Argument position is an
6865 * environments.c (eval_environment_folder,
6866 import_environment_folder), gh_data.c (gh_scm2longs,
6867 gh_scm2floats, gh_scm2doubles): Distinguish between 0 and NULL
6868 for integers and pointers, respectively.
6870 * gh_data.c (gh_scm2ulong, gh_scm2long, gh_scm2int), socket.c
6871 (scm_fill_sockaddr), unif.c (scm_array_set_x), validate.h
6872 (SCM_NUM2ULONG, SCM_NUM2LONG, SCM_NUM2LONG_DEF,
6873 SCM_NUM2LONG_LONG): Don't pass argument positions as pointers.
6875 * filesys.c (scm_open_fdes, scm_open), net_db (scm_inet_ntoa,
6876 scm_inet_netof, scm_lnaof, scm_gethost, scm_getproto), posix.c
6877 (scm_utime), ramap.c (scm_array_fill_int), scmsigs.c
6878 (scm_sigaction), socket.c (scm_htonl, scm_ntohl, scm_sendto),
6879 stime.c (scm_localtime, scm_gmtime), struct.c (scm_struct_set_x),
6880 validate.h (SCM_VALIDATE_LONG_COPY): Whitespace fixes.
6882 2001-04-09 Neil Jerram <neil@ossau.uklinux.net>
6884 * strings.c (scm_read_only_string_p): Update docstring to reflect
6885 current (non-)usage of "read only" strings.
6886 (scm_make_shared_substring): Clarify docstring by changing
6887 "semantics" to "arguments".
6889 2001-04-06 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6891 * hooks.c (scm_make_hook, scm_make_hook_with_name),
6892 (scm_hook_p, scm_hook_empty_p, scm_run_hook): Docstring
6895 2001-04-03 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
6897 The following changes make the documentation more consistent.
6899 * rdelim.c (scm_write_line), posix.c (scm_utime), ports.c
6900 (scm_seek), net_db.c (scm_inet_aton, scm_inet_ntoa),
6901 (scm_inet_netof, scm_lnaof, scm_inet_makeaddr), ioext.c
6902 (scm_ftell): Changed @smalllisp ... @end smalllisp to @lisp
6905 * vports.c (scm_make_soft_port), version.c (scm_version), unif.c
6906 (scm_array_dimensions, scm_make_shared_array),
6907 (scm_transpose_array, scm_enclose_array, scm_bit_count_star),
6908 throw.c (scm_catch), struct.c (scm_make_vtable_vtable), strop.c
6909 (scm_string_rindex, scm_string_index, scm_substring_fill_x),
6910 (scm_string_null_p), strings.c (scm_read_only_string_p), root.c
6911 (scm_call_with_dynamic_root), ramap.c (scm_array_index_map_x),
6912 posix.c (scm_mknod), numbers.c (scm_logtest, scm_logbit_p),
6913 macros.c (scm_makmmacro), list.c (scm_append), environments.c
6914 (scm_environment_fold), dynwind.c (s_scm_dynamic_wind): Changed
6915 @example ... @end example to @lisp ... @end lisp.
6917 * weaks.c (scm_weak_vector): Corrected docstring.
6919 * hashtab.c (scm_hashq_ref, scm_hashq_set_x, scm_hashq_remove_x),
6920 (scm_hashv_ref, scm_hashv_set_x, scm_hashv_remove_x),
6921 (scm_hash_ref, scm_hash_set_x, scm_hash_remove_x, scm_hashx_ref),
6922 (scm_hashx_set_x, scm_hashx_get_handle),
6923 (scm_hashx_create_handle_x), regex-posix.c (scm_make_regexp),
6924 (scm_regexp_exec, scm_regexp_p), numbers.c (scm_logtest),
6925 vectors.c (scm_vector_fill_x), strings.c
6926 (scm_make_shared_substring), symbols.c (scm_string_to_symbol),
6927 objprop.c (scm_set_object_properties_x):
6928 (scm_set_object_property_x), throw.c (scm_catch, scm_lazy_catch),
6929 strports.c (scm_call_with_input_string), ports.c
6930 (scm_truncate_file), ioext.c (scm_ftell), ports.c (scm_seek),
6931 list.c (scm_append_x), dynwind.c (scm_dynamic_wind), error.c
6932 (scm_error_scm), vports.c (scm_make_soft_port), weaks.c
6933 (scm_make_weak_vector,scm_weak_vector_p),
6934 (scm_make_weak_key_hash_table, scm_make_weak_value_hash_table),
6935 (scm_make_doubly_weak_hash_table, scm_weak_key_hash_table_p),
6936 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
6937 macros.c (scm_macro_type), dynl.c (scm_dynamic_link),
6938 (scm_dynamic_unlink, scm_dynamic_call, scm_dynamic_args_call):
6939 Made parameter names match documentation by renaming parameters
6940 and/or fixing docstrings.
6942 * numbers.c (scm_ash): Corrected Texinfo markup.
6944 * strop.c (scm_string_index, scm_string_rindex),
6945 (scm_substring_fill_x, scm_string_null_p): Removed `qdocs'.
6947 * vports.c (scm_make_soft_port), unif.c
6948 (scm_uniform_vector_length, scm_array_p, scm_array_rank),
6949 (scm_dimensions_to_uniform_array, scm_transpose_array),
6950 (scm_array_in_bounds_p, scm_uniform_vector_ref),
6951 (scm_bit_count, scm_bit_position, scm_bit_count_star),
6952 (scm_array_to_list, scm_list_to_uniform_array),
6953 (scm_array_prototype, symbols.c (scm_string_to_symbol), strports.c
6954 (scm_open_input_string, scm_open_output_string),
6955 (scm_get_output_string), strop.c (scm_string_copy),
6956 (scm_string_fill_x), strings.c (scm_string_p, scm_string), stime.c
6957 (scm_get_internal_real_time, scm_times),
6958 (scm_get_internal_run_time, scm_current_time, scm_gettimeofday),
6959 (scm_localtime, scm_gmtime), socket.c (scm_htons, scm_ntohs),
6960 (scm_htonl, scm_ntohl, scm_socket, scm_socketpair),
6961 (scm_getsockopt, scm_getsockname, scm_getpeername, scm_recvfrom),
6962 simpos.c (scm_system), random.c (scm_random_uniform),
6963 (scm_random_normal, scm_random_exp), ramap.c
6964 (scm_array_equal_p), posix.c (scm_pipe, scm_getgroups),
6965 (scm_status_exit_val, scm_status_term_sig, scm_status_stop_sig),
6966 (scm_getppid, scm_getuid, scm_getgid, scm_geteuid, scm_getegid),
6967 (scm_getpgrp, scm_ttyname, scm_ctermid, scm_tcgetpgrp, scm_uname),
6968 (scm_environ, scm_tmpnam, scm_mkstemp, scm_access, scm_getpid),
6969 (scm_setlocale), ports.c (scm_char_ready_p, scm_drain_input),
6970 (scm_pt_size, scm_pt_member, scm_port_revealed, scm_port_mode),
6971 (scm_close_port, scm_input_port_p, scm_output_port_p, scm_port_p),
6972 (scm_port_closed_p, scm_eof_object_p, scm_read_char),
6973 (scm_peek_char), pairs.c (scm_pair_p, scm_cons), numbers.c
6974 (scm_logand, scm_logior, scm_logxor, scm_lognot),
6975 (scm_integer_expt, scm_bit_extract, scm_logcount),
6976 (scm_integer_length, scm_string_to_number, scm_inexact_to_exact),
6977 net_db.c (scm_inet_netof, scm_lnaof), modules.c
6978 (scm_interaction_environment), macros.c (scm_makacro),
6979 (scm_makmacro, scm_makmmacro), keywords.c (scm_keyword_p), ioext.c
6980 (scm_ftell, scm_dup_to_fdes, scm_fileno, scm_isatty_p),
6981 (scm_fdopen, scm_fdes_to_ports), gc.c (scm_gc_stats), fluids.c
6982 (scm_fluid_ref), filesys.c (scm_open_fdes),
6983 (scm_stat, scm_directory_stream_p, scm_getcwd, scm_readlink):
6984 Docstring correction: `Returns' -> `Return'
6986 * gc.c (scm_set_debug_cell_accesses_x):
6987 (s_scm_gc_set_debug_check_freelist_x):
6988 * fluids.c (scm_fluid_p): Added texinfo markup.
6990 * error.c (scm_strerror): Made docstring more precise.
6992 * vectors.c (scm_vector_p, scm_vector, scm_make_vector),
6993 (scm_vector_to_list, _scm_vector_fill_x), symbols.c
6994 (scm_symbol_p, scm_symbol_to_string), strorder.c
6995 (scm_string_equal_p, scm_string_ci_equal_p, scm_string_less_p),
6996 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p),
6997 (scm_string_ci_less_p, scm_string_ci_leq_p, scm_string_ci_gr_p):
6998 (scm_string_ci_geq_p), strop.c (scm_string_copy),
6999 (scm_string_fill_x): Removed `(r5rs)' from docstrings.
7001 2001-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
7003 * gc.c (MARK): Re-introduce a cheap sanity test for non debug
7004 mode, as suggested by Michael Livshin.
7006 2001-03-31 Michael Livshin <mlivshin@bigfoot.com>
7008 * backtrace.c (display_backtrace_body): since the `print_state'
7009 variable is not used (instead its data field is used directly as
7010 `pstate'), protect it from the hungry compiler optimizations.
7011 thanks to Bill Schottstaedt for the report.
7013 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
7015 * gc.[ch] (scm_tc16_allocated): New type tag for allocated cells.
7016 It is only defined and used if guile is compiled with
7017 SCM_DEBUG_CELL_ACCESSES set to true. It's purpose is, to never
7018 let cells with a free_cell type tag be visible outside of the
7019 garbage collector when in debug mode.
7021 * gc.c (scm_debug_cell_accesses_p): Set to true as default.
7023 (scm_assert_cell_valid): Use a local static variable to avoid
7026 (MARK): Only check for rogue cell pointers in debug mode. Use
7027 scm_cellp for this purpose and place all checks for rogue pointers
7028 into that function. Further, since due to conservative scanning
7029 we may encounter free cells during marking, don't use the standard
7030 cell type accessor macro to determine the cell type.
7032 (scm_cellp): Check if the cell pointer actually points into a
7035 (scm_init_gc): Initalize scm_tc16_allocated.
7037 * gc.h (GCH): Renamed to SCM_GC_H.
7039 (SCM_VALIDATE_CELL): Enclose the expression in brackets. This
7040 might be unnecessary, but I feel better this way :-)
7042 (SCM_GC_CELL_TYPE): New macro.
7044 (SCM_SETAND_CDR, SCM_SETOR_CDR): Deprecated. These are not used
7045 in guile, and it is unlikely that they will be applied to real
7048 (SCM_SET_FREE_CELL_TYPE): Removed. It was not used.
7050 (SCM_GC_SET_ALLOCATED): New macro. Only non-empty if guile is
7051 compiled with SCM_DEBUG_CELL_ACCESSES set to true.
7053 (SCM_NEWCELL, SCM_NEWCELL2): Use of SCM_GC_SET_ALLOCATED will
7054 make sure that in debug mode no free cell will ever be visible
7055 outside of the garbage collector.
7057 2001-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
7059 * async.c (scm_asyncs_pending): Don't use != to compare SCM
7062 * async.c (scm_system_async), variable.c (scm_make_variable,
7063 scm_make_undefined_variable): Use scm_cons to create a pair.
7065 * debug.c (scm_reverse_lookup): Perform proper type checking.
7066 Remove suspicious use of SCM_SLOPPY_CONSP.
7068 * eq.c (scm_equal_p), tags.h (SCM_ECONSP): Use SCM_CONSP instead
7069 of SCM_SLOPPY_CONSP. A sane compiler should be able to perform
7070 the corresponding optimization.
7072 * eval.c (iqq): Use proper type check.
7074 (scm_m_expand_body): Remove redundant type checks.
7076 (promise_print): Don't access promise cells as pairs.
7078 * eval.c (EVALCAR, iqq, scm_m_expand_body, scm_eval_args,
7079 scm_deval_args SCM_CEVAL), guardians.c (scm_guard), hashtab.c
7080 (scm_internal_hash_fold), print.c (scm_iprlist): Use !SCM_CELLP
7081 for SCM_NCELLP, !SCM_CONSP for SCM_NCONSP, !SCM_IMP for SCM_NIMP,
7082 !SCM_FALSEP for SCM_NFALSEP, !SCM_NULLP for SCM_NNULLP
7084 * eval.c (scm_m_define, scm_macroexp, SCM_CEVAL), print.c
7085 (scm_iprin1): Use new macro predicate and accessors.
7087 * eval.h (scm_tc16_macro): Removed declaration. It is declared
7090 * eval.h (EVALH), macros.h (MACROSH), ports.h (PORTSH), procs.h
7091 (PROCSH), tags.h (TAGSH), variable.h (VARIABLEH): Renamed to
7092 SCM_EVAL_H, SCM_MACROS_H, SCM_PORTS_H, SCM_PROCS_H, SCM_TAGS_H and
7093 SCM_VARIABLE_H. Even the macros that are used to inhibit
7094 including a header file twice should be in the SCM_ namespace.
7096 * fluids.c (scm_swap_fluids, scm_swap_fluids_reverse),
7097 properties.c (scm_primitive_property_ref,
7098 scm_primitive_property_del_x): Prefer stronger predicates like
7099 SCM_NULLP or SCM_FALSEP over SCM_IMP.
7101 * gc.c (MARK): Use proper macros to access procedure-with-setter
7102 cell elements and closure cell elements.
7104 (gc_sweep_freelist_finish, scm_gc_sweep, init_heap_seg): Don't
7105 access free cells as pairs.
7107 (scm_unprotect_object): scm_hashq_get_handle returns #f if
7108 no hashtab entry is found.
7110 * gc.c (scm_gc_sweep), ports.c (scm_close_port): Use new macro
7111 SCM_CLR_PORT_OPEN_FLAG.
7113 * guardians.c (TCONC_IN), print.c (scm_free_print_state): Don't
7114 use SCM_SET_C[AD]R for uninitialized cells.
7116 * hashtab.c (scm_hash_fn_get_handle): Use SCM_VALIDATE_VECTOR.
7117 If the hashtable has no slots, return #f instead of '(). This
7118 unifies the return value with most assoc-functions.
7120 (scm_hash_fn_ref): Use proper type check.
7122 (scm_hashq_get_handle, scm_hashv_get_handle, scm_hash_get_handle):
7123 Removed references to non-existing functions from documentation.
7125 * keywords.c (scm_keyword_dash_symbol): Use proper macros to
7126 access keyword cell elements.
7128 * macros.h (SCM_MACROP, SCM_MACRO_TYPE, SCM_MACRO_CODE): New
7131 * ports.h (SCM_CLR_PORT_OPEN_FLAG): New macro.
7133 * print.c (scm_iprlist): Added comment. Improved loop
7136 * procs.h (SCM_ENV, SCM_SETENV): Don't access closure cells as
7139 * smob.c (scm_markcdr): Don't access smob cells as pairs.
7141 * tags.h (SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP): Deprecated.
7143 * throw.c (ACTIVATEJB, DEACTIVATEJB): Don't access jump buffer
7146 * variable.c (variable_print, variable_equalp, scm_variable_ref,
7147 scm_variable_set_x): Use proper macros to access variable cell
7150 (scm_variable_bound_p): Don't use SCM_NEGATE_BOOL.
7152 * variable.h (SCM_VARVCELL): Don't access variable cells as
7155 * vectors.c (scm_vector), weaks.c (scm_weak_vector): Simplified,
7156 added FIXME comment, removed register specifier.
7158 2001-03-29 Keisuke Nishida <kxn30@po.cwru.edu>
7160 * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
7161 * init.c (scm_init_guile_1): Don't init goopscore module.
7163 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
7165 * eval.c (SCM_APPLY): Check that arg1 is bound for scm_tc7_cxr.
7167 2001-03-27 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7169 * strop.c (scm_string_to_list): Fixed docstring markup.
7170 (scm_string_upcase_x, scm_string_upcase, scm_string_downcase_x),
7171 (scm_string_downcase, scm_string_capitalize_x),
7172 (scm_string_capitalize): Rewrote and corrected docstrings.
7173 (scm_string_ci_to_symbol): Made docstring more explicit.
7175 2001-03-27 Marius Vollmer <mvo@zagadka.ping.de>
7177 * values.h (scm_values_vtable, SCM_VALUESP): Moved here so that
7179 (scm_call_with_values): Removed.
7180 * values.c (values_vtable, scm_values_vtable): Added "scm_" prefix
7181 so that it can be exported.
7182 (scm_call_with_values): Removed.
7184 * tags.h (SCM_IM_CALL_WITH_VALUES): New isym.
7185 * eval.c: Include "libguile/values.h"
7186 (scm_m_at_call_with_values, scm_sym_at_call_with_values):
7188 (unmemocopy, scm_ceval, scm_deval): Handle new isym.
7189 * eval.h (scm_sym_at_call_with_values, scm_m_at_call_with_values):
7190 New delcarations to support above change.
7192 * eval.c (scm_primitive_eval_x, scm_primitive_eval): Fix syntax
7193 errors with last change.
7195 2001-03-25 Marius Vollmer <mvo@zagadka.ping.de>
7197 * eval.c (scm_primitive_eval_x, scm_primitive_eval, scm_i_eval_x,
7198 scm_i_eval): Moved the application of the system transformer from
7199 scm_i_eval to scm_primitive_eval.
7201 2001-03-23 Neil Jerram <neil@ossau.uklinux.net>
7203 * guile-snarf.awk.in: Substitute "\\" with "\" in .doc output.
7205 * strop.c (scm_string_index): Fix docstring line break
7208 * list.c (scm_cons_star): Fix docstring typo.
7210 2001-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
7212 * gc.c (scm_init_storage), gdbint.c (scm_init_gdbint), numbers.c
7213 (big2str), ports.c (scm_drain_input), read.c (scm_read,
7214 scm_grow_tok_buf), strings.c (scm_string, scm_makfromstr,
7215 scm_make_string, scm_string_append), strports.c (st_resize_port,
7216 scm_object_to_string), unif.c (scm_make_uve): Replace calls to
7217 scm_makstr with calls to scm_allocate_string.
7219 * strings.[ch] (scm_allocate_string): New function.
7221 * strings.[ch] (scm_makstr): Deprecated.
7223 2001-03-18 Gary Houston <ghouston@arglist.com>
7225 * posix.c (scm_tmpnam): check that return value from tmpnam is not
7226 NULL. rewrote the docstring.
7227 (scm_mkstemp): new procedure implementing "mkstemp!".
7228 * posix.h: declare scm_mkstemp.
7230 * net_db.c: declare h_errno if configure didn't define HAVE_H_ERRNO.
7231 normally it would be found in netdb.h.
7233 2001-03-17 Gary Houston <ghouston@arglist.com>
7235 * sort.c (scm_sort): move sortvec variable to avoid a compiler
7236 warning when HAVE_ARRAYS is not defined. move len too.
7238 * Makefile.am (DOT_X_FILES): remove net_db.x, posix.x, socket.x.
7239 (EXTRA_DOT_X_FILES): let configure set the value.
7240 (DOT_DOC_FILES): remove net_db.doc, posix.doc, socket.doc.
7242 * gc.c (scm_must_malloc): changed the comment explaining when
7243 scm_must variants of malloc/free etc., should be used, based on
7244 explanation from Dirk Herrmann.
7245 * fports.c (scm_fport_buffer_add): use FUNC_NAME instead of a local
7246 string with procedure name. use scm_must_malloc instead of malloc.
7247 (scm_setvbuf, scm_fdes_to_port, fport_close): use scm_must variants
7249 * ports.c (scm_add_to_port_table, scm_remove_from_port_table,
7250 scm_ungetc): use scm_must variants of malloc/realloc/free.
7251 (scm_add_to_port_table, scm_ungetc): define FUNC_NAME.
7253 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
7255 * __scm.h (SCM_ASSERT, SCM_WTA_DISPATCH_0, SCM_WTA_DISPATCH_1,
7256 SCM_WTA_DISPATCH_2, SCM_WTA_DISPATCH_n): Don't call scm_wta, call
7257 scm_wrong_type_arg instead.
7259 (SCM_WNA): Deprecated.
7261 * error.[ch] (scm_wta): Deprecated.
7263 * numbers.c (s_i_log): Minor comment fix.
7265 * read.c (scm_lreadr), unif.c (scm_aind, scm_shap2ra,
7266 scm_make_shared_array, scm_transpose_array, scm_enclose_array,
7267 scm_array_in_bounds_p): Don't use SCM_ASSERT to check for
7268 wrong-num-args or misc errors.
7270 * unif.c (scm_make_shared_array, scm_transpose_array,
7271 scm_enclose_array, scm_array_in_bounds_p, scm_array_set_x):
7272 Validate the rest argument (note: this is only done when guile is
7273 built with SCM_DEBUG_REST_ARGUMENT=1)
7275 (scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x):
7276 Replace calls to scm_wrong_num_args by SCM_WRONG_NUM_ARGS.
7278 * validate.h (SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
7279 SCM_VALIDATE_NUMBER_DEF_COPY): Deprecated.
7281 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
7283 * validate.h (SCM_WRONG_NUM_ARGS): Call scm_error_num_args_subr
7284 instead of scm_wrong_num_args.
7286 * coop-threads.c: Don't include libguile/strings.h. (Was only
7287 needed for former implementation of SCM_WRONG_NUM_ARGS.)
7289 * debug.c (scm_m_start_stack): Don't use SCM_ASSERT to check for
7290 wrong-num-args errors.
7292 2001-03-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
7294 * error.[ch] (scm_error_num_args_subr): New function.
7296 2001-03-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7298 * list.c (scm_list, scm_cons_star, scm_null_p, scm_list_p),
7299 (scm_length, scm_append, scm_reverse, scm_list_ref),
7300 (scm_memq, scm_memv, scm_member, scm_delv_x, scm_delete_x),
7301 (scm_delq, scm_delv, scm_delete, scm_delq1_x, scm_delv1_x),
7302 (scm_delete1_x), gc.c (scm_map_free_list),
7303 (scm_free_list_length), hash.c (scm_hashq, scm_hashv),
7304 (scm_hash), hashtab.c (scm_hashq_ref, scm_hashq_set_x),
7305 (scm_hashq_remove_x, scm_hashv_ref, scm_hashv_set_x),
7306 (scm_hashv_remove_x, scm_hash_ref, scm_hash_set_x),
7307 (scm_hash_remove_x), ports.c (scm_pt_size, scm_pt_member), print.c
7308 (scm_current_pstate), scmsigs.c (scm_usleep), goops.c
7309 (scm_get_keyword, scm_sys_compute_slots): Added texinfo markup.
7311 * weaks.c (scm_weak_vector_p, scm_weak_key_hash_table_p),
7312 (scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
7313 rdelim.c (scm_read_delimited_x), strop.c (scm_string_index),
7314 symbols.c (scm_symbol_interned_p), numbers.c
7315 (scm_string_to_number), ports.c (scm_port_p): Corrected texinfo
7318 2001-03-16 Keisuke Nishida <kxn30@po.cwru.edu>
7320 * snarf.h (SCM_CONST_LONG): Deprecated.
7321 * tag.c (CONST_INUM): New macro. Use it to define scm_utag_*.
7323 2001-03-15 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7325 * numbers.c (scm_num2ulong): Check that a bignum is positive
7326 before looking at the magnitude. Correctly check for overflow
7328 (scm_num2long_long): Likewise.
7329 (scm_num2ulong_long): New.
7330 (ULONG_LONG_MAX): Define if not already defined.
7331 * numbers.h: (scm_num2ulong_long): New prototype.
7333 2001-03-15 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7335 * validate.h (SCM_VALIDATE_OPOUTSTRPORT): New macro.
7337 * strports.h (SCM_STRPORTP, SCM_OPSTRPORTP, SCM_OPINSTRPORTP),
7338 (SCM_OPOUTSTRPORTP): New predicate macros.
7339 (scm_open_input_string, scm_open_output_string),
7340 (scm_get_output_string): New prototypes.
7342 * strports.c (scm_open_input_string, scm_open_output_string),
7343 (scm_get_output_string): New procedures (SRFI-6 compliant).
7344 Made scm_tc16_strport non-static.
7346 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
7348 * macros.h (SCM_ASSYNT): Removed unused object argument from
7351 * eval.c (scm_m_body, scm_m_quote, scm_m_begin, scm_m_if,
7352 scm_m_set_x, scm_m_and, scm_m_or, scm_m_case, scm_m_cond,
7353 scm_m_letstar, scm_m_do, scm_m_quasiquote, scm_m_delay,
7354 scm_m_define, scm_m_letrec1, scm_m_letrec, scm_m_let, scm_m_apply,
7355 scm_m_cont, scm_m_nil_cond, scm_m_nil_ify, scm_m_t_ify,
7356 scm_m_0_cond, scm_m_0_ify, scm_m_1_ify, scm_m_atfop, scm_m_atbind,
7357 scm_m_expand_body), evalext.c (scm_m_generalized_set_x,
7358 scm_m_undefine), goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
7359 scm_m_atdispatch): Removed unused object argument from call to
7362 2001-03-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
7364 * gh.h/gh_data.c (gh_ints2scm): Changed the signature to use a
7365 const int* to reflect that the input array of integers remains
7366 unchanged. Thanks to Brett Viren for the hint.
7368 2001-03-14 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7370 * gh_data.c (gh_scm2chars, gh_scm2shorts, gh_scm2longs),
7371 (gh_scm2floats, gh_scm2doubles): Check for malloc() returning NULL
7373 (gh_scm2newstr, gh_symbol2newstr): Change call to
7374 scm_must_malloc() to malloc(), because user-free()able memory is
7377 * gc.c: Added declaration of `scm_debug_check_freelist'.
7379 2001-03-13 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7381 * ports.c (scm_port_mode): Changed `mode' array size to 4.
7383 2001-03-12 Keisuke Nishida <kxn30@po.cwru.edu>
7385 * strports.c (scm_object_to_string): New procedure.
7386 (scm_strprint_obj): Deprecated.
7387 * strports.h: Reflect the changes.
7389 2001-03-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
7391 * goops.h (SCM_VALIDATE_PUREGENERIC): New macro.
7393 * goops.c (scm_m_atslot_ref, scm_m_atslot_set_x,
7394 scm_m_atdispatch): Provide definitions for FUNC_NAME. Don't use
7395 SCM_ASSYNT to check for correct argument types. Either use some
7396 SCM_VALIDATE_* macro or an explicit test.
7398 (scm_make_foreign_object): Don't use SCM_ASSERT to check for
7401 * macros.h (SCM_ASSYNT): On assertion failure, issue a misc-error
7402 instead of calling scm_wta.
7404 2001-03-12 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7406 * load.c (scm_primitive_load, scm_primitive_load_path),
7407 (scm_sys_search_load_path): Corrected docstrings (file ->
7410 * eval.c (scm_force): Added texinfo markup to docstring.
7411 (scm_promise_p): Renamed parameter to `obj' to match docstring.
7413 * debug-malloc.c: Reinserted #include <stdio.h>.
7415 2001-03-11 Keisuke Nishida <kxn30@po.cwru.edu>
7417 * list.c (s_scm_reverse_x): Use SCM_VALIDATE_LIST.
7419 * environments.c, error.c, eval.c, filesys.c, hashtab.c, load.c,
7420 net_db.c, procprop.c, read.c, scmsigs.c, socket.c, struct.c:
7421 Use SCM_LISTn instead of scm_listify.
7423 2001-03-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7425 * _scm.h: Removed #include <errno.h>.
7427 * error.c, net_db.c, putenv.c, stime.c: Removed declaration of
7428 errno variable (can be a macro on some systems, for example when
7429 using linux libc with threads).
7431 * error.c, filesys.c, gc.c, ioext.c, iselect.c, net_db.c, ports.c,
7432 posix.c, print.c, putenv.c, scmsigs.c, script.c, simpos.c, smob.c,
7433 socket.c, srcprop.c, stime.c, strop.c, unif.c, vports.c: Added
7434 #include <errno.h> in these 20 out of 100 files.
7436 2001-03-10 Gary Houston <ghouston@arglist.com>
7438 * socket.c: add a definition of SUN_LEN (from glibc) for when it's
7439 not already defined.
7441 2001-03-09 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7443 * coop.c: Inserted #include <stdio.h>.
7445 * iselect.c: Reinserted #include <stdio.h>.
7447 2001-03-10 Marius Vollmer <mvo@zagadka.ping.de>
7449 * posix.c: Replaced `#define' of __USE_XOPEN right before
7450 including unistd.h with a define of _GNU_SOURCE at the very top of
7453 2001-03-09 Keisuke Nishida <kxn30@po.cwru.edu>
7455 * alist.c, arbiters.c, async.c, backtrace.c, boolean.c, chars.c,
7456 continuations.c, debug-malloc.c, debug.c, dynwind.c, eq.c, eval.c,
7457 feature.c, filesys.h, gc_os_dep.c, gh_data.c, gh_eval.c,
7458 gh_funcs.c, gh_io.c, gh_list.c, gh_predicates.c, hash.c,
7459 hashtab.c, iselect.c, keywords.c, list.c, load.c, mallocs.c,
7460 net_db.c, numbers.c, objprop.c, objprop.h, options.c, pairs.c,
7461 print.c, procprop.c, procs.c, properties.c, ramap.c,
7462 regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, srcprop.c,
7463 stackchk.c, stacks.c, strings.c, strop.c, strorder.c, struct.c,
7464 symbols.c, tag.c, threads.c, variable.c, vectors.c, weaks.c:
7465 Remove #include <stdio.h>
7466 * gc.c, gdbint.c, root.c, sort.c, unif.c: Add #include <string.h>.
7468 * procs.c (scm_make_subr_opt): Init symcell to avoid warning.
7470 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7472 * posix.c (scm_gethostname): Set initial name length to 256 for
7475 2001-03-09 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7477 * posix.h (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
7478 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
7479 (scm_sethostname, scm_gethostname): New prototypes.
7481 * posix.c: Added inclusion of <crypt.h>, <sys/resource.h> and
7482 <sys/file.h>, if present.
7483 (scm_init_posix): [PRIO_PROCESS, PRIO_PGRP, PRIO_USER, LOCK_SH,
7484 LOCK_EX, LOCK_UN, LOCK_NB]: New variables.
7485 (scm_crypt, scm_chroot, scm_getlogin, scm_cuserid),
7486 (scm_getpriority, scm_setpriority, scm_getpass, scm_flock),
7487 (scm_sethostname, scm_gethostname): New procedures.
7489 2001-03-08 Neil Jerram <neil@ossau.uklinux.net>
7491 * ports.c (scm_port_column): Docstring fixes: (i) port-line arg is
7492 not optional (ii) "recommend" spelling correction.
7494 2001-03-08 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7496 * ramap.c (racp): Removed optimization which caused array copying
7497 to fail if the two arrays shared storage. Re-inserted the IVDEP
7498 macros removed in the change of 2000-03-09. (Don't really have a
7499 complete grasp of what they are for, but they seem to be necessary
7500 on Crays. This needs testing!) Thanks to Miroslav Silovic.
7502 * hash.c (scm_string_hash): Don't downcase characters.
7504 2001-03-07 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7506 * symbols.c (scm_symbols_prehistory): Changed symbol hash table
7507 size from 277 --> 1009.
7509 * symbols.c, symbols.h (scm_sys_symbols): New function GUILE_DEBUG
7512 * coop-threads.c: Fixed change of 2001-03-06.
7514 * validate.h: Code formatting.
7516 2001-03-07 Keisuke Nishida <kxn30@po.cwru.edu>
7518 * Makefile.am (*.x): Add dependency on snarf.h and guile-doc-snarf.in.
7519 (*.doc): Add dependency on guile-snarf.awk.in.
7521 * guile-snarf.awk.in: Neglect spaces at the end of
7522 SCM_SNARF_DOCSTRING_END. Skip lines "# NN ..." in the
7523 middle of docstrings. (To avoid the problem with gcc-2.96.)
7525 2001-03-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
7527 * coop-threads.c (scm_call_with_new_thread), load.c
7528 (scm_primitive_load, scm_sys_search_load_path), random.c
7529 (scm_c_default_rstate), struct.c (scm_make_struct_layout,
7530 scm_struct_ref, scm_struct_set_x): Don't use SCM_ASSERT to
7531 (potentially) issue a scm-misc-error or wrong-num-args error
7534 * load.c (scm_search_path): Use SCM_ASSERT_TYPE to give details
7535 about the expected type with the wrong-type-arg error message.
7537 * smob.c (scm_make_smob): Abort on misuse of smob - it indicates
7538 a C level bug that can't be fixed from scheme anyway.
7540 2001-03-05 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7542 * eval.c (scm_m_letstar): Removed check for duplicate bindings.
7543 Duplicate bindings are OK in a let* since a let* is semantically
7544 equivalent to a nested set of let:s.
7546 2001-03-05 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7548 * print.c (scm_print_options): Fixed texinfo in docstring.
7550 * net_db.c (scm_getserv, scm_getproto, scm_getnet): Return #f if
7551 the underlying functions getservent, getprotoent or getnetent
7552 return NULL instead of signalling an error.
7554 2001-03-04 Gary Houston <ghouston@arglist.com>
7556 * socket.c (scm_fill_sockaddr): don't allow buffer overflows when
7557 taking an unexpectedly large filename for an AF_UNIX socket from
7558 bind/connect/sendto (thanks to Martin Grabmueller).
7560 * socket.c (scm_sock_fd_to_port, SCM_SOCK_FD_TO_PORT): removed the
7561 former and adjusted the latter.
7562 (scm_socket, scm_socketpair): cosmetic changes.
7563 (scm_getsockopt, scm_setsockopt): declare optlen as int, not
7564 size_t as socklen_t substitute. don't restrict args/return values
7565 to INUM: allow full range of int or size_t.
7566 (scm_fill_sockaddr): check arguments before allocating memory, to
7567 avoid leakage. use malloc, not scm_must_malloc.
7568 (scm_connect, scm_bind, scm_sendto): use int, not size_t as socklen_t
7569 substitute. free the sockaddr structure before throwing an error.
7570 (scm_init_add_buffer): procedure removed, together with its static
7571 buffer scm_addr_buffer, which wouldn't be thread safe. instead,
7572 define a macro MAX_ADDR_SIZE and declare the buffer where needed.
7573 (scm_accept, scm_getpeername, scm_getsockname, scm_recvfrom,
7574 scm_sendto): use a local buffer instead of scm_addr_buffer.
7575 adjust for new SCM_SOCK_FD_TO_PORT. use int for address size,
7577 (scm_recvfrom): set addr->sa_family to AF_UNSPEC before the recvfrom
7578 call to detect whether recvfrom could be bothered to set the address.
7579 (scm_init_socket): don't call scm_init_addr_buffer.
7581 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
7583 * debug.c (scm_procedure_source, scm_procedure_environment),
7584 print.c (scm_get_print_state), ramap.c (scm_array_fill_int,
7585 scm_array_index_map_x), sort.c (scm_sort_x, scm_sort,
7586 scm_stable_sort_x, scm_stable_sort), stacks.c (scm_make_stack,
7587 scm_last_stack_frame), symbols.c (scm_sym2vcell, scm_sym2ovcell),
7588 unif.c (scm_list_to_uniform_array, scm_uniform_vector_length,
7589 scm_transpose_array, scm_enclose_array, scm_array_in_bounds_p,
7590 scm_uniform_vector_ref, scm_array_set_x, scm_uniform_array_read_x,
7591 scm_uniform_array_write, scm_bit_set_star_x, scm_bit_count_star,
7592 scm_array_to_list, scm_array_prototype), validate.h
7593 (SCM_VALIDATE_NUMBER_COPY): Don't call function scm_wta, call
7594 scm_misc_error or scm_wrong_type_arg instead.
7596 * validate.h (SCM_WTA, RETURN_SCM_WTA): Deprecated.
7598 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7600 * goops.c, goops.h (scm_sys_pre_expand_closure_x): Removed.
7601 (scm_sys_tag_body): Added.
7603 2001-03-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
7605 * continuations.c (continuation_apply), eval.c (scm_m_lambda,
7606 scm_m_letstar, scm_m_letrec1, scm_m_let, SCM_APPLY), eval.h
7607 (SCM_EVALIM2), evalext.c (scm_m_generalized_set_x), gc.c
7608 (get_bvec, MARK), goops.c (scm_primitive_generic_generic),
7609 options.c (scm_options), ports.c (scm_remove_from_port_table),
7610 ramap.c (scm_ramapc), read.c (skip_scsh_block_comment, scm_lreadr,
7611 scm_lreadparen, scm_lreadrecparen), script.c (script_get_octal,
7612 script_get_backslash, script_read_arg), unif.c (scm_cvref): Don't
7613 call function scm_wta, call scm_misc_error or scm_wrong_type_arg
7616 2001-03-04 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7618 * goops.c (scm_sys_pre_expand_closure_x): New procedure.
7620 2001-03-04 Marius Vollmer <mvo@zagadka.ping.de>
7622 * eval.c (scm_s_duplicate_bindings): New error message.
7623 (scm_m_letrec1, scm_m_letstar): Check for duplicate bindings.
7625 2001-03-03 Marius Vollmer <mvo@zagadka.ping.de>
7627 * eval.h (SCM_EVALIM2): New macro. Use it when a
7628 immediate, literal constant should be evaluated.
7629 * eval.c (scm_s_duplicate_formals): New error message string.
7630 (scm_c_improper_memq): New function.
7631 (scm_m_lambda): Check for duplicate arguments.
7632 (scm_ceval, scm_deval): When executing a body: only cons a new
7633 toplevel environment frame when it is different from the
7634 existing one; use EVALCAR instead of SIDEVAL so that we can properly
7635 check for empty combinations; use SCM_EVALIM2 for the same reason
7636 in the non-toplevel loop.
7637 (nontoplevel_cdrxnoap, nontoplevel_cdrxbegin, nontoplevel_begin):
7638 New labels with the meaning of their non-"nontoplevel" partners,
7639 but they are used when it is known that the body is not evaluated at
7641 (scm_apply, scm_dapply): use SCM_EVALIM2 to get proper error
7642 reporting for empty combinations.
7644 2001-03-02 Keisuke Nishida <kxn30@po.cwru.edu>
7646 * Remove dump facilities.
7647 * dump.c, dump.h: Removed.
7648 * Makefile.am: Remove dump.c, dump.h, dump.x, dump.doc.
7649 * init.c: Remove #include "libguile/dump.h".
7650 (scm_init_guile_1): Remove scm_init_dump.
7651 * smob.h (scm_smob_descriptor): Remove slots: dump, undump.
7652 (scm_set_smob_dump, scm_set_smob_undump): Remove declaration.
7653 * smob.c (scm_make_smob_type): Remove initialization: dump, undump.
7654 (scm_set_smob_dump, scm_set_smob_undump): Removed.
7656 * keywords.c: Remove #include "libguile/dump.h".
7657 (keyword_dump, keyword_undump): Removed.
7658 (scm_init_keywords): Remove scm_set_smob_dump and scm_set_smob_undump.
7660 2001-03-02 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7662 * vectors.c (s_scm_vector_p, list->vector, scm_vector)
7663 (scm_vector_ref, scm_vector_set_x, scm_vector_to_list)
7664 (scm_vector_fill_x), strorder.c (scm_string_equal_p)
7665 (scm_string_ci_equal_p, scm_string_less_p, scm_string_leq_p)
7666 (scm_string_gr_p, scm_string_geq_p, scm_string_ci_less_p)
7667 (scm_string_ci_geq_p), symbols.c (scm_symbol_p)
7668 (scm_symbol_to_string, scm_string_to_symbol): Changed use of @t{}
7669 to @code{} as the texinfo manual recommends, converted the
7670 examples to use a @lisp{}-environment.
7672 * strports.c (scm_eval_string): Cleaned up the docstring.
7674 * struct.c (scm_struct_p, scm_struct_vtable_p): Added texinfo
7677 * numbers.c (scm_exact_p, scm_odd_p, scm_even_p)
7678 (scm_number_to_string, scm_string_to_number, scm_number_p)
7679 (scm_real_p, scm_integer_p, scm_inexact_p, scm_make_rectangular)
7680 (scm_make_polar, scm_inexact_to_exact): Added texinfo markup.
7681 (scm_ash): Added texinfo markup and removed obsolete @refill.
7682 (scm_gr_p): Corrected comment.
7683 (scm_gr_p, scm_leq_p, scm_geq_p): Added texinfo markup to (future
7684 docstring) comments.
7685 (scm_positive_p, scm_less_p, scm_num_eq_p, scm_real_p)
7686 (scm_number_p, scm_negative_p, scm_max, scm_min, scm_sum)
7687 (scm_difference, scm_product, scm_divide, scm_asinh, scm_acosh)
7688 (scm_atanh, scm_truncate, scm_round, scm_exact_to_inexact)
7689 (floor, ceiling, $sqrt, $abs, $exp, $log, $sin, $cos, $tan, $asin)
7690 ($acos, $atan, $sinh, $cosh, $tanh, scm_real_part, scm_imag_part)
7691 (scm_magnitude, scm_angle, scm_abs, scm_quotient, scm_remainder)
7692 (scm_modulo, scm_gcd, scm_lcm): Added (future docstring) comments.
7694 2001-02-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
7696 * __scm.h (SCM_ASSERT_TYPE): Add missing macro parameter.
7697 (Obviously nobody compiles with SCM_RECKLESS defined...)
7699 * validate.h (SCM_ASSERT_RANGE): Use the argument number.
7701 2001-02-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
7703 * ports.c, ports.h (scm_c_read, scm_c_write): New functions.
7705 * ports.h (SCM_READ_BUFFER_EMPTY_P): New macro.
7707 2001-02-24 Neil Jerram <neil@ossau.uklinux.net>
7709 * numbers.c (scm_two_doubles, scm_sys_expt, scm_sys_atan2,
7710 scm_make_polar): Rename arguments `z1' and `z2' to `x' and `y',
7711 since use of `z' suggests that the arguments may be complex.
7713 * goops.c (scm_make), numbers.c (scm_sys_expt): Fix docstring
7716 2001-02-23 Neil Jerram <neil@ossau.uklinux.net>
7718 * dump.c (scm_binary_write, scm_binary_read), eval.c
7719 (scm_primitive_eval), guardians.c (scm_guardian_destroyed_p,
7720 scm_guardian_greedy_p, scm_make_guardian), fports.c
7721 (scm_file_port_p): Minor docstring fixes.
7723 2001-02-22 Marius Vollmer <mvo@zagadka.ping.de>
7725 * load.c (load): Use scm_primitive_eval_x instead of scm_i_eval_x.
7727 * goops.c (scm_add_method, DEFVAR): Use scm_eval instead of
7729 (make_class_from_template): Do not bother to set the current
7730 module around the call to DEFVAR, scm_eval takes care of that.
7731 (scm_init_goops): Make scm_module_goops and
7732 scm_goops_lookup_closure permanent objects.
7734 * eval.c (scm_ceval, scm_deval): When evaluating expressions on
7735 top level, create a fresh top-level environment for each
7736 expression instead of mutating the exisint frame. This is
7737 important when that frame is closed over.
7739 * numbers.c (s_scm_logior) [SCM_DIGSTOOBIG]: Also use
7740 SCM_DIGSPERLONG instead of DIGSPERLONG.
7742 2001-02-21 Marius Vollmer <mvo@zagadka.ping.de>
7744 * eval.c (scm_ceval, scm_deval): Check for wrong number of args
7745 before applying arrow procedure in `cond' and before applying
7746 receiver procedure in call-with-current-continuation.
7747 (scm_i_eval): Do not invoke scm_copy_tree in argument in SCM_XEVAL
7748 macro. The argument is expanded more than one time.
7750 * numbers.c (scm_logior) [SCM_DIGSTOOBIG]: Correctly use
7751 SCM_BIGDIG instead of BIGDIG. Thanks to Steven G. Johnson!
7753 2001-02-20 Marius Vollmer <mvo@zagadka.ping.de>
7755 * guile-doc-snarf.in, guile-func-name-check.in: Added copyright
7758 2001-02-17 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7760 * variable.c (scm_make_variable, scm_make_undefined_variable)
7761 (scm_variable_ref, scm_variable_set_x, scm_builtin_variable)
7762 (scm_variable_bound_p), values.c (scm_values)
7763 (scm_call_with_values), unif.c (scm_bit_count)
7764 (scm_bit_set_star_x), symbols.c (scm_gentemp)
7765 (scm_gensym), strings.c (scm_string_p, scm_make_string)
7766 (scm_read_only_string_p, scm_string_length, scm_string_ref)
7767 (scm_string_set_x, scm_substring, scm_string_append), stime.c
7768 (scm_strptime, scm_mktime), random.c (scm_seed_to_random_state)
7769 (scm_copy_random_state, scm_random), print.c (scm_newline)
7770 (scm_write_char, scm_simple_format), debug-malloc.c
7771 (scm_malloc_stats), environments.c (scm_environment_p)
7772 (scm_environment_bound_p, scm_environment_ref)
7773 (scm_environment_fold, scm_environment_define)
7774 (scm_environment_undefine, scm_environment_set_x)
7775 (scm_environment_cell, scm_environment_observe)
7776 (scm_environment_observe_weak, scm_environment_unobserve)
7777 (scm_make_eval_environment, scm_eval_environment_p)
7778 (scm_eval_environment_set_local_x, scm_eval_environment_local)
7779 (scm_eval_environment_imported)
7780 (scm_eval_environment_set_imported_x, scm_make_import_environment)
7781 (scm_import_environment_p, scm_import_environment_imports)
7782 (scm_import_environment_set_imports_x, scm_make_export_environment)
7783 (scm_export_environment_p, scm_export_environment_private)
7784 (scm_export_environment_set_private_x)
7785 (scm_export_environment_signature)
7786 (scm_export_environment_set_signature_x, scm_leaf_environment_p):
7787 Added texinfo markup.
7789 * ports.c (scm_drain_input): Lowercased argument to @var.
7790 (scm_current_input_port, scm_current_output_port): Filled in
7791 missing explanation.
7792 (scm_current_load_port, scm_set_current_output_port)
7793 (scm_set_current_error_port, scm_port_line, scm_set_port_line_x):
7794 Added texinfo markup.
7796 * arbiters.c (scm_make_arbiter, scm_try_arbiter)
7797 (scm_release_arbiter): Added texinfo markup to docstrings.
7798 Changed `Returns' to `Return'.
7799 (arbiter_print): Changed SCM_CDR to SCM_SMOB_DATA.
7801 2001-02-16 Neil Jerram <neil@ossau.uklinux.net>
7803 * guile-snarf.awk.in: Quote any `@'s that occur in Scheme names,
7804 by doubling them to `@@'.
7806 2001-02-16 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
7808 * numbers.c (scm_lognot), random.c (scm_random,
7809 scm_random_normal, scm_random_solid_sphere_x,
7810 scm_random_hollow_sphere_x, scm_random_normal_vector_x,
7811 scm_random_exp), dynwind.c
7812 (scm_dynamic_wind): Removed unnecessary "" from docstrings.
7814 * goops.c (scm_sys_initialize_object, scm_instance_p,
7815 scm_class_name, scm_class_precedence_list, scm_class_slots,
7816 scm_class_environment, scm_generic_function_name,
7817 scm_generic_function_methods, scm_method_generic_function,
7818 scm_method_specializers, scm_method_procedure, scm_make_unbound,
7819 scm_unbound_p, scm_assert_bound, scm_at_assert_bound_ref,
7820 scm_sys_fast_slot_ref, scm_sys_fast_slot_set_x, scm_slot_ref,
7821 scm_slot_set_x, _scm_slot_bound_p, scm_slots_exists_p,
7822 scm_sys_allocate_instance, scm_make, scm_pure_generic_p,
7823 scm_class_direct_supers, scm_class_direct_slots,
7824 scm_class_direct_subclasses, scm_class_direct_methods,
7825 scm_accessor_method_slot_definition, scm_sys_goops_loaded),
7826 debug.c (scm_with_traps, scm_memoized_p, scm_make_gloc,
7827 scm_gloc_p, scm_make_iloc, scm_iloc_p, scm_memcons,
7828 scm_mem_to_proc, scm_proc_to_mem, scm_unmemoize,
7829 scm_memoized_environment, scm_procedure_name,
7830 scm_procedure_source, scm_procedure_environment, scm_debug_hang),
7832 (scm_class_of, scm_entity_p, scm_operator_p,
7833 scm_set_object_procedure_x, scm_object_procedure,
7834 scm_make_class_object), hooks.c (scm_make_hook_with_name,
7835 scm_make_hook, scm_hook_p, scm_hook_empty_p, scm_add_hook_x,
7836 scm_remove_hook_x, scm_reset_hook_x, scm_run_hook,
7837 scm_hook_to_list), lang.c
7838 (scm_nil_cons, scm_nil_car, scm_nil_cdr, scm_null, scm_nil_eq),
7839 numbers.c (scm_sys_expt, scm_sys_atan2), print.c
7840 (scm_print_options, scm_port_with_print_state,
7841 scm_get_print_state), procs.c (scm_make_cclo, scm_procedure_p,
7842 scm_closure_p, scm_thunk_p, scm_procedure_with_setter_p,
7843 scm_make_procedure_with_setter, scm_procedure), throw.c
7844 (scm_lazy_catch), modules.c (scm_standard_eval_closure), load.c
7845 (scm_parse_path, scm_search_path), stacks.c (scm_make_stack,
7846 scm_stack_ref, scm_stack_length, scm_frame_p,
7847 scm_last_stack_frame, scm_frame_number, scm_frame_source,
7848 scm_frame_procedure, scm_frame_arguments, scm_frame_previous,
7849 scm_frame_next, scm_frame_real_p, scm_frame_procedure_p,
7850 scm_frame_evaluating_args_p, scm_frame_overflow_p), filesys.c
7851 (scm_dirname, scm_basename), dynwind.c
7852 (scm_wind_chain), read.c (scm_read_options, scm_read,
7853 scm_read_hash_extend), gc.c
7854 (scm_unhash_name), eval.c (scm_eval_options_interface,
7855 scm_evaluator_traps, s_scm_nconc2last), backtrace.c
7856 (scm_display_error, scm_set_print_params_x,
7857 scm_display_application, scm_display_backtrace, scm_backtrace),
7858 async.c (scm_async, scm_system_async, scm_async_mark,
7859 scm_system_async_mark, scm_run_asyncs, scm_noop,
7860 scm_set_tick_rate, scm_set_switch_rate, scm_unmask_signals,
7861 scm_mask_signals): Added docstrings.
7863 2001-02-15 Keisuke Nishida <kxn30@po.cwru.edu>
7865 * dump.c (scm_undump): Use SCM_CARLOC/SCM_CDRLOC to obtain the
7866 address of car/cdr. (Thanks to Dirk Herrmann)
7867 Use scm_sizet to obtain the length of strings.
7868 (Thanks to Matthias Koeppe)
7870 2001-02-15 Marius Vollmer <mvo@zagadka.ping.de>
7872 * symbols.c (scm_mem2symbol): Put a empty statement after the
7873 next_symbol label. This is mandated by ANSI, appearantly.
7875 2001-02-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7877 * gc_os_dep.c: Do not include <linux/version.h>. It makes no
7878 sense to compile for a specific kernel version. Do not include
7879 <asm/signal.h> while defining __KERNEL__. This hack should no
7880 longer be needed and caused problems.
7882 2001-02-13 Marius Vollmer <mvo@zagadka.ping.de>
7884 * eval.c (scm_ceval, scm_deval): use `SIDEVAL' instead of
7885 SCM_CEVAL when evaluating subforms of `begin' forms. SCM_CEVAL
7886 can not deal with immediates.
7888 2001-02-12 Keisuke Nishida <kxn30@po.cwru.edu>
7890 * list.c (scm_list_copy): Validate the first argument.
7892 2001-02-11 Marius Vollmer <mvo@zagadka.ping.de>
7894 Fix evaluator so that top-level expressions are correctly
7895 evaluated with respect to the module system.
7897 * modules.h. modules.c (scm_current_module_lookup_closure): New
7900 * eval.h (scm_primitive_eval, scm_primitive_eval_x): New
7902 (scm_i_eval, scm_i_eval_x, scm_eval, scm_eval_x): Changed argument
7903 names to better reflect their meaning.
7905 * eval.c (scm_ceval, scm_deval): Recognize when `begin' is being
7906 evaluated at top-level and synronize lookup closure before
7907 executing every subform.
7908 (scm_primitve_eval_x, scm_primitive_eval): New functions.
7909 (scm_eval_x, scm_eval): Reimplement in terms of
7910 scm_primitive_eval_x and scm_primitive_eval, respectively.
7912 2001-02-09 Marius Vollmer <mvo@zagadka.ping.de>
7914 * macros.c (scm_macro_name, scm_macro_transformer): Use
7915 SCM_SMOB_DATA instead of SCM_CDR. Provided by Martin Grabmueller.
7918 2001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
7920 * dump.c (scm_store_bytes): Store data size before data.
7921 (scm_restore_bytes): Restore data size. Takes a pointer to size.
7922 * dump.h (scm_restore_bytes): Updated.
7924 2001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
7926 * dump.c: Use double cells for update schedule.
7928 2001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
7930 * ports.c (scm_unread_char): Take an optional argument.
7932 2001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
7934 * modules.h (scm_selected_module, scm_current_module): Renamed
7935 scm_selected_module to scm_current_module to synchronize Scheme
7937 (scm_select_module, scm_set_current_module): Likewise. Changed
7940 * ports.c (scm_port_for_each): Make a snapshot of the port table
7941 before iterating over it. The table might change while the user
7942 code is running. With the snapshot, the user can depend on the
7943 fact that each port that existed at the start of the iteration is
7944 encountered exactly once. (ice-9 popen) depends on this.
7946 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
7948 * strings.h (SCM_STRING_MAX_LENGTH): New macro.
7950 * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
7951 range checking for the size parameter. Thanks to Martin
7952 Grabmueller for the hint.
7954 (scm_makstr): Reordered string initialization to make interrupt
7955 deferring unnecessary.
7957 * vectors.c (scm_make_vector): Fixed range checking.
7959 2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
7961 * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
7963 * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
7964 checking of the size parameter for type correctness and valid
7965 range. Thanks to Rob Browning for reporting the problem. Instead
7966 of deferring interrupts, scm_remember_upto_here_1 is used.
7968 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
7970 * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
7971 (scm_dump_cell_update): Removed.
7972 (scm_dump_update): Renamed from scm_dump_object_update.
7973 (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
7974 a pointer instead of returning a value.
7975 * keywords.c (keyword_undump): Updated.
7977 2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
7979 * dump.c, dump.h: Modified a lot.
7980 (SCM_DUMP_COOKIE): Version 0.1
7981 (scm_dump_mark): Removed.
7982 (scm_restore_cell_object, scm_store_cell_object): New functions.
7984 * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
7985 dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
7986 New slots: dump, undump.
7987 * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
7990 * keywords.c (keyword_dump): Renamed from keyword_dealloc.
7991 (keyword_undump): Renamed from keyword_alloc.
7992 (scm_init_keywords): Set keyword_dump and keyword_undump.
7994 2001-02-03 Michael Livshin <mlivshin@bigfoot.com>
7996 * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
7997 the deprecated SCM_DOUBLE_CELLP.
7999 * tags.h (SCM_DOUBLE_CELLP): deprecated.
8001 2001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
8003 * dump.c, dump.h: New files.
8004 * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
8005 * init.c: #include "libguile/dump.h".
8006 (scm_init_guile_1): Call scm_init_dump.
8007 * smob.h (scm_smob_descriptor): New slots: dump_mark,
8008 dump_dealloc, dump_store, undump_alloc, undump_restore,
8010 * smob.c (scm_make_smob_type): Init the new slots.
8011 (scm_set_smob_dump, scm_set_smob_undump): New functions.
8012 * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
8014 * keywords.c: #include "libguile/dump.h".
8015 (keyword_dealloc, keyword_alloc): New functions.
8016 (scm_init_keywords): Set smob_dump and smob_undump.
8018 2001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
8020 * vectors.c (scm_c_make_vector): New function.
8021 * vectors.h (scm_c_make_vector): Declared.
8022 * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
8023 (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
8024 gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
8025 (scm_make_method_cache, scm_i_vector2list,
8026 scm_compute_applicable_methods, scm_sys_method_more_specific_p),
8027 init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
8028 scm_getproto, scm_return_entry), posix.c (scm_getgroups,
8029 scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
8030 grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
8031 (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
8032 stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
8033 (scm_vector, scm_make_vector): Use scm_c_make_vector.
8035 * hashtab.c (scm_c_make_hash_table): New function.
8036 * hashtab.h (scm_c_make_hash_table): Declared.
8037 * environments.c (scm_make_leaf_environment,
8038 scm_make_eval_environment), gc.c (scm_init_storage),
8039 keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
8040 Use scm_c_make_hash_table.
8042 2001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
8044 * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
8046 2001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
8048 * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
8051 * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
8052 scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
8053 (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
8054 scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
8055 srcprop.c (scm_source_properties, scm_set_source_properties_x,
8056 scm_source_property, scm_set_source_property_x), sort.c
8057 (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
8058 scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
8059 scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
8062 2001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
8064 * eval.c (SCM_APPLY): Check that primitives which take 1 arg
8065 really get that arg.
8067 2001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
8069 * goops.c (s_scm_get_keyword): Bug fix.
8071 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
8073 The following patch was sent by Martin Grabmueller. It makes sure
8074 that in case of parameter errors the correct function name is
8075 shown, and that parameter types are only checked once.
8077 * strop.c (string_copy, string_upcase_x, string_downcase_x,
8078 string_capitalize_x): New functions. Each one performs the core
8079 functionality of the corresponding scm_* function.
8081 (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
8082 scm_string_downcase_x, scm_string_downcase,
8083 scm_string_capitalize_x, scm_string_capitalize): Reduced to
8084 parameter checking wrappers of the above functions.
8086 2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
8088 * continuations.c, dynl.c, keywords.c, load.c: Include
8089 strings.h. Thanks to Bill Schottstaedt for the bug report.
8091 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8093 * backtrace.c (display_header): Make sure that line and column
8094 information is shown independent of whether the port the code was
8095 read from had an associated filename. Thanks to Martin
8096 Grabmueller for providing this patch.
8098 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8100 * fports.[ch] (scm_file_port_p): New primitive.
8102 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8104 * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
8105 These are now defined in fports.c, strports.c and vports.c.
8107 * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
8108 vports.c (scm_tc16_sfport): Made variables (were macros defined in
8111 fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
8112 (scm_make_sfptob): Made static. These return a type code now.
8114 fports.c (scm_init_fports), strports.c (scm_init_strports),
8115 vports.c (scm_init_vports): Create the corresponding port types.
8117 * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
8118 SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
8120 * init.c (scm_init_guile_1): Make sure strports are initialized
8123 * ports.[ch] (scm_make_port_type): Changed the return type to
8126 * ports.c (scm_ports_prehistory): Don't create any port types
8129 * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
8130 against scm_tc16_fport directly.
8132 2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
8134 * srcprop.c (scm_set_source_property_x): Fix to handle
8135 (set-source-property! <obj> 'copy <datum>) correctly.
8137 2001-01-24 Gary Houston <ghouston@arglist.com>
8139 * filesys.c (scm_link): docstring fix.
8140 * fports.h (scm_setfileno): obsolete declaration removed.
8141 * posix.c: bogus popen declaration removed.
8143 * rdelim.c: new file, split from ioext.c.
8144 * rdelim.h: new file, split from ioext.h
8145 * Makefile.am: add rdelim.c and related files.
8146 * init.c: call scm_init_rdelim. include rdelim.h.
8148 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8150 This patch was sent by Martin Grabmueller and makes sure that
8151 parameter errors are reported correctly by the lexicographic
8152 ordering predicates.
8154 * strorder.c (string_less_p, string_ci_less_p): New functions.
8156 (scm_string_less_p, scm_string_ci_less_p): Extracted the core
8157 functionality into string_less_p, string_ci_less_p respectively.
8158 The remaining code is just a wrapper to do the parameter
8161 (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
8162 parameters and call string_less_p instead of scm_string_less_p.
8164 (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
8165 Check the parameters and call string_less_ci_p instead of
8166 scm_string_ci_less_p.
8168 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8170 This patch modifies scm_display_error to perform parameter
8171 checking. Thanks to Neil Jerram for the bug report.
8173 * backtrace.[ch] (scm_i_display_error): New function.
8175 * backtrace.c (scm_display_error): Added parameter check and
8176 extracted the core functionality into function
8177 scm_i_display_error.
8179 * throw.c (handler_message): Call scm_i_display_error to display
8182 2001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
8184 * eval.c (SCM_APPLY): Added # args check for application of
8185 procedures with arity 3. (Thanks to Anders Holst.)
8187 2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
8189 * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
8191 (SCM_OPDIRP): Deprecated.
8193 * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
8196 (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
8197 Instead, give an explicit error message in case the directory is
8200 (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
8201 instead of SCM_OPENP and SCM_CLOSEDP.
8203 * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
8205 2001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
8207 * eval.c (inner_eval, scm_eval): Move all real functionality into
8208 inner_eval. Avoid to copy the expression twice by inlining some
8209 code from scm_i_eval.
8211 2001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
8213 * eval.c (scm_m_case): The 'else' clause of a 'case' statement
8214 now has to be the last clause, as required by R5RS. Thanks to
8215 Martin Grabmueller for the patch.
8217 2001-01-18 Gary Houston <ghouston@arglist.com>
8219 * ioext.c: further simplify scm_read_string_x_partial by defining
8222 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
8224 * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
8226 2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
8228 * __scm.h: Added comment about architecture and compiler
8229 properties that are required by guile.
8231 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
8232 SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
8234 (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
8236 * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
8238 (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
8239 SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
8241 2001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
8243 * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
8244 to the names in limits.h.
8246 * numbers.c (abs_most_negative_fixnum): Added.
8248 (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
8249 fixnum-min) special case.
8251 (scm_big_and): Fix for negative first parameter.
8253 (scm_bit_extract): Fix for fixnum paramters.
8254 Thanks to Rob Browning for the bug report.
8256 (scm_init_numbers): Initialize abs_most_negative_fixnum.
8258 2001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
8260 * symbols.c (scm_symbol_bound_p): Fixed comment.
8261 Thanks to Chris Cramer.
8263 2001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
8265 * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
8266 Thanks to Bill Schottstaedt.
8268 2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
8270 from Matthias Köppe:
8272 * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
8273 casts its result, so doesn't yield an lvalue per ANSI C.
8275 * goops.c (s_scm_sys_set_object_setter_x): use
8276 SCM_SET_ENTITY_SETTER.
8277 (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
8279 * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
8280 its result, so doesn't yield an lvalue per ANSI C.
8281 (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
8282 (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
8283 SCM_GC_SET_CARD_FLAGS.
8284 (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
8286 * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
8288 2001-01-08 Gary Houston <ghouston@arglist.com>
8290 * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
8291 * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
8292 socket.c (scm_recvfrom): use the new macro, plus minor docstring
8294 * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
8295 for fdes. if current input port is used, check that it's a file
8298 2001-01-06 Gary Houston <ghouston@arglist.com>
8300 * ioext.c (scm_read_string_x_partial): new procedure, implements
8301 read-string!/partial.
8302 * ports.c (scm_take_from_input_buffers): new procedure used by
8303 scm_read_string_x_partial.
8304 (scm_drain_input): use scm_take_from_input_buffers.
8306 2001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
8308 * validate.h (SCM_VALIDATE_NUMBER): New.
8310 2001-01-03 Michael Livshin <mlivshin@bigfoot.com>
8312 * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
8313 SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
8314 SET_DESTROYED): new defines/macros.
8315 (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
8316 (add_to_live_list): takes a `guardian_t *' now, not SCM.
8317 (guardian_print): print more info.
8318 (guardian_apply): check if the guardian is destroyed, and throw an
8319 error if so. take one more optional argument `throw_p'.
8320 (scm_guard): depending on the value of `throw_p', return a boolean
8322 (scm_get_one_zombie): remove redundant property test.
8323 (guardian_t): represent the various (currently 3, I hope nothing
8324 more gets added) boolean fields as bit flags.
8325 (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
8326 (scm_destroy_guardian_x): new procedure.
8328 * guardians.h: added prototypes for `scm_guardian_greedy_p' and
8329 `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
8331 2001-01-01 Gary Houston <ghouston@arglist.com>
8333 * fports.c (fport_write): bugfix: handle short writes for
8334 unbuffered ports too. optimize the buffered case by minimizing
8335 the number of write/flush calls.
8336 (write_all): new helper procedure.
8338 The ChangeLog continues in the file: "ChangeLog-2000"