(scm_c_export): Do nothing when the first argument is
[bpt/guile.git] / libguile / ChangeLog
index 65f9ffc..cb2b088 100644 (file)
@@ -1,3 +1,959 @@
+2001-11-20  Thien-Thi Nguyen  <ttn@glug.org>
+
+       * Makefile.am (libpath.h): In SCM_BUILD_INFO,
+       also include `buildstamp'.
+
+2001-11-18  Rob Browning  <rlb@defaultvalue.org>
+
+       * version.c
+       (s_scm_major_version): use SCM_MAJOR_VERSION.
+       (s_scm_minor_version): use SCM_MINOR_VERSION.
+       (s_scm_micro_version): use SCM_MICRO_VERSION.
+       (s_scm_version): use SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
+       SCM_MICRO_VERSION.
+
+       * version.h.in
+       (SCM_MAJOR_VERSION): renamed from SCM_GUILE_MAJOR_VERSION.
+       (SCM_MINOR_VERSION): renamed from SCM_GUILE_MINOR_VERSION.
+       (SCM_MICRO_VERSION): renamed from SCM_GUILE_MICRO_VERSION.
+
+2001-11-18  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x):
+       Rewrite docstrings without reference to substring-move-left/right,
+       since the latter no longer exist.
+
+2001-11-17  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c:  Removed bogus comment about acros.
+
+       (scm_unmemocar):  Use !SCM_CONSP instead of SCM_IMP.
+       Minimize scope of local variable.  Eliminate dependency on
+       macro DEBUG_EXTENSIONS.
+
+       (s_splicing):  New error message string.
+
+       (scm_m_body):  Issue 'bad body' message rather than 'missing
+       expression' message.
+
+       (scm_m_quote):  Eliminate unnecessary copying.
+
+       (scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let):  Leave the
+       checking of the body to scm_m_body.
+
+       (scm_m_do):  Move comment to function header.  Rename arg1 to
+       binding.  Made the code a bit easier to read.
+
+       (evalcar):  Removed.
+
+       (iqq):  Added a comment.  Changed the depth parameter to
+       unsigned.  Use size_t for vector lengths.  Make sure vector object
+       is gc protected as long as its contents are read.  Add some syntax
+       checks.  Get rid of unnecessary SCM_IMP test.  Clean up the
+       control structure a bit.
+
+       (scm_m_delay):  Added comment about the implementation of
+       scm_m_delay.
+
+       (scm_m_define):  Add comment about guile's currying define
+       syntax.  Renamed 'proc' to 'name'.  Eliminate dependency on macro
+       DEBUG_EXTENSIONS.  Simplified code a bit.  Eliminate SICP code.
+
+       (scm_m_letrec1):  Removed.  Part of the functionality is taken
+       over by the new function 'transform_bindings'.
+
+       (transform_bindings):  New function.  Takes over some of the
+       functionality of removed function 'scm_m_letrec1', namely to split
+       a list of bindings into a reversed list of variables and a list of
+       initializers.
+
+       (scm_m_letrec):  Call 'transform_bindings'.
+
+       (scm_m_let):  Minimized scope of local variables.  Renamed 'proc'
+       to 'temp' and 'arg1' to 'binding'.  Eliminated redundant SCM_NIMP
+       test.  Use 'transform_bindings'.  Fixed scoping error with named
+       let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
+       Jerram for suggesting the fix).  Cleaned up the control structure
+       a bit.
+
+       (scm_m_expand_body):  Use 'transform_bindings'.  Eliminated
+       unnecessary consing.  Eliminated unnecessary
+       SCM_DEFER/ALLOW_INTS.
+
+       (SCM_CEVAL):  Un-obfuscated some loops.
+
+2001-11-16  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * gc.h (scm_unhash_name): Old declaration removed.
+
+       * eval.c (s_scm_eval): Change @var{primitive-eval} to
+       @code{primitive-eval}.
+
+       * feature.c, vectors.c, net_db.c, unif.c, weaks.c, struct.c,
+       version.c, alist.c, ports.c, ramap.c, unif.c, strings.c, list.c:
+       Change @deffnx lines in docstrings to say {Scheme Procedure}
+       rather than primitive or procedure.
+
+       * posix.c (scm_execl), filesys.c (scm_close), unif.c
+       (scm_array_set_x, scm_array_contents, scm_uniform_array_read_x,
+       scm_bit_set_star_x, scm_bit_invert_x), ramap.c (scm_array_fill_x,
+       scm_array_for_each, scm_array_index_map_x), vectors.c (scm_vector,
+       scm_make_vector, scm_vector_to_list, scm_vector_fill_x), strop.c
+       (scm_string_split, scm_string_ci_to_symbol), strings.c
+       (scm_string_p), sort.c (scm_merge), print.c (scm_newline),
+       macros.c (scm_macro_type), alist.c (scm_acons, scm_assq):
+       Docstring fixes and improvements reflecting edits that have been
+       made in the reference manual source.
+
+       * objprop.c (scm_object_properties, scm_set_object_properties_x,
+       scm_object_property, scm_set_object_property_x): Remove invalid
+       @deffnx lines for corresponding procedure property primitives.
+
+       These changes add a @deffnx C function declaration and function
+       index entries for each Guile primitive to the copy of the doc
+       snarf output that is used for reference manual synchronization.
+       Online help is unchanged.
+
+       * snarf.h (SCM_SNARF_DOCS): Output primitive's C function name.
+       (SCM_DEFINE, SCM_DEFINE1, SCM_REGISTER_PROC): Supply to C function
+       name to SCM_SNARF_DOCS.
+
+       * guile-snarf-docs-texi.in: Pass the shell script's arguments into
+       snarf-check-and-output-texi.
+
+       * Makefile.am (guile-procedures.texi): New rule.
+       (BUILT_SOURCES, guile.texi, guile-procedures.txt, CLEANFILES):
+       Changed so that the last stage of doc snarfing is now performed
+       twice, once to produce guile-procedures.txt for online help, and
+       once to produce guile.texi for reference manual synchronization.
+
+2001-11-15  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (RETURN):  Wrap in do{}while(0) in order to make it
+       safely usable as a single statement followed by a ';', for example
+       in an if statement.
+
+       (SCM_CEVAL, SCM_APPLY):  Clean up code using 'RETURN'.
+
+2001-11-13  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * random.c (scm_random_solid_sphere_x,
+       scm_random_hollow_sphere_x): Correct "shere" typos.
+
+       * hashtab.c (scm_hash_fold): Add missing apostrophe to docstring.
+
+       * version.c (scm_version): Update docstring to include
+       `micro-version'.
+
+2001-11-13  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * modules.c (scm_c_export): Call va_end after collecting the
+       symbols.
+
+       * strop.h, strop.c (scm_substring_move_left_x,
+       scm_substring_move_right_x): Removed.
+
+       * __scm.h (HAVE_UINTPTR_T, HAVE_PTRDIFF_T, HAVE_LONG_LONG,
+       HAVE_LONG_LONGS): Define to "1" when defining them, to mirror what
+       configure does.
+
+2001-11-12  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * numbers.c: Document macros to define when including
+       num2integral.i.c.  MAX_VALUE and MIN_VALU are no longer used, we
+       now rely on SIZEOF_ macros that have been figured out at
+       configure time.
+
+       * num2integral.i.c: Adapt to new interface.
+       (NUM2INTEGRAL): Test whether a fixnum can be represented in the
+       target type by casting it and checking whether it is still the
+       same.  Do not try to handle bignums for integral types that are
+       smaller than fixnums.  When handling bignums, collect the
+       magnituse first into a unsigned type, and correctly check for
+       overflow.
+       (INTEGRAL2BIG): Do not use MIN_VALUE explicitely by observing that
+       only -MIN_VALUE can still be negative of all negative numbers (in
+       twos-complement).
+
+       * tags.h (SIZEOF_SCM_T_BITS): Define it appropriately.
+
+       * __scm.h: Define HAVE_UINTPTR_T, HAVE_PTRDIFF_T and
+       HAVE_LONG_LONG depending on whether their size is non-zero.
+
+2001-11-11  Thien-Thi Nguyen  <ttn@glug.org>
+
+       * strop.c (scm_string_null_p): Docfix; nfc.
+       Thanks to Scott Lenser.
+
+2001-11-07  Neil Jerram  <neil@ossau.uklinux.net>
+
+       * extensions.c (scm_load_extension): Canonicalize docstring
+       whitespace.
+
+       * unif.c (scm_uniform_array_write), ports.c
+       (scm_current_output_port, scm_force_output), dynwind.c
+       (scm_dynamic_wind), scmsigs.c (scm_setitimer, scm_getitimer),
+       filesys.c (scm_open, scm_lstat), struct.c
+       (scm_make_struct_layout), random.c (scm_random,
+       scm_random_solid_sphere_x, scm_random_hollow_sphere_x, strop.c
+       (scm_i_index): Remove superfluous whitespace from end of docstring
+       lines.
+
+       * filesys.c (scm_select), guardians.c (scm_guardian_greedy_p),
+       strings.c (scm_make_string), variable.c (scm_make_variable,
+       scm_make_undefined_variable, scm_variable_p, scm_variable_set_x,
+       scm_variable_bound_p), scmsigs.c (scm_setitimer, scm_getitimer),
+       posix.c (scm_crypt), struct.c (scm_make_vtable_vtable), hashtab.c
+       (scm_hash_fold), ports.c (scm_port_for_each): Remove superfluous
+       newline at end of docstrings.
+
+       * modules.c (scm_set_current_module): Add missing newline to
+       docstring.
+
+2001-11-07  Stefan Jahn  <stefan@lkcc.org>
+
+       * win32-socket.[ch]: New files.  Defines Winsock-API error codes
+       and makes them available through Guile.  That is because the
+       Winsock-API does not store its errors in `errno' and thus cannot
+       return error messages via `strerror (errno)'.
+
+       * socket.c (scm_init_socket): Initialize `win32-socket' part
+       here under M$-Windows.
+
+       * numbers.h: Added missing declaration of
+       `scm_sys_check_number_conversions()'.
+
+       * error.c: Local definition of SCM_I_STRERROR and SCM_I_ERRNO
+       and use in `(strerror)' and `(system-error)'.
+
+       * Makefile.am (EXTRA_libguile_la_SOURCES): Added
+       `win32-socket.[ch]' to extra source and header files.
+
+2001-11-06  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * script.c (scm_shell_usage, scm_compile_shell_switches): Prepend
+       a call to turn-on-debugging when --debug has been given instead of
+       turning it on directly.  Also, handle new `--no-debug' option,
+       which might suppress the call to turn-on-debugging.
+
+2001-11-05  Stefan Jahn  <stefan@lkcc.org>
+
+       * struct.c (s_scm_struct_vtable_p): Corrected docstring.
+
+2001-11-04  Stefan Jahn  <stefan@lkcc.org>
+
+       * Makefile.am (libguile_la_LIBADD): Added $(THREAD_LIBS_LOCAL)
+       here (was at guile_LDADD) which describes the dependency
+       correctly and allows a clean build on Win32.
+
+       * __scm.h (SCM_API): Follow-up patch.  Renamed __FOO__ macros
+       into FOO.
+
+       * __scm.h: USE_DLL_IMPORT indicates the usage of the DLL
+       import macros for external libraries (libcrypt, libqthreads,
+       libreadline and libregex).
+
+       * coop-defs.h: Include <winsock2.h> for `struct timeval'.
+
+       * posix.c (flock): Added support for flock() in M$-Windows.
+
+       * guile.c (SCM_IMPORT): Follow-up patch.  Use SCM_IMPORT instead
+       of __SCM_IMPORT__.
+
+       * fports.c (getflags): Differentiate reading and writing pipes
+       descriptors.
+
+       * filesys.c (S_IS*): Redefine all of the S_IS*() macros for
+       M$-Windows.
+
+       * coop.c (coop_condition_variable_timed_wait_mutex): Use
+       conditionalized error code if `ETIMEDOUT' is not available.
+       (scm_thread_usleep): Remove bogus declaration of `struct timeval
+       timeout'.
+
+       * numbers.c (PTRDIFF_MIN): Moved this definition where it actually
+       belongs.  That is because NO_PREPRO_MAGIC gets undefined after
+       each inclusion of `num2integral.i.c'.
+       (SIZE_MAX): Define NO_PREPRO_MAGIC if SIZE_MAX is undefined.
+
+2001-11-03  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * eval.c (scm_m_begin): Allow `(begin)`, with no subforms.
+       (SCM_CEVAL): Evaluate an empty `begin' to SCM_UNSPECIFIED.
+
+2001-11-02  Mikael Djurfeldt  <mdj@linnaeus>
+
+       * print.c (scm_iprin1): Mark print state as revealed when
+       dispatching to generic write or display.
+
+       * unif.c (scm_ra2contig): Fixed memory overwrite bug.
+
+2001-11-02  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       Support for native Win32.  Thanks to Stefan Jahn!
+
+        * Makefile.am: Add win32-uname.c, win32-uname.h, win32-dirent.c
+       and win32-dirent.h to extra source and header files.  These
+       include the uname() and the POSIX dirent interface implementation
+       for M$-Windows.  Put `-no-undefined' into LDFLAGS to support
+       linkers which do not allow unresolved symbols inside shared
+       libraries.  Corrected `guile_filter_doc_snarfage$(EXEEXT)'
+       dependency.
+
+        * __scm.h: Defined SCM_API.  This macro gets prepended to all
+        function and data definitions which should be exported or imported
+        in the resulting dynamic link library in the Win32 port.
+
+        * __scm.h, alist.h, arbiters.h, async.h, backtrace.h, boolean.h,
+        chars.h, continuations.h, coop-defs.h, coop-threads.h,
+        debug-malloc.h, debug.h, deprecation.h, dynl.h, dynwind.h,
+        environments.h, eq.h, error.h, eval.h, evalext.h, extensions.h,
+        feature.h, filesys.h, fluids.h, fports.h, gc.h, gdb_interface.h,
+        gdbint.h, gh.h, goops.h, gsubr.h, guardians.h, hash.h, hashtab.h,
+        hooks.h, init.h, ioext.h, iselect.h, keywords.h, lang.h, list.h,
+        load.h, macros.h, mallocs.h, modules.h, net_db.h, numbers.h,
+        objects.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h,
+        procprop.h, procs.h, properties.h, ramap.h, random.h, rdelim.h,
+        read.h, regex-posix.h, root.h, rw.h, scmsigs.h, script.h, simpos.h,
+        smob.h, socket.h, sort.h, srcprop.h, stackchk.h, stacks.h, stime.h,
+        strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
+        tags.h, threads.h, throw.h, unif.h, values.h, variable.h, vectors.h,
+        vports.h, weaks.h:
+        Prefixed each each exported symbol with SCM_API.
+
+        * continuations.c: Added comment about the use of the extern
+        declarations of {get,set}context() functions used in the ia64 port.
+
+        * continuations.h, gc.c: `__libc_ia64_register_backing_store_base'
+        is meant to be a `unsigned long *'.
+
+        * filesys.c: Include `direct.h' if possible.  Use local
+       `win32-dirent.h' for the native M$-Windows port.  Define S_IS*()
+       macros for M$-Windows.  Implementation of `fstat_Win32()' which is
+       able to differentiate between sockets and other file descriptors.
+       Use this function as wrapper in `scm_fstat()'.  Fixed typo in
+       `scm_dirname()'.
+
+        * fports.c: Include `io.h' is possible.  Put `*fp' into referring
+        statement block in `scm_fport_buffer_add()'.
+        Some corrections in `getflags()'.
+
+        * gdb_interface.h (GDB_INTERFACE): Also support __CYGWIN__.
+
+        * guile.c: Make sure to define __SCM_IMPORT__ for shared library
+        build on Win32.  Disable preloaded symbols on Win2 platforms.
+
+        * ioext.c, ports.c: Include `io.h' is possible.
+
+        * mkstemp.c: Include `process.h' is possible.
+
+        * net_db.c: Disable extern declaration of `h_errno' for __CYGWIN__,
+        too.
+        Put `scm_return_entry()' into HAVE_GETSERVENT conditional.
+
+        * posix.c: Remove unnecessary dirent includes and defines. Include
+       local `win32-uname.h' for MinGW.  Extern declaration of
+       `mkstemp()' for systems where it does not exists.  Make
+       `getlogin()' available on M$-Windows.
+
+        * scmsigs.c: Made `usleep()' avalable on MinGW.
+
+        * stime.c: On M$-Windows `tzname[]' is known to be `_tzname[]'.
+
+       * win32-dirent.c: Include "win32-dirent.h", not "dirent.h".
+
+       * win32-uname.c: Include "win32-uname.h", not "uname.h".
+
+2001-10-28  Mikael Djurfeldt  <mdj@linnaeus>
+
+       * unif.c (scm_uniform_array_read_x, scm_uniform_array_write):
+       Don't apply scm_uniform_vector_length on arrays.
+
+2001-10-14  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (scm_lookupcar, scm_m_letstar, scm_m_do, iqq,
+       scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
+       scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
+       SCM_CEVAL, scm_map, scm_init_eval):  When building lists, prefer
+       scm_list_<n> over scm_cons[2]?.
+
+       (scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
+       scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY):  Use
+       SCM_C[AD][AD]R instead of explicit form.
+
+       (scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do):  Reordered
+       comparison parameters.
+
+       (scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL):  Use
+       !SCM_NULLP instead of SCM_NIMP.
+
+       (scm_m_case):  Don't copy the form.  Renamed proc to clause and
+       minimized its scope.  Renamed x to clauses.  Removed side
+       effecting operation from macro call.
+
+       (scm_m_cond):  Don't copy the form.  Renamed arg1 to clause and
+       minimized its scope.  Renamed x to clauses.  Minimized the scope
+       of variable 'len'.  Make sure the else clause is treated specially
+       even in case of '=>' occurences.  Don't change the else to #t in
+       order to be able to distinguish this case in the evaluator.  Leave
+       type checking of the recipient to the evaluator.
+
+       (scm_c_improper_memq):  Made the comment somewhat clearer.
+
+       (scm_m_lambda):  Renamed proc to formals.  Removed unnecessary
+       test for SCM_IM_LET at the place of the formal parameters.
+       Simplified the formal parameter checking.
+
+       (scm_m_letstar):  Added Comment.  Renamed proc to bindings.
+       Renamed arg1 to binding and minimized its scope.  Eliminated
+       unnecessary consing.
+
+       (scm_m_do):  Renamed proc to bindings.  Minimized the scope of
+       variable 'len'.
+
+       (build_binding_list):  New static function.
+
+       (unmemocopy):  Don't use SCM_TYP7 on pairs (it's unclean).
+       Further, split up the 'letrec' unmemoizing code to the
+       corresponding parts for 'do', 'let' and 'letrec', adding comments
+       to each form.  Cleanup the handling of the do form (This removes
+       some *real* code :-).
+
+       (SCM_CEVAL):  Removed side effecting operation from macro call.
+       Handle the 'else clause of the 'cond form specially - the symbol
+       'else is not replaced with #t any more.
+
+2001-10-14  Gary Houston  <ghouston@arglist.com>
+
+       * version.c (scm_version): use sprintf instead of snprintf,
+       for portability.  thanks to Bill Schottstaedt.
+
+2001-10-14  Mikael Djurfeldt  <mdj@linnaeus>
+
+       * read.c (scm_lreadr): When user-defined hash procedure returns
+       SCM_UNSPECIFIED: Fall back to standard handling instead of raising
+       an exception.  (This prevents parsing of uniform vectors from
+       interfering with parsing of numbers.)
+
+2001-10-13  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * numbers.c: Set NO_PREPRO_MAGIC when defining our version of
+       PTRDIFF_MIN.  Thanks to Ken Raeburn.
+
+2001-10-07  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * Makefile.am (EXTRA_libguile_la_SOURCES): Added "mkstemp.c".
+
+       * eval.c (scm_m_atbind): First try to find the variable without
+       defining it locally; when it has not been found, define it
+       locally.
+
+       * modules.c (module_variable): Pass over variables that exist but
+       are unbound.
+
+2001-10-06  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * backtrace.c (display_backtrace_file_and_line): Only use
+       scm_basename when POSIX support is compiled in.  Thanks to Chris
+       Cramer.
+
+2001-10-13  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.c (mem2uinteger):  Return number read so far when coming
+       across a hexdigit after having read a # or if not reading a hex
+       value.  This will enable the calling code to correctly handle
+       forms like 1e2.  (The background is, that the exponent markers d,
+       e and f are also hexdigits.)  Thanks to Mikael Djurfeldt for
+       providing this patch.
+
+       (mem2complex):  Fix erroneous double-negation.  Now, numbers like
+       1-i will be read correctly.
+
+2001-10-12  Mikael Djurfeldt  <mdj@linnaeus>
+
+       * debug.c (scm_mem_to_proc): Fixed typo in previous change.
+
+       * validate.h (SCM_VALIDATE_DOUBLE_DEF_COPY): New macro.
+
+2001-10-12  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * print.c (scm_print_state_vtable, print_state_pool):
+       Initialize.  These variables are now registered as gc roots.
+
+       (scm_current_pstate):  Update documentation.
+
+       (scm_current_pstate, scm_make_print_state, scm_free_print_state,
+       scm_prin1, scm_init_print):  print_state_pool is registered as a
+       gc root and thus does not need to be protected by a surrounding
+       pair any more.
+
+       (make_print_state):  The car of print_state_pool no longer holds
+       the scm_print_state_vtable.
+
+       (scm_current_pstate, scm_make_print_state, print_circref,
+       scm_iprin1, scm_prin1, scm_iprlist):  Prefer !SCM_<foo> over
+       SCM_N<foo>.
+
+       (scm_prin1):  When building lists, prefer scm_list_<n> over
+       scm_cons[2]?.
+
+       (scm_iprlist):  Removed a redundant SCM_IMP test.
+
+       (scm_simple_format):  Use SCM_EQ_P to compare SCM values.
+
+2001-10-11  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * debug.c (scm_make_iloc):  Prefer !SCM_<foo> over SCM_N<foo>.
+
+       (scm_memcons, scm_mem_to_proc):  When building lists, prefer
+       scm_list_<n> over scm_cons[2]?.
+
+       (scm_mem_to_proc):  Prefer SCM_CONSP over SCM_NIMP.
+
+       (scm_procedure_name):  Use SCM_CADR instead of explicit form.
+
+       (debugobj_print):  Coerce scm_intprint arg 1 to long, not int.
+       Thanks to Rob Browning for the patch (see log entry 2001-09-21) -
+       for some reason his patch didn't make it into the cvs.
+
+2001-10-09  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.c (mem2decimal_from_point):  Cleaned up the parsing a
+       little bit - should even be somewhat more accurate now.
+
+2001-10-08  Rob Browning  <rlb@defaultvalue.org>
+
+       * gc.c: support ia64 register backing store.
+       (SCM_MARK_BACKING_STORE): new macro.
+
+       * continuations.h: support ia64 register backing store.
+       (struct scm_t_contregs): add ia64 register backing store.
+
+       * continuations.c: support ia64 register backing store.
+       (continuation_mark): mark ia64 register backing store.
+       (continuation_free): free ia64 register backing store.
+       (scm_make_continuation): capture ia64 register backing store.
+       (copy_stack_and_call): copy ia64 register backing store.
+
+2001-10-08  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * hashtab.c (scm_hash_fn_create_handle_x):  The result of assoc_fn
+       is known to be #f if no entry is found.  Thus, use !SCM_FALSEP
+       instead of SCM_NIMP to test for that case.
+
+       * strings.h (SCM_SET_STRING_LENGTH):  Cast the length to
+       scm_t_bits instead of long.
+
+2001-10-06  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * tags.h (SCM_T_BITS_MAX, SCM_T_SIGNED_BITS_MAX,
+       SCM_T_SIGNED_BITS_MIN): New.
+       * numbers.h (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):
+       Use them to make these macros computable by the preprocessor.
+
+       * num2integral.i.c (INTEGRAL2NUM): Let the preprocessor test
+       whether the integral type fits in a fixnum, not the compiler.
+       This removes a spurious compiler warning.  Also, honor the
+       NO_PREPRO_MAGIC flag to suppress any preprocessor tests.  This is
+       needed for `long long's.
+
+       * numbers.c: Define NO_PREPRO_MAGOC when including
+       num2integral.c.i for `long long' and `signed long long'.
+
+2001-10-06  Mikael Djurfeldt  <mdj@linnaeus>
+
+       These changes fixes a race condition in the Guile coop - pthread
+       compatibility code.
+
+       * coop.c (mother_awake_p): New variable.
+       (coop_create): Set mother_awake_p before creating or signalling
+       mother; wait until mother is going to sleep before returning.
+       (mother): Reset mother_awake_p before going to sleep.
+
+2001-10-05  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * options.c (protected_objects, scm_init_options):  The content of
+       protected_objects is now protected from garbage collection using
+       scm_gc_register_root instead of scm_permanent_object.
+
+       (get_option_setting):  New static function that computes an option
+       setting as it was formerly done in the function scm_options.
+
+       (get_documented_option_setting):  New static function that
+       returns option documentation as it was formerly done in the
+       function scm_options.  Note that documentation C strings are no
+       longer precomputed into SCM objects.  Instead, they are converted
+       into SCM strings every time get_documented_option_setting is
+       called.
+
+       (change_option_setting):  New static functions that modifies the
+       option setting as it was formerly done in the function
+       scm_options.  The function is now exception safe, i. e. won't
+       cause a memory leak when interrupted.  Further, only non-immediate
+       option values are added to the protection list.
+
+       (scm_options):  This function now has only the purpose to dispatch
+       to to get_option_setting, get_documented_option_setting or
+       change_option_setting, depending on the arguments given to
+       scm_options.
+
+       (scm_init_opts):  Don't convert documentation C strings into SCM
+       strings.  Further, don't protect any object values:  They _must_
+       be immediate values, otherwise there is no guarantee that they
+       have not been collected before anyway.
+
+       * options.[ch] (scm_t_option):  Made type unsigned, name into a
+       constant char* and val into a scm_t_bits type.
+
+       (scm_options, scm_init_opts):  The number of options is guaranteed
+       to be larger or equal to zero.  Thus, the type is changed to
+       unsigned.
+
+2001-10-05  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * num2integral.i.c (NUM2INTEGRAL):  Eliminated some warnings about
+       testing an unsigned value for being >= 0.
+
+2001-10-05  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * numbers.h:  Removed old comment about using SCM_CAR to access
+       non-pair cells.
+
+       (SCM_MOST_POSITIVE_FIXNUM, SCM_MOST_NEGATIVE_FIXNUM):  Make sure
+       the return value is signed.  Thanks to Brian Crowder for the bug
+       report.
+
+       (SCM_SRS):  Avoid unnecessary casting and don't unpack input
+       values.  With this patch, SCM_SRS can be safely used for other
+       types than scm_t_signed_bits.  However, it should still better be
+       an internal macro and thus be renamed to SCM_I_SRS.
+
+       (SCM_MAKINUM, SCM_INUM):  Use proper casting.
+
+2001-10-03  Gary Houston  <ghouston@arglist.com>
+
+       * continuations.h, unif.h: in the descriptions of the bit patterns
+       of the heap cells, make bit 0 the least significant.
+
+2001-09-25  Thien-Thi Nguyen  <ttn@glug.org>
+
+       * chars.h (SCM_MAKE_CHAR): Use `scm_t_bits' instead of `intptr_t'.
+       Thanks to Golubev I. N.
+
+2001-09-25  Gary Houston  <ghouston@arglist.com>
+
+       * ports.c (scm_drain_input): extended the docstring.  thanks to
+       Alex Schroeder and Thien-Thi Nguyen.
+
+2001-09-23  Mikael Djurfeldt  <mdj@linnaeus>
+
+       * validate.h (SCM_NUM2FLOAT, SCM_NUM2DOUBLE,
+       SCM_VALIDATE_FLOAT_COPY, SCM_VALIDATE_DOUBLE_COPY): New
+       macros. (The NUM names might soon change.)
+
+       * numbers.h: Added missing declarations.
+
+2001-09-22  Mikael Djurfeldt  <mdj@linnaeus>
+
+       * Makefile.am: Distribute num2float.i.c.
+
+       * num2float.i.c: New file, multiply included by numbers.c, used
+       to "templatize" the float <-> num conversion routines.
+
+       * numbers.c: New functions: scm_num2float, scm_float2num,
+       scm_num2double, scm_double2num.
+
+2001-09-21  Rob Browning  <rlb@defaultvalue.org>
+
+       * .cvsignore: really add version.h
+
+       * strings.h (SCM_SET_STRING_LENGTH): coerce "l" to a long.
+       Otherwise it fails on the alpha.  However, we might rather choose
+       this size conditionally.
+
+       * numbers.c (scm_gcd): change "k" to a long from an int.
+       Otherwise it fails on the alpha.  However, we might rather choose
+       this size conditionally.
+
+       * error.c (scm_wta): coerce char* to intptr_t before int
+       assignment.
+
+       * debug.c (debugobj_print): coerce scm_intprint arg 1 to long, not
+       int.
+
+       * chars.h (SCM_MAKE_CHAR): coerce value to intptr_t.
+
+2001-09-20  Mikael Djurfeldt  <mdj@linnaeus>
+
+       * numbers.c (scm_integer_expt): Accept inexact integer in second
+       argument.  (Thanks to Bill Schottstaedt.)
+
+2001-09-20  Rob Browning  <rlb@defaultvalue.org>
+
+       * .cvsignore: add version.h
+
+       * versiondat.h.in: removed (obsolete).
+
+       * version.h.in: renamed from version.h.
+       (SCM_GUILE_MAJOR_VERSION): new public macro.
+       (SCM_GUILE_MINOR_VERSION): new public macro.
+       (SCM_GUILE_MICRO_VERSION): new public macro.
+
+       * version.h: renamed to version.h.in.
+
+       * version.c
+       (scm_major_version): support integer *_VERSION macros.
+       (scm_minor_version): support integer *_VERSION macros.
+       (scm_micro_version): support integer *_VERSION macros.
+       (scm_version): support integer *_VERSION macros.
+
+2001-09-20  Mikael Djurfeldt  <mdj@linnaeus>
+
+       * error.c, error.h: Made error keys globally accessible.
+       Applications might want to test for these or use them in a direct
+       call to scm_error.
+
+       * num2integral.i.c (NUM2INTEGRAL): Report an error when these
+       routines are passed an inexact.  This change in behavior is
+       motivated by concordance with R5RS: It is more common that a
+       primitive doesn't want to accept an inexact for an exact.
+
+2001-09-17  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+        The following patch partially undoes my patch from 2001-06-30,
+       where I added the function scm_gc_mark_cell_conservatively.  The
+       function is buggy, since it breaks guile during conservative
+       marking if a pointer on the stack points directly into the list of
+       free cells on the heap:  With conservative cell marking this will
+       cause the whole free list to be scanned and marked - boom!
+
+       * gc.c (allocated_mark, MARK, heap_segment,
+       scm_gc_mark_cell_conservatively, scm_init_storage), gc.h
+       (scm_gc_mark_cell_conservatively):  Remove function
+       scm_gc_mark_cell_conservatively and update the corresponding
+       comments and uses accordingly.  Thanks to Christopher Cramer for
+       the patch.  (Minor corrections by me.)
+
+2001-09-15  Gary Houston  <ghouston@arglist.com>
+
+       * root.h (scm_root_state): removed the continuation_stack and
+       continuation_stack_ptr members, which have no apparent purpose.
+       (scm_continuation_stack, scm_continuation_stack_ptr): #defines
+       removed.
+
+       * root.c (root_mark), init.c (restart_stack, start_stack), gc
+       (scm_igc): remove all references to contination_stack and
+       continuation_stack_ptr, avoiding allocation of a vector and
+       useless processing during gc.
+
+2001-09-13  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * guardians.c (tconc_t, t_tconc):  Renamed tconc_t to t_tconc.
+
+       (TCONC_IN):  Make sure that the cell word 0 is initialized last.
+
+       (guardians_t, t_guardians):  Renamed guardians_t to t_guardians.
+
+       (GUARDIAN, GUARDIAN_DATA):  Renamed GUARDIAN to GUARDIAN_DATA.
+
+       (guardian_apply, scm_get_one_zombie, scm_make_guardian,
+       mark_and_zombify):  Prefer !SCM_<foo> over SCM_N<foo>.
+
+2001-09-13  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * guardians.c (mark_dependencies_in_tconc,
+       whine_about_self_centered_zombies, scm_init_guardians):  Register
+       the static global variable `self_centered_zombies' via
+       scm_gc_register_root, to make some cdr-ing unnecessary.
+
+2001-09-13  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * backtrace.c (display_backtrace_file,
+       display_backtrace_file_and_line):  Use SCM_EQ_P when comparing SCM
+       values, use SCM_FALSEP when comparing SCM values against #f.
+       Thanks to Rob Browning for the bug report.
+
+2001-09-12  Martin Baulig  <martin@home-of-linux.org>
+
+       * strings.[ch] (scm_str2string): New function.
+
+2001-09-06  Marius Vollmer  <mvo@zagadka.ping.de>
+
+       * gc.c (scm_done_free): Always subtract size from scm_mallocated
+       when computing nm, even if it's negative.
+       (scm_must_malloc): Abort on overflow of scm_mtrigger.
+       (scm_must_realloc): Likewise.
+
+2001-09-01  Michael Livshin  <mlivshin@bigfoot.com>
+
+       * numbers.c (scm_sys_check_number_conversions): new function,
+       defined if Guile is compiled in debugging mode.  currently checks
+       `scm_num2ulong', should check much much more.
+
+       * num2integral.i.c (NUM2INTEGRAL): when converting a bignum to
+       unsigned, ensure that it's positive.  thanks to Martin Baulig!
+
+2001-08-31  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * __scm.h: Added new section about compile time selectable
+       features.
+
+       (long_long, ulong_long, scm_sizet, SCM_WNA, SCM_OUTOFRANGE,
+       SCM_NALLOC, SCM_HUP_SIGNAL, SCM_INT_SIGNAL, SCM_FPE_SIGNAL,
+       SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL,
+       SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS):
+       Removed.
+
+       * deprecation.c (scm_include_deprecated_features): Simplified.
+
+       * eval.c (EVALCAR, unmemocopy), eval.h (SCM_XEVALCAR): Use
+       `SCM_IMPĀ“ instead of `!SCM_CELLPĀ“.
+
+       * eval.c (unmemocopy): Eliminate redundant SCM_CELLP tests.
+       Extract side-effecting operations from macros.
+
+       (scm_init_eval): Don't initialize *top-level-lookup-closure*,
+       scm_top_level_lookup_closure_var and scm_system_transformer.
+
+       * gc.c (CELL_P): New local definition to replace SCM_CELLP.
+
+       (heap_segment):  Use CELL_P instead of SCM_CELLP.
+
+       * init.c (start_stack): Don't initialize
+       scm_top_level_lookup_closure_var and scm_system_transformer.
+
+       * modules.c (scm_set_current_module): Don't access
+       scm_top_level_lookup_closure_var and scm_system_transformer.
+
+       (scm_sym2var): Don't call scm_variable_set_name_hint.
+
+       (scm_post_boot_init_modules): Removed deprecated initializations.
+
+       * print.c (scm_ipruk): Don't access cell contents of non cells.
+
+       * strings.c (scm_string_set_x):  All strings are writable.
+
+       * strings.h (SCM_STRINGP):  Use SCM_TYP7 to determine the string
+       type.  There is only one string type now.
+
+       (SCM_STRING_COERCE_0TERMINATION_X): Deprecated.
+
+       * tags.h: Remove comments about two different string types.
+
+       (SCM_CELLP, SCM_NCELLP): Deprecated.
+
+       * variable.c (make_variable): Remove code variant for vcells.
+
+       * variable.h (SCM_VARIABLE_REF, SCM_VARIABLE_SET,
+       SCM_VARIABLE_LOC): Remove code variant for vcells.
+
+       * __scm.h, deprecation.[ch]:  Renamed SCM_DEBUG_DEPRECATED to
+       SCM_ENABLE_DEPRECATED with the logic reversed.
+
+       * dynl.c (moddata, registered_mods), dynl.[ch]
+       (scm_register_module_xxx, scm_registered_modules,
+       scm_clear_registered_modules), error.[ch] (scm_wta), eval.c
+       (*top-level-lookup-closure*), eval.[ch]
+       (scm_top_level_lookup_closure_var, scm_system_transformer,
+       scm_eval_3, scm_eval2), gc.h (SCM_SETAND_CAR, SCM_SETOR_CAR,
+       SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_FREEP, SCM_NFREEP,
+       SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
+       SCM_GCCDR), gc.[ch] (scm_remember, scm_protect_object,
+       scm_unprotect_object), modules.c (root_module_lookup_closure,
+       scm_sym_app, scm_sym_modules, module_prefix, make_modules_in_var,
+       beautify_user_module_x_var, try_module_autoload_var,
+       scm_module_full_name), modules.[ch] (scm_the_root_module,
+       scm_make_module, scm_ensure_user_module, scm_load_scheme_module),
+       ports.h (scm_port, scm_ptob_descriptor, scm_port_rw_active),
+       ports.[ch] (scm_close_all_ports_except), random.h (scm_rstate,
+       scm_rng, scm_i_rstate), strings.h (SCM_SLOPPY_STRINGP,
+       SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS), strings.[ch]
+       (scm_read_only_string_p, scm_makstr, scm_makfromstr,
+       scm_make_shared_substring), tags.h (scm_tc7_substring,
+       SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP, scm_tc7_ssymbol,
+       scm_tc7_msymbol, scm_tcs_symbols), variable.c (sym_huh),
+       variable.[ch] (scm_variable_set_name_hint, scm_builtin_variable),
+       variable.h (SCM_VARVCELL, SCM_UDVARIABLEP, SCM_DEFVARIABLEP):
+       Removed.
+
+       * dynl.c (scm_dynamic_link, scm_dynamic_func), error.c
+       (scm_error_scm), filesys.c (scm_chown, scm_chmod, scm_open_fdes,
+       scm_stat, scm_link, scm_rename, scm_delete_file, scm_mkdir,
+       scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink,
+       scm_lstat, scm_copy_file), fports.c (scm_open_file), ioext.c
+       (scm_fdopen), net_db.c (scm_gethost, scm_getnet, scm_getproto,
+       scm_getserv), ports.c (scm_truncate_file, scm_sys_make_void_port),
+       posix.c (scm_getpwuid, scm_getgrgid, scm_execl, scm_execlp,
+       scm_execle, scm_mkstemp, scm_utime, scm_access, scm_setlocale,
+       scm_mknod, scm_crypt, scm_chroot, scm_getpass, scm_sethostname),
+       regex-posix.c (scm_make_regexp, scm_regexp_exec), simpos.c
+       (scm_system, scm_getenv), socket.c (scm_inet_aton), stime.c
+       (setzone, scm_strftime, scm_strptime), vports.c
+       (scm_make_soft_port): Remove calls to
+       SCM_STRING_COERCE_0TERMINATION_X.  Since the substring type is
+       gone, all strings are 0-terminated anyway.
+
+       * dynl.h (LIBGUILE_DYNL_H, SCM_DYNL_H), random.h (RANDOMH,
+       SCM_RANDOM_H): Renamed the macros that are defined to inhibit
+       double inclusion of the same headers to the SCM_<filename>_H
+       format.
+
+       * eval.c (SCM_CEVAL), gc.c (MARK, scm_gc_sweep), gh_data.c
+       (gh_scm2chars), hash.c (scm_hasher), objects.c (scm_class_of),
+       print.c (scm_iprin1): The type scm_tc7_substring does not exist
+       any more.
+
+       * ports.h (SCM_PORTP, SCM_OPPORTP, SCM_OPINPORTP, SCM_OPOUTPORTP,
+       SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P, SCM_OPENP), tags.h
+       (SCM_TYP16_PREDICATE), variable.h (SCM_VARIABLEP): Prefer
+       !SCM_<foo> over SCM_N<foo>.
+
+2001-08-31  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * Makefile.am:  Remove references to symbols-deprecated.c.
+
+       * symbols.c (scm_init_symbols):  Don't initialize deprecated
+       symbol functions.
+
+       * symbols-deprecated.c:  Removed.
+
+       * fluids.[ch] (scm_internal_with_fluids), gsubr.[ch]
+       (scm_make_gsubr, scm_make_gsubr_with_generic), hooks.[ch]
+       (scm_create_hook), list.c (list*), list.h (SCM_LIST[0-9],
+       scm_listify), list.[ch] (scm_sloppy_memq, scm_sloppy_memv,
+       scm_sloppy_member), load.c (scm_end_of_file_key), load.[ch]
+       (scm_read_and_eval_x), numbers.[ch] (scm_mkbig, scm_big2inum,
+       scm_adjbig, scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big,
+       scm_big2dbl), numbers.h (SCM_FIXNUM_BIT), procs.h
+       (scm_subr_entry, SCM_SUBR_DOC), procs.[ch] (scm_make_subr_opt,
+       scm_make_subr, scm_make_subr_with_generic), root.c (setjmp_type,
+       setjmp_type), root.[ch] (scm_call_catching_errors), smob.[ch]
+       (scm_make_smob_type_mfpe, scm_set_smob_mfpe), strports.[ch]
+       (scm_strprint_obj, scm_read_0str, scm_eval_0str), symbols.h
+       (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS, SCM_SLOPPY_SUBSTRP,
+       SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_LENGTH_MAX, SCM_LENGTH,
+       SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH, SCM_ROCHARS,
+       SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
+       scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
+       scm_intern_obarray_soft, scm_intern_obarray, scm_intern,
+       scm_intern0, scm_sysintern, scm_sysintern0,
+       scm_sysintern0_no_module_lookup, 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,
+       scm_init_symbols_deprecated), vectors.c (s_vector_set_length_x),
+       vectors.[ch] (scm_vector_set_length_x): Removed.
+
+       * fluids.h (FLUIDSH, SCM_FLUIDS_H), gsubr.c (GSUBRH, SCM_GSUBR_H),
+       list.h (LISTH, SCM_LIST_H), load.h (LOADH, SCM_LOAD_H), root.h
+       (ROOTH, SCM_ROOT_H), strports.h (STRPORTSH, SCM_STRPORTS_H):
+       Renamed the macros that are defined to inhibit double inclusion of
+       the same headers to the SCM_<filename>_H format.
+
+       * procs.h (SCM_CLOSUREP, SCM_PROCEDURE_WITH_SETTER_P), symbols.h
+       (SCM_SYMBOLP), vectors.h (SCM_VECTORP): Prefer !SCM_<foo> over
+       SCM_N<foo>.
+
 2001-08-31  Dirk Herrmann  <D.Herrmann@tu-bs.de>
 
        * continuations.h (scm_contregs), debug.h (scm_debug_info,