+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
* 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): 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.)
* 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
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.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]