* readline.scm: moved to ./ice-9/
[bpt/guile.git] / libguile / ChangeLog
index 7491f45..0a01783 100644 (file)
@@ -1,3 +1,899 @@
+2004-06-15  Rob Browning  <rlb@defaultvalue.org>
+
+       * script.c (scm_shell_usage): minor phrasing change.
+
+       * gc_os_dep.c: update ifdefery for macosx.
+       (scm_get_stack_base): separate result initialization from
+       declaration to slience warnings with macosx and hp-ux using gcc
+       3.3.  Thanks to Andreas Vögele.
+
+2004-06-13  Han-Wen Nienhuys   <hanwen@xs4all.nl>
+
+       * eval.c (unmemoize_exprs): use SCM_CONSP for the loop condition.
+
+2004-06-06  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * list.[ch] (scm_i_finite_list_copy): New internal function to
+       copy lists that are known to be finite (though not necessarily
+       proper).
+
+       * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
+       a closure's argument list like an expression of a body.
+
+       * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
+       unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
+       unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
+       unmemoize_letrec, unmemoize_letstar, unmemoize_or,
+       unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
+       unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref, 
+       unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
+       unmemoize_builtin_macro): New static functions and symbols.
+
+       (scm_unmemocopy): Rewritten in terms of the above.  scm_unmemocopy
+       now has a slightly different meaning: The memoized form that is
+       receives as its argument is now interpreted as a sequence of
+       expressions from a body.
+
+       (unmemocar, scm_unmemocar): Since the whole functionality of
+       unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
+       has its old content back and is deprecated, while unmemocar has
+       been removed.
+
+       (SCM_BIT7): Removed.
+
+       (CEVAL): For unmemoizing a single expression, call
+       unmemoize_expression instead of scm_unmemocopy, which now expects
+       a sequence of body expressions.  Eliminated unnecessary empty
+       environment frame when executing let* forms.  Eliminated
+       unmemoization step from evaluator.
+
+2004-06-02  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * eval.c (scm_macroexp, macroexp): Renamed scm_macroexp to
+       macroexp and made static.  Added new version of scm_macroexp that
+       emits a deprecation warning and then calls macroexp.
+       (scm_m_undefine): Issue deprecation warning.
+       
+2004-05-30  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):
+       Modified to make set! work on symbols that represent syntactic
+       keywords.
+
+2004-05-26  Han-Wen Nienhuys   <hanwen@xs4all.nl>
+
+       * gc.h (SCM_CELL_OBJECT_LOC): use SCM_GC_CELL_OBJECT to prevent
+       compound expression as lvalue errors.
+
+2004-05-24  Marius Vollmer  <mvo@zagadka.de>
+
+       * dynwind.c (winder_mark): Use SCM_PACK to correctly convert the
+       WINDER_DATA to a SCM.
+
+2004-05-24  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * goops.c (compute_getters_n_setters, create_standard_classes,
+       scm_add_slot): Compute closures by calling scm_i_eval_x on a
+       lambda expression rather than creating them with scm_closure.
+
+2004-05-22  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * eval.c (s_macro_keyword, scm_m_set_x): Remove checking for
+       misplaced syntactic keywords.  This will not work unless guile's
+       defmacro feature is deprecated.
+
+       (scm_m_case): Fixed a bug that caused the list of labels to grow
+       with every case form.
+
+2004-05-19  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_round_number): For inum and big, just return x.  For
+       real, use scm_round for 2^54-1 etc problems covered there.
+
+       * numbers.c (trunc): Remove #define to scm_truncate when the C library
+       doesn't provide trunc.  This was for when `truncate' was done as a
+       scm_tc7_dsubr, no longer required.
+
+       * threads.c (scm_threads_mark_stacks) [SCM_STACK_GROWS_UP]: Correction
+       to stack marking call, two parameters and no cast on t->base.
+
+2004-05-18  Marius Vollmer  <mvo@zagadka.de>
+
+       * hashtab.c (rehash_after_gc): Bug fix: properly link the
+       processed hashtables back into the weak_hashtables list.  Thanks
+       to Bill Schottstaedt!
+
+2004-05-16  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * eval.c (unmemoize_quote): New static function.
+
+       (scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
+       representation of 'quote' and '@slot-ref' to an improper list.
+       This reduces execution time, the number of cells used to hold the
+       memoized code, and thus also reduces garbage collection time.
+
+       (scm_unmemocopy): Use unmemoize_quote for quote expressions.
+
+       (SCM_CEVAL): Changed macro handling to also work with macros that
+       return improper lists.  Added an assertion, that the code returned
+       by a macro transformer will not lead to cycles in the memoized
+       code.
+
+2004-05-15  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       No functional change, just rearrangements of functions within the
+       file.
+
+       * eval.c (scm_ilookup, scm_unbound_variable_key,
+       error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
+       the definitions used for execution, since that's where they will
+       belong to later.
+
+2004-05-15  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * numbers.h (SCM_SLOPPY_FRACTIONP): Removed.  It was not used
+       throughout guile, has not been part of an official release yet,
+       and the concept of sloppy predicates has never been a good idea.
+
+       (SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
+       SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
+       Simplified.
+
+2004-05-15  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * throw.c (SETJBJMPBUF, SCM_SETJBDFRAME): Add cast to scm_t_bits
+       to make explicit what happens.
+
+2004-05-15  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * dynl.c (SET_DYNL_HANDLE): Add cast to scm_t_bits to make
+       explicit what happens.
+
+       * guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
+       SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.
+
+2004-05-11  Marius Vollmer  <mvo@zagadka.de>
+
+       * scmsigs.c (scm_sigaction_for_thread): Validate that the handler
+       is indeed a procedure when it isn't a number.
+
+2004-05-10  Marius Vollmer  <mvo@zagadka.de>
+
+       Convert floating point numbers into strings with an arbitrary
+       radix.  Thanks to Richard Todd!
+       
+       * numbers.c (FLOBUFLEN): Increase so that radix 2 strings will
+       fit.
+       (fx): Removed.
+       (scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
+       number_chars): New, to support variable radices.
+       (idbl2str): Use above instead of the old base-10 only tables.
+       (iflo2str): Pass on new RADIX argument to idbl2str.
+       (scm_number_to_string): Pass radix to iflo2str.
+       (scm_print_real, scm_print_complex): Explicitly pass radix 10 to
+       iflo2str.
+       (scm_init_numbers): Call init_dblprec and init_fx_radix for all
+       possible radices.
+
+2004-05-10  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_logbit_p): Correction to test above the end of an
+       inum.  Reported by Jan Konecny.
+
+2004-05-06  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * gc.h (scm_t_cell): Fields are now of type SCM instead of
+       scm_t_bits.  Updated all users.
+       (SCM_GC_CARD_SIZE_MASK): Use SCM_GC_SIZEOF_CARD instead of
+       duplicating the code.
+       (SCM_CELL_OBJECT_LOC): New.
+       (SCM_CARLOC, SCM_CDRLOC): Use it instead of SCM_CELL_WORD_LOC.
+       (SCM_CELL_WORD_LOC): Moved to "deprecated.h".
+
+       * smob.h (SCM_SMOB_DATA_2, SCM_SMOB_DATA_3, SCM_SMOB_FLAGS,
+       SCM_SET_SMOB_DATA_2, SCM_SET_SMOB_DATA_3, SCM_SET_SMOB_FLAGS,
+       SCM_SMOB_OBJECT, SCM_SMOB_OBJECT_2, SCM_SMOB_OBJECT_3,
+       SCM_SET_SMOB_OBJECT, SCM_SET_SMOB_OBJECT_2, SCM_SET_SMOB_OBJECT_3,
+       SCM_SMOB_OBJECT_LOC, SCM_SMOB_OBJECT_2_LOC,
+       SCM_SMOB_OBJECT_3_LOC): New.
+       * smob.c (scm_i_set_smob_flags): New function.
+
+       * dynl.c, dynwind.c, eval.h, fluids.h, futures.h, hashtab.h,
+       hooks.h, keywords.h, macros.h, macros.c, mallocs.c, mallocs.h,
+       random.h, regex-posix.h, root.h, srcprop.h, srcprop.c, threads.h:
+       Use SCM_SMOB_* instead of SCM_CELL_* as appropriate.  Use
+       SCM_SMOB_FLAGS and SCM_SET_SMOB_FLAGS instead of accessing the
+       zeroth word directly.  Use SCM_SMOB_PREDICATE as appropriate.
+
+       * numbers.h (SCM_I_BIG_MPZ): Use SCM_CELL_OBJECT_LOC instead of
+       taking the address of SCM_CELL_WORD_1, the latter being no longer
+       an lvalue.
+
+       * variable.h (SCM_VARIABLE_LOC): Use SCM_CELL_OBJECT_LOC instead
+       of casting SCM_CELL_WORD_LOC.
+
+2004-05-02  Kevin Ryde  <user42@zip.com.au>
+
+       * eval.c (scm_macroexp): Add prototype, since it's not in eval.h under
+       --disable-deprecated.  Reported by Andreas Vögele.
+
+       * filesys.c (_POSIX_C_SOURCE): Define to 199506L to get readdir_r (in
+       particular on HP-UX).  Reported by Andreas Vögele.
+
+       * list.c (varargs.h): Remove, leave just stdarg.h which is all the
+       code has support for.  Fixes building with AIX cc, which is ansi but
+       doesn't define __STDC__.  Reported by Keith Crane.
+       (var_start): Remove macro, this variation no longer required.
+       (scm_list_n): Use va_start directly.
+
+2004-05-01  Kevin Ryde  <user42@zip.com.au>
+
+       * continuations.c (scm_dynthrow): Use >= instead of SCM_PTR_GE which
+       is now gone.  Reported by Andreas Vögele.
+
+2004-04-28  Kevin Ryde  <user42@zip.com.au>
+
+       * backtrace.c (display_frame_expr), numbers.c (XDIGIT2UINT,
+       mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
+       ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
+       subscript.  Reported by Andreas Vögele.
+       Also cast through unsigned char to avoid passing negatives to those
+       macros if input contains 8-bit values.
+
+       * num2integral.i.c (NUM2INTEGRAL): Under non-BIGMPZ_FITSP case,
+       corrections to range check for signed numbers.  Remove
+       scm_remember_upto_here_1(num) from these checks, since num is used
+       subsequently anyway.
+
+       * num2integral.i.c (NUM2INTEGRAL): Test BIGMPZ_FITSP with "!= 0" to
+       avoid warning from gcc 3.4.  Reported by Hyperdivision.
+       
+       * numbers.c (scm_bit_extract): Use min instead of MIN.
+       (MIN): Remove, this conflicts with similar macro defined by limits.h
+       on HP-UX.  Reported by Andreas Vögele.
+
+       * stime.c (_POSIX_C_SOURCE): Define to 199506L to get gmtime_r (in
+       particular on HP-UX).  Reported by Andreas Vögele.
+
+       * threads.c (scm_threads_mark_stacks): Correction sizet -> size_t.
+       Reported by Andreas Vögele.
+
+       * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 25*sizeof(long),
+       for the benefit of hpux11 where pthread_mutex_t is 88 bytes.  Reported
+       by Andreas Vögele.
+
+2004-04-22  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * eval.c (s_macro_keyword): New static identifier.
+
+       (scm_m_define): Change order to first create binding and
+       evaluating the expression afterwards.
+
+       (scm_m_set_x): Memoize complete set! expression.  Only leave
+       symbols if no binding exists at memoization time.  Throw error if
+       assigning to a syntactic keyword.
+
+       (lazy_memoize_variable): New function.
+
+       (CEVAL): When execution set!, perform lazy memoization if
+       unmemoized symbol is detected.
+
+       * modules.c (module_variable): Return variables with unbound
+       value.
+
+       * tags.h: Fix comment.
+
+2004-04-25  Kevin Ryde  <user42@zip.com.au>
+
+       * chars.c (scm_char_upcase, scm_char_downcase, scm_c_upcase,
+       scm_c_downcase): Use ctype.h toupper and tolower.  This will be useful
+       in 8-bit locales, and ensures consistency with char-upper-case? and
+       char-lower-case? which already use ctype.h.
+       (scm_c_upcase_table, scm_c_downcase_table, scm_lowers, scm_uppers):
+       Remove.
+       * chars.c, chars.h, init.c (scm_tables_prehistory): Remove.
+
+       * socket.c (VALIDATE_INET6): Correction to bignum_in_ipv6_range_p
+       call.  Reported by Hyperdivision.
+
+       * threads.c (scm_yield): Correction, actually call scm_thread_yield.
+       Reported by Hyperdivision.
+
+       * unif.c (s_scm_make_uve): Remove unused local variable.  Reported by
+       Hyperdivision.
+
+2004-04-22  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       Hide the implementation of ilocs and isyms in eval.c.
+
+       * deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
+       SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST,
+       SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST,
+       SCM_ICDRP): Deprecated and added to deprecated.h.  Moved from
+       eval.h to eval.c.
+
+       * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames,
+       SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames,
+       scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h
+       (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated
+       scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to
+       deprecated.[hc].  Moved scm_isymnames from print.c to eval.c and
+       renamed to isymnames.  Moved SCM_ISYMNUM from tags.h to eval.c and
+       renamed to ISYMNUM.
+
+       * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h
+       (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1):
+       Extracted printing of ilocs and isyms to guile internal functions
+       scm_i_print_iloc, scm_i_print_isym of eval.c.
+
+2004-04-22  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_bit_extract): Use SCM_SRS for signed right shift.
+
+       * numbers.c (scm_round): Test for x already an integer, to avoid bad
+       rounding in x+0.5 when x is a big value already an integer.  In
+       certain hardware rounding cases x+0.5 can give an adjacent integer,
+       leading to that as the result, when we really just wanted x itself.
+       
+2004-04-19  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * eval.c (scm_unmemocopy): Fixed unmemoization of let*.
+
+       (deval_args, CEVAL): Minor improvements: Reduced variable scopes,
+       added const qualifiers, cast intentionally unused expressions to
+       void for emphasis, improved comment.
+
+2004-04-18  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * tags.h (scm_tags, scm_tc8_tags, scm_tc9_flag, scm_tc8_flag,
+       scm_tc8_isym): Renamed scm_tags to scm_tc8_tags.  Renamed
+       scm_tc9_flag to scm_tc8_flag.  Introduced new identifier
+       scm_tc8_isym.  Defined tc8-tags relative to scm_tc3_imm24.
+       Defined the tc8-tag for flags to be 0x04, which will mean that
+       SCM_BOOL_F will also have the value 0x04 instead of 0x013c.  Due
+       to the reduced number of bits and the simpler bit pattern for
+       SCM_BOOL_F, certain machines may be able to use more efficient
+       processor instructions to deal with SCM_BOOL_F.
+
+       (SCM_ITAG9, SCM_MAKE_ITAG9, SCM_ITAG9_DATA): Removed.  These have
+       never been defined in a released version, thus no need to
+       deprecate them.
+
+       (SCM_IFLAGP, SCM_MAKIFLAG, SCM_IFLAGNUM): Flags now use tc8
+       instead of tc9 tags.
+
+       (SCM_ISYMP, SCM_MAKISYM, SCM_ISYMNUM): Isyms now use tc8 instead
+       of tc9 tags.
+
+       (SCM_MAKSPCSYM): Removed.  It is almost impossible that user code
+       could have used this definition.
+
+       (SCM_IM_AND, SCM_IM_BEGIN, SCM_IM_CASE, SCM_IM_COND, SCM_IM_DO,
+       SCM_IM_IF, SCM_IM_LAMBDA, SCM_IM_LET, SCM_IM_LETSTAR,
+       SCM_IM_LETREC, SCM_IM_OR, SCM_IM_QUOTE, SCM_IM_SET_X): Now encoded
+       as isyms, as special isyms don't exist any more.
+
+2004-04-18  Kevin Ryde  <user42@zip.com.au>
+
+       * filesys.c (scm_readdir): Use readdir_r when available, for thread
+       safety.
+
+       * numbers.c (scm_max, scm_min): For big/real, use SCM_SWAP rather than
+       explicit swapping code.
+
+2004-04-15  Kevin Ryde  <user42@zip.com.au>
+
+       * cpp_sig_symbols.in: Add SIGSYS.
+       
+       * list.c (scm_append_x): Use iterative style, to avoid non-tail
+       recursion.
+
+       * numbers.c (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
+       frac/big and frac/frac, use scm_less_p for exact comparison.
+
+       * numbers.c (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code
+       with big/inum.
+
+       * numbers.c (xisinf): Add a comment about solaris 7 lacking isinf.
+
+2004-04-06  Han-Wen Nienhuys   <hanwen@xs4all.nl>
+
+       * inline.h (scm_cell): use SCM_GC_CELL_WORD for checking tag.
+
+       * chars.h (scm_init_chars): change scm_{upcase,downcase} to
+       scm_c_{up,down}case. 
+       (SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
+       when hi-bit ASCII is subjected to SCM_MAKE_CHAR().  
+
+2004-04-06  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_ash): Remove stray "}" in docstring.
+
+       * numbers.c (scm_make_ratio): For inum/bignum integer detection, use
+       x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
+       calling mpz_cmp_ui in most cases.
+
+       * numbers.c (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
+       for big == abs(most-negative-fixnum) special case.
+       (abs_most_negative_fixnum): Remove, no longer used.
+
+       * scmsigs.c (scm_sigaction_for_thread): Correction to signum range
+       test, avoids SCM_VECTOR_REF outside bounds of signal_handlers on
+       calling (sigaction NSIG).
+
+       * simpos.c (scm_system_star): Fix execargv memory leak, merge parent
+       and fork error cases to do this.
+
+2004-04-03  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * eval.c (CEVAL): Don't distinguish between short and long
+       instructions when dispatching - just always dispatch on the
+       instruction code, which is common for short and long instructions.
+       Further, removed unnecessary goto statements and added comment.
+
+2004-04-03  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * eval.c (scm_unmemocopy): Don't distinguish between short and
+       long instructions when dispatching - just always dispatch on the
+       instruction code, which is common for short and long instructions.
+       Further, removed unnecessary goto statements, fixed indentation
+       and replaced SCM_IMP predicates by SCM_NULLP.
+
+2004-04-03  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead of
+       comparison with SCM_ILOC00.  In CEVAL, eliminate goto-label
+       'checkmacro'.
+
+2004-03-31  Kevin Ryde  <user42@zip.com.au>
+
+       * simpos.c: Include <signal.h> for SIG_IGN and friends.
+
+2004-03-29  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       Introduce scm_debug_mode_p as a replacement for scm_debug_mode and
+       SCM_DEBUGGINGP:
+
+       * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP),
+       eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and
+       SCM_DEBUGGINGP.  Provided scm_debug_mode_p instead, to have one
+       single interface that also matches the naming conventions.
+       Probably scm_debug_mode_p should be part of the private interface
+       anyway.
+
+       * debug.h (scm_debug_mode_p), backtrace.c (display_error_body),
+       eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1,
+       scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP
+       to scm_debug_mode_p.
+
+
+       Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr:
+
+       * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h
+       (scm_ceval_ptr): Deprecated.  Moved declaration of scm_ceval_ptr
+       from debug.h to eval.h.
+
+       * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any
+       more, just leave it with setting scm_debug_mode_p, which is
+       equivalent for practical purposes.
+
+       * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x
+       instead of *scm_ceval_ptr.  Leave all evaluating to scm_i_eval_x.
+
+       * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval.
+
+       * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval
+       static and renamed it to ceval throughout.  Provide a new exported
+       but deprecated function scm_ceval as a wrapper for backwards
+       compatibility.  The same is done for the deval/scm_deval pair of
+       functions.
+
+       * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL
+       throughout.  Defined CEVAL to ceval or deval, based on compilation
+       phase.
+
+       * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p
+       to ceval and deval instead of calling *scm_ceval_ptr.
+
+       * eval.c (dispatching_eval): New deprecated static function.
+
+       * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order
+       to emulate its old behaviour as closely as possible.
+
+
+       Change the evaluator such that only expressions for which pair? is
+       true are passed to CEVAL, and such that all other expressions are
+       evaluated outside of CEVAL:
+
+       * eval.c (EVAL): New, provided in analogy to EVALCAR.  Evaluate an
+       expression that is assumed to be memoized already.  All but
+       expressions of the form '(<form> <form> ...)' are evaluated inline
+       without calling an evaluator.
+
+       * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but
+       expressions of the form '(<form> <form> ...)' inline without
+       calling an evaluator.
+
+       * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle
+       the special case of unmemoized symbols passed on the top level.
+
+       * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it
+       is known that the expression passed to CEVAL is of the form
+       '(<form> <form> ...)'.  Remove handling of the tc7-objects, since
+       now it is known that the input expression of CEVAL is a pair.
+
+2004-03-29  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * eval.c (is_self_quoting_p): New static function.
+
+       (scm_m_quote): Use is_self_quoting_p.
+
+       (copy_tree): Corrected typo in comment.
+
+2004-03-28  Han-Wen Nienhuys   <hanwen@xs4all.nl>
+
+       * eval.c (s_scm_copy_tree): idem.
+
+       * list.c (s_scm_filter): remove "pointer" from doc string.
+
+       * gc.h (SCM_GC_CELL_TYPE): SCM_GC_CELL_TYPE uses SCM_GC_CELL_OBJECT.
+
+       * goops.h (SCM_NUMBER_OF_SLOTS): don't SCM_UNPACK the result.
+
+       * backtrace.c ("display_backtrace_body"): SCM_PACK before SCM_EQ_P
+       (display_frame): idem.
+       (display_backtrace_file_and_line): idem.
+
+       * tags.h (SCM_UNPACK): stricter typechecking on SCM_UNPACK
+       arguments.
+
+2004-03-26  Kevin Ryde  <user42@zip.com.au>
+
+       * filesys.c (scm_getcwd, scm_readlink): Avoid memory leak on errors.
+
+       * numbers.c (scm_modulo): For inum/big and big/big, remove test of
+       big==0 since that never occurs.
+
+       * numbers.c, numbers.h (scm_modulo_expt): Renamed from
+       scm_modular_expt, matching scheme level name `modulo-expt'.
+
+       * numbers.c (scm_modular_expt): Return a negative remainder for a
+       negative divisor, the same as `modulo' does.
+
+2004-03-26  Eric Hanchrow <offby1@blarg.net>
+
+       * numbers.c, numbers.h (scm_modular_expt): New function.
+
+2004-03-25  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_min, scm_max): Correction to big/real and real/big,
+       return inexact as required by r5rs.
+
+2004-03-24  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * eval.c: Separated some definitions relevant for execution from
+       the memoization part of the file.
+
+       (copy_tree): New static function
+
+       (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic
+       structures are detected now and will lead to an exception instead
+       of forcing guile to run in an endless loop, using up all the
+       system's memory.  Second, arrays in the cdr of an improper list
+       are now copied.  See the new test cases in eval.test.
+
+2004-03-24  Dirk Herrmann  <dirk@dirk-herrmanns-seiten.de>
+
+       * posix.c (scm_gethostname): Make sure len is initialised before
+       it is used.  Restructured to (hopefully) represent possible
+       configurations more clearly in the code.  Added unwind handler.
+
+2004-03-23  Kevin Ryde  <user42@zip.com.au>
+
+       * posix.c (scm_gethostname): Use sysconf(_SC_HOST_NAME_MAX) and/or
+       MAXHOSTNAMELEN when available.
+
+2004-03-21  Marius Vollmer  <mvo@zagadka.de>
+
+       * read.c (skip_scsh_block_comment): Also recognize '\r' as a line
+       terminator.  Rewritten the logic as a state machine, I must have
+       been doing too much VHDL lately...
+
+       * eval.c (scm_ceval, scm_deval): Explicitely evaluate ports to
+       themselves.  Thanks to Han-Wen Nienhuys!
+
+       * list.c: Changed docstrings so that they no longer talk about
+       returning 'pointers' to something.
+
+2004-03-20  Han-Wen Nienhuys   <hanwen@xs4all.nl>
+
+       * gc.c: remove set_debug_cell_accesses! when
+       SCM_DEBUG_CELL_ACCESSES is not defined. Scheme source code should
+       use (if (defined? 'set-debug-cell-accesses!) .. ) to switch on
+       debugging conditionally.
+2004-03-21  Kevin Ryde  <user42@zip.com.au>
+
+       * stime.c (scm_gmtime): Use gmtime_r when available, for thread safety.
+
+2004-03-20  Kevin Ryde  <user42@zip.com.au>
+
+       * posix.c (scm_gethostname): Preserve errno across free() call.
+
+2004-03-18  Han-Wen Nienhuys   <hanwen@xs4all.nl>
+
+       * gc-card.c (sweep_card): use SCM_GC_SET_CELL_WORD for setting
+       free cells.
+
+2004-03-14  Kevin Ryde  <user42@zip.com.au>
+
+       * stime.c: Define _GNU_SOURCE for strptime prototype from glibc.
+       (strptime): Use HAVE_DECL_STRPTIME for when to give own prototype.
+
+2004-03-07  Kevin Ryde  <user42@zip.com.au>
+
+       * stime.c (scm_gmtime): Return bd_time->tm_zone when available, rather
+       than "GMT" always.
+       (filltime): Make zname parameter "const".
+
+2004-03-03  Mikael Djurfeldt  <mdj@chunk.mit.edu>
+
+       * threads.c, threads.h (scm_c_scm2thread): New function.
+
+2004-02-29  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (guile_ieee_init): Use C99 INFINITY and NAN when
+       available.  Test HAVE_DINFINITY and HAVE_DQNAN for those globals, in
+       particular don't assume "defined (__alpha__) && ! defined (linux)"
+       means OSF.  Remove "SCO" code, which was not really SCO specific and
+       which John W. Eaton advises should be long past being needed.
+
+       * posix.c (scm_execl, scm_execlp, scm_execle): Avoid memory leak under
+       error throw.
+
+2004-02-24  Kevin Ryde  <user42@zip.com.au>
+
+       * posix.c (scm_cuserid): Use a private result buffer, for thread safe.
+
+2004-02-22  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_max, scm_min): For one arg, dispatch to generic for
+       complex, same as for two args.  (Handle only inum, big, real, frac).
+
+2004-02-21  Kevin Ryde  <user42@zip.com.au>
+
+       * posix.c (scm_crypt): Use new HAVE_CRYPT.
+       (<crypt.h>): Remove HAVE_LIBCRYPT condition.
+       Reported by Andreas Voegele.
+
+2004-02-20  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
+       validation.
+
+       * read.c (scm_lreadparen): Removed.
+       (scm_lreadparen1): Renamed scm_i_lreadparen.
+
+2004-02-20  Han-Wen Nienhuys   <hanwen@xs4all.nl>
+
+       * list.c (scm_list_n): validate non-immediate arguments;
+       this will catch forgotten a SCM_UNDEFINED.
+
+2004-02-18  Marius Vollmer  <mvo@zagadka.de>
+
+       * gc.h (scm_gc_cells_collected): Removed duplicated declaration.
+       Thanks to Bill Schottstaedt!
+       
+       * socket.h (scm_gethost): Removed prototype it is already in
+       "net_db.h".  Thanks to Bill Schottstaedt!
+       
+2004-02-18  Kevin Ryde  <user42@zip.com.au>
+
+       * num2integral.i.c (INTEGRAL2BIG): WORDS_BIGENDIAN not right for word
+       order parameter to mpz_import, in fact with just one word there's no
+       order to worry about at all.
+
+       * numbers.c (scm_num_eq_p): For real==frac, complex==frac, frac==real
+       and frac==complex, make an exact comparison rather than converting
+       with fraction2double.
+
+       * posix.c, putenv.c, stime.c (environ): Use _NSGetEnviron in Darwin
+       shared library, since environ is not directly available there.
+
+       * script.c (scm_shell_usage): Print to stdout for --help, per GNU
+       standard.
+
+       * stime.c (scm_localtime, scm_gmtime, scm_mktime): Provide a default
+       errno EINVAL in case localtime and gmtime don't set it.
+       (scm_mktime, scm_strptime): Forcibly use errno EINVAL for our
+       SCM_SYSERROR, since mktime and strptime generally don't set errno.
+
+2004-02-16  Kevin Ryde  <kevin@swox.se>
+
+       * gc-malloc.c (scm_done_malloc, scm_done_free): Allow negative sizes,
+       which were permitted in the past for these.
+
+       * num2float.i.c (NUM2FLOAT): Expand isfinite to !xisinf, as per
+       previous change to numbers.c.
+
+       * script.c (scm_shell_usage): Print bug-guile email address, as per
+       GNU standard.  Reported by Han-Wen Nienhuys.
+
+2004-02-13  Mikael Djurfeldt  <djurfeldt@nada.kth.se>
+
+       * unif.c (scm_make_uve): Removed local variable and simplified
+       code in order to avoid compiler used uninitialized warnings.
+
+       * hashtab.c, hashtab.h (scm_hash_map_to_list): Renamed from
+       scm_hash_map.
+       (scm_hash_fold): Use scm_call_3 directly in the call to
+       scm_internal_hash_fold instead of going via fold_proc (which is
+       now removed).
+       (scm_hash_for_each): Use a trampoline +
+       scm_internal_hash_for_each_handle.
+       (scm_internal_hash_for_each_handle, scm_hash_for_each_handle): New
+       functions.
+
+2004-02-12  Kevin Ryde  <user42@zip.com.au>
+
+       * ports.c (scm_port_line): In docstring, note first line is 0.
+       (scm_set_port_line_x): In docstring, note first line is 0.
+       (scm_port_column): In docstring, there's no default to current input
+       port, and remove shared port-line @defun.
+       (scm_set_port_column_x): In docstring, there's no default to current
+       input port, note first column is 0, remove shared set-port-line!
+       @defun.
+
+       * ramap.c (scm_array_fill_x): For fvect and dvect, use scm_num2dbl to
+       convert args the same way that array-set! does.
+
+       * unif.c (scm_make_uve, scm_array_p): Allow fraction 1/3 as prototype
+       for dvect.
+       (scm_array_p): Add missing "break"s in switch, fix llvect test look
+       for "l" not "s", fix dvect to be false for singp(prot) since such a
+       value is for fvect.
+       (scm_array_prototype): Return 1/3 for dvect, rather than 0.33..33.
+       (exactly_one_third): New variable.
+       (scm_init_unif): Initialize it.
+
+2004-02-10  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * read.c (scm_read_opts): Change `escaped-parens' to
+       `elisp-strings'.
+
+2004-02-08  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * read.c (scm_read_opts): New opts `elisp-vectors' and
+       `escaped-parens'.
+       (s_vector): New.
+       (scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen.  Make
+       handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
+       `elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
+       Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
+       `escaped-parens' option set.
+       (scm_read_token): If elisp vector syntax active, disallow [ and ]
+       in tokens.
+       (scm_lreadparen): Rewrite as interface to scm_lreadparen1.
+       (scm_lreadparen1): New.
+
+       * read.h: Remove conditionally compiled last arg to
+       scm_lreadparen.
+       (SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
+       
+2004-01-23  Han-Wen Nienhuys   <hanwen@xs4all.nl>
+
+       * eval.c (m_expand_body): remove stray variable new_body.
+
+2004-01-22  Marius Vollmer  <mvo@zagadka.de>
+
+       * eval.c (m_expand_body): Rewrite the expression in place (by
+       overwriting FORMS) also when a letrec is constructed, not only
+       when no definitions are found.  Do not return rewritten expression
+       to emphasize the in-place rewriting.  Changed all users.
+
+2004-01-19  Han-Wen Nienhuys   <hanwen@xs4all.nl>
+
+       * gc.c: add protected_object_count, a number that is dumped from
+       gc_stats()
+
+2004-01-11  Marius Vollmer  <mvo@zagadka.de>
+
+       * dynwind.h, dynwind.c (scm_frame_unwind,
+       scm_frame_unwind_handler): Renamed and changed all uses.
+       (scm_frame_rewind, scm_frame_rewind_handler): Likewise.
+       
+2004-01-11  Kevin Ryde  <user42@zip.com.au>
+
+       * unif.c (scm_bit_count, scm_bit_position, s_scm_bit_set_star_x,
+       s_scm_bit_count_star, s_scm_bit_invert_x): Clarify docstrings, as per
+       changes made to scheme-compound.texi.
+
+2004-01-10  Marius Vollmer  <mvo@zagadka.de>
+
+       * print.c (scm_print_symbol_name): Handle #{`foo}#, #{,foo}#,
+       #{.}#, and all numeric strings specially.  Thanks to Paul Jarc!
+
+       * guile-snarf.in: Use mkdir to create a unique temporary directory
+       that we can safely use.  Thanks to Stefan Nordhausen!
+
+2004-01-07  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit'
+       argument since it is always zero now.  Changed all callers.
+       Removed code for handling fluids.
+
+       * fluids.c (scm_c_with_fluids): Use frames instead of adding to
+       the wind chain explicitely.  Use scm_c_with_fluid for the common
+       case of only one fluid.
+       (scm_with_fluid): New.
+       (scm_c_with_fluid): Use frames instead of scm_c_with_fluids.
+       
+       * fluids.h, fluids.c (scm_frame_fluid): New.
+       (scm_with_fluid): New.
+       (scm_i_swap_fluids, scm_i_swap_fluids_reverse): Removed.
+
+       * dynwind.c (scm_frame_end): Do not use scm_i_dowinds.  Instead,
+       do the unwinding directly.  It is simple enough.
+       
+       * dynwind.h, dynwind.c: Did the following renamings:
+       scm_begin_frame -> scm_frame_begin,
+       scm_end_frame -> scm_frame_end,
+       scm_on_unwind -> scm_frame_unwind,
+       scm_on_rewind -> scm_frame_rewind,
+       scm_on_unwind_with_scm -> scm_frame_unwind_with_scm,
+       scm_on_rewind_with_scm -> scm_frame_rewind_with_scm.
+       Changed all uses.
+
+       * aync.h, async.c: Did the follwing renamings:
+       scm_with_blocked_asyncs -> scm_frame_block_asyncs,
+       scm_with_unblocked_asyncs -> scm_frame_unblock_asyncs.
+       Changed all uses.
+       
+       * ports.h, ports.c: Did the follwing renamings:
+       scm_with_current_input_port -> scm_frame_current_input_port,
+       scm_with_current_output_port -> scm_frame_current_output_port,
+       scm_with_current_error_port -> scm_frame_current_error_port.
+       Changed all uses.
+
+2004-01-07  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (s_bignum): Remove, not used since gmp bignums.
+       Reported by Richard Todd.
+
+       * threads-plugin.h (SCM_MUTEX_MAXSIZE): Increase to 12*sizeof(long),
+       for the benefit of powerpc-apple-darwin5.5.  Reported by Richard Todd.
+
+       * unif.c (scm_aind): Test SCM_CONSP rather than !SCM_NULLP while
+       traversing the args list, fixes segv if an improper list is given.
+       Reported by Rouben Rostamian.
+
+2004-01-06  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
+
+       * ports.c (swap_ports, scm_with_current_foo_port): Do not allocate
+       swap_data on stack, use a 'malloc obj'.
+
+       * fluids.h, fluids.c (scm_make_initial_fluids, scm_copy_fluids,
+       scm_swap_fluids, scm_swap_fluids_reverse): Renamed to
+       scm_i_... since they are internal.  Changed all uses.
+
+       * dynwind.c (frame_print): Removed, use the default printer.
+       (WINDER_F_MARK, WINDER_MARK_P, winder_mark): New.
+       (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New. Use above
+       to protect SCM values.
+       
+       * dynwind.h (SCM_F_WIND_EXPLICITELY,
+       SCM_F_WIND_EXPLICITLY): It's "explicitly" not "explicitely", damn.
+       Changed all uses.
+       (scm_on_unwind_with_scm, scm_on_rewind_with_scm): New.
+       
+2004-01-05  Marius Vollmer  <mvo@zagadka.de>
+
+       * ports.h, ports.c (scm_with_current_input_port,
+       scm_with_current_output_port, scm_with_current_error_port): New.
+
+       * async.h, async.c (scm_with_blocked_asyncs,
+       scm_with_unblocked_asyncs): New.
+
 2004-01-03  Marius Vollmer  <mvo@zagadka.de>
 
        * dynwind.h, scm_dynwind.c (scm_t_frame_flags, scm_t_wind_flags,
        * numbers.c (scm_less_p): Don't convert frac to float for compares,
        can give bad results due to rounding.
        
+       * stime.c (scm_current_time, scm_gettimeofday): Add a comment about
+       setzone/restorezone protection for DOS.
+
 2003-12-26  Marius Vollmer  <mvo@zagadka.de>
 
        * gen-scmconfig.h.in, gen-scmconfig.c: Arrange for scm_t_intmax