Changes from arch/CVS synchronization
[bpt/guile.git] / libguile / ChangeLog
index 9def3cd..9fd4d62 100644 (file)
@@ -1,3 +1,364 @@
+2007-04-17  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * numbers.c: Commented out trailing `HAVE_COMPLEX_DOUBLE' after
+       `#endif'.  Use `#ifndef HAVE_XXX' rather than `#if !HAVE_XXX'.
+
+2007-04-09  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * numbers.c (carg): provide carg, cexp, clog in case they are
+       missing.
+
+2007-03-12  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * i18n.c (scm_nl_langinfo): `#ifdef'd uses of `GROUPING',
+       `FRAC_DIGITS', etc., which are GNU extensions.  Reported by
+       Steven Wu.
+
+2007-03-08  Kevin Ryde  <user42@zip.com.au>
+
+       * struct.c, struct.h (scm_make_vtable): New function, providing
+       `make-vtable'.
+       * stacks.c (scm_init_stacks): Use it.
+
+2007-03-06  Kevin Ryde  <user42@zip.com.au>
+
+       * struct.c (scm_make_struct): Check for R,W,O at end of layout when
+       allocating a tail array.  If there's no such then those tail fields
+       are uninitialized and garbage SCMs there can cause a segv if printed
+       (after fetching with struct-ref).
+
+2007-02-22  Kevin Ryde  <user42@zip.com.au>
+
+       * scmsigs.c (scm_sleep): In docstring, cross refence usleep.
+       (scm_usleep): Update docstring per manual, cross reference sleep.
+
+       * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that
+       scm_struct_init is not within that section.  scm_struct_init can
+       thrown an error, which within a critical section results in an
+       abort().
+
+2007-02-19  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
+       is included in the distribution.
+       (noinst_HEADERS): And the same for eval.i.c.
+
+2007-01-31  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * i18n.c: Include "libguile/threads.h" and "libguile/posix.h"
+       unconditionally.  Include <langinfo.h> and <nl_types.h> when
+       available.
+       (SCM_I18N_STRINGIFY, SCM_LOCALE_CATEGORY_MASK,
+       SCM_LIST_OR_INTEGER_P): New macros.
+       (LC_*_MASK): When `USE_GNU_LOCALE_API' is undefined, define them
+       as powers of two instead of `(1 << LC_*)'.
+       (scm_i_locale_free): New function/macro.
+       (scm_global_locale): New global variable.
+       (smob_locale_free): Use `scm_i_locale_free ()'.
+       (smob_locale_mark): Check whether the SMOB is `%global-locale'.
+       (get_current_locale_settings): Return `EINVAL' instead of `errno'
+       when `setlocale' fails.
+       (restore_locale_settings): Likewise.
+       (install_locale_categories): Likewise.
+       (install_locale): Likewise.  Stop the locale stack traversal when
+       all categories have been handled.
+       (get_current_locale, category_to_category_mask,
+       category_list_to_category_mask): New function.
+       (scm_make_locale): Use them.  Accept both lists of `LC_*' values
+       and single `LC_*' values as the first argument.  Handle the case
+       where BASE_LOCALE is `%global-locale'.  When `USE_GNU_LOCALE_API',
+       duplicate C_BASE_LOCALE before using it.
+       (scm_nl_langinfo, define_langinfo_items): New functions.
+       (scm_init_i18n): When `HAVE_NL_LANGINFO', add feature
+       `nl-langinfo' and invoke `define_langinfo_items ()'.
+       * i18n.h (scm_global_locale, scm_nl_langinfo): New declarations.
+       * posix.c: Include <xlocale.h> when available.
+       (scm_i_locale_mutex): Always define it.  Statically initialized.
+       (scm_set_locale): Invoke `scm_i_to_lc_category ()' before
+       acquiring the locale mutex.
+       (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
+
+2007-01-27  Kevin Ryde  <user42@zip.com.au>
+
+       * ports.c (scm_port_line, scm_set_port_line_x), read.c
+       (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to
+       port line number type, should be "long" not "int", as per line_number
+       field of scm_t_port.  (Makes a difference only on 64-bit systems, and
+       only then for a linenum above 2Gig.)
+
+2007-01-25  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * vector.c: remove comment as per kryde's request.
+
+2007-01-25  Kevin Ryde  <user42@zip.com.au>
+
+       * sort.c (scm_stable_sort): Return empty list for input empty list, as
+       done in guile 1.6 and as always done by plain `sort'.  Was falling
+       through to SCM_WRONG_TYPE_ARG.  Reported by Ales Hvezda.
+
+2007-01-22  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * vectors.c (s_scm_vector_move_right_x): complain about naming.
+
+       * srcprop.c: regularize comments.
+
+       * eval.c: remove superfluous ifndef DEVAL.
+
+       * private-options.h: idem.
+
+       * eval.i.c: copyright nitpicking.
+
+       * eval.c: distangle. move duplicate code to eval.i.c and include
+       twice.
+
+       * eval.i.c: new file.
+
+       * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
+       eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
+       read.h, stacks.c, symbols.c, throw.c: use private-options.h
+
+       * private-options.h: new file: contain hardcoded option
+       definitions.
+
+       * private-gc.h: add FSF header.
+
+2007-01-19  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * debug.h (SCM_RESET_DEBUG_MODE): switch to debugging if
+       memoize-symbol is set.
+
+       * eval.h (SCM_MEMOIZE_HDLR): add macros for memoize symbol trap.
+
+       * eval.c (CEVAL): add memoize_symbol trap.
+
+       * options.c (scm_options_try): new function. This allows error
+       reporting before changing options in a critical section.
+
+       * srcprop.c: use double cell for storing source-properties.  Put
+       filename in the plist, and share between srcprops if possible.
+       Remove specialized storage.
+
+       * srcprop.h: remove macros without SCM_ prefix from
+       interface. Remove specialized storage/type definitions.
+
+       * read.c: idem.
+
+       * print.c: idem.
+
+       * eval.c: terminate option lists with 0.
+
+       * options.c: remove n (for length) from scm_option_X
+       functions. Detect option list length by looking for NULL name.
+
+2007-01-19  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * struct.c (scm_i_struct_equalp): Skip comparison if both FIELD1
+       is equal to S1 and FIELD2 is equal to S2.  This avoids infinite
+       recursion when comparing `s' fields, as the REQUIRED_VTABLE_FIELDS
+       added by `make-vtable-vtable'.  Reported by Marco Maggi.
+       
+2007-01-18  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * throw.c (scm_ithrow): more refined error message: print symbols
+       too.
+
+2007-01-16  Kevin Ryde  <user42@zip.com.au>
+
+       * feature.c, feature.h (scm_set_program_arguments_scm): New function,
+       implementing `set-program-arguments'.
+
+       * filesys.c (scm_init_filesys): Use scm_from_int rather than
+       scm_from_long for O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL,
+       O_NOCTTY, O_TRUNC, O_APPEND, O_NONBLOCK, O_NDELAY, O_SYNC and
+       O_LARGEFILE.  These are all int not long, per arg to open().
+       (scm_init_filesys): Use scm_from_int rather than scm_from_long for
+       F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETOWN, F_SETOWN, these
+       are all ints (per command arg to fcntl).  Likewise FD_CLOEXEC which is
+       an int arg to fcntl.
+
+       * posix.c (scm_putenv): Correction to "len" variable, was defined only
+       for __MINGW32__ but used under any !HAVE_UNSETENV (such as solaris).
+       Move it to where it's used.  Reported by Hugh Sasse.
+
+       * regex-posix.c (scm_regexp_exec): Remove SCM_CRITICAL_SECTION_START
+       and SCM_CRITICAL_SECTION_END, believe not needed.  Their placement
+       meant #\nul in the input (detected by scm_to_locale_string) and a bad
+       flags arg (detected by scm_to_int) would throw from a critical
+       section, causing an abort().
+
+       * regex-posix.c (scm_init_regex_posix): Use scm_from_int for
+       REG_BASIC, REG_EXTENDED, REG_ICASE, REG_NEWLINE, REG_NOTBOL,
+       REG_NOTEOL; they're all ints not longs (per args to regcomp and
+       regexec).
+
+2007-01-10  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * throw.c (scm_ithrow): print out key symbol and string arguments
+       when error happens inside a critical section, and document why.
+
+2007-01-06  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * read.c (s_scm_read_hash_extend): document #f argument to
+       read-hash-extend.
+
+2007-01-04  Kevin Ryde  <user42@zip.com.au>
+
+       * deprecated.h (scm_create_hook), version.h.in (scm_major_version,
+       scm_minor_version, scm_micro_version, scm_effective_version,
+       scm_version, scm_init_version): Use SCM_API instead of just extern,
+       for the benefit of mingw.  Reported by Cesar Strauss.
+
+2007-01-03  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * gc.c (s_scm_gc_stats): return an entry for total-cells-allocated
+       too.
+       (gc_update_stats): update scm_gc_cells_allocated_acc too.
+
+2006-12-27  Kevin Ryde  <user42@zip.com.au>
+
+       * threads.c (get_thread_stack_base): In mingw with pthreads we can use
+       the basic scm_get_stack_base.  As advised by Nils Durner.
+
+       * threads.c (get_thread_stack_base): Add a version using
+       pthread_get_stackaddr_np (when available), for the benefit of MacOS.
+       As advised by Heikki Lindholm.
+
+       * scmsigs.c (signal_delivery_thread): Restrict scm_i_pthread_sigmask
+       to HAVE_PTHREAD_SIGMASK, it doesn't exist on mingw.  Reported by Nils
+       Durner.
+
+2006-12-24  Kevin Ryde  <user42@zip.com.au>
+
+       * posix.c (scm_kill): When only raise() is available, throw an ENOSYS
+       error if pid is not our own process, instead of silently doing nothing.
+
+       * print.c (scm_write, scm_display, scm_write_char): Disable port close
+       on EPIPE.  This was previously disabled but introduction of HAVE_PIPE
+       check in configure.in unintentionally enabled it.  Believe that
+       testing errno after scm_prin1 or scm_putc is bogus, a long ago error
+       can leave errno in that state.  popen.test "no duplicates" output test
+       provoked that.
+
+2006-12-23  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       * numbers.c (scm_i_fraction_reduce): move logic into
+       scm_i_make_ratio(), so fractions are only read.
+       scm_i_fraction_reduce() modifies a fraction when reading it.  A
+       race condition might lead to fractions being corrupted by reading
+       them concurrently.
+
+       Also, the REDUCED bit alters the SCM_CELL_TYPE(), making
+       comparisons between reduced and unreduced fractions go wrong.
+       
+       * numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
+       SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
+       SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
+       SCM_FRACTION_REDUCED.
+
+2006-12-16  Kevin Ryde  <user42@zip.com.au>
+
+       * scmsigs.c (scm_raise): Use raise() rather than kill(), as this is
+       more direct for a procedure called raise.
+       (kill): Remove mingw fake fallback.
+
+2006-12-15  Kevin Ryde  <user42@zip.com.au>
+
+       * scmsigs.c: Conditionalize process.h, add io.h believe needed for
+       _pipe on mingw.
+
+2006-12-14  Kevin Ryde  <user42@zip.com.au>
+
+       * threads.c (thread_print): Cope with the case where pthread_t is a
+       struct, as found on mingw.  Can't just cast to size_t for printing.
+       Reported by Nils Durner.
+
+       * scmsigs.c: Add <fcntl.h> and <process.h> needed by mingw.  Copy the
+       fallback pipe() using _pipe() from posix.c.  Reported by Nils Durner.
+
+2006-12-13  Kevin Ryde  <user42@zip.com.au>
+
+       * eval.c (scm_m_define): Set 'name procedure property on any
+       scm_procedure_p, not just SCM_CLOSUREP.  In particular this picks up
+       procedures with setters as used in srfi-17.
+
+       * posix.c (scm_crypt): Check for NULL return from crypt(), which the
+       linux man page says is a possibility.
+
+2006-12-12  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * libguile/unif.c (read_decimal_integer): Let RESP be SIGN * RES
+       instead of RES (reported by Szavai Gyula).  This allows the use of
+       negative lower bounds.
+       (scm_i_read_array): Make sure LEN is non-negative (reported by
+       Szavai Gyula).
+
+       (scm_array_in_bounds_p): Iterate over S instead of always
+       comparing indices with the bounds of S[0].  This fixes
+       `array-in-bounds?' for arrays with a rank greater than one and
+       with different lower bounds for each dimension.
+
+2006-12-05  Kevin Ryde  <user42@zip.com.au>
+
+       * numbers.c (scm_product): For flonum*inum and complex*inum, return
+       exact 0 if inum==0.  Already done for inum*flonum and inum*complex,
+       and as per R5RS section "Exactness".
+
+2006-12-03  Kevin Ryde  <user42@zip.com.au>
+
+       * Makefile.am (.c.doc): Remove the "test -n" apparently attempting to
+       allow $AWK from the environment to override.  It had syntax gremlins,
+       and the presence of a $(AWK) variable set by AC_PROG_AWK in the
+       Makefile stopped it having any effect.  Use just $(AWK), which can be
+       overridden with "make AWK=xxx" in the usual way if desired.
+
+2006-11-29  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * libguile/vectors.c (scm_vector_to_list): Fixed list
+       construction: elements were not copied when INC is zero (see
+       "shared array" example in `vectors.test').  Reported by
+       Szavai Gyula.
+
+2006-11-18  Ludovic Courtès  <ludovic.courtes@laas.fr>
+
+       * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'.
+       (libguile_la_SOURCES): Added `gettext.c', removed `i18n.c'.
+       (libguile_i18n_v_XX_la_SOURCES, libguile_i18n_v_XX_la_CFLAGS,
+       libguile_i18n_v_XX_la_LIBADD, libguile_i18n_v_XX_la_LDFLAGS): New.
+       (DOT_X_FILES): Added `gettext.x'.
+       (DOT_DOC_FILES): Likewise.
+       (EXTRA_libguile_la_SOURCES): Added `locale-categories.h'.
+       (modinclude_HEADERS): Added `gettext.h'.
+       (EXTRA_DIST): Added `libgettext.h'.
+
+       * gettext.h: Renamed to...
+       * libgettext.h: New file.
+
+       * i18n.c: Renamed to...
+       * gettext.c: New file.
+
+       * i18n.h: Renamed to...
+       * gettext.h: New file.
+
+       * i18n.c, i18n.h, locale-categories.h: New files.
+
+       * init.c: Include "libguile/gettext.h" instead of
+       "libguile/i18n.h".
+       (scm_i_init_guile): Invoke `scm_init_gettext ()' instead of
+       `scm_init_i18n ()'.
+
+       * posix.c: Include "libguile/gettext.h" instead of
+       "libguile/i18n.h"  Test `HAVE_NEWLOCALE' and `HAVE_STRCOLL_L'.
+       (USE_GNU_LOCALE_API): New macro.
+       (scm_i_locale_mutex): New variable.
+       (scm_setlocale): Lock and unlock it around `setlocale ()' calls.
+
+       * posix.h: Include "libguile/threads.h".
+       (scm_i_locale_mutex): New declaration.
+
+2006-11-17  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * script.c (scm_shell_usage): Note need for subscription to bug-guile@gnu.org.
+
 2006-11-08  Ludovic Courtès  <ludovic.courtes@laas.fr>
        
        * libguile/gc-freelist.c (scm_i_adjust_min_yield): Take two
        scm_t_uint64 and scm_t_uint32 instead of scm_t_int64 and
        scm_t_int32.
 
-2006-01-04  Ludovic Court<E8>s  <ludovic.courtes@laas.fr>
+2006-01-04  Ludovic Courtès  <ludovic.courtes@laas.fr>
 
         * gc-segment.c (scm_i_sweep_some_cards): Take a SWEEP_STATS
         argument.  Don't refer to SCM_GC_CELLS_COLLECTED and