+1999-10-11 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * ioext.c: Added #include "feature.h".
+
+ These changes turns `delay' into a memoizing macro. This is
+ because it may be expanded before evaluation if it occurs at the
+ beginning of a body. (Thanks to Lauri Alanko.)
+
+ * eval.c, eval.h (scm_sym_delay): New global symbol.
+
+ * tags.h (SCM_IM_DELAY): New immediate symbol.
+
+ * print.c (scm_isymnames): Printed representation.
+
+ * eval.c (unmemocopy, SCM_CEVAL): Handle SCM_IM_DELAY.
+ (scm_m_delay): Turned into a memoizing macro.
+
+ * Makefile.am (libguile_la_LDFLAGS): Bumped libguile version.
+
+1999-10-11 Jim Blandy <jimb@savonarola.red-bean.com>
+
+ * gh_data.c (gh_ints2scm, gh_doubles2scm): Make sure elements are
+ protected from GC while building the vector. (Thanks to Bernard
+ Urban and Greg Harvey.)
+
+1999-10-08 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * throw.c (handler_message): Display backtrace if backtraces
+ enabled.
+
+1999-10-05 Jim Blandy <jimb@savonarola.red-bean.com>
+
+ * Makefile.in, scmconfig.h.in: Deleted from CVS repository. Run
+ the autogen.sh script to create generated files like these.
+
+ * numbers.c (scm_string_to_number): Signal an error if radix is
+ less than two. (Thanks to Jorgen Schaefer.)
+
+ * print.c (scm_write, scm_display, scm_newline, scm_write_char):
+ Don't assume that the current output port is valid. Somebody
+ might close it. (Thanks to Bernard Urban.)
+
+1999-10-02 Jim Blandy <jimb@zwingli.cygnus.com>
+
+ * scmconfig.h.in: Regenerated.
+
+ * Makefile.am (EXTRA_libguile_la_SOURCES): fix typo.
+
+Mon Sep 27 17:15:14 1999 Greg J. Badros <gjb@cs.washington.edu>
+
+ * __scm.h: Fix a bunch of macros that were missing do-while(0)
+ sandwiches.
+
+ * debug.c, eval.c: Fix buggy uses of SCM_ALLOW_INTS (missing
+ semicolon) exposed by the above change.
+
+1999-09-27 Greg J. Badros <gjb@cs.washington.edu>
+
+ * stacks.c: Avoid compiler warning re: unitialized var.
+
+ * scmconfig.h.in: Added DEBUG_FREELIST
+
+ * pairs.h: Fix macro that was not do-while(0) sandwiched.
+
+ * gc.h, gc.c: Added scm_gc_set_debug_check_freelist_x,
+ scm_map_free_list
+
+1999-09-23 Gary Houston <ghouston@freewire.co.uk>
+
+ * ioext.c (scm_init_ioext): enable "i/o-extensions" feature here
+ instead of in scm_init_filesys.
+
+ * init.c (scm_boot_guile_1): don't call scm_init_posix or
+ scm_init_filesys unless HAVE_POSIX is defined.
+ don't call scm_init_netdb or scm_init_socket unless
+ HAVE_NETWORKING is defined.
+
+ * Makefile.am (EXTRA_libguile_la_SOURCES): filesys.c, posix.c,
+ net_db.c, socket.c: moved here from libguile_la_SOURCES.
+
+1999-09-25 Jim Blandy <jimb@savonarola.red-bean.com>
+
+ * root.c (scm_make_root): Initialize all the fields of the new
+ root. GC could happen any time, you know. (Thanks to Greg
+ Harvey.)
+
+ * numbers.c (scm_number_to_string): Signal an error if radix is
+ less than two. (Thanks to Jorgen Schaefer.)
+
+ * Makefile.am (EXTRA_libguile_la_SOURCES): Add memmove.c here,
+ so automake will actually generate rules for it.
+ * Makefile.in: Regenerated.
+
+1999-09-21 Jim Blandy <jimb@savonarola.red-bean.com>
+
+ * backtrace.c: #include "_scm.h" before testing whether
+ HAVE_UNISTD_H is #defined.
+
+1999-09-20 Jim Blandy <jimb@savonarola.red-bean.com>
+
+ * read.c (scm_read): Don't assume that scm_cur_inp is always open.
+ * ports.c (scm_read_char): Same.
+ * ioext.c (scm_read_line): Same.
+ (Thanks to Bernard Urban.)
+
+1999-09-21 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * vectors.c (scm_vector_move_right_x): Bugfix: Remove side effect
+ in SCM_ASSERT macro.
+ numbers.c: Removed #ifndef SCM_RECKLESS at places where type
+ checking may invoke a generic. (Thanks to Michael Livshin.)
+
+ * __scm.h (SCM_WTA_DISPATCH_0, SCM_GASSERT0): New macros.
+
+ * numbers.c (scm_max, scm_min, scm_sum, scm_difference,
+ scm_product, scm_divide): Bugfix: Don't pass SCM_UNDEFINED to the
+ generic function if the asubr is called with only one arg.
+
+1999-09-20 Gary Houston <ghouston@freewire.co.uk>
+
+ * scmsigs.c (scm_sigaction): add SA_RESTART to flags only if
+ HAVE_RESTARTABLE_SYSCALLS.
+ (scm_init_scmsigs): use siginterrupt if it's available. not
+ everyone who has restartable syscalls has SA_RESTART it seems.
+
+ (scm_sigaction): use scm_num2long/scm_long2num when converting
+ SIG_DFL/SIG_IGN, in case it doesn't fit in an INUM. use
+ scm_integer_p to test the type.
+
+1999-09-18 Gary Houston <ghouston@freewire.co.uk>
+
+ * _scm.h, scmsigs.c: replace HAVE_RESTARTS with
+ HAVE_RESTARTABLE_SYSCALLS.
+
+ * strports.c (scm_strport_to_string): create the string from
+ pt->read_buf instead of an expression that evaluates to the
+ same thing.
+
+ * gdbint.c (gdb_print): don't just use SCM_CHARS to get a C string
+ from the port: the port's buffer may not be NUL terminated.
+
+1999-09-16 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
+
+ * Makefile.am (.c.x): Added missing semicolon after `false'.
+
+1999-09-15 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * print.c (scm_iprin1): Turn `write' and `display' into
+ primitive generics and use their associated generic functions in
+ scm_iprin1 for GOOPS objects.
+
+ * backtrace.c: #include <unistd.h> if present.
+
+1999-09-14 Jim Blandy <jimb@savonarola.red-bean.com>
+
+ * Makefile.am (.c.x): Don't create a subshell just to delete the
+ .x file and return false.
+ * Makefile.in: Regenerated.
+
+1999-09-13 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * feature.c (scm_create_hook): New function. Replaces
+ scm_make_named_hook which is now deprecated.
+ (scm_make_hook_with_name): New primitive.
+ (print_hook): Hooks now print in a fancy way.
+
+1999-09-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * __scm.h, backtrace.c, backtrace.h, debug.c, debug.h, dynl-dld.c,
+ dynwind.c, dynwind.h, eval.h, evalext.c, evalext.h, feature.c,
+ feature.h, hashtab.c, hashtab.h, objects.c, objects.h, print.c,
+ procs.c, procs.h, smob.c, smob.h, srcprop.c, strorder.c, struct.c,
+ struct.h: Updated copyright notices.
+
+ * srcprop.c (scm_source_property): Bugfix: Use SCM_NECONSP instead
+ of SCM_NCONSP. (Thanks to Greg Badros.)
+
+ * gsubr.c (scm_make_gsubr): Use scm_make_subr_opt for creation of
+ the self subr.
+
+ * eval.c, debug.h (SCM_BACKTRACE_WIDTH): New debug option: width.
+
+ * backtrace.c: Keep backtraces within specified width by
+ adaptively adjusting fancy printing parameters and cut output if
+ necessary.
+ (scm_display_application): Check args.
+
+1999-09-11 Jim Blandy <jimb@savonarola.red-bean.com>
+
+ Change the name of the objects returned by OPENDIR from
+ "directory" to "directory stream". A predicate named "directory?"
+ would be confusing.
+ * filesys.c (scm_directory_stream_p): Renamed from scm_directory_p.
+ At the Scheme level, "directory?" -> "directory-stream?".
+ (scm_dir_print): Use the phrase "directory stream" in printed form.
+ * filesys.h (scm_directory_stream_p): Prototype renamed
+ accordingly.
+
+ * Makefile.am (CLEANFILES): Remove versiondat.h; that should only
+ be removed by `make distclean', since it's generated by configure.
+ * Makefile.in: Regenerated.
+ (Thanks to Robert Bihlmeyer.)
+
+ * strop.c (scm_substring_move_x): Signal an error if start1
+ doesn't come before end1. (Thanks to Karoly Lorentey).
+
+ * numbers.c (scm_istr2flo): Don't call SCM_INEXP without first
+ calling SCM_NIMP. (Thanks to Karoly Lorentey).
+
+ * version.c (scm_libguile_config_stamp): Deleted. See
+ corresponding change to ../ice-9/boot-9.scm.
+ * versiondat.h.in: Remove definition for GUILE_STAMP.
+ * version.h: Delete prototype.
+ * Makefile.in: Regenerated.
+
+1999-09-11 Gary Houston <ghouston@easynet.co.uk>
+
+ * filesys.c (scm_directory_p): new procedure "directory?" Returns
+ a boolean indicating whether its argument is a directory
+ port as returned by opendir (thanks to Dirk Herrmann for the
+ suggestion.)
+
+1999-09-11 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * backtrace.c (display_frame_expr): Don't print a newline.
+ (display_frame): Print the newline here instead.
+ (display_backtrace_body): Don't print "Backtrace:".
+ (scm_backtrace): Print "Backtrace:" here instead.
+
+1999-09-09 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * procs.c (scm_setter): Signal WTA if handed an entity or operator
+ lacking a setter.
+
+ * feature.c, feature.h: (scm_hook_p, scm_hook_empty_p): New
+ primitives. (Thanks to Greg Badros);
+ (scm_hook_to_list): New primitive; Hooks are now smobs.
+
+1999-09-08 Gary Houston <ghouston@easynet.co.uk>
+
+ * stime.c (bdtime2c): rewrite the ASSERTs. Accept a value
+ of #f for the 10th vector element to avoid an exception
+ seen by Bernard Urban.
+ (scm_mktime): unneeded ASSERT removed.
+
+1999-09-07 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
+
+ * eval.c (scm_map, scm_for_each): Converted to dispatch on generic
+ if args don't match.
+
+ * __scm.h (SCM_WTA_DISPATCH_n, SCM_GASSERTn): New macros.
+
+1999-09-06 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * numbers.c: Converted comparison operations to dispatch on
+ generic if args don't match.
+
+ * Makefile.am (ETAGS_ARGS): Added support for GPROC and GPROC1.
+
+1999-09-06 James Blandy <jimb@mule.m17n.org>
+
+ * guile-snarf.c: Deleted. Snarfing should respect CPP
+ conditionals, so it needs to actually run CPP. Bleah.
+
+1999-09-05 James Blandy <jimb@mule.m17n.org>
+
+ Handle errors properly in guile-snarf. (Thanks to Han-Wen Nienhuys.)
+ * guile-snarf.in: Be sure to exit with an error if CPP does.
+ * Makefile.am (.c.x): Delete the .x file and exit with an error
+ status if guile-snarf exits with an error status.
+ * Makefile.in: Regenerated.
+
+ * snarf.h (SCM_GLOBAL_KEYWORD): Call scm_c_make_keyword, not
+ scm_makekey, which doesn't exist any more. Guess nobody's using
+ this.
+
+ * guile-snarf.c: New implementation of guile-snarf, meant to be
+ more robust than the shell script. I think it's complete, but I
+ haven't tested it at all, and I haven't changed the build process
+ to actually use it. We should compare its output against that of
+ the existing shell script, for all source files.
+
+ * guile-snarf.c (parse_args): Abort if we haven't handled some
+ character type.
+
+1999-09-03 James Blandy <jimb@mule.m17n.org>
+
+ * load.c (scm_search_path): If the filename has any extension at
+ all, ignore the entire list of extensions. Also, don't check whether
+ the file is accessible. If the file exists, accessible or not, we
+ should return it. Inaccessible files should cause an error later.
+ (Thanks to Keisuke Nishida for the suggestions.)
+
+1999-09-02 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
+
+ * gc.c (cleanup, scm_init_storage): Use on_exit if present and
+ atexit not available. (sunos4.1.4 needs it.)
+
+1999-09-01 James Blandy <jimb@mule.m17n.org>
+
+ I take it all back --- bcopy does handle overlapping source and
+ destination areas correctly. At least on every system I could
+ find. But it is better to use AC_REPLACE_FUNCS than to introduce
+ new CPP conditionals.
+ * memmove.c: New file, implementing memmove in terms of bcopy.
+ * scmconfig.h.in: Regenerated.
+
+ Allocators should use the `void *' type for generic pointers.
+ * gc.c (scm_must_malloc, scm_must_realloc, scm_must_free): Change
+ argument and return types.
+ * gc.h: Corresponding changes to prototypes.
+ (Thanks to Forcer.)
+
+1999-08-31 James Blandy <jimb@mule.m17n.org>
+
+ * numbers.c (scm_init_numbers): Claim to support the `complex'
+ feature, as expected by (ice-9 format). (Thanks to Ceri Storey.)
+
+ * Makefile.am (check-local): Set GUILE_LOAD_PATH so the tests can
+ find (ice-9 boot-9) when Guile was compiled in a separate
+ directory from the source. (Thanks to Rodney Brown.)
+ * Makefile.in: Regenerated.
+
+ * procs.c (scm_make_subr_opt): Fix typo. Remember to multiply
+ table lengths by the size of a single element when growing the
+ table. (Thanks to Bill Schottstaedt.)
+
+1999-08-30 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * eval.c (SCM_CEVAL): Duplicated the method dispatch code at the
+ SCM_IM_DISPATCH form instead of calling scm_mcache_lookup_cmethod
+ since that cuts down the time for type dispatch by 50%.
+
+1999-08-30 James Blandy <jimb@mule.m17n.org>
+
+ * gh_data.c (gh_set_substr): Revert change of 1999-08-29; bcopy is
+ not a correct substitute for memmove, because it doesn't handle
+ overlapping source and destination areas on many platforms.
+ Overlaps are the primary reason to use memmove in the first place.
+ * ports.c (scm_ungetc): Same.
+ * strop.c (scm_substring_move_x): Same.
+
+1999-08-30 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
+
+ * gc.c (scm_init_storage): Skip registration of cleanup on systems
+ which lack atexit. (Is it important that cleanup is made
+ properly? Maybe we should replace all `exit' with `scm_exit' and
+ call cleanup there?)
+
+ * struct.c, struct.h (scm_struct_free_0, scm_struct_free_light,
+ scm_struct_free_standard, scm_struct_free_entity): Declared to
+ return scm_sizet instead of size_t.
+
+ * gdbint.c, strports.c: #include <unistd.h>. (SEEK_SET is defined
+ there on sunos4.1.4.)
+
+1999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * numbers.c (scm_lcm): Bugfix: BIGDIG --> SCM_BIGDIG;
+ Account for the case when second argument is unbound.
+
+ * strorder.c (scm_string_less_p, scm_string_ci_less_p): Bugfix.
+ (Thanks to Karoly Lorentey.)
+
+ * gh_data.c, ports.c, strop.c: Alternatively use bcopy if memmove
+ isn't present. (Thanks to Suzuki Toshiya.)
+
+ * ports.c: Use ANSI C prototypes in definitions. (Thanks to
+ Bernard Urban.)
+
+ * filesys.c (scm_stat2scm): Conditionally use S_ISLNK. (Thanks to
+ Bernard Urban.)
+
+ * dynl-dl.c (RTLD_GLOBAL): Define if non-existent. (Thanks to
+ Bernard Urban and Ian Grant.)
+
+ * Makefile.am (libguile_la_LDFLAGS): Bumped libguile version
+ again. (1.3.4 will be binary incompatible with 1.3.2 because of a
+ change in the representation of entities and operators.)
+
+1999-08-29 Gary Houston <ghouston@easynet.co.uk>
+
+ * ports.c (scm_ungetc): bugfix: if putback_buf is NULL
+ don't allocate zero bytes (thanks to Bill Schottstaedt).
+
+1999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * procs.c (scm_setter): Converted to use generic dispatch.
+
+ * eval.c, eval.h: Bugfix: scm_sym_apply was not initialized
+ correctly.
+
+ * load.c (scm_search_path): Don't try extensions which already are
+ present at the end of the filename.
+ (scm_init_load): Check .scm first. (Thanks to Keisuke Nishida.)
+
+ * stacks.c (scm_sym_apply): Removed. (Thanks to Ken Raeburn.)
+
+ Cleanup and simplification of generic method dispatch.
+ Also, the quadruple representation of entity and operator
+ procedures has been replaced with single.
+
+ * tags.h (SCM_IM_HASH_DISPATCH): Removed.
+
+ * print.c (scm_isymnames): Removed #@hash-dispatch.
+
+ * objects.c, objects.h (scm_mcache_lookup_cmethod): Moved here
+ from eval.c; Support 0 arity methods.
+ (scm_set_object_procedure_x): Removed scm_sym_atdispatch;
+ (scm_apply_generic_env): Removed.
+ Replaced slots proc0-3 with procedure.
+
+ * objects.h (SCM_OPERATOR_PROC_0, SCM_OPERATOR_PROC_1,
+ SCM_OPERATOR_PROC_2, SCM_OPERATOR_PROC_3): Replaced by
+ SCM_OPERATOR_PROCEDURE.
+ (SCM_ENTITY_PROC_0, SCM_ENTITY_PROC_1, SCM_ENTITY_PROC_2,
+ SCM_ENTITY_PROC_3): Replaced by SCM_ENTITY_PROCEDURE.
+
+ * struct.c, struct.h: Replace 4 procedure slots with one.
+ (scm_struct_i_procedure): Replaces scm_struct_i_procedure.
+
+ * gc.c (scm_gc_mark): Mark 1 procedure slot in entities instead of
+ 4.
+
+ * eval.c (scm_sym_args): Removed.
+ (SCM_CEVAL): Simplified entity application.
+ Moved dispatch code to objects.c.
+
+ * procprop.c (scm_i_procedure_arity): Bugfix: Handle generics.
+
+1999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * sort.c (closureless): Use scm_eval_body.
+
+ * eval.c (SCM_APPLY): Fixed serious evaluator bug: If a closure
+ with a symbol as last form was first called normally and then via
+ `map' or some other mechanism using primitive apply, an ILOC was
+ returned.
+
+1999-08-26 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ This change extends the representation of primitive procedures
+ with more data fields, e.g. a place for documentation and true
+ procedure properties.
+
+ * procs.c, procs.h (scm_subr_entry): New type: Stores data
+ associated with subrs.
+ (SCM_SUBRNUM, SCM_SUBR_ENTRY, SCM_SUBR_GENERIC, SCM_SUBR_PROPS,
+ SCM_SUBR_DOC): New macros.
+ (scm_subr_table): New variable.
+ (scm_mark_subr_table): New function.
+
+ * init.c (scm_boot_guile_1): Call scm_init_subr_table.
+
+ * gc.c (scm_gc_mark): Don't mark subr names here.
+ (scm_igc): Call scm_mark_subr_table.
+
+
+ This change implements a scheme for letting a generic work as a
+ shadow for a primitive procedure. If the primitive procedure
+ can't dispatch on its arguments, control is left over to the
+ generic. Normal wrong type arg errors will be generated until the
+ user has hung the first method on the primitive.
+
+ * snarf.h (SCM_GPROC, SCM_GPROC1): New macros.
+
+ * procs.c, procs.h (scm_subr_p): New function (used internally).
+
+ * gsubr.c, gsubr.h (scm_make_gsubr_with_generic): New function.
+
+ * objects.c, objects.h (scm_primitive_generic): New class.
+
+ * objects.h (SCM_CMETHOD_CODE, SCM_CMETHOD_ENV): New macros.
+
+ * print.c (scm_iprin1): Print primitive-generics.
+
+ * __scm.h (SCM_WTA_DISPATCH_1, SCM_GASSERT1,
+ SCM_WTA_DISPATCH_2, SCM_GASSERT2): New macros.
+
+ * eval.c (SCM_CEVAL, SCM_APPLY): Replace scm_wta -->
+ SCM_WTA_DISPATCH_1 for scm_cxr's (unary floating point
+ primitives). NOTE: This means that it is now *required* to use
+ SCM_GPROC1 when creating float scm_cxr's (float scm_cxr's is an
+ obscured representation that will be removed in the future anyway,
+ so backward compatibility is no problem here).
+
+ * numbers.c: Converted most numeric primitives (all but bit
+ comparison operations and bit operations) to dispatch on generic
+ if args don't match.
+
+
+ Better support for applying generic functions.
+
+ * eval.c, eval.h (scm_eval_body): New function.
+
+ * objects.c (scm_call_generic_0, scm_call_generic_1,
+ scm_call_generic_2, scm_call_generic_3, scm_apply_generic): New
+ functions.
+
+
+ Optimization of the generic function dispatch mechanism.
+
+ * eval.c (SCM_CEVAL): Apply the cmethod directly after having
+ called scm_memoize_method instead of doing a second lookup.
+
+ * objects.h (scm_memoize_method): Now returns the memoized cmethod.
+
+
+ Bugfix
+
+ * procs.c (scm_make_subr_opt): Use scm_sysintern0 instead of
+ scm_sysintern so that the binding connected with the subr name
+ isn't cleared when we give set = 0.
+
+
+1999-08-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ More transparent handling of ports with print states.
+
+ * print.h (SCM_PORT_WITH_PS_P, SCM_PORT_WITH_PS_PORT,
+ SCM_PORT_WITH_PS_PS): Represent ports with print states as a smob
+ instead of a pair of a port and a print state. We'll need to cons
+ once extra in scm_printer_apply but the type system will be
+ cleaner, it will mix better with GOOPS, and, it will be even more
+ transparent to the user.
+
+ * print.c (scm_get_print_state): New procedure: Given an output
+ port, return the print state associated to it in the current print
+ chain, if one exists;
+ (scm_port_with_print_state): New procedure: Associate a
+ print-state with a port.
+ (scm_valid_oport_value_p): Use SCM_PORT_WITH_PS_P;
+ (scm_printer_apply): Wrap port and pstate as a smob;
+ (print_state_printer): Removed.
+
+ * objects.c (scm_class_of): Treat scm_tc16_port_with_ps as ports.
+
+ * eval.c (scm_init_eval): Use scm_make_smob_type instead of
+ scm_newsmob.
+
+ * ports.c (scm_output_port_p): Bugfix: Coerce output port before
+ testing (otherwise the port-print-state trick won't be transparent
+ to the user; one example where this caused problems was in the
+ (ice-9 format) module).
+
+1999-08-23 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * eval.c (SCM_CEVAL): Let the SCM_IM_SLOT_SET_X form return
+ SCM_UNSPECIFIED instead of the set value.
+
+1999-08-20 James Blandy <jimb@mule.m17n.org>
+
+ * load.c (scm_init_load_path): Remove support for SCHEME_LOAD_PATH.
+
+ * ports.h (enum scm_port_rw_active): New enum, containing
+ SCM_PORT_READ, SCM_PORT_WRITE, and SCM_PORT_NEITHER (instead of
+ zero). The debugger knows about enums, but doesn't know about
+ #defines.
+ (typedef scm_port): Declare rw_active member to be an enum
+ scm_port_rw_active.
+ * fports.c (fport_flush, fport_end_input): Use SCM_PORT_NEITHER
+ instead of zero.
+ * ports.c (scm_add_to_port_table): Same.
+ * strports.c (st_flush, st_end_input): Same.
+
+ * ioext.c (scm_do_read_line, scm_read_line): Use scm_must_malloc,
+ scm_must_realloc, and scm_done_malloc as appropriate.
+
+1999-08-20 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * sort.c (quicksort): Added condition to protect the algorithm
+ from crashing the interpreter if the less predicate is buggy.
+
+1999-08-19 Gary Houston <ghouston@easynet.co.uk>
+
+ * fports.c (fport_write): fix line-buffering mode again.
+ (scm_open_file): recognise 'l' for line-buffering.
+ (scm_setvbuf): recognise _IOLBF for line-buffering.
+
+1999-08-19 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * Makefile.am (libguile_la_LDFLAGS): Increased the version number
+ of libguile to 5.0.
+
+ * eval.c (SCM_APPLY), sort.c (closureless): Expand body when
+ evaluating closures.
+
+1999-08-18 Gary Houston <ghouston@easynet.co.uk>
+
+ * fports.c (fport_write): use memcpy instead of strncpy, in case
+ the data contains NUL.
+
+1999-08-17 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * gh.h (gh_vector_to_list): Bugfix. (Thanks to Frank Cieslok.)
+
+ * backtrace.c, debug.c, eval.c, eval.h, gsubr.c, procprop.h,
+ read.c, srcprop.c, srcprop.h (scm_i_filename, scm_i_line,
+ scm_i_column, scm_i_copy, scm_i_name, scm_i_lambda, scm_i_source,
+ scm_i_more, scm_i_procname, scm_i_dot, scm_i_arrow, scm_i_else,
+ scm_i_unquote, scm_i_uq_splicing, scm_i_apply, scm_i_enter_frame,
+ scm_i_apply_frame, scm_i_exit_frame, scm_i_trace, scm_i_quote,
+ scm_i_begin, scm_i_if, scm_i_and, scm_i_or, scm_i_case,
+ scm_i_cond, scm_i_letstar, scm_i_do, scm_i_quasiquote,
+ scm_i_define, scm_i_letrec, scm_i_let, scm_i_atapply,
+ scm_i_atcall_cc, scm_i_breakpoint): Renamed: Consequently use
+ scm_sym_ as prefix for symbols.
+
+ * debug.c (scm_i_proc, scm_i_args, scm_i_eval_args): Removed.
+
+ * eval.c, eval.h (scm_sym_begin, scm_sym_if, scm_sym_and,
+ scm_sym_case, scm_sym_cond, scm_sym_letstar, scm_sym_do,
+ scm_sym_define, scm_sym_letrec, scm_sym_atapply,
+ scm_sym_atcall_cc): Made global.
+
+1999-08-16 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * eval.c (scm_sym_args): Made global.
+
+ * objects.c (scm_set_object_procedure_x): Disallow setting of
+ procedures for pure generic functions.
+
+1999-08-12 Gary Houston <ghouston@easynet.co.uk>
+
+ * ports.c (scm_seek): one more: was scm_lseek. Also changed the
+ Scheme name from lseek to seek, but lseek was added recently so
+ it shouldn't be a big problem.
+ * ports.c, gdbint.c, ioext.c: changed callers.
+
+1999-08-11 Gary Houston <ghouston@easynet.co.uk>
+
+ * fports.c (fport_input_waiting): if select is used, return 1
+ instead of whatever FD_ISSET expands to. maybe it will be useful
+ to interpret the value from the input_waiting ptob procedure as a
+ lower bound on the number of bytes available.
+
+ * Mikael asked for a few names to be changed...
+
+ * ports.c (scm_make_port_type): take the write procedure as the
+ second argument instead of the flush procedure.
+ * ports.h (scm_ptob_descriptor): rename the ptob procedures:
+ fflush -> flush, read_flush -> end_input, fclose -> close,
+ fill_buffer -> fill_input, ftruncate -> truncate,
+ input_waiting_p -> input_waiting.
+
+ * ports.c (end_input_void_port): was read_flush_void_port.
+ (scm_set_port_end_input): was scm_set_port_flush_input.
+ (scm_set_port_flush): was scm_set_port_write.
+ (scm_set_port_input_waiting): was scm_set_port_input_waiting_p
+ (scm_end_input): was scm_read_flush.
+ (scm_fill_input): was scm_fill_buffer.
+ (scm_flush): was scm_fflush.
+ * fports.c (fport_input_waiting): renamed from fport_input_waiting_p.
+ (fport_end_input): was local_read_flush.
+ (fport_flush): was local_fflush.
+ (fport_close): was local_fclose.
+ (fport_truncate): was local_ftruncate.
+ (fport_seek): was local_seek.
+ (fport_free): was local_free.
+ (fport_fill_input): was fport_fill_buffer.
+ * strports.c (st_end_input): was st_read_flush.
+ (st_truncate): was st_ftruncate.
+ * vports.c: (sf_flush): was sfflush.
+ (sf_close): was sfclose.
+ (sf_fill_input): was sf_fill_buffer.
+
+ * ports.c, fports.c, strports, vports.c, ioext.c, unif.c, filesys.c:
+ change callers.
+
+1999-08-06 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * eval.c (SCM_IM_DISPATCH): Rewrote dispatch protocol. Dispatch
+ forms now contain the expressions to be dispatched upon instead of
+ depending on a surrounding lambda or let; Generic function
+ dispatch has been optimized; `apply' on a generic function now
+ works a little bit strangely. It uses a trick so that the type
+ dispatch code in SCM_CEVAL can be reused.
+
+ * objects.h, objects.c (scm_apply_generic_env): Added (used by
+ apply).
+ (scm_operator_p): Added.
+ (scm_sym_atdispatch): Added.
+ (scm_set_object_procedure_x): Modified to handle the new style
+ generic functions.
+ (scm_object_procedures): New debugging procedure.
+
+1999-08-05 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * eval.c, eval.h (scm_sym_args): Added.
+
+ * objects.h (SCM_CLASSF_PURE_GENERIC): Added.
+
+ * feature.c, feature.h (scm_c_run_hook): Added.
+
+ * eval.c (SCM_CEVAL:SCM_IM_DISPATCH): Bugfix: Jump back to
+ cdrxnoap and loopnoap instead of begin and loop.
+
1999-08-04 Gary Houston <ghouston@easynet.co.uk>
* ports.c (scm_putc, scm_puts),
1999-07-04 Gary Houston <ghouston@easynet.co.uk>
- * unif.c (scm_uniform_array_write): likewise.
- * ioext.c (scm_redirect_port): likewise.
* ports.c (scm_putc): call scm_read_flush.
(scm_puts): likewise.
(scm_lfwrite): likewise.
(scm_lseek): likewise.
(scm_ftruncate): likewise.
+ * unif.c (scm_uniform_array_write): likewise.
+ * ioext.c (scm_redirect_port): likewise.
* ports.c (scm_fill_buffer): don't take pt argument. change callers.
(read_flush_void_port): new proc, for void port ptob.
* ports.h (SCM_BUFLINE): New flag for ports.
* init.c (scm_init_standard_ports): Request line-buffering on
the standard output port.
-* * ports.c (scm_mode_bits): Recognize 'l' as a request for line
+ * ports.c (scm_mode_bits): Recognize 'l' as a request for line
buffering.
(scm_putc, scm_puts, scm_lfwrite): If the port is line-buffered,
and there's a newline to be written, flush the port.
ports.h (scm_ptobfuns): add ftruncate.
ports.c (scm_newptob): set ftruncate.
adjust ptob tables.
-* ports.c (scm_ftruncate): new procedure.
+ ports.c (scm_ftruncate): new procedure.
fports.c (local_ftrunate), strports.c (str_ftruncate): new procs.
strports.c (st_seek, st_grow_port): new procs.
fports.h (scm_port): change size types from int to off_t.
1999-04-20 Gary Houston <ghouston@easynet.co.uk>
* ports.c (scm_newptob): bugfix: set seek member.
-* * (scm_lseek): new procedure, using code from ioext.c:scm_fseek
+ * (scm_lseek): new procedure, using code from ioext.c:scm_fseek
and generalised to all port types.
1999-04-18 Gary Houston <ghouston@easynet.co.uk>
* fports.c (scm_fdes_to_port), ports.c (scm_void_port),
filesys.c (scm_opendir):
restore defer interrupts while the port is constructed.
-* (scm_setvbuf): if mode is _IOFBF and size is not supplied,
+ (scm_setvbuf): if mode is _IOFBF and size is not supplied,
derive buffer size from fdes or use a default.
(scm_fdes_to_port): use setvbuf instead of creating the buffers
directly.
* ports.c (scm_force_output): call scm_fflush.
* print.c (scm_newline): don't check errno for EPIPE (it wouldn't
-* reach this point.) don't flush port (if scm_cur_outp).
+ reach this point.) don't flush port (if scm_cur_outp).
* fports.h (SCM_FPORT_FDES): new macro.
proc runs.
*fports.c (print_pipe_port, local_pclose, scm_pipob): deleted.
-* open-pipe, close-pipe are emulated in (ice-9 popen)
+ open-pipe, close-pipe are emulated in (ice-9 popen)
ports.c (scm_ports_prehistory): don't init scm_pipob.
ports.h (scm_tc16_pipe): deleted.
posix.c (scm_open_pipe, scm_close_pipe): deleted.
(scm_setvbuf): set the buffer.
(scm_setfileno): deleted.
(scm_evict_ports): set fdes directly.
-* (scm_freopen): deleted. doesn't seem useful in Guile.
+ (scm_freopen): deleted. doesn't seem useful in Guile.
(scm_stdio_to_port): deleted.
fports.h (struct scm_fport): add shortbuf member to avoid separate
code for unbuffered ports.
new members.
* init.c (scm_init_standard_ports): pass fdes instead of FILE *.
-* * ports.c (scm_drain_input): new procedure.
+ * ports.c (scm_drain_input): new procedure.
ports.h: prototype.
* fports.c (FPORT_READ_SAFE, FPORT_WRITE_SAFE, FPORT_ALL_OKAY,
pre_read, pre_write): removed.