(scm_cell): use SCM_GC_CELL_WORD for checking tag.
[bpt/guile.git] / libguile / ChangeLog
index 68fbd2a..5a3369a 100644 (file)
@@ -1,3 +1,274 @@
+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.
+
+>>>>>>> 1.2042
+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