* libguile/tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
[bpt/guile.git] / libguile / ChangeLog
index 54734ab..90dec9b 100644 (file)
@@ -1,3 +1,705 @@
+2003-10-11  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
+
+       * print.c (scm_isymnames): Add names for the new memoizer codes.
+
+       * eval.c (s_missing_clauses, s_bad_case_clause,
+       s_extra_case_clause, s_bad_case_labels, s_duplicate_case_label,
+       literal_p): New static identifiers.
+
+       (scm_m_case): Use ASSERT_SYNTAX to signal syntax errors.  Be more
+       specific about the kind of error that was detected.  Check for
+       duplicate case labels.  Handle bound 'else.  Avoid unnecessary
+       consing when creating the memoized code.
+
+       (scm_m_case, unmemocopy, SCM_CEVAL): Use SCM_IM_ELSE to memoize
+       the syntactic keyword 'else.
+
+2003-10-10  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (s_bad_expression, syntax_error_key, syntax_error,
+       ASSERT_SYNTAX, ASSERT_SYNTAX_2): New static identifiers.
+
+       (scm_m_and): Use ASSERT_SYNTAX to signal syntax errors.  Avoid
+       unnecessary consing when creating the memoized code.
+
+2003-10-09  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_inexact_to_exact): Don't depend on what double->long
+       cast gives for values bigger than a long, or for nan or inf.
+
+2003-10-08  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * smob.h (scm_make_smob_type): Made the declaration match the
+       definition.
+
+2003-10-07  Marius Vollmer  <mvo@zagadka.de>
+
+       * goops.c, objects.h, smob.c, smob.h: Make type names char
+        const * instead of char *.  Thanks to Paul Jarc!
+
+2003-10-02  Kevin Ryde  <user42@zip.com.au>
+
+       * strports.c (scm_call_with_output_string): scm_get_output_string
+       rather than scm_strport_to_string, so as to guard against the port
+       having been closed by the called procedure.  Reported by Nic Ferrier.
+
+2003-09-18  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.h (SCM_INEXACTP): Removed uses of SCM_TYP16S.
+
+       * tags.h, deprecated.h (SCM_TYP16S): Deprecated and moved from
+       tags.h to deprecated.h.
+
+2003-09-18  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       This set of patches introduces a new tc7 code scm_tc7_number for
+       numbers.  Bignums, reals and complex numbers are turned from smobs
+       into subtypes of scm_tc7_number.
+
+       * tags.h (scm_tc7_number): New.
+
+       * eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
+       (scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
+       (scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
+       (scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
+       (scm_class_of), print.c (scm_iprin1), smob.c
+       (scm_smob_prehistory): Don't handle bignums, reals and complex
+       numbers as subtypes of scm_tc7_smob any more.
+
+       * numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
+       scm_tc16_complex): Moved definitions from tags.h to numbers.h.
+
+2003-09-18  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
+       sizeof (scm_t_complex) to determine the memory size of the
+       malloc'd area for complex numbers.
+
+2003-09-17  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.c (scm_bigequal): Fixed.
+
+2003-09-16  Marius Vollmer  <mvo@zagadka.de>
+
+       * stime.c (scm_current_time): 'time' does not set errno so don't
+       use SCM_SYSERROR for reporting errors.
+
+2003-09-16  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       This set of patches eliminates the dependency between the
+       implementation of evaluator specific memoization codes and special
+       constants like #f, '() etc. ('flags'), which are not evaluator
+       specific.  The goal is to remove definitions of evaluator
+       memoization codes completely from the public interface.  This will
+       make it possible to experiment more freely with optimizations of
+       guile's internal representation of memoized code.
+
+       * objects.c (scm_class_of): Eliminate dependency on SCM_ISYMNUM.
+
+       * print.c (iflagnames): New array, holding the printed names of
+       guile's special constants ('flags').
+
+       (scm_isymnames): Now holds only the printed names of the
+       memoization codes.
+
+       (scm_iprin1): Separate the handling of memoization codes and
+       guile's special constants.
+
+       * tags.h (scm_tc9_flag, SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA,
+       SCM_IFLAGNUM): new
+
+       (scm_tc8_char, scm_tc8_iloc, SCM_BOOL_F, SCM_BOOL_T,
+       SCM_UNDEFINED, SCM_EOF_VAL, SCM_EOL, SCM_UNSPECIFIED, SCM_UNBOUND,
+       SCM_ELISP_NIL, SCM_IM_DISPATCH, SCM_IM_SLOT_REF,
+       SCM_IM_SLOT_SET_X, SCM_IM_DELAY, SCM_IM_FUTURE,
+       SCM_IM_CALL_WITH_VALUES, SCM_IM_NIL_COND, SCM_IM_BIND): Changed
+       values.
+
+       (SCM_IFLAGP): SCM_IFLAGP now only tests for flags.
+
+       (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Generalized to use the
+       tc9 macros and scm_tc9_flag.
+
+2003-09-15  Marius Vollmer  <mvo@zagadka.de>
+
+       * posix.c (scm_setgroups): Check that the gid list is not too
+       long.  Thanks to Paul Jarc!
+
+2003-09-14  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * tags.h: Reduced the number of short instructions from 14 to 13.
+       The typecode of the former 14th short instruction is now used to
+       represent long instructions.  Changed some comments to reflect
+       this fact.
+
+       (SCM_MAKISYM): ISYMs get a new tc7 code, namely the one that was
+       previously used by SCM_IM_DEFINE.
+
+       (SCM_IM_DEFINE): Turned into a long instruction.
+
+       * eval.c (unmemocopy, SCM_CEVAL): Treat SCM_IM_DEFINE as a long
+       instruction.
+
+       * eval.c (SCM_CEVAL): Since characters and iflags have now a tc7
+       code that is separate from all instructions, one level of dispatch
+       for long instructions can be eliminated.
+
+       * print.c (scm_isymnames): Removed some commented code.
+
+2003-09-12  Marius Vollmer  <mvo@zagadka.de>
+
+       * __scm.h (SCM_FENCE): Use __memory_barrier with the Intel
+       compiler on IA64.
+
+       * hashtab.h (scm_tc16_hashtable): Added "extern" declaration.
+
+       * modules.c (scm_module_reverse_lookup): Check that the obarray
+       really is a hashtable and do nothing if not.
+
+       * inline.h: Use "extern inline" only with GCC.  Use "static
+       inline" else.
+
+2003-09-06  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.h (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Removed uses
+       of SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
+
+       * numbers.h, deprecated.h (SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP,
+       SCM_SLOPPY_COMPLEXP): Deprecated and moved from numbers.h to
+       deprecated.h.
+
+2003-09-06  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eq.c (scm_eqv_p, scm_equal_p): Removed uses of
+       SCM_SLOPPY_INEXACTP, SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
+
+       * eq.c (scm_eqv_p, scm_equal_p): Reordered comparisons from
+       0.0==some_expression to some_expression==0.0.  The latter is
+       better readable.  The former is preferred by some people, since it
+       leads to a compiler error when confusing == with =.  However, when
+       using gcc, a warning will be issued if in an if-statement an
+       assigment appears.  Since many Guile developers are using gcc,
+       such errors will not remain unnoticed anyway.  We can therefore
+       focus on better readability.
+
+2003-09-04  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * tags.h: Added description of Guile's type system.  Removed some
+       old and misleading comments.
+
+2003-09-04  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * unit.c (scm_cvref): Eliminate unnecessary uses of SCM_NIMP,
+       SCM_SLOPPY_REALP and SCM_SLOPPY_COMPLEXP.
+
+2003-09-04  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.h (SCM_MAKINUM): Define in terms of scm_tc2_int.
+
+       (SCM_INEXACTP, SCM_REALP, SCM_COMPLEXP): Define in terms of the
+       respective SLOPPY macro.
+
+2003-09-04  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eq.c (scm_equal_p): Use SCM_TYP7 to check if an object is of
+       type string, not SCM_TYP7S.
+
+2003-09-03  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_lognot): Correction to docstring, ones-complement not
+       2s-complement.
+
+       * stime.c (scm_strptime): Add comment about glibc strptime %s and
+       current timezone requiring SCM_DEFER_INTS.
+
+2003-08-30  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * script.c (scm_compile_shell_switches): Make -s switch optional
+       if file to be loaded does not begin with a `-'.  (Thanks to Aaron
+       VanDevender for the patch!)
+
+2003-08-30  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_lognot): Rewrite using ~ and mpz_com, for directness
+       and to have non-integer types rejected as per other logical funcs.
+       
+2003-08-28  Kevin Ryde  <user42@zip.com.au>
+
+       * gc.h (scm_remember_upto_here_1): Revise comments on the asm form.
+
+2003-08-23  Kevin Ryde  <user42@zip.com.au>
+
+       * simpos.c (scm_system): Remove SCM_DEFER_INTS, system() should be
+       thread safe, and could take a long time too.
+
+2003-08-22  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_difference): Correction to bignum - negative inum.
+
+2003-08-14  Kevin Ryde  <user42@zip.com.au>
+
+       * gc.h (scm_remember_upto_here_1, scm_remember_upto_here_2)
+       [__GNUC__]: Use volatile asm macros rather than a function call.
+       * gc.c (scm_remember_upto_here_1, scm_remember_upto_here_2): Undefine
+       macros while defining functions.
+
+       * simpos.c (getenv): Use <stdlib.h> for prototype.
+       (scm_system): In docstring, refer to status:exit-val rather than
+       "functions above".
+
+2003-08-09  Kevin Ryde  <user42@zip.com.au>
+
+       * srcprop.c (scm_source_properties): Return plist from hash if it's a
+       list set by source-properties! rather than an SRCPROPS object,
+
+2003-07-29  Kevin Ryde  <user42@zip.com.au>
+
+       * properties.c (scm_primitive_property_ref): In docstring, note
+       parameters to not-found-proc, use hyphens rather than underscores for
+       that parameter name.
+       (scm_primitive_property_set_x): In docstring, VAL is the value
+       parameter not CODE.
+       
+2003-07-27  Marius Vollmer  <mvo@zagadka.de>
+
+       * print.c (scm_print_symbol_name): handle more weird characters by
+       escaping the symbol name properly.  Thanks to Paul Jarc!
+
+       * posix.h (scm_setgroups): New prototype.
+       * posix.c (scm_setgroups): New.  Thanks to Paul Jarc!
+       (scm_getgroups): Handle groups ids that don't fit into a fixnum.
+       Don't use SCM_WRITABLE_VELTS.
+       
+       * gc.h (SCM_GC_SET_CELL_BVEC): New.
+       * gc-card.c (scm_i_init_card_freelist): Use it.  Thanks to
+       Matthias Koeppe!
+
+       * __scm.h (SCM_C_INLINE_KEYWORD): New.
+       * numbers.c: Use it in place of SCM_C_INLINE so that the code
+       compiles when SCM_C_INLINE is undefined.
+
+2003-07-24  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * __scm.h: Reformulated the architecture and compiler properties
+       in terms of properties of scm_t_bits and SCM variables rather than
+       in terms of c standard types.  This is since it is not known which
+       of the standard types scm_t_bits and SCM variables will be defined
+       to.
+
+2003-07-24  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_angle): Use scm_flo0 for non-negative inum, bignum
+       and real.
+
+2003-07-18  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_product): In complex * bignum, correction to
+       REAL/IMAG fetch, x is the complex, not y.
+
+2003-07-13  Mikael Djurfeldt  <djurfeldt@nada.kth.se>
+
+       * numbers.c (scm_odd_p, scm_even_p): Bugfix: Treat result of
+       scm_inf_p test as Scheme values.
+       (scm_sum): Bugfix: Normalize bignum created from a negative bignum
+       and a positive inum.
+       Use GNU indentation style.
+
+2003-07-12  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * values.c (scm_values): Build lists of length 1 by using
+       scm_list_1 instead of using scm_cons.
+
+2003-07-10  Kevin Ryde  <user42@zip.com.au>
+
+       * deprecation.c (scm_c_issue_deprecation_warning_fmt): Add va_end.
+       * list.c (scm_list_n): Ditto.
+
+       * gc-malloc.c (scm_gc_realloc): Define "ptr" at start of function.
+
+2003-07-08  Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>
+
+       * tags.h (scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
+       defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
+       scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
+       the other using intptr_t.
+
+2003-07-08  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_make_polar): Use sincos, when available.
+       (scm_magnitude): Use hypot.
+
+       * ports.c (scm_char_ready_p, scm_peek_char): In docstrings, don't use
+       @footnote since it doesn't go through to guile-procedures.txt.
+
+       * threads.c (scm_call_with_new_thread): In docstring, use "( )"
+       outside @var to quieten makeinfo, and use @code.
+
+2003-07-06  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * gc-malloc.c (decrease_mtrigger): new function
+       (increase_mtrigger): new function, separate debug registering and
+       mtrigger administration.
+       (scm_gc_realloc): bugfix: do mtrigger administration before the
+       actual realloc, for the realloc might invalidate a GC-d segment of
+       memory. Thanks to Sam Hocevar for pointing this out.
+       (scm_gc_realloc): use scm_malloc_reregister instead of
+       unregistering and registering in sequence.
+
+2003-07-03  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * __scm.h (SCM_ASSERT): change "else" expansion to "do { } while (0)" 
+
+2003-07-02  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * __scm.h (SCM_ASRTGO): add "else" to macro expansions with if
+       clauses.
+       
+2003-06-29  Marius Vollmer  <mvo@zagadka.de>
+
+       * deprecated.h (SCM_OPDIRP, scm_fport, scm_option, scm_srcprops,
+       scm_srcprops_chunk, scm_info_frame, scm_stack, scm_array,
+       scm_array_dim, SCM_ARRAY_CONTIGUOUS, SCM_FUNC_NAME, SCM_WTA,
+       RETURN_SCM_WTA, SCM_VALIDATE_NUMBER_COPY,
+       SCM_VALIDATE_NUMBER_DEF_COPY, SCM_VALIDATE_OPDIR): Re-added from
+       the release_1_6 branch.
+
+2003-06-25  Stefan Jahn  <stefan@lkcc.org>
+
+       * continuations.c: Redeclaration of getcontext() via the
+       __asm__ ("getcontext") directive.
+
+       * continuations.h: Include <ucontext.h> instead of 
+       <sys/ucontext.h>.
+
+2003-06-21  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (_GNU_SOURCE): #define, to get C99 things.
+       (scm_asinh, scm_acosh, scm_atanh, scm_truncate, $asinh, $acosh,
+       $atanh, truncate): Use C library asinh, acosh, atanh and trunc, when
+       available.
+       (scm_inexact_to_exact): Expand isfinite to its definition !xisinf.
+       (isfinite): Remove, conflicts with C99 isfinite().
+
+2003-06-19  Marius Vollmer  <mvo@zagadka.de>
+
+       * deprecated.h, deprecated.c (scm_strhash, scm_sym2ovcell_soft,
+       scm_sym2ovcell, scm_intern_obarray_soft, scm_intern_obarray,
+       scm_symbol_value0, scm_string_to_obarray_symbol scm_intern_symbol,
+       scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
+       scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp): Re-added from
+       the release_1_6 branch.
+
+2003-06-14  Stefan Jahn  <stefan@lkcc.org>
+
+       * threads.h: Redefined scm_getspecific() and scm_setspecific()
+       to be functions instead of macros.
+
+       * threads.c: Conditionalized inclusion of <sys/time.h> and
+       <unistd.h>.
+       (scm_getspecific, scm_setspecific): Made these two function
+       real part of the API.
+
+       * posix.c (s_scm_putenv): Added some code to make a 
+       (putenv "FOO="), i.e. setting an empty string, work also on
+       Win32 systems.  Thanks to Kevin Ryde for the proposal.
+
+2003-06-12  Kevin Ryde  <user42@zip.com.au>
+
+       * posix.c (scm_putenv): Free temporary ptr in mingw unset.  Add
+       freebsd to comment about need to use unsetenv.
+
+2003-06-02  Marius Vollmer  <mvo@zagadka.de>
+
+       * ports.c (scm_peek_char): Safe the column of the port around the
+       getc/ungetc calls.  Thanks to Dr. Peter Ivanyi!
+
+2003-06-07  Kevin Ryde  <user42@zip.com.au>
+
+       * tags.h: Use inttypes.h and stdint.h when available, for INTPTR_MAX
+       and friends required by scm_t_bits setups.
+
+2003-06-06  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * tags.h (scm_tc2_int): Added.
+
+       * tags.h (scm_tc3_int_1, scm_tc3_int_2): Expressed in terms of
+       scm_tc2_int.
+
+       * tags.h (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct,
+       scm_tcs_closures): Hard coded values replaced by symbolic ones.
+
+2003-06-05  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c: Partially undid my patch from 2003-05-31.  This patch
+       caused the segfault referenced in the previous changelog entry.
+
+2003-06-05  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * tags.h: Fixed comment about the immediate type code layout.
+
+       * eval.c: Fixed handling of non-special instructions.  Without
+       this patch, guile will segfault on (#\0) and similar instructions.
+
+2003-06-05  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_max, scm_min): For inum, bignum and real, if other
+       operand is NaN, then return NaN.  Also avoid passing NaN to mpz_cmp_d.
+
+       * read.c (scm_input_error): Pass arg list parameter to scm_error_scm,
+       rather than SCM_EOL.  Needed by "Unknown # object" case in scm_lreadr.
+       
+2003-06-04  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * __scm.h, gc-card.c (SCM_DEBUG_DEBUGGER_SUPPORT,
+       SCM_DEBUG_DEBUGGING_SUPPORT): Renamed macro
+       SCM_DEBUG_DEBUGGER_SUPPORT to SCM_DEBUG_DEBUGGING_SUPPORT and
+       generalized it to apply not only to C level functions but also to
+       scheme level functions.
+
+       * debug.c, debug.h, eval.c (make-iloc, scm_make_iloc, iloc?,
+       scm_iloc_p, dbg-make-iloc, scm_dbg_make_iloc, dbg-iloc?,
+       scm_dbg_iloc_p): Moved functions scm_make_iloc, scm_iloc_p to
+       eval.c, made them available under SCM_DEBUG_DEBUGGING_SUPPORT == 1
+       only and renamed them to scm_dbg_make_iloc, scm_dbg_iloc_p,
+       respectively.
+
+       * deprecated.h, eval.c, eval.h (SCM_ILOC00, SCM_IDINC,
+       SCM_IDSTMSK): Deprecated.  The macro definitions are moved from
+       eval.h into eval.c and a copy is placed into deprecated.h.
+
+       * eval.c, eval.h (SCM_MAKE_ILOC): Removed from eval.h and placed
+       into eval.c. This definition was not part of the API in any
+       officially released version of guile and thus does not need to go
+       through a phase of deprecation.
+
+2003-06-02  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * deprecated.c, deprecated.h, eval.c, eval.h (scm_s_expression,
+       scm_s_test, scm_s_body, scm_s_bindings, scm_s_variable,
+       scm_s_clauses, scm_s_formals): Deprecated.  In eval.c the
+       definitions are make static and renamed from scm_s_xxx to s_xxx.
+       In deprecated.c the original definitions are copied.
+
+       * deprecated.h, eval.c, eval (SCM_EVALIM2, SCM_EVALIM, SCM_XEVAL,
+       SCM_XEVALCAR): Deprecated.  The macro definitions are moved from
+       eval.h into eval.c and a copy (slightly modified to work in user
+       code) is placed into deprecated.h.
+
+       * eval.c: Use the local static s_xxx definitions instead of the
+       scm_s_xxx definitions throughout.
+
+2003-06-01  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       This set of patches separates the representation of the cxr family
+       of functions (car, cdr etc.) from the dsubr family of functions
+       (i. e. functions that take a double precision floating point
+       argument).  Further, the algorithm for handling the cxr function
+       is improved.
+
+       * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_1), numbers.c
+       (scm_asinh, scm_acosh, scm_atanh, scm_truncate, scm_round, floor,
+       ceil, sqrt, fabs, exp, log, sin, cos, tan, asin, acos, atan, sinh,
+       cosh, tanh), objects.c (scm_class_of), procprop.c
+       (scm_i_procedure_arity), ramap.c (scm_array_map_x), tags.h
+       (scm_tc7_dsubr, scm_tcs_subrs): Introduce scm_tc7_dsubr as new
+       typecode for the dsubr family of functions.
+
+       * ramap.c (ramap_cxr, ramap_dsubr): Renamed ramap_cxr to
+       ramap_dsubr.
+
+       * eval.c (SCM_CEVAL, SCM_APPLY, call_cxr_1), pairs.c
+       (scm_init_pairs): Make use of the (now usable) second cell element
+       of a scm_tc7_cxr function to implement the cxr family of functions
+       more efficiently.
+
+2003-05-31  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (SCM_CEVAL, SCM_APPLY, scm_trampoline_0,
+       scm_trampoline_1, scm_trampoline_2): Postpone error cases to the
+       end of an if-else-if-sequence of checks.
+
+2003-05-30  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (SCM_CEVAL): Improved readability of call-with-values
+       execution.  Generalize apply_closure to apply_proc and use that
+       for call-with-values.
+
+2003-05-30  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (SCM_CEVAL): Avoid one level of indirection when applying
+       a non closure.
+
+2003-05-30  Stefan Jahn  <stefan@lkcc.org>
+
+       * posix.c (s_scm_putenv): Use the new HAVE_UNSETENV 
+       appropriately for mingw32 hosts.
+
+       * numbers.h: Defining copysign(), isnan() and finite() to
+       be prefixed by a single '_' for mingw32 hosts.
+
+2003-05-30  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (z_negative_one): New variable.
+       (scm_init_numbers): Initialize it.
+       (scm_logcount): Use it and mpz_hamdist to count zeros for negatives.
+
+2003-05-29  Stefan Jahn  <stefan@lkcc.org>
+
+       * win32-dirent.c: Use malloc() instead of scm_malloc().
+
+       * stime.c (s_scm_strftime): Add a type cast to avoid compiler
+       warning.
+
+       * posix.c (s_scm_putenv): Disable use of unsetenv() for the
+       mingw32 build.
+
+       * modules.c (s_scm_module_import_interface): Renamed local
+       variable interface to _interface.  Seems like 'interface'
+       is a special compiler directive for the mingw32 compiler.
+
+       * mkstemp.c: Provide prototype to avoid compiler warning.
+
+       * load.c (s_scm_search_path): Fixed absolute and relative
+       path detections for native Windows platforms.
+
+       * gc.h, threads.h: Export some more symbols using SCM_API (necessary 
+       to build on mingw32).
+
+       * gc-freelist.c ("s_scm_map_free_list", 
+       "s_scm_gc_set_debug_check_freelist_x"): Fixed use of FUNC_NAME.
+
+       * fports.c (fport_fill_input): Disable use of 
+       fport_wait_for_input() on Win32 platforms.
+
+       * filesys.c (s_scm_basename): Fixed __MINGW32__ code.
+
+       * Makefile.am: Modified some rules for cross compiling.
+
+2003-05-25  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (SCM_CEVAL): In case of an application, all checks for a
+       proper function object and the correct number of arguments are now
+       performed in the application part of SCM_CEVAL.
+
+       (scm_badformalsp):  Removed.
+
+2003-05-25  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * deprecated.c (scm_read_and_eval_x):  Fixed C99-ism.
+
+2003-05-22  Mikael Djurfeldt  <djurfeldt@nada.kth.se>
+
+       * num2integral.i.c (NUM2INTEGRAL): Avoid warning about conditional
+       always being false by inserting preprocessor conditional.  (Thanks
+       to Bruce Korb.)
+
+       * __scm.h (SCM_STACK_PTR): New macro. (Cast argument through
+       (void *) in order to avoid an aliasing warning; thanks to Bruce
+       Korb.)
+
+       * stackchk.h (SCM_STACK_OVERFLOW_P): Use SCM_STACK_PTR.
+
+       * threads.c (suspend, launch_thread, scm_threads_mark_stacks): Use
+       SCM_STACK_PTR.
+
+       * threads.c (scm_threads_mark_stacks): Bugfix: Changed
+       thread->base --> t->base.
+
+       * eval.c (SCM_CEVAL): Don't cast argument of SCM_STACK_OVERFLOW_P.
+
+2003-05-20  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * deprecated.h, deprecated.c (scm_makstr, scm_makfromstr,
+       scm_variable_set_name_hint, scm_builtin_variable,
+       scm_internal_with_fluids, scm_make_gsubr,
+       scm_make_gsubr_with_generic, scm_create_hook, SCM_LIST0,
+       SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5, SCM_LIST6,
+       SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
+       scm_sloppy_memv, scm_sloppy_member, scm_read_and_eval_x,
+       scm_subr_entry, SCM_SUBR_DOC, scm_make_subr,
+       scm_make_subr_with_generic, scm_make_subr_opt,
+       scm_call_catching_errors, scm_make_smob_type_mfpe,
+       scm_set_smob_mfpe, scm_strprint_obj, scm_read_0str, scm_eval_0str,
+       SCM_CHARS, SCM_UCHARS, SCM_LENGTH): Re-added from the release_1_6
+       branch.  Some have been slightly rewritten.
+       (scm_i_object_chars, scm_i_object_length): New, to support
+       SCM_CHARS, SCM_UCHARS, and SCM_LENTH.
+       
+2003-05-19  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (scm_m_do, unmemocopy, SCM_CEVAL):  Reversed order of
+       names and inits in the memoized code of do.
+
+2003-05-19  Mikael Djurfeldt  <djurfeldt@nada.kth.se>
+
+       * c-tokenize.lex (yyget_lineno, yyget_in, yyget_out, yyget_leng,
+       yyget_text, yyset_lineno, yyset_in, yyset_out, yyget_debug,
+       yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
+       a compilation error if error-on-warning is enabled).
+
+2003-05-17  Marius Vollmer  <mvo@zagadka.de>
+
+       * c-tokenize.lex: Gobble up complete lines after a '#'.  This
+       removes preprocessor directives from the snarfage that might
+       otherwise confuse us.  These directives appear when compiling with
+       "-g3", for example.
+
+2003-05-16  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * ChangeLog: add my surname
+
+       * srcprop.c (scm_finish_srcprop): use
+       scm_gc_register_collectable_memory()
+       (scm_make_srcprops): idem.
+
+2003-05-14  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+
+       * gc-malloc.c (scm_gc_register_collectable_memory): avoid
+       wrap-around for scm_mtrigger
+       (scm_gc_register_collectable_memory): abort on overflowing
+       scm_mallocated().
+
+2003-05-13  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (xmpz_cmp_d): New macro, handling infs if gmp doesn't.
+       (scm_num_eq_p, scm_less_p, scm_max, scm_min): Use it.
+
+2003-05-12  Mikael Djurfeldt  <djurfeldt@nada.kth.se>
+
+       * backtrace.c (scm_display_error_message): Introduced fancy
+       printing with max level 7 and length 10.  (Purpose: avoid printing
+       gigantic objects in error messages.)
+
+       * print.c, print.h (scm_i_port_with_print_state): New function.
+
+       * print.c (scm_iprin1, scm_printer_apply,
+       scm_port_with_print_state): Use scm_i_port_with_print_state.
+       (scm_simple_format): Modified not to destroy print states.
+       (print_state_mutex): New mutex.
+       (scm_make_print_state, scm_free_print_state, scm_prin1):
+       Lock/unlock print_state_mutex.
+       
+       * deprecated.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK):
+       Use current names in definitions.
+
+2003-05-10  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_num_eq_p, scm_less_p): Don't pass NaN to mpz_cmp_d.
+
+       * numbers.c (scm_integer_length): On negative bignums, adjust
+       mpz_sizeinbase to account for it looking at absolute value where we
+       want ones-complement.
+
+       * numbers.c (scm_gcd): In bignum/inum, don't pass yy==0 to mpz_gcd_ui
+       since we're only using the ulong return value, and x might not fit.
+
+2003-05-06  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
+       read.  This will allow to make the definition in read.c static.
+
 2003-05-06  Dirk Herrmann  <D.Herrmann@tu-bs.de>
 
        * eval.c, eval.h, evalext.c, evalext.h (scm_m_undefine): Moved
        implementation). 
        (scm_gc_calloc): new function
 
-2002-08-04  Han-Wen  <hanwen@cs.uu.nl>
+2002-08-04  Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
        * ports.c (scm_new_port_table_entry): init port entry to 0
        completely.
 
        * modules.c (scm_sym2var):  Don't compare SCM values with ==.
 
-2002-07-21  Han-Wen  <hanwen@cs.uu.nl>
+2002-07-21  Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
        * goops.c (scm_compute_applicable_methods): use
        scm_remember_upto_here_1 iso scm_remember_upto_here
        * gc.h: undo previous undocumented changes related to #ifdef
        GENGC.
 
-2002-07-20  Han-Wen  <hanwen@cs.uu.nl>
+2002-07-20  Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
        * *.c: add space after commas everywhere.