This set of patches eliminates the dependency between the
[bpt/guile.git] / libguile / ChangeLog
index 59f1bf3..60f3bcd 100644 (file)
@@ -1,5 +1,512 @@
+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.)
        yyset_debug, yylex_destroy): Added prototypes (otherwise we'll get
        a compilation error if error-on-warning is enabled).
 
+>>>>>>> 1.1883
 2003-05-17  Marius Vollmer  <mvo@zagadka.de>
 
        * c-tokenize.lex: Gobble up complete lines after a '#'.  This