+2000-03-14 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * objprop.c (s_scm_set_object_property_x): Use scm_assq instead of
+ scm_assoc. (Thanks to Dirk Herrmann.)
+
+2000-03-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * eval.c, lang.c, lang.h (scm_lisp_nil, scm_lisp_t): Renamed from
+ scm_nil, scm_t. (Thanks to Dirk Herrmann.)
+
+2000-03-14 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * init.c (scm_boot_guile_1): Use same initial segment size for
+ 1-word and 2-word segments. Having the smaller size causes Guile
+ to GC too often. Obviously something needs to be done to allow
+ for a smaller 2-word segment without this to happen. (The amount
+ of heap for each type should be automatically adapted to the
+ application somehow.)
+
+ [Almost all of these changes should be documented in the NEWS
+ file.]
+
+ * gc.h (scm_freelist_t): New type.
+
+ * pairs.h (SCM_NEWCELL, SCM_NEWCELL2): Use new style freelists.
+
+ * gc.c (SCM_INIT_HEAP_SIZE): Changed from 32768 --> 40000 so that
+ all of Guile basics fits into one segment and there suitable room
+ for work.
+ (SCM_EXPHEAP): Now takes an argument. Grow by a factor of 1.5
+ instead of 2.
+ (scm_freelist, scm_freelist2): Now of type scm_freelist_t.
+ Freelists now contains information about object span, cells
+ collected and amount of cells in heap segments belonging to the
+ list.
+ (scm_heap_size, scm_gc_cells_collected): Removed.
+
+ * init.c (scm_boot_guile_1): Make 2-word segment 8K (512 cells).
+
+ * Makefile.am (libguile_la_LDFLAGS): Bumped library version
+ number.
+
+ * __scm.h eq.c, eval.c, gc.c, gc.h, gh_data, hash.c, numbers.c,
+ numbers.h, objects.c, ramap.c, random.c, unif.c, unif.h: Extensive
+ rewrite of handling of real and complex numbers.
+ (SCM_FLOATS, SCM_SINGLES): These #ifdef conditionals have been
+ removed along with the support for floats. (Float vectors are
+ still supported.)
+
+ * tags.h (scm_tcs_bignums): Removed.
+ (scm_tc16_bigpos, scm_tc16_bigneg): Replaced by scm_tc16_big.
+ Use SCM_BIGSIGN(x) to test for sign!
+ (scm_tc16_big): The new bignum type.
+ (SCM_REAL_PART, SCM_IMAG_PART): Removed.
+
+ * numbers.h (SCM_BIGSIGN): Sign moved to bit 16.
+ (scm_makdbl): Deprecated.
+ (SCM_NEWREAL, SCM_NEWCOMPLEX): New macros.
+ (SCM_SINGP): Deprecated.
+ (SCM_FLO): Removed.
+ (SCM_INEXP, SCM_CPLXP): Deprecated.
+ (SCM_INEXACTP, SCM_COMPLEXP): New macros.
+ (SCM_COMPLEX_REAL, SCM_COMPLEX_IMAG): Renamed from
+ SCM_REAL, SCM_IMAG (and now only valid for complex numbers).
+ (SCM_REAL, SCM_IMAG): New, *deprecated*, selectors which work both
+ for doubles and complex numbers.
+ (SCM_REAL_VALUE): New selector for doubles.
+ (scm_double_t, scm_complex_t): New types.
+ (scm_dbl): Removed.
+
+ * numbers.c (scm_floprint, scm_floequal): Removed.
+ (scm_print_real, scm_print_complex, scm_real_equalp,
+ scm_complex_equalp): New functions.
+
+ * unif.c (scm_makflo): Removed.
+
+ * smob.h (SCM_SMOB_PREDICATE): New macro.
+ (SCM_NEWSMOB2, SCM_RETURN_NEWSMOB2, SCM_NEWSMOB3,
+ SCM_RETURN_NEWSMOB3): New macros.
+
+1999-11-21 Michael Livshin <mlivshin@bigfoot.com>
+
+ The following changes implement primitive support for double cells
+ (i.e. four-word cells) and change the representation of some
+ things to multi-cells instead of cons+malloc. (Applied and
+ modified by mdj.)
+
+ * pairs.h (SCM_NEWCELL2): double-cell variants of SCM_NEWCELL.
+ (SCM_CELL_WORD, SCM_CELL_WORDLOC, SCM_SET_CELL_WORD): primitive
+ multi-cell access macros (used by the ones below).
+ (SCM_CELL_WORD[0-3], SCM_SET_CELL_WORD[0-3]): multi-cell access
+ macros.
+
+ * gc.c (scm_freelist2): multi-cell freelists.
+ (inner_map_free_list): map_free_list, parameterized on ncells.
+ "nn cells in segment mm" was misleading for ncells > 1; changed to
+ "objects". still print cells too, though.
+ (scm_map_free_list): rewritten using inner_map_free_list.
+ (scm_check_freelist): get freelist as parameter, since now we have
+ more than one.
+ (scm_debug_newcell2): multi-cell variants of
+ scm_debug_newcell.
+ (scm_gc_for_newcell): take ncells and freelist pointer as
+ parameters.
+ (scm_gc_mark): add case for tc7_pws (procedures with setters are
+ now double cells).
+ (scm_gc_sweep): don't free the float data, since it's not malloced
+ anymore.
+ (init_heap_seg): didn't understand what n_new_objects stood for,
+ so changed to n_new_cells.
+ (make_initial_segment): new function, makes an initial segment
+ according to given ncells.
+ (scm_init_storage): call make_initial_segment, for ncells={1,2,3}.
+
+ * numbers.c (scm_makdbl): no malloc'ing needed, so the
+ {DEFER,ALLOW}_INTS thing removed.
+
+ * numbers.h (struct scm_dbl): changed to represent a double cell,
+ with the number in the second half.
+
+ * dynwind.c: changed the wind-guards representation to double
+ cell.
+
+ * procs.c, procs.h: changed the procedure-with-setter representation
+ to double cell.
+
+ * async.c, async.h: made async representation a double cell.
+
+ * dynl.c: made dynamic_obj representation a double cell.
+
+2000-03-13 Gary Houston <ghouston@arglist.com>
+
+ * ports.c (flush_void_port): renamed to flush_port_default.
+ (end_input_void_port): renamed to end_input_default.
+
+ * init.c (scm_standard_stream_to_port): create a void port instead
+ of opening /dev/null if the standard file descriptors are bad.
+ advantages: no portability problems, doesn't waste a file descriptor,
+ simplifies the code (thanks to Marius for the idea).
+
+ * vports.c (s_scm_make_soft_port): call scm_port_non_buffer.
+
+ * void ports: make reading from a void port give EOF instead of
+ segv:
+ * ports.c (s_scm_sys_make_void_port): modified docstring.
+ (fill_input_void_port): new proc.
+ (scm_init_ports): set up fill_input_void_port.
+ * ports.c (scm_port_non_buffer): new proc.
+ (scm_void_port): call scm_port_non_buffer.
+
+ * fports.c (scm_setvbuf): docstring: remove the fcntl documentation
+ which was incorrectly appended.
+
+2000-03-13 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * guile-doc-snarf.in: Don't use absolute path for `sed'. (Note
+ that we can't use autoconf for this. Autoconf itself relies on
+ the existence of `sed' somewhere on your path.) (Thanks to Dirk
+ Herrman.)
+
+2000-03-13 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * Makefile.am (libguile_la_SOURCES): Moved iselect.c here from
+ EXTRA_libguile_la_SOURCES.
+
+ * iselect.h: Always declare scm_internal_select.
+
+ * iselect.c (scm_internal_select): Added SCM_ASYNC_TICK at the
+ end. Also let scm_internal_select be a real function also when
+ not using threads.
+
+ * __scm.h (SCM_TICK): Oops! Forgot to put SCM_ASYNC_TICK here...
+
+2000-03-13 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * __scm.h (SCM_ALLOW_INTS, SCM_REALLOW_INTS): Removed call to
+ SCM_ASYNC_TICK. (This is a preparation for POSIX threads support,
+ and kind of an experiment: Will this cause problems?)
+
+Sun Mar 12 13:26:30 2000 Greg J. Badros <gjb@cs.washington.edu>
+
+ * Makefile.am: Added *.doc to DISTCLEANFILES.
+
+2000-03-12 Gary Houston <ghouston@arglist.com>
+
+ * fports.c (scm_fdes_to_port): call fcntl F_GETFL to test that
+ the fdes is valid before doing anything else. check that
+ the file descriptor supports the modes required.
+ (scm_fport_buffer_add): don't throw an error if fstat doesn't
+ work: just use the default buffer size.
+
+ * throw.c: change an outdated comment about scm_internal_catch
+ BODY: it doesn't take a jumpbuf arg.
+
+ * init.c (scm_standard_stream_to_port): install a handler in case
+ scm_fdes_to_port throws an error. don't check here whether the
+ file descriptor is valid, since scm_fdes_to_port will do that.
+ set the revealed count depending on whether the port got the
+ standard file descriptor.
+ (stream_body_data): new type.
+ (stream_body, stream_handler): new procs.
+
2000-03-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
* stacks.c, stacks.h, struct.c, tags.h, unif.c (scm_bits_t):