+1999-05-09 Jim Blandy <jimb@savonarola.red-bean.com>
+
+ * strop.c (scm_string_capitalize_x): Use the SCM object `s' in
+ error messages, not the uninitialized string `str'. Love that
+ typechecking.
+
+ * strop.c (scm_substring_move_x): New function, which can handle
+ arbitrary overlapping substrings.
+ (substring-move-left!, substring-move-right!): These are
+ now just synonyms for substring-move!.
+ * strop.h (scm_substring_move_x): New prototype.
+ (scm_substring_move_left_x, scm_substring_move_right_x):
+ #define these as synonyms for scm_substring_move_x.
+
+ Fixes, cleanups, and new functions from Greg Harvey.
+
+ 1999-05-03 Greg Harvey <Greg.Harvey@thezone.net>
+
+ * strop.c (scm_string_capitalize_x, scm_string_capitalize): new
+ functions; capitalize the first letter of each word in the
+ argument string, and downcase the rest.
+ (scm_string_ci_to_symbol): string->symbol, such that the same
+ symbol is returned for any argument where the only difference
+ between strings is in capitalization.
+ (scm_string_upcase, scm_string_downcase): non-destructive
+ versions.
+
+ 1999-01-13 Greg Harvey <Greg.Harvey@thezone.net>
+
+ * strop.c (scm_substring_move_left_x, scm_substring_move_right_x):
+ changed to use memmove.
+ * strop.c (scm_i_index): removed the pos arguments (it's only
+ called twice, and each time it's SCM_ARG1, SCM_ARG2, SCM_ARG3,
+ SCM_ARG4).
+
+ 1999-01-11 Greg Harvey <Greg.Harvey@thezone.net>
+
+ * strop.h: fixed prototypes.
+
+ * strop.c (scm_substring_move_left_x, scm_substring_move_right_x):
+ changed to have 5 required args, rather than 2 required, and 3 required
+ rest args. Also modified to allow str1 & str2 to overlap.
+ (scm_substring_fill_x): changed to 4 args, rather than 2 args and
+ 2 required rest args.
+
+1999-05-02 Jim Blandy <jimb@savonarola.red-bean.com>
+
+ * procs.h: Doc fix.
+
+ * Makefile.am (modinclude_HEADERS): Add kw.h, so the new version
+ gets installed.
+ * Makefile.in: Regenerated.
+
+ * numbers.c: If we're supporting floating-point, provide the
+ feature "inexact".
+
+ * scmconfig.h.in: Regenerated; see today's change to
+ ../configure.in.
+
+1999-04-17 Jim Blandy <jimb@savonarola.red-bean.com>
+
+ * Makefile.in: Regenerated.
+
+ Remove readline support, to avoid copyright confusion.
+ * Makefile.am: Remove readline files from lists.
+ * init.c: Don't initialize readline.
+ * scmconfig.h.in: Regenerated.
+
+ * numbers.c (s_bignum): Renamed to s_bignum, and made static.
+ Libguile should not be exporting random little strings.
+ * numbers.h (s_bignum): Extern declaration removed.
+
+ More const changes from Ken Raeburn.
+ * numbers.c (scm_s_bignum, fx): Now const.
+ (scm_logtab, scm_ilentab, s_adjbig): Now static and const.
+ * numbers.h (scm_s_bignum): Update declaration.
+ * eval.c (bodycheck): Argument WHAT now points to const.
+ * snarf.h (SCM_SYNTAX): Name is const.
+
+ * eval.c (scm_i_let): Make this globally visible, to avoid dynamic
+ linking crashes on NetBSD. (Thanks to Ken Raeburn.)
+
+1999-03-26 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * numbers.c (isfinite): Define this macro if not defined: Return a
+ non-zero value if X is finite. (From ISO C 9x standard.)
+ (scm_inexact_to_exact): Bugfix: Don't pass NaNs to scm_dbl2big.
+ (Thanks to Jon Trowbridge and Greg Harvey.)
+
+1999-03-22 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
+
+ * keywords.c (scm_tc16_kw): Added for backward compatibility.
+ Will be removed in next release.
+
+ * Makefile.am (modinclude_HEADERS): Added kw.h;
+
+ * kw.h: New file.
+
+ * libguile.h: #include "libguile/kw.h"
+
+1999-03-22 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * pairs.c (scm_set_car_x, scm_set_cdr_x): Return SCM_UNSPECIFIED.
+
+1999-03-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * print.c (scm_isymnames): Added #@dispatch and #@hash-dispatch.
+
+ * hashtab.c, hashtab.h (scm_hash_fold, scm_internal_hash_fold):
+ Place the table argument last.
+
+1999-03-19 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
+
+ * modules.c: #include "procprop.h"
+ (scm_system_module_env_p): Assume root environment is no lookup
+ closure is found.
+
+ * debug.c, eval.c, evalext.c, gdbint.c stacks.c:
+ #include "modules.h".
+
+ * modules.c, modules.h, eval.c, eval.h (scm_env_top_level,
+ scm_top_level_env, scm_system_module_env_p): Moved to modules.c.
+
+ * eval.c, eval.h (scm_top_level_lookup_closure): Removed.
+
+1999-03-18 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
+
+ * error.c (scm_wta): Pass SCM_LIST1 (arg) instead of SCM_EOL to
+ scm_misc_error when pos is a string. This allows for dispatching
+ arbitrary error messages with one argument via SCM_ASSERT:
+ SCM_ASSERT (<cond>, obj, "Undigestable object: %S", <subr>);
+
+1999-03-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
+
+ * list.c (scm_reverse): Report an error if given a circular list
+ instead of filling memory.
+ * list.c (scm_reverse_x): Check args.
+
+1999-03-14 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
+
+ Most of this batch of changes is about how to deal with extended
+ types when an object system is loaded into Guile. A nice object
+ system is capable of representing Guile's types as class objects.
+
+ For example, we want a regular expression to be of class <regex>.
+ But regular expressions are smobs which aren't under direct
+ control of the object system, so there has to be some mechanism
+ which informs the object system that a new class should be created
+ which can represent the smob type. I call this a "wrapper class".
+
+ * objects.c: #include "smob.h";
+ (scm_class_keyword): Removed. (Class is automatically created by
+ make_smob_classes.)
+ (scm_smob_class): Array of smob classes indexed by smobnum.
+ (scm_make_extended_class): "Plugin" function pointer for creation
+ of wrapper classes for smob and struct types.
+ (scm_class_of): Handle compiled closures. (Currently regarded as
+ <procedure>.);
+ Use scm_smob_class to handle smob types;
+ Handle scm_tc16_bigpos, scm_tc16_bigneg, and, scm_tc16_keyword
+ through scm_smob_class;
+ Handle structs.
+
+ * smob.c (scm_newsmob): Also create a wrapper class if
+ scm_smob_class has been initialized.
+
+ * smob.h (SCM_TC2SMOBNUM): New macro for conversion between tc16
+ type code and smobnum.
+
+ * struct.c: #include "alist.h", "weaks.h", "hashtab.h";
+ (scm_struct_table): Weak key table with auxilliary information for
+ struct types. Currently used for names and wrapper classes.
+ (scm_struct_ihashq): Hash function for structs.
+ (scm_struct_create_handle): Get/create entry in scm_struct_table.
+ (scm_struct_vtable_name, scm_set_struct_vtable_name_x): Procedures
+ for accessing names of vtables. The record implementation in
+ boot-9.scm currently uses the setter to record the name of record
+ types. When the object system is initialized, it can use this
+ information to create wrapper classes with suitable names.
+ (scm_init_struct): Allocate scm_struct_table.
+ (scm_alloc_struct): Don't initialize scm_struct_i_tag here.
+ (struct tags are a finite resource and we might want to restrict
+ the use of tags to vtables only. E.g., Goops only uses tags for
+ classes.)
+ (scm_make_struct): Use scm_struct_entity_n_extra_words instead of
+ magic number 5.
+ (scm_struct_vtable_tag): Use scm_struct_i_tag instead of magic
+ number -1.
+
+ * struct.h (SCM_STRUCT_TABLE_NAME, SCM_SET_STRUCT_TABLE_NAME,
+ SCM_STRUCT_TABLE_CLASS, SCM_SET_STRUCT_TABLE_CLASS): New macros.
+ Used for access of struct table entries.
+
+ * hashtab.c, hashtab.h (scm_internal_hash_fold): New function.
+ (scm_hash_fold): New procedure. Used to process all entries in a
+ hash table (in no particular order).
+
+ Argh! For the umpteenth time I got compilation errors because of
+ the "intuitive" name `kw'. This has to have an end:
+
+ * Makefile.am, init.c, libguile.h, objects.c, root.h: Replaced
+ "kw" --> "keywords" everywhere.
+ (I doubt that this will cause big compatibility problems since the
+ application interface is unaffected.)
+
+ * keywords.c, keywords.h: Files renamed from kw.c, kw.h.
+
+1999-03-12 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * srcprop.c (scm_set_source_property_x): Bugfix: Convert line and
+ column inums to native form.
+
+ Improvement of backtraces: Introduces a new stack narrowing
+ specifier, #t, for the inner cut. (See further in the comments in
+ stacks.c:narrow_stack ().)
+
+ * procprop.c, procprop.h (scm_sym_system_procedure): New symbol.
+ (Used to flag certain system procedures which shouldn't turn up in
+ backtraces.)
+
+ * eval.c (scm_sym_system_module): New symbol. (Used to flag
+ modules which aren't "user" modules and the code of which
+ shouldn't turn up in backtraces.)
+
+ * eval.c, eval.h (scm_top_level_lookup_closure): New function:
+ Extract the lookup closure from an environment.
+ (scm_system_module_env_p): New function: Return non-#f if MODULE
+ is a system module.
+
+ * stacks.c: #include "eval.h"; #include "procprop.h";
+ (narrow_stack): Handle new narrowing specifier #t.
+
+ * debug.c (scm_procedure_name): Use name property in the default
+ case.
+
+ * gc.c, gc.h (scm_object_address): Renamed from scm_object_addr ().
+
+ * objects.h (scm_si_redefined, scm_si_hashsets): Shifted.
+
+ * eval.c, procs.c, procs.h, procprop.c: Renamed getter ->
+ procedure throughout.
+
+ * print.c (scm_iprin1): Removed extraneous space when printing
+ procedure-with-setters.
+
+ Entity and operator setter slots were introduced as a complement
+ to the <procedure-with-setter> type in order to support entities
+ and operators with setters in a reasonable and efficient way.
+ * procs.c (scm_procedure, scm_setter): Handle entity and operator
+ setter slots.
+
+ * objects.h (SCM_OPERATOR_SETTER, SCM_ENTITY_SETTER): New macros.
+ (struct scm_metaclass_operator): New setter slot.
+
+ * gc.c (scm_gc_mark): Mark struct setter slot.
+
+ * struct.c (scm_make_struct): Allocate one word more for
+ entities and initialize the new slot.
+
+ * struct.h (scm_struct_i_setter): New constant.
+
+1999-03-08 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
+
+ * objects.h (SCM_OBJ_CLASS_REDEF): New macro: Find class slots
+ directly through the instance.
+
+ * objects.c (scm_class_of): Use SCM_OBJ_CLASS_REDEF.
+
+ * gc.c (scm_gc_sweep): Bugfix: Look for SCM_STRUCT_F_LIGHT flag at
+ scm_struct_i_flags instead of scm_vtable_index_layout!
+
+ * list.c (scm_list_star): New procedure.
+
+1999-02-19 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
+
+ * debug.c (scm_init_debug): Added scheme level constant
+ SCM_IM_DISPATCH.
+
+1999-02-12 Jim Blandy <jimb@savonarola.red-bean.com>
+
+ * __scm.h (SCM_FENCE): Fix `asm volatile' warnings for EGCS.
+
+ * gc.c (scm_gc_sweep): Properly properly record the size of a
+ freed structure. (Thanks to Greg Harvey.)
+
+1999-02-07 Jim Blandy <jimb@savonarola.red-bean.com>
+
+ * gc.c (scm_gc_sweep): Properly record the size of a freed
+ structure. (Thanks to Michael Livshin.)
+
+1999-02-06 Jim Blandy <jimb@savonarola.red-bean.com>
+
+ Readline paren matching from Greg Harvey, with modifications from
+ Mikael Djurfeldt:
+
+ * readline.c (in_readline, reentry_barrier_mutex): Make these
+ static.
+
+ * readline.c: #include <sys/time.h> and "iselect.h", so we can
+ control how long we're paused, and threads will run while we're
+ paused.
+ (match_paren, find_matching_paren, init_bouncing_parens): New
+ functions.
+ (scm_init_readline): Call init_bouncing_parens.
+ (scm_readline_opts): Add the bounce-parens option.
+ * readline.h (SCM_READLINE_BOUNCE_PARENS): New readline option.
+ (SCM_N_READLINE_OPTIONS): Adjust.
+
+1999-02-06 Jim Blandy <jimb@zwingli.cygnus.com>
+
+ All the below are changes from Ken Raeburn, to get Guile to use
+ const where it can.
+
+ * chars.c (scm_lowers, scm_uppers, scm_charnames, scm_charnums),
+ eval.c (s_expression, s_test, s_body, s_bindings, s_variable,
+ s_clauses, s_formals): Variables now const.
+
+ * eval.c (promsmob): Now const.
+ * macros.c (macrosmob): Now const.
+ * smob.c (scm_newsmob): Smobfuns argument now points to const.
+ (freecell, flob, bigob): Now const.
+
+ * dynl.c (scm_make_argv_from_stringlist, scm_coerce_rostring),
+ error.c (scm_error, scm_syserror, scm_syserror_msg,
+ scm_num_overflow, scm_out_of_range, scm_wrong_type_arg,
+ scm_memory_error, scm_misc_error, scm_wta), macros.c
+ (scm_make_synt), feature.c (scm_add_feature), filesys.c
+ (scm_input_waiting_p), gc.c (scm_gc_start, scm_igc,
+ scm_must_malloc, scm_must_realloc), gsubr.c (scm_make_gsubr),
+ numbers.c (scm_num2dbl, scm_two_doubles, scm_num2long,
+ scm_num2long_long, scm_num2ulong),
+ options.c (scm_options), posix.c (scm_convert_exec_args,
+ environ_list_to_c), procs.c (scm_make_subr_opt, scm_make_subr),
+ ramap.c (scm_ramapc), read.c (scm_flush_ws), socket.c
+ (scm_sock_fd_to_port, scm_fill_sockaddr, scm_addr_vector), stime.c
+ (setzone, restorezone, bdtime2c), strop.c (scm_i_index),
+ strports.c (scm_mkstrport), symbols.c (scm_intern_obarray_soft,
+ scm_intern_obarray, scm_intern, scm_intern0,
+ scm_sysintern0_no_module_lookup, scm_sysintern, scm_sysintern0,
+ scm_symbol_value0), unif.c (scm_aind, scm_shap2ra): Argument
+ indicating calling subr, error message text, reason for error,
+ symbol name or feature name are now pointer to const.
+ * snarf.h (SCM_PROC, SCM_PROC1): String variables are now const.
+
+ * procs.c (scm_init_iprocs): iproc argument now points to const.
+ * pairs.c (cxrs): Now const.
+
+ * chars.h, error.h, feature.h, filesys.h, gc.h, gsubr.h, macros.h,
+ numbers.h, options.h, procs.h, ramap.h, read.h, smob.h,
+ strports.h, symbols.h, unif.h: Update variable declarations and
+ function prototypes for above changes.
+
+ * dynl.c, dynl-dld.c, dynl-dl.c, dynl-shl.c (sysdep_dynl_link,
+ sysdep_dynl_unlink, sysdep_dynl_func): Arguments FNAME, SUBR, and
+ SYMB now point to const.
+
+1999-01-30 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * print.c (scm_iprin1): Use scm_procedure_name instead of
+ scm_procedure_property for compiled closures.
+
+ * tags.h (scm_tc7_pws): New procedure type. Four representations
+ for procedure-with-setters were considered before selecting this
+ one:
+
+ 1. A closure where the CODE and ENV slots are used to represent
+ the getter and a new SETTER slot is used for the setter. The
+ original getter is stored as a `getter' procedure property. For
+ closure getters, the CODE and ENV slots contains a copy of the
+ getter's CODE and ENV slots. For subr getters, the CODE contains
+ a call to the subr.
+
+ 2. A compiled closure with a call to the getter in the cclo
+ procedure. The getter and setter are stored in slots 1 and 2.
+
+ 3. An entity (i.e. a struct with an associated procedure) with a
+ call to the getter in the entity procedure and the setter stored
+ in slot 0. The original getter is stored in slot 1.
+
+ 4. A new primitive procedure type supported in the evaluator. The
+ getter and setter are stored in a GETTER and SETTER slot. A call
+ to this procedure type results in a retrieval of the getter and a
+ jump back to the correct eval dispatcher.
+
+ Representation 4 was selected because of efficiency and
+ simplicity.
+
+ Rep 1 has the advantage that there is zero penalty for closure
+ getters, but primitive getters will get considerable overhead
+ because the procedure-with-getter will be a closure which calls
+ the getter.
+
+ Rep 3 has the advantage that a GOOPS accessor can be a subclass of
+ <procedure-with-setter>, but together with rep 2 it suffers from a
+ three level dispatch for non-GOOPS getters:
+
+ cclo/struct --> dispatch proc --> getter
+
+ This is because the dispatch procedure must take an extra initial
+ argument (cclo for rep 2, struct for rep 3).
+
+ Rep 4 has the single disadvantage that it uses up one tc7 type
+ code, but the plan for uniform vectors will very likely free tc7
+ codes, so this is probably no big problem. Also note that the
+ GETTER and SETTER slots can live directly on the heap, using the
+ new four-word cells.
+
+ * procs.c, procs.h (SCM_PROCEDURE_WITH_SETTER_P, SCM_GETTER,
+ SCM_SETTER): New macros.
+ (scm_procedure_with_setter_p, scm_make_procedure_with_setter,
+ scm_getter, scm_setter): New procedures.
+
+ * eval.c, print.c (scm_iprin1): Added entries for scm_tc7_pws.
+
+ * gc.c (scm_gc_mark, scm_gc_sweep): Added case labels for
+ scm_tc7_pws.
+
+ * objects.c, objects.h (scm_class_of,
+ scm_class_procedure_with_setter): Added.
+
+ * procprop.c (scm_i_procedure_arity), procs.c (scm_thunk_p): Added
+ entry for scm_tc7_pws.
+
+ * procs.c (scm_procedure_p): Added case label for scm_tc7_pws.
+
+1999-01-28 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * evalext.c, evalext.h (scm_m_generalized_set_x): New memoizing
+ macro.
+ (scm_init_evalext): Call scm_make_gsubr for
+ scm_m_generalized_set_x.
+
+ * eval.c, debug.c, tags.h (SCM_IM_SET_X): Renamed from SCM_IM_SET.
+
+ * eval.h: Declare scm_s_set_x, scm_sym_set_x;
+
+ * eval.c: Renamed "set" --> "set_x" in various names for
+ consistency of name correspondence between Scheme and C;
+ Renamed scm_i_set_x --> scm_sym_set_x and made global.
+ Renamed s_set_x --> scm_s_set_x and made global.
+
+1999-01-26 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * random.c (scm_i_random_bignum): Made independent of endianness.
+
+1999-01-22 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * eval.c (SCM_CEVAL): Added ENTER_APPLY in code for SCM_IM_APPLY.
+ (Thanks to Eric Hanchrow.)
+
+1999-01-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * objects.c, objects.h (SCM_CLASS_REDEF): Renamed from CLASS_REDEF.
+
+ * random.c: Bugfix: Retrieve and store most significant 32 bits in
+ different order if the machine is bigendian.
+ (scm_init_random): Added safety check for bignum digit size.
+
+1999-01-21 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
+
+ * random.c, random.h (scm_i_make_rstate): New function: Makes
+ scm_rstate from seed.
+ (scm_copy_random_state, scm_seed_to_random_state): New functions.
+ (scm_make_random_state): Removed.
+
+ * random.c (scm_make_random_state): Use scm_i_make_rstate().
+
+1999-01-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * random.c: Bugfix: Retrieve and store most significant 32 bits in
+ different order if the machine is bigendian.
+ (scm_init_random): Added safety check for bignum digit size.
+
+1999-01-11 Roland Orre <mdj@mdj.nada.kth.se>
+
+ * sort.c (scm_merge, scm_merge_list_x): Bugfix: Place elements
+ from first arg before equal elements in second arg in result.
+ (scm_merge_list_step): Bugfix: Don't presume that arguments in a C
+ function call are executed in a well defined order.
+
+1999-01-11 Jim Blandy <jimb@zwingli.cygnus.com>
+
+ * alloca.c (alloca): Cast value returned by malloc. (Thanks to
+ Christian Lynbech.)
+
+1999-01-11 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * random.c: Removed alloca includes.
+
+1999-01-11 Jim Blandy <jimb@zwingli.cygnus.com>
+
+ * Makefile.in: This changed, for some reason I don't really
+ understand, when I ran automake in the top level directory. This
+ may be contamination by Cygnus internal releases. If you re-run
+ automake and this change gets reverted, don't worry about it.
+
+1999-01-10 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
+
+ * sort.c, sort.h: New files: Implement slib's and scsh's sort
+ interfaces. Author: Roland Orre.
+
+ * Makefile.am: Added sort.c, sort.h, sort.x.
+
+ * init.c: #include "sort.h";
+ (scm_boot_guile_1): Call scm_init_sort ().
+
+ * numbers.h: Added #include "libguile/print.h".
+
+ * numbers.c: Formatted according to Guile conventions;
+ Renamed s_bignum --> scm_s_bignum.
+
+ * random.c, random.h: New files: Random number support.
+ Interface same as slib's.
+
+ * Makefile.am: Added random.c, random.h, random.x.
+
+ * init.c: #include "random.h";
+ (scm_boot_guile_1): Call scm_init_random ().
+
+1998-12-23 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
+
+ * Makefile.am: New files: guardians.c, guardians.x, guardians.h
+
+ * guardians.c, guardians.h (scm_make_guardian,
+ scm_guardian_gc_init, scm_guardian_zombify, scm_guard,
+ scm_get_one_zombie, scm_init_guardian): This is an implementation
+ of guardians as described in R. Kent Dybvig, Carl Bruggeman, and
+ David Eby (1993) "Guardians in a Generation-Based Garbage
+ Collector" ACM SIGPLAN Conference on Programming Language Design
+ and Implementation, June 1993 ftp://ftp.cs.indiana.edu
+ /pub/scheme-repository/doc/pubs/guardians.ps.gz
+ Author: Michael N. Livshin.
+
+ * gc.h (SCM_MARKEDP, SCM_NMARKEDP): New macros.
+
+ * gc.c (scm_igc): Call scm_guardian_gc_init and
+ scm_guardian_zombify.
+
+ * init.c (scm_boot_guile_1): Call scm_init_guardian.
+
+1998-12-19 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
+
+ * macros.c (scm_makacro, scm_makmacro, scm_makmmacro): Added
+ argument checking.
+
+1998-12-15 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
+
+ Move the procedure slots of entities to invisible slots (so that
+ we can have operator class objects which themselves are entities).
+ * struct.h (scm_struct_i_proc, scm_struct_i_flags,
+ SCM_STRUCTF_ENTITY): New constants.
+
+ * struct.c (scm_make_struct): Allocate "invisible" room for
+ procedures if SCM_STRUCTF_ENTITY is set in vtable.
+
+ * gc.c (scm_gc_mark): Mark entity procedures.
+
+ * struct.c, struct.h (scm_alloc_struct): Renamed from alloc_struct
+ and made global.
+ (scm_struct_init): Renamed from init_struct and made global.
+
+ * objects.h (SCM_ENTITY, scm_entity): Removed.
+ (SCM_ENTITY_PROC_0, SCM_ENTITY_PROC_0, SCM_ENTITY_PROC_0,
+ SCM_ENTITY_PROC_3): Adjusted for new location of procedure slots.
+
+Mon Dec 14 18:10:12 1998 Maciej Stachowiak <mstachow@mit.edu>
+
+ * snarf.h (SCM_SYNTAX): New macro to allow convenient declaration
+ of syntactic forms, similar to SCM_PROC.
+ * debug.c, eval.c, evalext.c: use SCM_SYNTAX to declare all special
+ forms, and SCM_SYMBOL or SCM_GLOBAL_SYMBOL to delcare C variables
+ for the name symbols when needed.
+
+1998-12-14 Jim Blandy <jimb@zwingli.cygnus.com>
+
+ * Makefile.in: Regenerated.
+
+1998-12-05 Jim Blandy <jimb@zwingli.cygnus.com>
+
+ * pairs.h (SCM_NEWCELL): When DEBUG_FREELIST is defined, don't
+ take the address of _into; it might be a register. Just have
+ scm_debug_newcell return the new cell.
+ * gc.c (scm_debug_newcell): Just return the new cell, instead of
+ taking the address of a place to store it as an argument.
+ * gc.h (scm_debug_newcell): Change declaration.
+ (Thanks to Greg Harvey.)
+
+1998-12-08 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
+
+ * ramap.c (array-copy-in-order!, array-map-in-order): New names.
+ Replaces old names serial-array-copy! and serial-array-map!.
+
+ * evalext.c (map-in-order): New name. Replaces serial-map.
+
+1998-12-05 Jim Blandy <jimb@totoro.red-bean.com>
+
+ * smob.c (freeprint): New function.
+ (freecell): Use it to print freed objects, for slightly easier
+ debugging.
+
+1998-12-04 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * backtrace.c (display_frame): Made more robust. Doesn't throw an
+ error if no source properties can be found for a frame. (Thanks
+ to Christian Lynbech.)
+
+1998-11-27 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * objects.h: Removed slots direct_supers and direct_slots from the
+ definitions of the rudimentary classes described by objects.h.
+
+ * objects.c, objects.h (scm_entity_p): New procedure. Together
+ with the predicates scm_procedure_p and scm_struct_p, this
+ predicate makes it possible to differ between structs, entities
+ and operators.
+
+ * modules.c, modules.h (scm_resolve_module): New function.
+
+1998-11-26 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * objects.h (SCM_METACLASS_STANDARD_LAYOUT,
+ SCM_METACLASS_OPERATOR_LAYOUT): Removed slots `direct_supers' and
+ `direct_slots'.
+
+ * objects.c (scm_entity_p): New procedure.
+
+ * procprop.c (scm_i_procedure_arity): Bugfix: Return correct value
+ for asubrs, rpsubrs, lsubrs and lsubr_2s.
+
+1998-11-26 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
+
+ * procprop.h (scm_i_procedure_arity): Added declaration.
+
+ * procprop.c (scm_i_procedure_arity): Made global; New code to
+ handle operators and entities.
+ (scm_procedure_property): No need to call scm_procedure_p since
+ scm_i_procedure_arity now does all necessary type checking.
+ Added #include "objects.h".
+
+ * feature.c (scm_remove_hook_x): Bugfix: Changed reference to
+ s_add_hook_x --> s_remove_hook_x.
+ (scm_add_hook_x, scm_remove_hook_x): Hooks now takes arguments.
+ Added #include "procprop.h"
+
+ * feature.c, feature.h (scm_reset_hook_x): New procedure.
+ (scm_make_hook): Optional argument defines number of arguments to
+ the hook.
+ (scm_make_named_hook): Take number of args as second arg.
+ (scm_run_hook): Renamed from scm_run_hooks (old name defined in
+ boot-9.scm for a while); First arg is the hook. The rest are
+ arguments passed on to the hook procedures.
+
+1998-11-23 Jim Blandy <jimb@zwingli.cygnus.com>
+
+ * numbers.c (scm_logand, scm_logior, scm_logxor, scm_logtest,
+ scm_logbit_p): Do the computation in ulongs. This is not as nice
+ as doing it in bignums, but at least it's good enough for
+ manipulating flags in 32-bit words. (Thanks to Jim Wilson.)
+
+ * regex-posix.c (scm_regexp_exec): Reliably mark unmatched
+ subexpressions. (Thanks to Charbel Jacquin.)
+
1998-11-23 Mikael Djurfeldt <mdj@kenneth>
* feature.c, feature.h (scm_make_hook, scm_add_hook_x,
1998-11-01 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
- * read.c, read.h (history-length, history-file): New read options.
+ * read.c, read.h (scm_read_opts): New read options
+ "history-length" and "history-file".
(scm_read_options): Stifle history to history length.
- * readline.c (scm_read_history, scm_write_history): New
- procedures.
+ * readline.c (scm_read_history, scm_write_history): New procedures.
1998-10-31 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
scm_macro_name, scm_macro_transformer): Moved from eval.c
(scm_make_synt): Moved from eval.c
- * procs.c, procs.h (scm_procedure_documentation): Moved from
- eval.c.
+ * procs.c, procs.h (scm_procedure_documentation): Moved from eval.c.
* init.c (scm_boot_guile_1): Added calls to scm_init_macros and
scm_init_evalext.