* libguile/tags.h (SCM_IM_ELSE, SCM_IM_ARROW): New memoizer codes.
[bpt/guile.git] / libguile / ChangeLog
index 2a8cc3a..90dec9b 100644 (file)
@@ -1,3 +1,225 @@
+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
        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