*** empty log message ***
[bpt/guile.git] / libguile / ChangeLog
index d79d45b..4857917 100644 (file)
@@ -1,3 +1,298 @@
+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,
+       scm_remove_hook_x, scm_run_hooks): Moved from ice-9/boot-9.scm.
+       (scm_make_named_hook): New function.
+
+       * feature.c: Added #include "eval.h".
+       
+       * modules.c (scm_make_module): Beautify the module.
+
+1998-11-22  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
+
+       * modules.c, modules.h: New files: C interface to modules.  (This
+       is necessary in order to interface the object system to Guile
+       properly.  The guts of these modules will be replaced by the new
+       module system in the future.)
+       
+       * init.c: Added #include "modules.h"
+       (scm_boot_guile_1): Call scm_init_modules.
+       (invoke_main_func): Call scm_post_boot_init_modules.
+
+       * Makefile.am: Added modules.c, modules.x, modules.h.
+
+1998-11-22  Mikael Djurfeldt  <mdj@kenneth>
+
+       * procs.c: #include "objects.h"
+       (scm_procedure_p): Return #t also on structs which are operators.
+
+       * objects.c (scm_init_objects): Renamed <standard-metaclass>,
+       <operator-metaclass> and <entity-class> to <standard-class>,
+       <operator-class> and <entity> in order to conform with STKlos
+       naming conventions.
+
+       * eval.c (SCM_CEVAL): Jump to badfun if trying to apply a struct
+       which isn't an operator.
+       (SCM_APPLY): Ditto, but jump to badproc.
+
+1998-11-21  Mikael Djurfeldt  <mdj@kenneth>
+
+       * eval.c (SCM_CEVAL): Allow structs implanted in code.
+       Previously, structs implanted in code were interpreted as forms
+       the operator of which was a gloc.  We solve this by checking for
+       the zero in the emulated vcell in the struct vtable.  Since
+       implanted structs always will look like forms with a gloc
+       operator, execution will only be slowed down by maximally one
+       extra test-and-branch per application.
+
+       * evalext.c (scm_definedp): Removed check for isyms; Added a
+       second optional argument: It is now possible to supply an
+       evaluation environment in which to look for the symbol.
+
+1998-11-19  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * readline.c (scm_init_readline): Set
+       rl_basic_word_break_characters.  (Thanks to Ian Grant.)
+
+       * coop.c (coop_condition_variable_wait): Removed
+       (coop_condition_variable_wait_mutex): Folded logic of
+       coop_mutex_unlock into coop_condition_variable_wait_mutex to
+       prevent condvar signal lossage.  Previously, another thread could
+       start to run after unlocking the mutex but before putting the
+       current thread on the wait queue.  If that thread then would
+       signal the first, the signal would be lost.  (Thanks to Christian
+       Lynbech.)
+
+1998-11-17  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * eval.c (SCM_CEVAL): Added missing case for cclo.  (Thanks to
+       Christian Lynbech.)
+
+1998-11-14  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
+
+       * objects.c (scm_i_make_class_object): Renamed from
+       make_class_object; exported; error checking moved to
+       scm_make_class_object and scm_make_subclass_object.
+       (scm_make_class_object, scm_make_subclass_object): Use
+       scm_i_make_class_object.
+       (scm_make_subclass_object): Let the subclass have same metaclass
+       as the superclass.
+
+1998-11-14  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * debug.c (scm_debug_options): Bugfix: Set the value of
+       scm_stack_checking_enabled_p after setting debug options;
+       #include "stackchk.h".  (Thanks to Richard Polton.)
+
+1998-11-13  Radey Shouman  <rshouman@metro2000.com>
+
+       * unif.c (scm_array_contents): removed unnecessary test for 0
+       base.
+
+1998-11-13  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
+
+       * evalext.c, evalext.h (scm_m_sequence_to_list): Removed.
+       Replaced by macro `collect' in boot-9.scm.
+
+1998-11-10  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
+
+       * eval.c (scm_copy_tree): Copy source properties if existent.
+
+       * debug.c (scm_start_stack): Copy source when evaluating.  (If we
+       don't, we may end up passing memoized source to a transformer.)
+
+1998-11-10  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * stack.c (get_applybody): Help function which lookups the first
+       body form of the apply closure.
+       (read_frames): Prevent the source of the first form of the apply
+       closure from being recorded.  This would only be confusing.
+
+       * debug.h (SCM_SET_MACROEXP, SCM_CLEAR_MACROEXP, SCM_MACROEXPP):
+       Replaces SCM_MACROFRAME, SCM_MACROFRAMEP.
+       
+       * eval.c (SCM_CEVAL): Use SCM_SET/CLEAR_MACROEXP.
+
+       * stacks.c (read_frame): Bugfix: Removed lingering `else'
+       statement.
+       (read_frames): Use SCM_MACROEXPP.
+
+1998-11-10  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
+
+       * stacks.c (read_frames): Skip gsubr frames in backtraces.  (They
+       don't contain interesting information since all arguments are
+       present in the frame which applies the compiled closure anyway.);
+       Skip the transformer application frames.
+
+       * print.c (scm_iprin1): Print gsubrs as primitives.
+
+1998-11-09  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
+
+       * debug.h (SCM_MACROFRAME, SCM_MACROFRAMEP): New frame type.
+
+       * eval.c (SCM_CEVAL): Mark macro frames at `handle_a_macro' so
+       that we can identify these in a backtrace.  (This change doesn't
+       introduce any significant speed penalty.)
+
+       * eval.c: Added note about `serial-map' using scm_map.
+
+       * read.c, read.h (scm_read_options, scm_read_opts): Removed
+       readline options.  They should reside in their own options array.
+       
+       * readline.c, readline.h (scm_readline_options,
+       scm_readline_opts): Moved readline options here.
+
+1998-11-07  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
+
+       * readline.c (scm_read_history, scm_write_history): Bugfix: Use
+       SCM_ROCHARS instead of SCM_CHARS.
+
+       * ports.c (scm_unread_string): Bugfixes: Check for SCM_STRINGP,
+       not SCM_ROSTRINGP; use SCM_ROUCHARS instead of SCM_UCHARS.
+
+1998-11-06  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
+
+       * ports.h (SCM_CUC): #define as ~SCM_CRDY instead of 0x001fffffL.
+       This is quite important since the latter clears the
+       FPORT_READ_SAFE and FPORT_WRITE_SAFE flags causing flushes at
+       every single character read...
+
+1998-11-03  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
+
+       * print.c (scm_iprin1): Removed suspect looking (and indeed
+       malevolent) semicolon after test for user supplied closure print
+       procedure.  (Thanks to Telford Tendys.)
+
+       * list.c (scm_sloppy_memq): Removed sloppy_mem_check.
+       (scm_memq, scm_memv, scm_member): Do argument checking *before*
+       starting to search the list.  Removed call to sloppy_mem_check.
+
+       * list.c, list.h (scm_delq1_x, scm_delv1_x, scm_delete1_x): New
+       procedures: Same as scm_delq_x et al, but delete maximally one
+       element.
+
+       * options.c (scm_options, scm_init_options): GC-protect option
+       values of type SCM.  (Thanks to Telford Tendys.)
+
+1998-11-01  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * eval.c: Don't #define scm_lookupcar to scm_lookupcar1.  Instead
+       make sure that there always is a "real" scm_lookupcar.
+
+1998-11-01  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
+
+       * 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.
+
+1998-10-31  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
+
+       * eval.h (scm_macro_eval_x): Removed declaration.
+
+       * eval.c (scm_s_expression, scm_s_test, scm_s_body,
+       scm_s_bindings, scm_s_variable, scm_s_clauses, scm_s_formals):
+       Renamed and made global.
+
+       * eval.c, eval.h (SCM_EVALIM): Renamed from EVALIM.
+       (SCM_XEVAL, SCM_XEVALCAR): Renamed from XEVAL, XEVALCAR.
+
+       * evalext.c, evalext.h: New files.  Contain non-R5RS things
+       having to do with evaluation.
+       
+       * evalext.c (scm_serial_map): New procedure: Version of `map'
+       which guarantees that the procedure is applied to the lists in
+       serial order.
+       (scm_m_sequence_to_list): New syntax: Version of `begin' which
+       returns a list of the results of the body forms instead of the
+       result of the last body form.
+       (scm_definedp, scm_m_undefine): Moved from eval.c
+
+       * evalext.h (scm_m_sequence_to_list): Added declaration.
+
+       * macros.c, macros.h: New files.
+       (scm_procedure_to_syntax, scm_procedure_to_macro,
+       scm_procedure_to_memoizing_macro, scm_macro_p, scm_macro_type,
+       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.
+
+       * init.c (scm_boot_guile_1): Added calls to scm_init_macros and
+       scm_init_evalext.
+
+       * Makefile.am: Added evalext.c, evalext.h, macros.c, macros.h.
+
+       * debug.c, print.c: Added #include "macros.h".
+
+1998-10-29  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
+
+       This change adds the ability to use `unread-char' multiple times
+       without interspersed reads and adds the new procedure
+       `unread-string'.  The change is optimized for the common case of
+       unreading a single character.  This is also the reason behind the
+       choice to store characters in the port itself: in most cases no
+       extra malloc is required.
+
+       The amount of code in some macros in ports.h has been increased to
+       the extent that they would fit better as C functions, but, since
+       this code belongs to the port representation, such functions
+       should be placed in ports.c which would cause calls back and forth
+       between ports.c and genio.c.  That is not good for performance.
+       Also, keeping them as macros allows the compiler to do some
+       optimizations which are needed to make the current interface
+       (SCM_CRDYP, SCM_CGETUN, SCM_TRY_CLRDY) efficient.
+
+       One benchmark (Guile startup time) indicates an increase of
+       loading speed of 1%.  Another (reading (using `read') boot-9.scm
+       10 times) shows no change in performance.
+
+       (Caveat: Since Gary is redesigning I/O anyway, no big efforts were
+       made to find a beautiful solution.)
+       
+       * ports.h (SCM_CLRDY, SCM_CUNGET, SCM_CGETUN): Rewritten.
+       (SCM_TRY_CLRDY): New macro: Only clear the first unread
+       character. (SCM_CLRDY clears all.)
+       (SCM_N_READY_CHARS): New macro: Returns number of unread
+       characters in a port.  Returns wrong answer if SCM_CRDYP is false.
+       (struct scm_port_table): New fields: `entry' contains port table
+       index, `cp' points to last unread char, `cbuf' is the buffer for
+       unread chars, `cbufend' points after end of the character buffer.
+
+       * ports.h, ports.c (scm_unread_string): New procedure.
+       (scm_grow_port_cbuf): New function.
+
+       * ports.c (scm_add_to_port_table, scm_remove_from_port_table):
+       Handle new fields.
+       (scm_generic_fgets), fports.c (local_fgets): Use a loop
+       to read unread characters.  Use SCM_TRY_CLRDY instead of
+       SCM_CLRDY.
+       
+       * ioext.c (scm_ftell): Use SCM_N_READY_CHARS to correct position.
+
+       * genio.c (scm_getc): Use SCM_TRY_CLRDY instead of SCM_CLRDY.
+
+       * genio.c, genio.h (scm_ungets): New function.
+
+       * genio.c (scm_puts): Removed mysterious TRANSCRIPT_SUPPORT code
+       sections.
+
+1998-10-28  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
+
+       * threads.h (scm_thread_sleep, scm_thread_usleep): Fixed
+       declarations. (Thanks to Russ McManus.)
+
 1998-10-26  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
 
        * numbers.c (num2long): As a software archeologist, I'm proud of