diff options
author | Greg J. Badros <gjb@cs.washington.edu> | 2000-01-05 01:44:04 +0000 |
---|---|---|
committer | Greg J. Badros <gjb@cs.washington.edu> | 2000-01-05 01:44:04 +0000 |
commit | 339999c72ef6e401528e7f8ded4b3e1b63f385e9 (patch) | |
tree | 333c957844691462f2efd69123127bf41e48f03a | |
parent | 3b5345d934fb224e90620b62ff21617b15fbd4c4 (diff) |
Moved old ChangeLog text to ChangeLog-1996-1999 (added that file)
and made new ChangeLog with the entries from the new year only.
-rw-r--r-- | libguile/ChangeLog | 9829 | ||||
-rw-r--r-- | libguile/ChangeLog-1996-1999 | 9828 |
2 files changed, 9829 insertions, 9828 deletions
diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 27583e023..f73bf6905 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -26,9831 +26,4 @@ Mon Jan 3 08:25:19 2000 Greg J. Badros <gjb@cs.washington.edu> SCM_NIMP tests that were redundant are now eliminated. Patches from Dirk Hermann applied by hand. -1999-12-28 Gary Houston <ghouston@arglist.com> - - * posix.c (scm_waitpid): move the HAVE_WAITPID test out of the - procedure body, so that the procedure is left undefined if waitpid - is not available. previously in this case the procedure was - defined but would raise a system-error when called, which is - pointless. I intend to make the same change for other procedures - and deprecate SCM_SYSMISSING and scm_sysmissing. - -1999-12-22 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * feature.c (s_scm_add_hook_x): Call scm_wrong_type_arg instead of - scm_misc_error when add-hook! is passed a procedure of wring - arity. (Thanks to Greg Harvey.) - -1999-12-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * macros.c (scm_make_synt): Use scm_make_subr_opt to make the - transformer subr. (Thanks to Bill Schottstaedt.) - -1999-12-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * objects.c (scm_class_of): Bugfix: Inserted missing SCM_CDR - setting struct table class. - -Sun Dec 19 10:22:34 1999 Greg J. Badros <gjb@cs.washington.edu> - - * threads.c, mit-pthreads.c, list.c, coop.c: Remove K&R - prototypes; just use ANSI C prototypes. I'm not sure how - mit-pthreads.c ever compiled -- it still doesn't for me, but the - normal make procedure does not try to build it anyway (even - --with-threads I get the other threads code building) so I'm not - too worried about it. - -Sat Dec 18 16:58:34 1999 Greg J. Badros <gjb@cs.washington.edu> - - * tags.h (SCM_CONSP, SCM_NCONSP): Define these in terms of - SCM_SLOPPY_CONSP and SCM_SLOPPY_NCONSP. (SCM_CONSP) Define this - in terms of SCM_SLOPPY_NCONSP instead of repeating the - expression. - - * symbols.h (SCM_SLOPPY_SUBSTRP, SCM_SUBSTRP): Added former, and - define latter in terms of sloppy variant. - - * strings.h (SCM_SLOPPY_STRINGP, SCM_STRINGP): Added former, and - define latter in terms of sloppy variant. - - * scm_validate.h (SCM_MAKE_VALIDATE): Added this macro to factor - out the commonality of the various basic SCM_VALIDATE_foop - macros. Use SCM_MAKE_VALIDATE macro where possible. Fix - SCM_VALIDATE_INT_COPY to not use scm_num2ulong -- that does - coercion to an integer which is more advanced than desired and - SCM_NUM2ULONG provides that functionality. Use SCM_ASSERT_RANGE - appropriately for the various _MIN, _MAX, _RANGE macros. Drop - some superfluous "SCM_NIMP &&" where possible. Eliminate obsoleted - SCM_VALIDATE_NIMCONS (SCM_VALIDATE_CONS now does the NIMP test as - part of its SCM_CONSP test). - - * socket.c, ports.c, pairs.c, list.c, lang.c, async.c: Use - SCM_VALIDATE_CONS, not obsoleted SCM_VALIDATE_NIMCONS. - -Sat Dec 18 15:33:05 1999 Greg J. Badros <gjb@cs.washington.edu> - - * dynl.c: Added #include "scm_validate.h" - -Sat Dec 18 15:22:10 1999 Greg J. Badros <gjb@cs.washington.edu> - - * alist.c, chars.c, dynl.c, net_db.c, numbers.c, unif.c: Use - SCM_NUM2ULONG instead of scm_num2ulong; SCM_NUM2LONG instead of - scm_num2long; SCM_WTA instead of scm_wta. Only done for when - FUNC_NAME was used as an argument of the macro and the formal - argument name was the explicit argument in the old function call. - These were just missed in my first pass of changes. - -1999-12-18 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> - - * guile-doc-snarf.in (filename): Strip path to source dir before - touching the .x-files. - -1999-12-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * debug.c (scm_reverse_lookup): Bugfix: Reinserted SCM_NIMP. - - * eval.c (SCM_CEVAL): Removed check for unbound slot in - SCM_IM_SLOT_REF. (This is now handled in a smarter way in GOOPS.) - -1999-12-17 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * tags.h (SCM_SLOPPY_NCONSP, SCM_SLOPPY_CONSP): New macros. - (SCM_ECONSP): Version which doesn't mix && and || without - parenthesis. - (SCM_NECONSP): Bugfree version. - -Fri Dec 17 12:09:11 1999 Greg J. Badros <gjb@cs.washington.edu> - - * tags.h (SCM_ECONSP, SCM_NECONSP): Fix these macros to have the - SCM_NIMP test integrated into an || clause that I'd missed before - and was causing a segfault in the regression tests. - - * symbols.h (SCM_ROUCHARS): Make cast be to (unsigned char *), not - (char *); fixes a problem reported by the regression test - ports.test. - - * ports.c: Fixed a couple of arg/number mismatches in - SCM_VALIDATE_ macros. - - Now passes the (not-comprehensive) guile-modules test-suite again! - -Thu Dec 16 12:41:22 1999 Greg J. Badros <gjb@cs.washington.edu> - - * coop-threads.c: Remove K&R function headers. - - * scm_validate.h: Added SCM_VALIDATE_THREAD. - - * *.c: Remove SCM_NIMP(X) when it is an extraneous pre-test given - that SCM_FOOP macros all now include SCM_NIMP in their expansion. - This simplifies lots of code, making it far more readable. - -Wed Dec 15 19:45:14 1999 Greg J. Badros <gjb@cs.washington.edu> - - * *.h: Use SCM_NIMP(X) && in all the FOOP macros. - - * *.[ch]: Use do { ... } while (0) idiom in macros that expanded - to a bare block. - -Tue Dec 14 10:53:14 1999 Greg J. Badros <gjb@cs.washington.edu> - - * snarf.h: Put SCM_PROC and SCM_PROC1 back in for - backward-compatibility of packages that use Guile. Internally - Guile should not use them, though. (Maybe enforce this with a new - -DBUILDING_GUILE compile-time flag?). - -Tue Dec 14 09:41:01 1999 Greg J. Badros <gjb@cs.washington.edu> - - * backtrace.c (scm_set_print_params_x): Renamed from - set_print_params_x. - - * guile-doc-snarf.in: Use guile-snarf.awk, not - guile-doc-snarf.awk. Pass the basename of $filename - - * load.h: Added prototypes for scm_sys_library_dir, - scm_sys_site_dir. - - * load.c (scm_sys_library_dir, scm_sys_site_dir): Added these - functions, and took out the old scm_library_dir, scm_site_dir, - scm_pkgdata_dir. Now the primitives are %package-data-dir - (already existed), %library-dir, and %site-dir. - - * debug.c: Use SCM_MISC_ERROR when possible instead of using - s_scm_* in a scm_misc_error() call. - - * Makefile.am: Use guile-snarf.awk, not guile-doc-snarf.awk. Make - using guile-doc-snarf send stdout to $@ to create the .x file like - guile-snarf does. - - * guile-snarf.awk.in: Added. - - * guile-doc-snarf.awk.in: Removed (sorry to back out a recent - commit; if we're going to switch to guile-snarf I figure it makes - sense to get this right now-- I'd already had the change in my - working copy when the below commit happened). - -1999-12-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * guile-doc-snarf.awk: Removed. - - * guile-doc-snarf.awk.in: Added. - - * ports.c (s_scm_pt_member): Fixed validation. - - * guile-doc-snarf.in (filename): Use basename in order to strip - away path. - - * debug.c (scm_make_iloc, s_scm_proc_to_mem): Added missing - semicolon. - (scm_memcons, scm_memcons, mem_to_proc): Renamed function name - strings to new form. - - * backtrace.c (set_print_params_x): Fixed GUILE_PROC macro. - - * tags.h (SCM_UNBOUND): New iflag which is needed for some time to - mark the unboundness of a GOOPS slot. (Added now in order to - correct a oversight. Should probably be removed again and - replaced with SCM_UNDEFINED when the corresponding code in GOOPS - is rewritten.) - - * print.c (scm_isymnames): Added printed representation for - SCM_UNBOUND. - - * eval.c (SCM_CEVAL): Bugfix: Added check for unbound slot in - SCM_IM_SLOT_REF. - -Mon Dec 13 17:23:22 1999 Greg J. Badros <gjb@cs.washington.edu> - - * strings.c: Fixed mistaken default value in - scm_make_shared_substring; thanks Eric Moore! - -Mon Dec 13 16:29:13 1999 Greg J. Badros <gjb@cs.washington.edu> - - * guile-doc-snarf.awk: Use sub instead of gsub in ^ anchored - replacement for docstrings. Fixes problem Ryan Yeske observed - with using mawk on his system. Thanks Ryan! - -Mon Dec 13 13:30:06 1999 Greg J. Badros <gjb@cs.washington.edu> - - * guile-doc-snarf.in: Do not echo to stdout since the output now - gets stuck directly in the files instead of redirected from - stdout. - - * guile-doc-snarf.awk: Escape a literal ) -- thanks Ryan - Yeske. Use print instead of printf to prime the .x file since - AIX's cpp has problems with #include-ing empty files (according to - the old guile-snarf.in file). - -Sun Dec 12 19:39:00 1999 Greg J. Badros <gjb@cs.washington.edu> - - * Makefile.am: Fix ETAGS_ARGS to recognize GUILE_PROC, - GUILE_PROC1. Build guile-procedures.txt, and add that file to - pkgdata_DATA. - - * load.c: Added `pkgdata-dir', `site-dir', `library-dir' - primitives. - - * guile-doc-snarf.awk: Drop trailing space when no arguments: - e.g., "(foo )" is now "(foo)". - - * *.c, alist.c: moved all the documentation for primitives from - guile-doc/ref/{appendices,posix,scheme}.texi into the source code. - This leaves about half of the primitives undocumented. Also, all - the markup is currently still texinfo. I don't have a problem - with texinfo per se, but the markup is not very descriptive or - accurate. - -Sun Dec 12 16:50:26 1999 Greg J. Badros <gjb@cs.washington.edu> - - * scm_validate.h: Drop the SCM_DOCSTRING_SNARF for turning off - SCM_VALIDATE macros; the SCM_VALIDATE macros should be checked for - argument mismatches (along with the FUNC_NAME macro checking) by a - static tool that runs directly over the .c files. - - * snarf.h: Handle SCM_REGISTER_PROC better when snarfing. The - docstring is still missing from the .doc file; it just gives the - name of the C function that gets called instead. - - * guile-doc-snarf.awk: Be sure to touch the output files to help - make out. Also handle SCM_REGISTER_PROC better, and change the - output format slightly. - -Sun Dec 12 15:33:40 1999 Greg J. Badros <gjb@cs.washington.edu> - - * snarf.h: Drop SCM_PROC, SCM_PROC1. Added extra output for - guile-doc-snarf script. - - * guile-doc-snarf.in, guile-doc-snarf.awk: New, simple doc - extraction system. Builds foo.x, foo.doc from foo.{c,cc}. - There are dependencies between these files and snarf.h. This - replaces guile-snarf. - - * guile-snarf.in: Drop everything after $$$ for the new snarf.h - macros. This is obsoleted by guile-doc-snarf, but kept here for - now for good measure. - - * Makefile.am: Added guile-doc-snarf, guile-doc-snarf.awk to - bin_SCRIPTS. Added .doc to SUFFIXES, and give rule for creating - .doc files to use guile-doc-snarf. Update the rule for creating - .x files to use guile-doc-snarf. - -Sun Dec 12 12:31:38 1999 Greg J. Badros <gjb@cs.washington.edu> - - * *.c: Finish replacing K&R style prototypes with ANSI C - prototypes. - - * eval.c: Make scm_m_mody's 3rd argument be a const char *, not a - char *. ANSI prototypes caught this. - - * strorder.c: Use GUILE_PROC1 for the couple SCM_PROC1 expansions - that I missed. - - * scm_validate.h: Use SCM_BOOLP for validating bools. Do not - expand macros if SCM_DOCSTRING_SNARF. - -Sun Dec 12 11:23:22 1999 Greg J. Badros <gjb@cs.washington.edu> - - * *.c, srcprop.h: Use SCM_BOOL(f) instead of (f? SCM_BOOL_T: - SCM_BOOL_F) and use SCM_NEGATE_BOOL(f) instead of (f? SCM_BOOL_F: - SCM_BOOL_T). - -Sun Dec 12 11:08:51 1999 Greg J. Badros <gjb@cs.washington.edu> - - * boolean.h: Added SCM_BOOL, SCM_NEGATE_BOOL, SCM_BOOLP to here, - from scm_validate.h. - - * scm_validate.h: Moved above out into boolean.h, fix typo in - SCM_VALIDATE_NIM macro. - -Sun Dec 12 10:29:12 1999 Greg J. Badros <gjb@cs.washington.edu> - - * *.c, scm_validate.h: Use SCM_VALIDATE_NIM, not SCM_VALIDATE_NIMP - (none of the other validate macros have the trailing P). - -Sun Dec 12 10:07:29 1999 Greg J. Badros <gjb@cs.washington.edu> - - * scm_validate.h: Added the FSF copyright to the top. - - * strings.c: Use SCM_ASSERT_RANGE in a couple of places instead of - SCM_ASSERT w/ SCM_OUT_OF_RANGE. - -Sat Dec 11 18:34:12 1999 Greg J. Badros <gjb@cs.washington.edu> - - * Makefile.am: Added scm_validate.h to modinclude_HEADERS. - - * *.c: Pervasive software-engineering-motivated rewrite of - function headers and argument checking. Switched SCM_PROC, - SCM_PROC1 macros to be GUILE_PROC, GUILE_PROC1 (may change names - later, but was useful to keep old versions around while migrate) - that has docstrings and argument lists embedded in the GUILE_PROC - macro invocations that expand into a function header. Use lots of - new SCM_VALIDATE_* macros to simplify error checking and reduce - tons of redundancy. This is very similar to what I did for Scwm. - - Note that none of the extraction of the docstrings, nor software - engineering checks of Scwm is yet added to Guile. I'll work on - that tomorrow, I expect. - - * chars.c: Added docstrings for the primitives defined in here. - - * snarf.h: Added GUILE_PROC, GUILE_PROC1. Added - SCM_REGISTER_PROC to be like old SCM_PROC, though old SCM_PROC - still remains for now. Changed naming convention for the s_foo - string name of the primitive to be s_scm_foo for ease of use with - the macro. - - * scm_validate.h: Lots of new SCM_VALIDATE macros to simplify - argument checking through guile. Maybe some of these should be - folded into the header file for the types they check, but for now - it was easiest to just stick them all in one place. - -1999-12-10 Greg Harvey <Greg.Harvey@thezone.net> (applied --12/10/99 gjb) - - * smob.c (scm_smob_prehistory): initialize allocated smob - - * tags.h: new tag: scm_tc16_allocated - - * gc.c (scm_gc_for_newcell): set the car of the new cell - to scm_tc16_allocated - * pairs.h (SCM_NEWCELL): set the car to scm_tc16_allocated - (scm_gc_mark): mark allocated cells. - -1999-12-09 Greg J. Badros <gjb@cs.washington.edu> - - * strports.h, strports.c (scm_eval_0str): Fix constness. Some - thanks to Dirk Hermann. - - * gh_eval.c (gh_eval_str, gh_eval_file, gh_eval_str_with_catch, - gh_eval_str_with_standard_handler, - gh_eval_str_with_stack_saving_handler): Fix constness. Some - thanks to Dirk Hermann. - - * gh_data.c (gh_str02scm): Fix constness. - - * gh.h: Fix constness of prototypes for the above. - - * vectors.c: Include "unif.h" to avoid a warning about missing - prototype for scm_uniform_element_size(). - -1999-12-09 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * vectors.c (scm_vector_length, scm_vector_ref, scm_vector_set_x): - Turned into primitive generics. - -1999-12-04 Gary Houston <ghouston@freewire.co.uk> - - * ports.c (scm_port_closed_p): new procedure, implements - "port-closed?" suggested by Bernard Urban. - ports.h: added prototype, removed the SCM_P macros. - -1999-11-30 Gary Houston <ghouston@freewire.co.uk> - - * unif.h: added some comments, removed the SCM_P macros. - -1999-11-29 Gary Houston <ghouston@freewire.co.uk> - - * vports.c (sf_write): use scm_makfromstr, not scm_makfrom0str - (thanks to Daniel Skarda). - -1999-11-22 Jim Blandy <jimb@savonarola.red-bean.com> - - * gscm.c, gscm.h: Deleted. They were unused. - -1999-11-20 Gary Houston <ghouston@freewire.co.uk> - - * unif.c (scm_list_to_uniform_array): call - scm_dimensions_to_uniform_array with a third argument of - SCM_UNDEFINED instead of SCM_EOL. - -1999-11-19 Gary Houston <ghouston@freewire.co.uk> - - * the following changes allow guile to be built with the array - "module" omitted. some of this stuff is just tc7 type support, - which wouldn't be needed if uniform array types were converted - to smobs. - - * tag.c (scm_utag_bvect ... scm_utag_cvect): don't define unless - HAVE_ARRAYS. - (scm_tag): don't check array types unless HAVE_ARRAYS. - - * sort.c (scm_restricted_vector_sort_x, scm_sorted_p): - remove the unused array types. - * (scm_stable_sort, scm_sort): don't support vectors if not - HAVE_ARRAYS. a bit excessive. - - * random.c (vector_scale, vector_sum_squares, - scm_random_solid_sphere_x, scm_random_hollow_sphere_x, - scm_random_normal_vector_x): don't define unless HAVE_ARRAYS. - - * gh_data.c (makvect, gh_chars2byvect, gh_shorts2svect, - gh_longs2ivect, gh_ulongs2uvect, gh_floats2fvect, gh_doubles2dvect, - gh_uniform_vector_length, gh_uniform_vector_ref): - don't define unless HAVE_ARRAYS. - (gh_scm2chars, gh_scm2shorts, gh_scm2longs, gh_scm2floats, - gh_scm2doubles): - don't check vector types if not HAVE_ARRAYS. - - * eq.c (scm_equal_p), eval.c (SCM_CEVAL), print.c (scm_iprin1), - gc.c (scm_gc_mark, scm_gc_sweep), objects.c (scm_class_of): - don't support the array types unless HAVE_ARRAYS is defined. - - * tags.h: make nine tc7 types conditional on HAVE_ARRAYS. - - * read.c (scm_lreadr): don't check for #* unless HAVE_ARRAYS is - defined (this should use read-hash-extend). - - * ramap.c, unif.c: don't check whether ARRAYS is defined. - - * vectors.c (scm_vector_set_length_x): moved here from unif.c. call - scm_uniform_element_size if HAVE_ARRAYS. - vectors.h: prototype too. - - * unif.c (scm_uniform_element_size): new procedure. - - * init.c (scm_boot_guile_1): don't call scm_init_ramap or - scm_init_unif unless HAVE_ARRAYS is defined. - - * __scm.h: don't define ARRAYS. - - * Makefile.am (EXTRA_libguile_la_SOURCES): unif.c and ramap.c - moved here from libguile_la_SOURCES. - -1999-11-18 Gary Houston <ghouston@freewire.co.uk> - - * socket.c (scm_htons, scm_ntohs, scm_htonl, scm_ntohl): new - functions for network data conversion. - - * numbers.c (scm_num2long, scm_num2longlong): - throw out-of-range instead of wrong-type-arg if appropriate. - (scm_iint2str): handle -2^31 correctly. - (scm_num2long): handle -2^31 bignum correctly. - (scm_num2long_long): rewrite the bigdig case: basically copied - from scm_num2long. - numbers.h: (SCM_BITSPERLONGLONG): deleted. - - * unif.c (rapr1): use sprintf instead of intprint for unsigned - longs: intprint can't cope with large values. - - * numbers.c (scm_num2ulong): check more consistently that the - input is not negative. if it is, throw out-of-range instead of - wrong-type-arg. - - * ramap.c (scm_array_fill_int): don't limit fill to INUM for - uvect, ivect or llvect. - Check that fill doesn't overflow short uniform array. - - * __scm.h: add another long to the definition of long_long and - ulong_long. - - * unif.c (scm_raprin1): use 'l' instead of "long_long" in the - print representation of llvect. read can't handle more than - one character. - (scm_dimensions_to_uniform_array): make "fill" an optional argument - instead of a rest argument. - - * tags.h (scm_tc7_llvect): wasn't defined anywhere, so use the free - tag 29 for now. - - * __scm.h: don't mention LONGLONGS. - - * unif.c, numbers.c, eq.c, gc.c, print.c, eval.c, ramap.c: - replace LONGLONGS with HAVE_LONG_LONGS as set by configure. - -1999-11-17 Gary Houston <ghouston@freewire.co.uk> - - * net_db.c (scm_inet_aton): throw errors using the misc-error key - instead of system-error. inet_aton doesn't set errno. - system-error isn't right in gethost either, since it's throwing - the value of h_errno instead of errno. so: - (scm_host_not_found_key, scm_try_again_key, - scm_no_recovery_key, scm_no_data_key): new error keys. - (scm_resolv_error): new procedure, use the new keys. - (scm_gethost): call scm_resolv_error not scm_syserror_msg. - -1999-11-16 Gary Houston <ghouston@freewire.co.uk> - - * error.c: (various): use scm_cons instead of scm_listify - to build short lists. - -1999-11-03 Gary Houston <ghouston@freewire.co.uk> - - * socket.c (scm_fill_sockaddr): zero the address structure before - use, in case it has a sin_len field and the OS doesn't like random - values (thanks to Bertrand Petit). - -1999-10-26 Mark Galassi <rosalia@lanl.gov> - - * gh.h, gh_data.c (gh_symbol2scm): changed gh_symbol2scm() to take - a const char * argument, upon suggestion from Lynn Winebarger. - -1999-10-26 Gary Houston <ghouston@freewire.co.uk> - - * strports.c (st_end_input): avoid dubious pointer arithmetic. - -1999-10-24 Gary Houston <ghouston@freewire.co.uk> - - * Move the responsibility for resetting port buffers from the - caller of the ptob seek procedure to the implementation. This - gives more control in general to the ptob seek: in particular the - change of 1999-10-20 can be made to work without breaking seek on - string ports. There's a comment in NEWS about upgrading port - types. - - * ports.c (scm_seek): don't reset the port buffers here. - - * fports.c (fport_seek): reset the buffers, except for the - 0 SEEK_CUR case. - - * strports.c (st_end_input): (bug fix): decrement pt->read_pos by - offset. check that it's not less than read_buf. - (st_seek): reset the buffers first, unless it's the 0 SEEK_CUR - case and currently reading. - -1999-10-20 Gary Houston <ghouston@freewire.co.uk> - - * ports.c (scm_seek): Add a special case for SEEK_CUR, offset 0, - so that unread chars are not needlessly discarded. (thanks to - Roland Orre). - -1999-10-18 Gary Houston <ghouston@freewire.co.uk> - - * fports.c (scm_fdes_to_port): always set rw_random if the fdes is - random access. rw_active needs to be maintained even for single - directional ports, otherwise scm_seek and probably other things are - broken. (thanks to Roland Orre). - - * strports.c (scm_mkstrport): set rw_random to 1 unconditionally. - - * ports.c (scm_add_to_port_table): initialise rw_random to 0. - - * ports.h (scm_port): change the comments on rw_random and rw_active. - -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), - * unif.c (scm_uniform_array_write): use scm_lfwrite. - * ports.c (scm_putc): change type of first argument from int to char. - -1999-08-04 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> - - * eval.c (SCM_CEVAL): Improvements to SCM_IM_DISPATCH and - SCM_IM_HASH_DISPATCH. - - * objects.h (SCM_CLASSF_GOOPS_VALID): Added. - (scm_si_redfined, scm_si_hashsets): Moved. - - * objects.c (scm_class_of): Use the new SCM_CLASSF_GOOPS_VALID - flag which combines type and status info so that the class - redefinition protocol has zero cost during normal execution. - -1999-08-03 Gary Houston <ghouston@easynet.co.uk> - - * ports.h (scm_ptob_descriptor): include a write procedure again. - it's more efficient for unbuffered fports (e.g., sockets.) - - * ports.c (scm_puts): use ptob->write. - * vports.c (scm_make_sfptob): set write proc in ptob. - * strports.c (scm_make_stptob): set write proc in ptob. - * ports.c (write_void_port): new procedure. - * vports.c (sf_write): new procedure. - * ports.c (scm_lfwrite): use ptob->write. - * strports.c (st_write): new procedure. - * fports.c (fport_write): new procedure. - (scm_make_fptob): set write in ptob to fport_write. - * ports.h: prototype for scm_set_port_write. - * ports.c (scm_make_port_type): initialise ptob write procedure. - (scm_set_port_write): new proc. - -1999-08-01 Jim Blandy <jimb@savonarola.red-bean.com> - - * ports.c (scm_char_ready_p): Don't try to find PORT's ptab entry - until we've verified that it is actually a port. (Thanks to - Lorentey Karoly.) - -1999-07-31 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> - - * gc.c (scm_must_malloc, scm_must_realloc): Removed unnecessary - code, particularly an unnecessary test (len != size, where len == - size). (Was this leftovers from debugging code, or have I missed - something profound?) - - * hashtab.c: Bugfix: Don't declare s_hash_fold without storage - size. (Thanks to James Dean Palmer.) - - * numbers.c (scm_makdbl): Bugfix: Initialize imaginary part. - (Thanks to Lorentey Karoly.) - -1999-07-30 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> - - * eval.c (scm_m_expand_body): Use scm_cons_source. - - * struct.c (scm_print_struct): Use vtable name. - - * print.c (scm_init_print): Set name of print state type. - - * stacks.c (scm_init_stacks): Set name of stack type. - -1999-07-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> - - * eval.c (SCM_CEVAL): Removed old implementation of internal - define. - - * gsubr.c, procprop.h (scm_i_inner_name): Removed. - - * debug.c, debug.h (scm_reverse_lookup): Added. - (scm_procedure_name): Use scm_reverse_lookup to lookup the name of - internal procedure definitions; Don't use scm_i_inner_name. - - * eval.c, tags.h, print.c (SCM_IM_SLOT_REF, SCM_IM_SLOT_SET_X): - New isym operations. - - * eval.h: Added prototypes for multi language support functions. - - * eval.c (SCM_IM_DISPATCH, SCM_IM_HASH_DISPATCH): Don't use - improper lists in the low-level representation, since that will - cause a begin to be prepended at macro expansion. - - * eval.c (scm_cons_source): Version of cons which copies source - properties from an existing cell. - (scm_copy_tree, SCM_CEVAL): Use scm_cons_source. - - * debug.c (scm_procedure_source): Cons SCM_IM_LAMBDA onto - procedure source before calling scm_unmemocopy instead of faking - an environment. - -1998-10-25 Marius Vollmer <mvo@zagadka.ping.de> - - Ported `internal defines' fix from SCM. Original ChangeLog entry: - - 1998-07-09 Radey Shouman <radey@colorage.com> - - * eval.c (ceval_1): Modifications to allow rewriting of interal - DEFINE to LETREC: If an ISYM is evaluated in non-tail position the - body of which it is the CAR is macro expanded by m_expand_body, - which rewrites internal DEFINE. - - (m_expand_body): Added. - - (m_macroexp1): Added argument to control error checking: - m_expand_body may speculatively expand forms in the wrong - environments. Made argument number checks conditional on - RECKLESS. - - (m_body): Added, error checks bodies and inserts the ISYM tokens. - - (m_lambda): (m_letstar): (m_letrec1): (m_letrec): (m_let): Now - call m_body. - - (m_cond): (m_case): (m_quote): Modified to avoid destructively - changing their argument forms. Since m_expand_body - speculatively macro expands forms the process must be - reversible. - - (m_ident_eqp): Fixed to use proper environment. - - (renamed_ident): Added DEFER_INTS_EGC. - - Added prototypes for static functions. - - * eval.c - - (undef_cell): New. - - (scm_lookupcar1, scm_lookupcar): Added CHECK argument. When CHECK - is false, do not produce an error for unbound variables, return a - pointer to cell_undef instead. - - (EVALCELLCAR, XEVALCAR): Call scm_lookupcar with check=1. - - (scm_m_body): New. - - (scm_m_cond, scm_m_case, scm_m_quote): Modified to avoid - destructively changing their argument forms. Since m_expand_body - speculatively macro expands forms the process must be reversible. - - (scm_m_lambda): Use scm_m_body instead of bodycheck. Account for - SCM_IM_LET introduced by named lets. - - (scm_m_letstar): Use scm_m_body instead of bodycheck. - - (scm_m_letrec1, scm_letrec): Split scm_letrec into scm_letrec1 and - scm_letrec. scm_letrec1 does not check for a null binding and - takes an additional argument to specify the ISYM of the body. Use - scm_m_body instead of bodycheck. - - (scm_m_let): Use scm_m_body instead of bodycheck. - - (scm_m_expand_body, scm_macroexp): New. - - (unmemocopy): Account for ISYMs introduced by scm_m_body. - - (ceval, deval): Call scm_m_expand_body. Call scm_lookupcar with - check=1. Throw error for internal defined that have not been - rewritten by scm_m_expand_body. - - * eval.h: Added prototypes for scm_m_expand_body and scm_macroexp. - Removed prototype for SCM_APPLY. - - * tags.h: Added extern declaration of scm_isymnames. - -1999-07-27 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> - - * Makefile.am (EXTRA_libguile_la_SOURCES): Added lang.c. - - * lang.c: New file: Beginning of multi-language support. - - * init.c (scm_boot_guile_1): Added call to scm_init_lang (). - - * dynwind.c (scm_dowinds): Removed obsolete wind_key #f case. - (scm_dynamic_wind): Added argument checking for the after guard so - that we don't add garbage on the dynwind chain. - (scm_swap_bindings): Added. - - * tags.h, print.c (SCM_IM_NIL_COND, SCM_IM_NIL_IFY, SCM_IM_T_IFY, - SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY), print.c - (scm_isymnames): New isyms for multi-language support. - - * eval.c (scm_nil, scm_t): New symbols. - (nil-cond, nil-ify, t-ify, 0-cond, 0-ify, 1-ify): New special - forms for multi-language support. - -1999-07-25 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> - - * random.c, random.h (scm_c_default_rstate, scm_c_uniform32): - Added. - Renamed functions in the random function library interface - from scm_i_XXX --> scm_c_XXX. - -1999-07-25 Gary Houston <ghouston@easynet.co.uk> - - * ports.c (scm_putc): fix line-buffering. - -1999-07-25 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> - - * ports.c, ports.h, fports.c, strports.c, vports.c: Renamed - scm_set_ptob_XXX --> scm_set_port_XXX. - -1999-07-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> - - * ports.c, ports.h (scm_make_port_type): New interface for - creation of port types (replaces scm_newptob). Just as for the - smobs, we need to separate the internal representation of smob - types from the interface, so that we easily can add new fields and - rearrange things without caring about backward compatibility. - This change was forced by the need in GOOPS to create classes - representing port types. - (scm_set_ptob_mark, scm_set_ptob_free, scm_set_ptob_print, - scm_set_ptob_equalp, scm_set_ptob_flush_input, scm_set_ptob_close, - scm_set_ptob_seek, scm_set_ptob_truncate, - scm_set_ptob_input_waiting_p): New setters. - (scm_newptob): Rewritten to use scm_make_port_type. For backward - compatibility. - (scm_ptobs): Changed type scm_ptobfuns --> scm_ptob_descriptor. - (scm_prinport): Removed. - (scm_port_print): Added. - (scm_print_port_mode): Added. - (void_port_ptob, print_void_port, close_void_port, noop0): - Removed. Removed #include "genio.h" Added #include "objects.h", - #include "smobs.h" - - * fports.c (prinfport): Moved code from ports.c. - (local_free): Added. - (scm_fptob): Removed. Instead use new interface. - (scm_make_fptob): Added. (Need to create basic ports in a - specific order in ports.c.) - - * strports.c (scm_stptob, prinstpt, noop0): Removed - (scm_make_stptob): Added. - - * vports.c (scm_sfport, prinsfpt, sf_read_flush, noop0): Removed. - (scm_make_sfport): Added. - - * filesys.c (scm_dir_print): Don't use the port printing code. - Instead provide specific directory printer. - - * gc.c (scm_gc_sweep): Use value returned from scm_ptobs[].free. - - * ioext.c (scm_redirect_port): Replaced scm_ptobfuns --> - scm_ptob_descriptor. - - * smob.c (scm_smob_print): Handle non-existing type name nicely. - Removed #include "genio.h" - - * objects.c (scm_make_port_classes): New function ptr. - -1999-07-24 Gary Houston <ghouston@easynet.co.uk> - - * gdbint.c (gdb_print, gdb_read): call scm_truncate_file. - - * ports.c (scm_truncate_file): renamed from scm_ftruncate. - allow the 1st argument to be a fdes or filename as well as a - port (as in the filesys.c version). - - * filesys.c (scm_truncate_file): removed. - -1999-07-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> - - * readline.c, readline.h: Removed. - - * objects.c, objects.h (scm_port_class): Added. - (scm_class_of): Look up port class in scm_port_class. - (SCM_IN_PCLASS_INDEX, SCM_OUT_PCLASS_INDEX, - SCM_INOUT_PCLASS_INDEX): Added. - - - * Makefile.am: Removed genio.c, genio.x. - - * genio.c: Removed. - -1999-07-23 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se> - - * init.c: Make sure that scm_post_boot_init_modules is called only - once. (Important when using a dumped image.; Thanks to Bernard - Urban.) - -1999-07-19 Jim Blandy <jimb@savonarola.red-bean.com> - - * guardians.c (scm_guardian_zombify): Separate scanning for - zombies from marking the pairs of the free list. - - * guardians.c (scm_guardian_zombify): Don't set marks manually --- - use the macros. (Thanks to Michael Livshin.) - - * eval.c (scm_m_lambda): Let bodycheck check the body of the - lambda. Let your sins be purified by the blood of the lambda. - (Thanks to Eric Hanchrow.) - - * net_db.c (h_errno): Don't declare this if it's #defined. Eew. - (Thanks to Valdis Kletnieks.) - - Fixes for EMX from Mikael Ståldal. - - * filesys.c: #include <io.h>, if we have it. - * scmconfig.h.in: Regenerated. - - * stime.c (ftime): Delete declaration for this function --- let - the system supply it. - - Cleanups from John Bley. - - * gdbint.c: Don't include <stdio.h> and "_scm.h" twice. - - * gsubr.c: Don't include "gsubr.h" twice. - - Cleanups for compilation on Irix 6, from David Kaelbling. - - * regex-posix.c (scm_regexp_error_msg): Change `rx' argument to - regex_t pointer. This is what the callers have, mostly. - (scm_regexp_exec): Don't forget to pass the `rx' argument to - scm_regexp_error_msg. - - * scmsigs.c (scm_sigaction): Cast SIG_DFL and SIG_IGN to SCM, not - int. That way, if we get a warning on this line, it's more likely - that we're really missing bits we care about. - - * snarf.h (SCM_CONST_LONG): Remove trailing semicolon from - definition. - - * tags.h (SCM_IMP, SCM_NCONSP, SCM_NCELLP, SCM_ITAG3, SCM_TYP3, - SCM_TYP7, SCM_TYP7S, SCM_TYP16, SCM_TYP16S, SCM_GCTYP16, - SCM_GCMARKP, SCM_GC8MARKP): Don't cast to int. Either SCM or no - cast at all is more appropriate in every case. At the moment, we - assume everywhere that SCM is an integral type anyway. - -1999-07-14 Gary Houston <ghouston@easynet.co.uk> - - * unif.c (scm_uniform_array_read_x), ports.c (scm_getc): increment - read_pos after scm_fill_buffer. - - * ioext.c (scm_do_read_line): simplify by ignoring the fill_buffer - return char. - - * vports.c (sf_fill_buffer), strports.c (stfill_buffer), - fports.c (fport_fill_buffer): implement the interface change. - - * ports.c (scm_fill_buffer): interface change: no longer increments - read_pos past the character that's returned. it seems clearer to - leave it to the caller to decide what to do (thanks Jim). - - * vports.c (sf_fill_buffer): put the read char into the buffer - as well as returning it. - - * ports.c (scm_grow_port_cbuf): residue of this deleted procedure - deleted. - -1999-07-13 Gary Houston <ghouston@easynet.co.uk> - - * strports.c (scm_strprint_obj): simplify. start with initial - buffer size of 0. - (st_seek): don't allow string to be extended if seeking past - the end of a read-only port. - -1999-07-12 Gary Houston <ghouston@easynet.co.uk> - - * strports.c (st_seek): change the resize checks. - - * ports.c (scm_ftruncate): throw error if offset works out negative. - - * strports.c (st_flush): increase string size in blocks of - SCM_WRITE_BLOCK instead of 1. set read_end to read_pos if - it's greater and reset read_buf_size. - (scm_mkstrport): set rw_randow if only writing, since read_buf needs - to be maintained for output ports too (it holds the written - part of the string, while write_buf may have unwritten buffer - chars.) - (st_truncate): rewritten. - (top of file): added a few notes. - -1999-07-10 Jim Blandy <jimb@savonarola.red-bean.com> - - Patch from Greg Badros: - * snarf.h (SCM_PROC, SCM_PROC1): Use __cplusplus or - GUILE_CPLUSPLUS_SNARF macros to force adding a cast to the last - (function pointer) argument to scm_make_gsubr and scm_make_subr - calls. This avoids warnings in C++ programs using guile-snarf. - -1999-07-06 Gary Houston <ghouston@easynet.co.uk> - - * strports.c (st_grow_port): set pt->read_pos. set - pt->read_buf_size one less than pt->write_buf_size if there's - an unwritten char at the end of the string. similarly for - pt->read_end. - (st_resize_port): renamed from st_grow_port. - (st_seek): simplify by assuming that pt->write_pos == pt->read_pos. - seek from read_end instead of write_end for SEEK_END. - (st_ftruncate): calculate current length using readbuf, not write - buf. - (scm_strport_to_string): use read_buf_size for length. - (stfill_buffer): don't re-initialise the readbuf. - -1999-07-05 Gary Houston <ghouston@easynet.co.uk> - - * strports.c (scm_strport_to_string): new procedure. - (scm_call_with_output_string, scm_strprint_obj): use - scm_strport_to_string. - used SCM_INUM0 instead of SCM_MAKINUM (0) in a few places. - -1999-07-08 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se> - - * symbols.c (scm_gensym): Bugfix. (Thanks to Johannes Hjorth.) - -Fri Jun 25 22:14:32 1999 Greg Badros <gjb@cs.washington.edu> - - * smob.c: added scm_make_smob_type_mfpe (), scm_set_smob_mfpe (); - use scm_make_smob_type_mfpe to initialize "free", "flo", "bigpos", - and "bigneg" smob types. - - * smob.h: Add do ... while(0) idiom to SCM_NEWSMOB. Added - SCM_RETURN_NEWSMOB macro. Added protos for new functions in - smob.c. - - * *.c: Use scm_make_smob_type_mfpe, instead of scm_newsmob, and - use SCM_NEWSMOB or SCM_RETURN_NEWSMOB in constructors instead of - SCM_NEWCELL and setting the CAR/CDR by hand. - -1999-07-04 Gary Houston <ghouston@easynet.co.uk> - - * 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. - - * vports.c (sf_read_flush): likewise. - * strports.c (st_read_flush): take offset arg. - * fports.c (local_read_flush): use offset, don't reset putback - buffer here. - - * ports.h (scm_ptobfuns): let read_flush take an offset argument, - which is the number of chars from the putback buffer. - - * ports.c (scm_read_flush): new procedure, resets the putback - buffer before calling the ptob routine. - - * strports.c (scm_strprint_obj): bug fix: get pt from the port, - not from the parameter obj. (Thanks to Eric Moore.) - - * ports.h: SCM_CRDY, SCM_CUC, SCM_CRDYP, SCM_SETRDY, SCM_CUNGET, - SCM_CGETUN, SCM_CLRDY, SCM_TRY_CLRDY, SCM_N_READY_CHARS: deleted. - - * strings.c (scm_make_string): throw error if 2nd arg isn't - a char. - - * unif.c (scm_uniform_array_read_x): fix reading from a port. - allow non-fports. - (scm_uniform_array_write): likewise. - -1999-06-29 Gary Houston <ghouston@easynet.co.uk> - - * ports.c (scm_drain_input): rewritten. - - * fports.c (local_fclose): check putback_buf. - (local_read_flush): likewise. - - * ports.c (scm_remove_from_port_table): maybe free putback_buf. - - * ports.h (scm_port): replace cbuf/cbufend/cp with putback_buf/ - putback_buf_size. - (SCM_INITIAL_PUTBACK_BUF_SIZE): renamed from SCM_INITIAL_CBUF_SIZE. - - * ports.c (scm_grow_port_cbuf): deleted. - (scm_add_to_port_table): initialise putback_buf to 0. remove cbuf - stuff. - (scm_char_ready_p): check putback_buf - (scm_fill_buffer): likewise. - (scm_ungetc): rewritten. - -1999-06-27 Gary Houston <ghouston@easynet.co.uk> - - * fports.c (local_fclose): account for push-back buffer. - - * ports.c (scm_char_ready_p): check the push-back buffer in - a new way. - - * ioext.c (scm_do_read_line): remove the extra code to handle - the push-back buffer. - - * ports.c (scm_getc): don't use SCM_CRDYP etc. - - * ioext.c (scm_do_read_line): call scm_fill_buffer. - - * ports.c (scm_ungetc): don't call SCM_CUNGET. reset the - read buffer pointers. - scm_fill_buffer: new procedure. - (scm_getc): call scm_fill_buffer. - - * ports.h (struct scm_port): saved_read_buf, saved_read_pos, - saved_read_end: new fields. - -1999-06-24 Mikael Djurfeldt <mdj@orjan.nada.kth.se> - - * dynl-dl.c (sysdep_dynl_link): Added parenthesis around the - trinary conditional in order for the flag computation to be - correct. - -1999-06-23 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se> - - * struct.c, struct.h: - - In order to support different kinds of deallocation, a destructor - slot has been added to struct vtables. This allows for structs - containing pointers to other memory blocks. - - (scm_struct_i_free): New hidden struct slot. Holds destructor for - instances to this vtable. - (scm_struct_free_0): New destructor: Doesn't deallocate data. - (scm_struct_free_light): New destructor: Deallocates a light - struct (i.e. a struct without hidden slots). - (scm_struct_free_standard): New destructor: Deallocates standard - structs. - (scm_struct_free_entity): New destructor: Deallocates entity - structs. - (SCM_SET_VTABLE_DESTRUCTOR): New macro. - - Changes to hidden slots: - - (scm_struct_i_size): scm_struct_i_flags now shares space with - scm_struct_i_size which holds the size of light structs. - (scm_struct_i_n_words): This slot has changed meaning. Previously - it included hidden slots. Now it indicates visible slots. - (scm_alloc_struct): Clear flags. - (SCM_STRUCTF_MASK): 4 new flag positions added => 12 bits. - - (struct_num, scm_struct_i_tag): Removed. - (scm_struct_vtable_tag): Base tag on the pointer to mallocated - memory. - (scm_struct_ihashq): Base hash value on pointer to struct handle. - - * tag.c (scm_tag): Base tag on vtable pointer. - - * objects.c (scm_init_objects): Initialize destructor slot of the - primordial entity class. - - * objects.h (SCM_SET_CLASS_DESTRUCTOR, - SCM_SET_CLASS_INSTANCE_SIZE): New macros. - - * gc.c (scm_gc_sweep): Call struct free slot. - - * keywords.c, keywords.h (scm_c_make_keyword): New function. - (We should remove the use of the prefix '-'.) - - * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): New macros. - - * libguile.h: #include "objects.h" - -1999-06-22 Marius Vollmer <mvo@zagadka.ping.de> - - * dynl.c (DYNL_GLOBAL): New. - (sysdep_dynl_link): Added `flags' argument. - (kw_global, sym_global): New. - (scm_dynamic_link): Handle keyword arguments. Pass suitable flags - to sysdep_dynl_link. - * dynl-dl.c (sysdep_dynl_link): Handle new `flags' argument by - conditrionally adding RTLD_GLOBAL to DLOPEN_MODES. - * dynl-shl.c (sysdep_dynl_link): Add and ignore new flags - argument. - * dynl-dld.c (sysdep_dynl_link): Add and ignore new flags - argument. - * dynl.h (scm_dynamic_link): Added rest argument. - -1999-06-21 Marius Vollmer <mvo@zagadka.ping.de> - - * dynl.c (sysdep_dynl_unlink, sysdep_dynl_func): Use const - qualifier for char* argument, to match prototypes. Thanks to Mark - Elbrecht. - -1999-06-21 Jim Blandy <jimb@savonarola.red-bean.com> - - * dynl.c (no_dynl_error, sysdep_dynl_link, sysdep_dynl_unlink, - sysdep_dynl_func): Use ANSI declarations, and const char * - pointers. (Thanks to Mark Elbrecht.) - -1999-06-19 Jim Blandy <jimb@savonarola.red-bean.com> - - Patch from Greg Harvey: - * eq.c, eval.c, list.c, ramap.c, vectors.c: Always write parens - around the condition of an `if', `while', etc., even if the - condition is a macro invocation that expands to something - surrounded by parens. It's more readable. - - * eval.c (scm_map, scm_for_each): Verify that all arguments are - proper lists, and of the appropriate lengths. - (check_map_args): New function. (Thanks to Greg Harvey for the - bug report.) - -1999-06-19 Michael Livshin <mike@olan.com> - - * guardians.c (guardian_t): `next' - new field to be used for - chaining the live guardians in a single-linked list during the GC - mark phase. - (GUARDIAN_NEXT): convenience macro to access the `next' field. - (guardians, guardians_size, n_guardians): deleted. - (first_live_guardian, current_link_field): new globals used to - point to the head of the live guardian list and current `next' - field, respectively. - (g_mark): append the guardian to the live guardian list. - (scm_guardian_gc_init): zero the live guardian list. - (scm_guardian_zombify): iterate through the live guardian list. - - (Applied by Jim Blandy.) - -1999-06-16 Jim Blandy <jimb@savonarola.red-bean.com> - - * gc.c (scm_mallocated): Just make this signed. - (scm_igc): Check for underflow by seeing if this is negative. - Much cleaner. - * gc.h (scm_mallocated): Fix declaration. - (Thanks to Greg Harvey.) - - * ports.h: #include <sys/types.h>, to get a definition for `off_t'. - -1999-06-15 Jim Blandy <jimb@savonarola.red-bean.com> - - * stime.c (bdtime2c): Initialize lt->gmtoff and lt->tm_zone from - sbd_time. (Thanks to Eric Hanchrow.) - - Fix from Ken Raeburn <raeburn@raeburn.org>: - * weaks.c (scm_make_weak_vector): Add another extra slot before - vector contents, to be used only during garbage collection. - * weaks.h (SCM_WVECT_GC_CHAIN): New macro to access it. - * gc.c (scm_weak_vectors): Now a SCM instead of a SCM*, and now - static. - (scm_weak_size, scm_n_weak): Deleted. - (scm_igc): Use SCM_WVECT_GC_CHAIN to build up a chain of weak - vectors without allocating new storage during GC, using - scm_weak_vectors as the head of the chain. - (scm_mark_weak_vector_spines): Walk SCM_WVECT_GC_CHAIN chain - instead of stepping through an array. - (scm_gc_sweep): Update offset used to find start of weak vector to - free it. - (scm_init_storage): Set scm_weak_vectors to EOL. - - Fix from Ken Raeburn <raeburn@raeburn.org>: - * gc.c (already_in_gc): New variable. - (scm_igc): Set and clear already_in_gc; abort if it's set at - entry. - -1999-06-14 Jim Blandy <jimb@savonarola.red-bean.com> - - Fix from Gary Houston: - * fports.c (local_seek): Signal an error if the seek fails. - * ports.c (scm_lseek): Don't check return value of port's seek - function; it's its job to signal an error if there's a problem. - -1999-06-12 Jim Blandy <jimb@savonarola.red-bean.com> - - * strports.c (scm_call_with_output_string): Don't include the - extra character at the end of the string in the result. - - * ioext.c (scm_read_line): Switch to reading properly. - - * fports.c, fports.h, gc.c, gdbint.c, ioext.c, ports.c, ports.h, - scmsigs.c, strports.c, vports.c: Install the sources which - actually correspond to the changes described below. I got the - ChangeLog entries and the patch from two different places... - -1999-06-09 Jim Blandy <jimb@savonarola.red-bean.com> - - * gc.c (scm_igc): Check for scm_mallocated underflow. Otherwise, - it shows up as terrible performance, as we GC constantly. - - * ioext.c (scm_do_read_line): Rewritten to use memchr to find the - newline. A bit faster, and definitely hairier. - (scm_read_line): Count newlines here instead. - - * strings.c (scm_take_str): New function. - (scm_take0str): Reimplement in terms of scm_take_str. * strings.h - (scm_take_str): New declaration. * ioext.c (scm_read_line): Use - scm_take_str, to avoid copying the string. - - Add some simple-minded support for line buffered ports. - * 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 - buffering. - (scm_putc, scm_puts, scm_lfwrite): If the port is line-buffered, - and there's a newline to be written, flush the port. - - Gary Houston's open-buffer port patches: - - 1999-04-26 Gary Houston <ghouston@easynet.co.uk> - - * ports.c: (scm_lseek): clear buffers even if just reading current - position. - - * fports.c (local_fclose): call local_fflush unconditionally. - (various): don't use the scm_must... memory procs. - - 1999-04-25 Gary Houston <ghouston@easynet.co.uk> - - * ports.h (scm_port): make read_pos a pointer to const. - strports.c: take care of rw_active and rw_randow. - fports.c: scm_fport_drain_input: removed. do it all in ports.c. - strports.c (scm_mkstrport): check that pos is reasonable. - ioext.c (scm_ftell, scm_fseek): use lseek. - (SCM_CLEAR_BUFFERS): macro deleted. - ioext.c (redirect_port: use ptob fflush, read_flush. - ports.h (scm_ptobfuns): add ftruncate. - ports.c (scm_newptob): set ftruncate. - adjust ptob tables. - 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. - ports.c (scm_init_ports): initialise the seek symbols here - instead of in ioext.c. - strports.c (scm_call_with_output_string): start with an empty - string, so seek and ftruncate can be used. - - gdbint.c: adjust string port usage. - - 1999-04-24 Gary Houston <ghouston@easynet.co.uk> - - * ports.h (scm_ptobfuns): add a read_flush procedure which is the - equivalent to fflush for the read buffer. - * ports.c (scm_newptob): set read_flush. - ports.c (void_port_ptob): set read_flush. - fports.c (local_read_flush): new proc. add to ptob. - strport.c (st_read_flush): likewise. - vport.c (sf_read_flush): likewise. - fports.h (struct scm_fport): remove random member. there's nothing - left but fdes. leaving it as a struct to allow for future changes. - fports.c: replace usage of scm_fport::random with scm_port::rw_random. - ports.c: (scm_putc, scm_puts, scm_lfwrite): call the read_flush - ptob proc if the read buffer is filled. - - 1999-04-23 Gary Houston <ghouston@easynet.co.uk> - - * ports.h (scm_port): add a rw_random member and replace - reading and writing members with rw_active member. - SCM_PORT_READ/SCM_PORT_WRITE: new values. - - 1999-04-22 Gary Houston <ghouston@easynet.co.uk> - - * ports.h (struct scm_port_table): add writing and reading members - to replace write_needs_seek: it isn't good enough for non-fports. - ports.c, ioext.c, fports.c: corresponding changes. - (struct scm_port_table): give it a typedef and rename to scm_port. - ports.c, fports.c, strports.c, vports.c, ioext.c, ports.h: - corresponding changes. - - 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 - and generalised to all port types. - - 1999-04-18 Gary Houston <ghouston@easynet.co.uk> - - * scmsigs.c (scm_init_scmsigs): set the SA_RESTART flag for all - signals (it was only being done for handlers installed from Scheme). - Otherwise (for example) SIGSTOP followed by SIGCONT on an interpreter - waiting for input caused an EINTR error from read. - - 1999-04-07 Gary Houston <ghouston@easynet.co.uk> - - * ports.h (struct scm_port_table): make all the char members - unsigned, so they convert to int without becoming negative if large. - - 1999-03-14 Gary Houston <ghouston@easynet.co.uk> - - * fports.c (scm_fdes_wait_for_input): forgot to check compilation - with threads enabled. rename this procedure to - fport_wait_for_input and take a port instead of a fdes. - use scm_fport_input_waiting_p instead of scm_fdes_waiting_p. - - * readline.c (scm_readline): Applied a patch from Greg Harvey to - get readline support working again: use fdopen to get FILE objects. - - 1999-02-26 Gary Houston <ghouston@easynet.co.uk> - - * gc.c (scm_init_storage): install an atexit proc to flush the - ports. - (cleanup): the new proc. it sets a global variable which can be - checked by the ptob flush procs to avoid trying to throw - exceptions during exit. not very pleasant but it seems more reliable. - * fports.c (local_fflush): check terminating variable and if set - don't throw exception. - * CHECKME: that the atexit proc is installed if unexec used. - - * throw.c (scm_handle_by_message): don't flush all ports here. - it still causes bus errors. - - * fports.h (SCM_FPORT_CLEAR_BUFFERS): rename to SCM_CLEAR_BUFFERS - and move to ioext.c. - - * fports.c (scm_fdes_waiting_p): merged into fport_input_waiting_p. - - * ports.c (scm_char_ready_p): check the port buffer and call the - ptob entry if needed. - - * ports.h (scm_ptobfuns): input_waiting_p added. change all the - ptob initialisers. use it in char-ready - - * ioext.c (scm_do_read_line): moved from ports.c. make it static. - - * vports.c (sfflush): modified to write a char (since softports - currently use shortbuf.) - - * fports.c (scm_standard_stream_to_port): moved to init.c and - made static. - - * init.c (scm_init_standard_ports): make stdout and stderr - unbuffered if connected to a terminal. with stdio they - were line-buffered by default. - - (scm_ptobfuns): fputc, fputs, fwrite, fgetc, fgets removed. - update ptob tables. - - * ports.h (scm_ptobfuns): change fflush return to void. - change flush proc definitions. - - * strports.c (scm_call_with_output_string): get size from - buffer instead of port stream. - (st_flush): new proc. - - * ports.h (struct scm_port_table): added write_end member, - as an optimisation. set it where write_buf_size is set. - - * ports.h (struct scm_port_table): change stream from void * - back to SCM. SCM presumably must be large enough to hold a - pointer (and probably vice versa but who knows.) - (SCM_SSTREAM): deleted. change users back to SCM_STREAM. - - (scm_puts): rewritten - * fports.c (local_ffwrite, local_fputs): removed. - * strports.c (stputc, stputs, stwrite): dyked out (FIXME) - * vports.c (sfputc, sfputs, sfwrite) likewise. - * ports.c (write_void_port, puts_void_port): removed. - (putc_void_port, getc_void_port, fgets_void_port): likewise. - - * ports.c (scm_lfwrite): rewritten using fport.c version. - - * fports.c (local_fputc): deleted. - - * ports.c (scm_add_to_port_table): initialise write_needs_seek. - - * ports.h (scm_ptobfuns): add seek function pointer. - * fports.c: set it to local_seek, new procedure. - - - * fports.h (SCM_MAYBE_DRAIN_INPUT): moved to ports.c. - use ptob for seek. take ptob instead of fport arg. - - * ports.h (struct scm_port_table): new member write_needs_seek, - replaces reading member in fport struct. - - * vports.c (sfgetc): store the getted char into the buffer. - rename to sf_fill_buffer and install it for fill-buffer in ptob. - the Scheme interface is still a procedure that gets a char. - (scm_make_soft_port): set up the port buffer (shortbuf). - - * fports.c (local_fgetc, local_fgets): deleted. - * strports.c (stgetc): likewise. - * ports.c: scm_generic_fgets: likewise. - - * ports.h (scm_ptobfuns): add fill_buffer. - * ports.c (scm_newptob): assign it. - * strports.c (scm_mkstrport): set up the buffer. - put just the string into the stream, not cons (pos stream). - (stfill_buffer): new proc. - - * ports.h: fport buffer moved into port table: to be - used for all port types. - - 1998-12-20 Gary Houston <ghouston@easynet.co.uk> - - * throw.c (scm_handle_by_message): flush ports at exit. - - * socket.c (scm_sock_fd_to_port): use scm_fdes_to_port. - (scm_getsockopt, scm_setsockopt, scm_shutdown, scm_connect, - scm_bind, scm_listen, scm_accept, scm_getsockname, - scm_getpeername, scm_recv, scm_send, scm_recvfrom, - scm_sendto, - use SCM_FPORT_FDES. use SCM_OPFPORTP not SCM_FPORTP. - - * posix.c (scm_getgroups): use SCM_ALLOW/DEFER_INTS. - (scm_ttyname): use SCM_FPORT_FDES. - (scm_tcgetpgrp, scm_tcsetpgrp): likewise. - - * filesys.c (scm_chown): use SCM_FPORT_FDES. - (scm_chmod, scm_stat, scm_truncate_file: likewise. - - * ioext.c (scm_isatty_p): use SCM_FPORT_FDES. - (scm_fdes_to_ports): modified. - (scm_fdopen): use scm_fdes_to_port. - - * ports.c (scm_init_ports): don't try to flush ports using - atexit(). it's too late, errors will cause SEGV. - - * fports.c (scm_fport_buffer_add): new procedure. - - * fports.h (SCM_FDES_RANDOM_P): new macro. use it in - scm_fdes_to_port and scm_redirect_port. - - * ioext.c (scm_redirect_port): use setvbuf to set buffers in the - new port. reset fp->random. - - * 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, - derive buffer size from fdes or use a default. - (scm_fdes_to_port): use setvbuf instead of creating the buffers - directly. - - vports.c (various places): use SCM_SSTREAM. - strports.c: likewise. - * gdbint.c: likewise. - * ports.h (SCM_SSTREAM): new macro. - - * fports.c (scm_input_waiting_p): use scm_return_first, since port - may be removed from the stack by the tail call to scm_fdes_waiting_p. - - * fports.h (SCM_CLEAR_BUFFERS): new macro. - - * filesys.c (scm_fsync): use SCM_FDES. - - * 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). - - * fports.h (SCM_FPORT_FDES): new macro. - - * filesys.c (scm_fcntl): get fdes from fport. - (set_element, get_element): likewise. - - * vports.c (sfflush): don't need to set errno. - - * ports.c: install scm_flush_all_ports to be run on exit. - - * filesys.c (scm_open): adjust port_mode for O_APPEND and O_CREAT. - - ports.c fports.c ioext.c posix.c socket.c net_db.c filesys.c: - removed all uses of SCM_DEFER/ALLOW ints for now. they were mainly - just protecting errno. some may need to be put back. - - * scmsigs.c (take_signal): save and restore errno while this - proc runs. - - *fports.c (print_pipe_port, local_pclose, scm_pipob): deleted. - 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. - - * ioext.c (scm_primitive_move_to_fdes): use fport. - * fport.c (scm_fport_fill_buffer): flush write buffer if needed. - change arg type from scm_fport to SCM port. - fport.h (SCM_SETFDES): removed. - (SCM_MAYBE_DRAIN_INPUT): new macro. - - * fport.h (struct scm_fport): added 'random'. - fport.c (scm_open_file): set random if lseek works. - - * ioext.c (scm_dup_to_fdes): use SCM_FSTREAM. - (scm_ftell): always use lseek and account for the buffer. - (scm_fileno): use fport buffer. - (scm_fseek): clear fport buffers. always use lseek. - - * posix.c (scm_pipe): use fport buffer. - * unif.c: include fports.h instead of genio.h. - * fports.c (scm_fdes_wait_for_input, scm_fport_fill_buffer): new - procedures. - (local_fgetc): use them. - (local_ffwrite): use buffer. - (local_fgets): use buffer. - (scm_setbuf0): 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_stdio_to_port): deleted. - fports.h (struct scm_fport): add shortbuf member to avoid separate - code for unbuffered ports. - (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP, SCM_OPOUTFPORTP): moved - from ports.h. - - * genio.c, genio.h: move contents into ports.c, ports.h. The - division wasn't useful. - - * fports.c, fports.h (scm_fport_drain_input): new procedure. - * ports.c (scm_drain_input): call scm_fport_drain_input. - * scm_fdes_waiting_p: new procedure. - * fports.c (scm_fdes_to_port): allocate read and/or write buffers. - (scm_input_waiting_p): check the buffer. - (local_fgetc, local_fflush, local_fputc): likewise. - - * fports.h (scm_fport): read/write_buf,_pos,_buf_end,,_buf_size: - new members. - * init.c (scm_init_standard_ports): pass fdes instead of FILE *. - - * 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. - (local_fputc, local_fputs, local_ffwrite): use write, not stdio. - (scm_standard_stream_to_port): change first arg from FILE * to - int fdes. - (local_fflush): flush fdes, not FILE *. - * fports.h (SCM_NOFTELL): removed. - * genio.c, ports.c: don't include filesys.h. - * genio.c (scm_getc): don't use scm_internal_select if FPORT. - do it in fports.c:local_fgetc. - * genio.c: don't use SCM_SYSCALL when calling ptob procedures. - do it where it's needed in the port smobs. - * filesys.c (scm_input_waiting_p): moved to fports.c, stdio - buffer support removed. take SCM arg, not FILE *. - * filesys.h: prototype moved too. - * fports.c (scm_fdes_to_port): new procedure. - (local_fgetc): use read not fgetc. - (local_fclose): use close, not fclose. - (local_fgets): use read, not fgets - * fports.h: prototype for scm_fdes_to_port. - * fports.h (scm_fport): new struct. - * fports.c (scm_open_file): use open, not fopen. - #include fcntl.h - * ports.h (struct scm_port_table): change stream from SCM to void *. - * ports.c (scm_add_to_port_table): check for memory allocation error. - (scm_prinport): remove MSDOS hair. - (scm_void_port): set stream to 0 instead of SCM_BOOL_F. - (scm_close_port): don't throw errors: do it in fports.c. - -1999-06-04 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se> - - * numbers.c: Added #include "feature.h". - -1999-05-23 Mikael Djurfeldt <mdj@barbara.nada.kth.se> - - * smob.c, smob.h (scm_make_smob_type): New interface to smob - types (supersedes scm_newsmob). - (scm_set_smob_mark, scm_set_smob_free, scm_set_smob_print, - scm_set_smob_equalp): New functions. Sets smob functions. - (SCM_NEWSMOB): New macro. Creates smob objects. - (scm_make_smob): New function. Creates smob objects and - mallocates memory. - (scm_smob_free, scm_smob_print): Default free and print - functions. - - * Makefile.am: Removed markers.c, markers.x, markers.h. - - * markers.c, markers.h: Removed. (Contents moved to smob.c, - smob.h.) - - * arbiters.c, async.c, regex-posix.c: Use new smob interface. - - * eval.c, fports.c, libguile.h, ports.c: Removed #include - "markers.h". - - * fluids.c, guardians.c, srcprop.c, threads.c: Added #include - "genio.h". - - * regex-posix.c, regex-posix.h: Renamed scm_tc16_regex_t --> - scm_tc16_regex. - -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, - 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 - this finding! :) Preliminary dating suggests an almost 4 year old - remnant from the SCM ancestor. The sample has been removed from - the finding site and is now safely stored in the repository. - - * numbers.h: Removed prototype for num2long. - - * unif.c (scm_array_set_x): Use scm_num2long instead of num2long. - - * gh_data.c (gh_scm2doubles): Make it possible to pass result - array as second arg. - (gh_chars2byvect, gh_shorts2svect, gh_floats2fvect, gh_scm2chars, - gh_scm2shorts, gh_scm2longs, gh_scm2floats): New functions. - * gh.h: Updated and added prototypes. - - * gh_data.c (gh_ints2scm): Handle integers outside INUM limits. - -1998-10-24 Jim Blandy <jimb@zwingli.cygnus.com> - - * gc.h: Remove all uses of SCM_P. (Thanks to Richard Polton.) - - * guile-snarf.in: Never generate an empty file. (Thanks to - Richard Polton.) - - * gh.h (gh_enter, gh_new_procedure0_0, gh_new_procedure0_1, - gh_new_procedure0_2, gh_new_procedure1_0, gh_new_procedure1_1, - gh_new_procedure1_2, gh_new_procedure2_0, gh_new_procedure2_1, - gh_new_procedure2_2, gh_new_procedure3_0, gh_new_procedure4_0, - gh_new_procedure5_0): Specify argument types, to appease C++ - compilers. (Thanks to Brad Bowman.) - - Bug reports from Russ McManus: - * guile-snarf.in: If the CPP environment variable is set, use that - as the C preprocessor, instead of the preprocessor autoconf - found. - * snarf.h (SCM_PROC): Cast the function pointer passed to - scm_make_gsubr, to satisfy C++. - - * gh_eval.c (gh_eval_str_with_catch, gh_eval_file_with_catch): - Use the handler passed, instead of ignoring it and using - gh_standard_handler. (Thanks to Etienne Bernard.) - -1998-10-20 Jim Blandy <jimb@zwingli.cygnus.com> - - * ports.h: Put text after #endif in comment. (Thanks to Nicolas - Neuss.) - -1998-10-19 Jim Blandy <jimb@zwingli.cygnus.com> - - * __scm.h, alist.c, async.c, async.h, backtrace.h, chars.c, - continuations.c, debug.c, debug.h, dynl-dl.c, dynl.c, dynl.h, - dynwind.c, dynwind.h, eq.c, error.c, error.h, eval.c, eval.h, - feature.c, filesys.c, filesys.h, fports.c, fports.h, gc.c, gc.h, - genio.c, genio.h, gh.h, gh_data.c, gsubr.c, gsubr.h, hash.c, - hashtab.c, init.c, init.h, ioext.c, ioext.h, kw.c, libguile.h, - list.c, list.h, load.c, load.h, mallocs.c, markers.c, - mit-pthreads.c, net_db.c, numbers.c, numbers.h, options.c, - ports.c, ports.h, posix.c, posix.h, print.c, print.h, procprop.c, - procprop.h, procs.c, procs.h, ramap.c, ramap.h, regex-posix.c, - regex-posix.h, root.c, root.h, scmsigs.c, scmsigs.h, script.c, - script.h, simpos.c, simpos.h, smob.c, smob.h, snarf.h, socket.c, - srcprop.c, stackchk.c, stackchk.h, stacks.c, stime.c, stime.h, - strings.c, strings.h, strports.c, struct.c, struct.h, symbols.c, - symbols.h, tags.h, threads.c, throw.h, unif.c, variable.c, - vectors.c, vectors.h, version.h, vports.c, weaks.c: Update - copyright years. - - * script.c (scm_compile_shell_switches): Define - use-emacs-interface in the root module, so the repl code can see - it. See today's change to top-repl in ice-9/boot-9.scm. - - * filesys.c (set_element, get_element): Make sure that `element' - is a cell before applying SCM_FPORTP to it. (Thanks to Jost - Boekemeier and Jorgen "forcer" Schaefer.) - -1998-10-18 Jim Blandy <jimb@zwingli.cygnus.com> - - * chars.c (scm_charnames): In ASCII character name table, make - newlines print as #\newline by default, not #\nl. - - * Makefile.am (libguile_la_SOURCES, BUILT_SOURCES): Put these in - alphabetical order. Oh thrills. But it helps me know how far - along in the compilation I am. - * Makefile.in: Regenerated. - -1998-10-18 Mikael Djurfeldt <mdj@barbara.nada.kth.se> - - * unif.c (scm_raprin1): Changed print syntax for byte vectors from - #bytes(...) to #y(...), and syntax for short vectors from - #short(...) to #h(...). This may seem nutty, but, like the other - uniform vectors, byte vectors and short vectors want to have the - same print and read syntax (and, more basic, want to have read - syntax!). Changing the read syntax to use multiple characters - after the hash sign breaks with the conventions used in R5RS and - the conventions used for the other uniform vectors. It also - introduces complexity in the current reader, both on the C and - Scheme levels. (The Right solution is probably to change the - syntax and prototypes for uniform vectors entirely.) - -1998-10-17 Jim Blandy <jimb@savonarola.red-bean.com> - - Don't use local_fgets on sockets; ftell doesn't work on sockets. - (Thanks to Jorgen "forcer" Schaefer.) - * ports.h (SCM_NOFTELL): New flag. - * fports.c (local_fgets): If it's set, use the generic fgets. - * socket.c (scm_socket): Set SCM_NOFTELL on the ports we produce. - -1998-10-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se> - - * script.c (scm_compile_shell_switches): Add handling of -q switch - (inhibit loading of user init file). - (scm_shell_usage): Add usage text for -q switch. - (scm_compile_shell_switches): Always load user init file first if - it is loaded at all. - -1998-10-16 Jim Blandy <jimb@zwingli.cygnus.com> - - * stime.c: The CPP hair to determine a value for CLKTCK is weird, - and is now broken under NetBSD. I can't fathom what it's trying - to do, so I've replaced it with something that I do understand, - which seems to work, and which isn't broken on NetBSD. "Progress? - You Decide." (Thanks to Perry Metzger.) - - * regex-posix.c (scm_regexp_exec): Add a cast to remove a - signed/unsigned comparison. - -1998-10-15 Jim Blandy <jimb@zwingli.cygnus.com> - - Warning fixes from Greg Harvey: - * unif.c (scm_array_set_x): initializer for pos - * throw.c (scm_ithrow): added initializer for jmpbuf (SCM_UNDEFINED) - * struct.c (scm_struct_ref, scm_struct_set_x): Added - initializers for field_type, since EGCS so desparately wants to - play dumb - * debug.h (scm_make_gloc, scm_gloc_p, scm_make_iloc, scm_memcons, - scm_mem_to_proc, scm_proc_to_mem, scm_debug_hang): Added prototypes - when GUILE_DEBUG is defined. - * dynwind.h (scm_wind_chain): Same. - * ports.h (scm_pt_size, scm_pt_member): Same. - * print.h (scm_current_pstate): Same. - * procs.h (scm_make_cclo): Same. - -1998-10-14 Jim Blandy <jimb@zwingli.cygnus.com> - - Handle short and long long uniform arrays properly. (Thanks to - Clark McGrew.) - * ramap.c (scm_ra_matchp, scm_array_fill_int, scm_array_index_map_x, - raeql_1): Add cases for scm_tc7_svect (short vectors) and - scm_tc7_llvect (long long vectors). - - Change the way libguile and boot-9.scm are timestamped, to try to - get rid of these spurious mismatch warnings. Now both - libguile/versiondat.h and ice-9/version.scm are generated directly - by the configuration process, rather than having version.scm - generated directly, and libguile/versiondat.h generated by the - Makefile, which is generated by configure. It seems that - sometimes the Makefile would change, but versiondat.h depends on - Makefile.in, not Makefile, so it wouldn't get rebuilt. - * Makefile.am (versiondat.h): Target removed; this is generated - directly by the configure script now. - (BUILT_SOURCES): Remove versiondat.h. - * versiondat.h.in: New file, transformed by the configure script - into versiondat.h. - * Makefile.in: Regenerated. - - * (__scm.h, alist.c, eval.c, feature.c, gsubr.c, numbers.c, - options.c): Rename RECKLESS -> SCM_RECKLESS, CAUTIOUS -> - SCM_CAUTIOUS; this way, 1) there's only one version of each flag - to define (we used to have both RECKLESS and SCM_RECKLESS), and 2) - if we want to use them in a header file some day, we can. (Thanks - to Michael Livshin.) - - * stime.c (scm_get_internal_real_time): Do the arithmetic using - SCM numbers, so we won't have rollover problems; the range of a - signed long in milliseconds is about 25 days. (Thanks to Karl - Hegbloom.) - - Don't redefine sleep and usleep; fix this problem now. - * coop.c (sleep, usleep): Remove declarations; we don't use or - redefine these any more. - (scm_thread_usleep, scm_thread_sleep): New functions which do the - job of usleep and sleep in a thread-friendly way. We can use - these in the rest of Guile. Define versions for systems both with - and without iselect. - * threads.h (scm_thread_usleep, scm_thread_sleep): New declarations. - * scmsigs.c (usleep): Clean up oddities declaring usleep; since - we're just using it, not redefining it, we can use a K&R style - declaration here. - (sleep): Declare this, too, if the system hasn't. - (scm_sleep, scm_usleep): Use scm_thread_sleep and - scm_uthread_sleep if they're available; otherwise, just call the - system functions. - * scmconfig.h.in: Regenerated. - - * coop.c (scm_thread_sleep): Make `slept' an unsigned long. - - * coop.c (coop_sleephelp): Remove ANSI #ifdef hair. - -1998-10-12 Jim Blandy <jimb@zwingli.cygnus.com> - - * threads.c: Doc fix. - - The argument type of usleep varies from system to system, - as does the return type. We really shouldn't be redefining usleep - at all, but I don't have time to clean that up before the 1.3. - release. It's on the schedule for afterwards. (Thanks to Julian - Satchell.) - * coop.c (usleep): Use USLEEP_ARG_TYPE in prototype and - definition. - * scmsigs.c (usleep): Use USLEEP_ARG_TYPE in prototype. - * scmconfig.h: Regenerated. - - * simpos.c (scm_software_type): Procedure deleted. This isn't the - right way to handle system variation. Autoconf's approach is the - way and the light. - * simpos.h (scm_software_type): Declaration deleted. - - * script.c (scm_find_executable): Don't test if unix is #defined - here; first, NetBSD doesn't #define it, and second, it's the wrong - way to go about these things. (Thanks to Perry Metzger.) - (dld_find_executable): Delete this MSDOS support code. This isn't - the way we want to support this; it needs to be rethunk at a - larger scale. - - * genio.c (scm_do_read_line): Don't just politely check that the - line was either non-empty or EOF. Abort if it's empty and not - EOF. - -1998-10-11 Jim Blandy <jimb@zwingli.cygnus.com> - - * scmconfig.h.in: Regenerated. - - * libguile.h: Don't omit the dynamic linking functions. (Thanks - to Greg Badros.) - - * genio.c (scm_do_read_line): Count lines correctly when the file - doesn't end in a newline. - -1998-10-10 Jim Blandy <jimb@zwingli.cygnus.com> - - * genio.c (scm_do_read_line): Maintain the line count correctly. - (Thanks to Harvey J. Stein and Greg Harvey.) - - * gc.c (scm_return_first): Remove #ifdef __STDC__ garbage; Guile - requires ANSI now. - - * numbers.c (big2str): Protect t from garbage collection until - we're done. (Thanks to Gary Houston.) - -1998-10-09 Jim Blandy <jimb@zwingli.cygnus.com> - - * Makefile.am (libguile_la_LDFLAGS): Increment shared library - version number. - * Makefile.in: Regenerated. - - * fports.h (scm_setbuf0, scm_setvbuf, scm_setfileno, - scm_evict_ports, scm_open_file, scm_stdio_to_port): Get rid of - SCM_P macro. - - Do magic to mix reads and writes on stdio FILE-based ports. - (Thanks to Christian Lynbech.) - * fports.c (FPORT_READ_SAFE, FPORT_WRITE_SAFE, FPORT_ALL_OKAY): - New macros. - (pre_read, pre_write): New functions. - (local_fgetc, local_fgets, local_ffwrite, local_fputc, - local_fputs): Call them. - (local_fflush): Mark the port as ready for reading and writing. - (scm_stdio_to_port): Set the FPORT_READ_SAFE, FPORT_WRITE_SAFE - flags on new port objects. This might not be accurate --- who - knows what state the FILE * is in when we get it --- but it won't - do extraneous calls to fflush or fseek, so it's no worse than the - behavior before this change. - * ports.h: Add comment. - - Centralize the creation of port objects based on stdio FILE * in - fports.c; don't just throw them together anywhere. - * fports.c (scm_stdio_to_port): Make NAME a SCM value, which is - what the rest of Guile wants. Don't set the revealed count; - that's only appropriate for stdin, stdout, stderr. - (scm_standard_stream_to_port): This function does set the revealed - count. - * init.c (scm_init_standard_ports): Use scm_standard_stream_to_port, - not scm_stdio_to_port. - * filesys.c (scm_open): Call scm_stdio_to_port; don't write it out. - * fports.c (scm_open_file): Same. - * posix.c (scm_pipe): Same. - * socket.c (scm_sock_fd_to_port): Same. - * ioext.c (scm_fdopen): Same. - (scm_freopen): Moved from here to... - * fports.c (scm_freopen): ... here. This is really something that - munges the internals of an fport, so it should go here. - * fports.h (scm_stdio_to_port): Adjust prototype. - (scm_standard_stream_to_port, scm_freopen): New protoypes. - * ioext.h (scm_freopen): Prototype removed. - - * filesys.c (set_element, get_element): This can work on both pipe - and file ports, so use SCM_FPORTP to typecheck, instead of testing - for scm_tc16_fport. - - * scmconfig.h.in: Regenerated. - - Change the definition of the functions in scm_ptobfuns so that - they get passed the port object, not the port's stream. - * ports.h (scm_ptobfuns): Rename all `stream' arguments to `port'. - * gc.c (scm_gc_sweep): Pass the port itself to the free function. - * genio.c (scm_putc, scm_puts, scm_lfwrite, scm_fflush, scm_getc): - Pass the port itself to the scm_ptobs function. - * ports.c (scm_close_port, scm_force_output, scm_flush_all_ports, - scm_generic_fgets): Same. - (putc_void_port, puts_void_port, write_void_port, flush_void_port, - getc_void_port, fgets_void_port, close_void_port): Just change the - argument names; these functions don't really do anything. - * fports.c (local_fgetc, local_fgets, local_fclose, local_fflush, - local_fputc, local_fputs, local_ffwrite, local_pclose): Take the - port as an argument, and use SCM_STREAM to get the stdio FILE *. - Also, use prototyped definitions, and get rid of the extra - declarations. - (scm_fptob, scm_pipob): We don't need casts here any more. - * strports.c (prinstpt): Use prototype declarations. - (stputc, stwrite, stputs, stgetc): Take the port as an argument, - and use SCM_STREAM to get the string info. Also, use prototyped - definitions, and get rid of the extra declarations. - * vports.c (sfputc, sfwrite, sfputs, sfflush, sfgetc, sfclose, - noop0): Same. - - * ports.h (scm_ptobfuns): Replace uses of SCM_P with a straight - prototype; it's okay (preferred, even!) to use ANSI C in Guile. - - * fports.c (local_fgetc, local_fgets): Renamed from scm_fgetc and - scm_fgets, for consistency. - (scm_fptop, scm_pipob): References updated. - -1998-10-08 Jim Blandy <jimb@zwingli.cygnus.com> - - Include the source location in error messages for scripts. - * init.c (scm_boot_guile_1): Use scm_internal_lazy_catch, so the - stack is still there when we catch the error. - * throw.c (handler_message): If we are handling an error with a - message, then put together the proper arguments and call - scm_display_error, instead of scm_display_error_message. That - displays source location, if it can find it. - -1998-10-07 Jim Blandy <jimb@zwingli.cygnus.com> - - * gc.c (scm_unprotect_object): Change this so that calls to - scm_protect_object and scm_unprotect_object nest properly. - (scm_protect_object): Doc fixes. - - * strings.c (scm_string_set_x): Require the argument to be a - writable string, not a substring or a symbol. - * strings.h (SCM_RWSTRINGP, SCM_NRWSTRINGP): New predicates. - (Thanks to John Redford and Charbel Jacquin.) - - * scmconfig.h.in: Regenerated; ../acconfig.h has changed. - -1998-10-07 Jim Blandy <jimb@totoro.red-bean.com> - - * eval.c (safe_setjmp): Remove this misunderstanding. - (ENTER_APPLY, SCM_CEVAL, SCM_APPLY): Replace with references to - ordinary setjmp. - -1998-10-06 Jim Blandy <jimb@zwingli.cygnus.com> - - * libguile.h: Mark these as C declarations, for compilation by C++ - compilers. - - * snarf.h (SCM_PROC, SCM_PROC1): Remove very odd code in #ifdef - __cplusplus clause. I seriously doubt this ever worked the way - the author seems to have intended. - -1998-10-05 Jim Blandy <jimb@zwingli.cygnus.com> - - Utterly needless cleanups to hopelessly messy code. - * ports.c: Doc fixes. - (scm_fflush): Moved to ... - * genio.c (scm_fflush): ... here, amongst all the other port - method invocation functions. - * genio.h, ports.h: The prototype moves too. - -1998-10-04 Jim Blandy <jimb@zwingli.cygnus.com> - - * backtrace.c (display_error_body): The current frame does not - always have a parent frame; consider a function called directly - from the MAIN_FUNC passed to scm_boot_guile. (Thanks to Maciej - Stachowiak.) - - * alloca.c (alloca): Undo yesterday's changes, and simply call - malloc directly for storage, and abort if we don't get what we - want. The situation is much simpler --- just call malloc. Emacs - has bizarre/evil requirements (signal handlers might malloc unless - you set this global flag, so you have to set the flag around all - calls to malloc) which we are certainly not going to conform to, - so we can do the simple and obvious thing. - - * coop.c (coop_condition_variable_wait): Make this function - static. It's only useful internally --- you should never just - wait on a condition variable. - * coop-defs.h (coop_condition_variable_wait): Delete prototype. - -1998-10-03 Jim Blandy <jimb@zwingli.cygnus.com> - - * unif.c (scm_array_set_x): Accept any kind of number as an - element for a uniform vector of doubles. This is more consistent - with Scheme's view of numbers. (Thanks to Miroslav Silovic.) - - * alloca.c: Use scm_must_malloc to obtain storage. Hopefully this - works; I can't conveniently test it myself. (Thanks to Dvid - Tillman for the bug report.) - - * init.c: Doc fixes. - - * init.c (invoke_main_func): Load the startup files (boot-9.scm) - from here, not from scm_compile_shell_switches (which is a pretty - dumb place to do it). - (scm_load_startup_files): New function. - (scm_ice_9_already_loaded): Variable moved to here from script.c. - * script.c (scm_compile_shell_switches): Don't load the startup - files here. - (scm_ice_9_already_loaded): Variable moved. - * init.c (scm_load_startup_files): Prototype for new function. - * gh_init.c (gh_enter): Doc fix. - -1998-10-03 Jim Blandy <jimb@savonarola.red-bean.com> - - Some anti-warning changes from Greg Harvey. - * gh_data.c (gh_scm2doubles): Initialize m, to avoid compiler - warnings when it doesn't understand our NORETURN declarations in - error.h. - * posix.c (scm_mknod): Similar. - -1998-10-03 Jim Blandy <jimb@zwingli.cygnus.com> - - * posix.c (scm_getpwuid): If we can't find an entry, return our - own message, instead of using scm_syserror --- the getpwMUMBLE - functions don't set `errno' to anything interesting. - -1998-10-03 Jim Blandy <jimb@savonarola.red-bean.com> - - Get rid of warnings from the cooperative threading system. - * threads.h (scm_single_thread_p, scm_yield, - scm_call_with_new_thread, scm_join_thread, scm_make_mutex, - scm_lock_mutex, scm_unlock_mutex, scm_make_condition_variable, - scm_wait_condition_variable, scm_signal_condition_variable): Add - prototypes for these Scheme-visible functions. - * coop-defs.h (coop_next_runnable_thread, - coop_wait_for_runnable_thread_now, coop_wait_for_runnable_thread): - Prototypes for these here, even though they're from iselect.c. - (coop_condition_variable_wait, coop_join): Add prototypes. - * coop-threads.c (scm_threads_free_thread, scm_threads_free_mutex, - scm_threads_free_condvar): Make these smob functions static. - * coop-threads.h (coop_init): Give this a real prototype. - * coop.c: #include <unistd.h>, if we have it, for `usleep' and `sleep'. - (coop_next_runnable_thread): No need to provide prototype; it's in - coop-defs.h. - - * scmconfig.h.in: .detarenegeR - - * iselect.c, threads.c: Doc fixes. - -1998-10-03 Jim Blandy <jimb@zwingli.cygnus.com> - - * Makefile.in: Regenerated with a patched automake, to get - dependency generation right when using EGCS. - - * inet_aton.c (inet_aton): Add prototype, to remove compiler - warning. (Thanks to Robert Pluim.) - - * inet_aton.c (inet_aton): Reassure the compiler that the - arguments to the <ctype.h> macros are all unsigned characters, not - signed characters. - -1998-10-03 Jim Blandy <jimb@savonarola.red-bean.com> - - Getting rid of more warnings... - * iselect.c: Test for MISSING_BZERO_DECL, not DECLARE_BZERO; see - today's change to ../configure.in. - * scmsigs.c: Test for MISSING_USLEEP_DECL, not DECLARE_USLEEP. - * scmconfig.h.in: Regenertaded.de.,.__ - * stime.c (strptime): Declare this, #ifdef MISSING_STRPTIME_DECL. - (scm_localtime, scm_mktime): Use a const char * to manipulate the - time zone name. - - * readline.c: Doc fix. - (rl_cleanup_after_signal, rl_free_line_state): Make these static. - * readline.h (scm_filename_completion_function): Add prototype. - (scm_init_readline): Make this into a prototype. - - * readline.c (scm_filename_completion_function): Use SCM_PROC to - declare this, instead of calling scm_make_subr manually. - -1998-10-02 Jim Blandy <jimb@savonarola.red-bean.com> - - * readline.h (scm_init_readline): Add prototype for this. - (scm_init_readline): Make this a real prototype. - -1998-09-30 Jim Blandy <jimb@zwingli.cygnus.com> - - Warning fixes from Maciej Stachowiak: - * backtrace.h (scm_display_application, scm_backtrace): Add - prototypes. - * debug.c (scm_m_start_stack): Make this function static. - * fluids.h (scm_fluid_p): Add prototype. - * procprop.c (scm_i_procedure_arity): Make this function static. - * regex-posix.c (scm_regexp_error_msg): Make this function static. - * regex-posix.h (scm_init_regex_posix): Use prototype, not K&R decl. - * root.h (scm_dynamic_root): Add external prototype. - * scmsigs.h (scm_usleep): Add external prototype. - * script.h (scm_init_script): Use prototype, not K&R decl. - * stacks.h (scm_stack_id): Add external prototype. - * symbols.h (scm_sysintern0_no_module_lookup): Add external prototype. - -1998-09-30 Mark Galassi <rosalia@cygnus.com> - - * gh.h: took out the definitions of vset and vref, since they are - replaced by the proper vector routines that correspond to the R4RS - procedures. - -1998-09-29 Jim Blandy <jimb@totoro.red-bean.com> - - * snarf.h (SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT): New macros; - these are analogous to SCM_VCELL and SCM_GLOBAL_VCELL but take a - third argument, a C expression that should result in a SCM value, - which is used to initialize the variable. Reimplemented - SCM_CONST_LONG in terms of SCM_VCELL_INIT. (Thanks to Maciej - Stachowiak.) - - * version.h (scm_libguile_config_stamp): Add prototype. - (From Maciej Stachowiak.) - -1998-09-26 Jim Blandy <jimb@zwingli.cygnus.com> - - * eval.c (scm_force): Assert that x is SCM_NIMP to fix segv when - (force 9) is tried. (Thanks to Karl M. Hegbloom.) - -1998-09-06 Jim Blandy <jimb@zwingli.cygnus.com> - - * print.c (scm_iprin1): Rather than having one i, and using it in - several places, declare a fresh i local to each block where it is - used, and give it a signedness appropriate to its use in each case. - (scm_iprlist): Same. - - * print.c (scm_iprin1): Add cast to avoid unsigned/signed - comparison warnings. - - * print.c (ENTER_NESTED_DATA): Make i an unsigned long, to avoid - signed/unsigned clashes. - - * posix.h (scm_tmpnam): Added prototype. - - * objects.h (scm_set_object_procedure_x, scm_make_class_object, - scm_make_subclass_object): Add external prototypes. - - * numbers.c (scm_mkbig): Add cast, and note that signed/unsigned - comparison is okay here. - - * numbers.c (scm_istr2int): Add cast; len is known to be positive. - - * numbers.c (scm_bigcomp): Clarify logic, and avoid relying on the - (true, but confusing) fact that -1 == ((unsigned) 0 - 1). - - * numbers.c (scm_adjbig): Make nsiz an scm_sizet, to avoid mixing - signed/unsigned. - - * load.c (swap_port): Make this function static. - - * load.c (scm_search_path): Make max_path_len and max_ext_len - unsigned, since they're compared against string sizes. - - * load.c (init_build_info): Make i unsigned. - - * ioext.h (scm_read_line): Add prototype. - - * hashtab.c (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x, - scm_hash_fn_remove_x): Make hash bucket index local variable k - unsigned. Use scm_ulong2num to pass it to SCM_ASSERT as - accurately as possible. - - * gh_data.c (gh_set_substr): Add casts to avoid signed/unsigned - comparisons, and range checking to make sure those casts are - harmless. - - * stackchk.h (SCM_STACK_OVERFLOW_P): Change definition to avoid - signed/unsigned comparisons. - - * smob.c (scm_numsmob): Make this an int, not an scm_sizet, to - avoid signed/unsigned comparisons. - * smob.h (scm_numsmob): Change extern declaration to match. - - * ports.c (scm_numptob): Make this an int, not an scm_sizet, to - avoid signed/unsigned comparisons. - * ports.h (scm_numptob): Change extern declaration to match. - (scm_current_load_port, scm_set_port_line_x, - scm_set_port_column_x): New prototypes. - - * gsubr.c (GSUBR_TEST): Don't #define this. Nobody's using the - test code, and it causes warnings. - - * gh.h (gh_int2scmb, gh_uniform_vector_length, - gh_uniform_vector_ref): Added prototypes. - - * Makefile.am (libguile_la_SOURCES): Include Scheme-level - debugging support unconditionally. That's backtrace.c, stack.c, - debug.c, and srcprop.c. - (EXTRA_libguile_la_SOURCES): Omit those from here. - * Makefile.in: Regenerated. - -1998-08-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * options.c (scm_options): Bugfix: Allow empty list of options! - - * debug.c, debug.h (scm_single_step): Removed. - (scm_with_traps): New procedure. This procedure could easily be - written in Scheme but needs to be highly optimized. - - * eval.h, eval.c: New evaluator trap flag: SCM_TRAPS_P. - - * eval.c (SCM_CEVAL, SCM_APPLY): Removed resetting of trap flags. - Check SCM_TRAPS_P before trapping. - -1998-07-30 Jim Blandy <jimb@zwingli.cygnus.com> - - Changes to avoid signed/unsigned comparison warnings. - * gc.c (scm_mtrigger, scm_heap_size): Make these unsigned longs. - (scm_gc_sweep): Make n and j local to the blocks they're used in, - so they can have appropriate types for each application. Make i - signed. Use initializers in some spots. I'll probably pay for - all this tweaking. - (scm_must_malloc, scm_must_realloc): Use scm_sizet for size args. - (scm_must_realloc): Make nm unsigned. - (init_heap_seg): Make new_seg_index and n_new_objects signed. - (scm_init_storage): Use prototype-style definition, and make the - argument unsigned. - * gc.h (scm_heap_size, scm_mtrigger, scm_must_malloc, - scm_must_realloc, scm_init_storage): Adjust prototype accordingly. - - * filesys.c (scm_readlink): Make local vars rv and size ints, to - avoid signed/unsigned comparison warnings, and because the return - value of readlink may be -1. Don't bother casting the third - argument to readlink. - - * filesys.c (scm_dirname, scm_basename): Move these to their own - page, at the end of the file. - * filesys.h (scm_dirname, scm_basename): Add prototypes for these. - - * eval.h (scm_eval_options_interface): Add external prototype for this. - * eval.c (scm_eval_options_interface): Use prototype-style def'n. - - * eval.c (scm_lookupcar1): Make this static. - - * dynl.h (scm_registered_modules, scm_clear_registered_modules): - Make these prototype declarations, not K&R-style. - - * chars.c (scm_tables_prehistory): Add cast, to remove signed/ - unsigned comparison warning. - - * appinit.c: File removed. It had a single function in it, empty, - whose reason for existence is explained in no documentation or - comment. I think it's there as a default for some Tcl-style - initialization, but Tcl abandoned that approach a while ago. - * Makefile.am (libguile_la_SOURCES): Remove appinit.c. - (BUILT_SOURCES): Remove appinit.x. - * Makefile.in: Regenerated. - -1998-07-29 Jim Blandy <jimb@zwingli.cygnus.com> - - * Makefile.in: Regenerated using the last public version of - automake, not the hacked Cygnus version. - -1998-07-28 Jim Blandy <jimb@zwingli.cygnus.com> - - Remove Totoro kludge. - * Makefile.in, scmconfig.h.in: Regenerated. - * init.c, readline.c: Don't check if TOTORO is #defined. - -1998-07-26 Jim Blandy <jimb@zwingli.cygnus.com> - - * Makefile.am: Adjust for new thread configuration system. - (INCLUDES): Include the value of THREAD_CPPFLAGS. - (guile_LDADD, check_ldadd): THREAD_LIBS_LOCAL has been renamed from - THREAD_LIBS. - (THREAD_LIBS): Definition deleted; automake will generate such - things automatically. - * Makefile.in: Regenerated. - -1998-07-23 Jim Blandy <jimb@zwingli.cygnus.com> - - Simplify smob and port marking; set the mark bit in the generic - marking code, and make marker routines only responsible for - turning up outgoing pointers. - * gc.c (scm_gc_mark): Set the mark bit on ports and smobs here, - before calling the marking function. Don't call the marking - function if it's zero. - * markers.c (scm_mark0): Just return #f. This function isn't - necessary at all now, but it's harmless to call it. We'll leave - it in so other folks' code doesn't croak at link time. - (scm_markcdr): Don't call SCM_SETGC8MARK. - * async.c (mark_async): Don't call SCM_SETGC8MARK. - * dynl.c (mark_dynl_obj): Same. - * root.c (mark_root): Same. - * srcprop.c (marksrcprops): Same. - * unif.c (markra): Same. - * variable.c (scm_markvar): Same. - * ports.c (scm_markstream): Same. - (void_port_ptob): Specify zero for our marking function. - * debug.c (debugobjsmob): Same. - * dynwind.c (guardsmob): Same. - * filesys.c (dir_smob): Same. - * fluids.c (fluid_smob): Same. - * fports.c (scm_fptob, scm_pipob): Same. - * mallocs.c (mallocsmob): Same. - * regex-posix.c (regex_t_smob): Same. - * smob.c (freecell, flob, bigob): Same. - * threads.c (thread_smob, mutex_smob, condvar_smob): Same. - * throw.c (jbsmob, lazy_catch_funs): Same. - -1998-07-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se> - - * eval.c (scm_copy_tree): Reverted last change: `eval' uses - scm_copy_tree on code in order not to let memoized code to leak - out. Thus, scm_copy_tree needs to copy vectors as well since - quasiquote can introduce evaluated code also inside vector - constants. - -1998-07-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se> - - * eval.c (scm_copy_tree): Removed ability to copy vectors. - - * gh_data.c, gh.h (gh_ints2scm, gh_longs2ivect, - gh_ulongs2uvect): New procedures. (Complements gh_doubles2scm and - gh_doubles2dvect.) - - * unif.c: Say that ivect and uvect are of type signed and unsigned - long instead of int in commentary so that it correctly describes - the implementation. - -1998-07-12 Mikael Djurfeldt <mdj@barbara.nada.kth.se> - - * stime.c: Removed declaration of strptime. (It should be - declared by the system headers. If it turns out that some systems - don't, we'll handle that then.) (Thanks to Greg Troxel.) - - * stime.h: Renamed TIMEH --> STIMEH - - * backtrace.c (scm_display_error, scm_display_backtrace): In order - to increase portability, don't use structure assignment. - (Thanks to Nicolas Neuss.) - - * iselect.c: Use LONG_MAX instead of ULONG_MAX for increased - portability. - (finalize_fd_sets): Added empty statement after last case label. - (Thanks to Nicolas Neuss.) - - * gc.c (scm_igc): Changed //-comment into /*-comment. (Thanks to - Nicolas Neuss.) - -Sat Jul 11 22:08:21 1998 Mikael Djurfeldt <mdj@totoro.red-bean.com> - - * init.c, readline.c: OK, I won't have these readline.x bug - reports anymore. We've had them since April. The current reason - is a completely unintelligible failure of totoro.red-bean.com to - do the test for rl_getc_function in libreadline correctly. This - kludge overrides the test if we're on totoro so that the snapshot - generation process can work. - - * readline.c: Define a strdup replacement if not existent on system. - -1998-07-12 Mikael Djurfeldt <mdj@barbara.nada.kth.se> - - * vectors.c, vectors.h (scm_make_vector): Removed third argument. - This change makes scm_make_vector R5RS compatible. We cannot keep - the third argument since people want to be able to deduce the form - of the C function call only by looking at R5RS. (At the same time - we have removed some unnecessary complexity!) - - * eval.c, filesys.c, fluids.c, gc.c, gh_data.c, init.c, kw.c, - net_db.c, posix.c, print.c, regex-posix.c, scmsigs.c, socket.c, - stime.c, symbols.c, unif.c, vectors.c, weaks.c: Removed third - argument in call to scm_make_vector. - -1998-07-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * numbers.h (SCM_NUM2DBL): New macro. Complements SCM_NUMBERP. - This macro is useful in applications. - -1998-06-21 Mikael Djurfeldt <mdj@barbara.nada.kth.se> - - * load.c (scm_internal_parse_path): Renamed from scm_parse_path. - (scm_parse_path, scm_search_path): New Scheme level procedures. - - * load.h (scm_internal_parse_path, scm_parse_path, - scm_search_path): Declared. - -1998-06-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * filesys.c (dirname, basename): New procedures. - - * init.c (scm_boot_guile_1): Removed condition around - scm_init_options. - - * dynwind.c: #include "genio.h"; #include "smob.h"; Implemented a - new data type (guards) for representation of C level guards and - data on the wind chain. - (scm_internal_dynamic_wind): New function. - - * dynwind.h: Declare scm_internal_dynamic_wind. - - * root.h (scm_root_state): Added scm_cur_loadp. - - * root.c (mark_root): Added comment about cur_loadp. - - * load.c: #include "dynwind.h"; - (scm_primitive_load): Use scm_inner_dynamic_wind to update - scm_cur_loadp. - - * init.c (scm_init_standard_ports): Initialize scm_def_loadp. - - * ports.c (current-load-port): New procedure. - -1998-06-09 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * ioext.c (scm_isatty_p): Accept any kind of data as argument. If - not a tty, return #f. - - * regex-posix.c (scm_regexp_exec): Free malloced memory. (Thanks - to Julian Satchell and Roland Kaufmann.) - - * gh.h (gh_memv, gh_member): Fixed typos in macro definitions. - (gh_write): Added declaration. (Thanks to Eiichi Takamori.) - -1998-06-07 Mikael Djurfeldt <mdj@barbara.nada.kth.se> - - * debug.h, debug.c (scm_start_stack): New function. Implements - the guts of old scm_m_start_stack. - - * debug.c (scm_m_start_stack): Use scm_start_stack. - - * init.c (scm_start_stack, scm_restart_stack): Renamed to - start_stack and restart_stack. (These have static scope.) - -1998-05-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * readline.c (rl_cleanup_after_signals, rl_free_line_state): New - readline functions to come in release 2.3. (Thanks to Chet - Ramey.) - (handle_errors): Use the above functions. - -1998-05-12 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * readline.c: Improvements for readline support: Handle errors - better; Implement before-read-hook. - -1998-05-11 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * init.c (scm_boot_guile_1), readline.c: Test for - HAVE_RL_GETC_FUNCTION instead of HAVE_LIBREADLINE. (Need to - assure that we have version >= 2.1.) - -1998-05-11 Mikael Djurfeldt <mdj@kenneth> - - * readline.c (scm_readline): Defer interrupts while we're calling - readline. - - * readline.c (scm_add_history): Bugfix: Do strdup before giving - away the string to add_history. - (completion_function): Do completion for readline. (Thanks to - Andrew Archibald.) - (scm_filename_completion_function): New procedure: Filename - completer. - (current_input_getc): New function. Use this one instead of - standard getc from readline. - - * throw.c, throw.h (scm_handle_by_throw): New function: This - handler throws errors to next handler on the dynwind chain. - -1998-05-09 Mikael Djurfeldt <mdj@kenneth> - - * scmsigs.c (scm_usleep): Bugfix: Don't define j if it isn't - used. - -1998-05-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * procprop.c (scm_i_procedure_arity): New function. Returns arity - of procedure. - (scm_procedure_properties): Modified to return arity together with - other properties. - (scm_procedure_property): Added the read-only property `arity'. - (scm_set_procedure_property_x): It is an error to set the `arity' - property. - - * gsubr.h, gsubr.c: Moved macros from gsubr.c to gsubr.h and added - prefix SCM_; Made f_gsubr_apply global and added prefix scm_. - - * procprop.h (scm_sym_arity): New symbol. - - * objects.c (scm_set_object_procedure_x): New procedure: Use this - to set the dispatch procedure of an operator or entity object. - - * objects.h (SCM_METACLASS_OPERATOR_LAYOUT, SCM_ENTITY_LAYOUT): - Made procedure slots read-only. - - * eval.c (SCM_CEVAL): Moved scm_tc7_contin case above - scm_tcs_cons_gloc case in zero args switch; Fixed args - construction for operators in scm_tcs_cons_gloc case in two args - switch. - -1998-05-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * fluids.c: Removed use of assert.h (in order to avoid - __eprintf). - - * Makefile.am (libguile_la_LDFLAGS): Added -export-dynamic. - - * dynl.c (maybe_drag_in_eprintf): Disabled through #ifdef 0. - - * eval.c (SCM_CEVAL): Do more thorough argument checking. This - change makes the evaluator safer at the cost of evaluation speed. - It handles the case when the user has added a non-immediate - improper end of the application form, e.g., `(+ 0 . x)'. - (Earlier only cases like `(+ 0 . 0)' were handled.) I've tried to - minimize the extra cost as much as possible. The new code is - enclosed in #ifdef CAUTIOUS regions. NOTE: This also fixes the - problem with structs planted directly in the code (e.g. by a - macro). This no longer causes segmentation fault. (Thanks to - Eric Hanchrow.) - - * eval.c, eval.h (scm_eval_args, scm_deval_args): Take one extra - arg `proc' in order to be able to throw errors; New argument - checking code. - - * Removed extra #include "debug.h" - -1998-04-25 Mikael Djurfeldt <mdj@kenneth> - - * scmsigs.c: Declare usleep as returning void on some systems. - (scm_usleep): Return SCM_INUM0 on those systems. (Thanks to Julian - Satchell.) - - * coop.c (usleep): Return void on some systems. - -1998-04-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * Makefile.am (libguile_la_LDFLAGS): Removed redundant -rpath. - - * coop.c: Changed return type of usleep to int. - - * scmsigs.c (scm_usleep): New procedure; Declare usleep if it - isn't found in the OS. - - * iselect.h: #define scm_internal_select select if GUILE_ISELECT - isn't enabled. (Thought that I had made this change ages ago...) - - * iselect.c: Declare bzero if not defined by OS. - -1998-04-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * dynl.c (scm_must_free_argv): Fixed memory leak due to negated - condition. (Thanks to John Tobey.) - - * continuations.c (scm_make_cont), debug.c (scm_make_memoized, - scm_make_debugobj), eval.c (scm_makprom): SCM_DEFER/ALLOW_INTS --> - A section. - - * __scm.h: Start the long-term project of moving to POSIX threads. - Phase 1: Classification of all critical sections. - (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): New macros: Delimiters - for A sections. (See comments in __scm.h for details.) - - * dynl.c: Only check that HAVE_DLOPEN is defined before loading - dynl-dl.c; Test on HAVE_LIBDLD instead of HAVE_DLD. - -1998-04-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * Makefile.am (BUILT_SOURCES): Added cpp_err_symbols.c, - cpp_sig_symbols.c, libpath.h and versiondat.h to BUILT_SOURCES - (libpath.h, versiondat.h): Replaced dependency on Makefile with - dependencies on $(srcdir)/Makefile.in - $(top_builddir)/config.status in order to avoid circularity. - - * script.c (scm_compile_shell_switches): Bugfix: Don't discount i - from argc if argc was 0 initially. - - * Makefile.am (Makefile.am): Replaced THREAD_LIBS --> GUILE_LIBS - in generation of libpath.h. - -1998-04-15 Mikael Djurfeldt <mdj@nada.kth.se> - - * Makefile.am (libguile_la_LDFLAGS): Bumped version number of - libguile from 2 to 3. - -1998-04-14 Mikael Djurfeldt <mdj@nada.kth.se> - - * Makefile.am: Added .x-dependencies to variable BUILT_SOURCES. - -1998-04-13 Mikael Djurfeldt <mdj@kenneth> - - * ports.c (scm_port_line, scm_set_port_line_x, scm_port_column, - scm_set_port_column_x, scm_port_filename, - scm_set_port_filename_x): Removed optional arguments. Added - proper argument checking. - - * eval.c, eval.h, coop.c (scm_eval_stack, SCM_EVAL_STACK): Measure - stack size in machine words. - - * unif.c (scm_uniform_vector_ref, scm_cvref, scm_array_set_x, - rapr1): Use SCM_UCHARS instead of SCM_CHARS for strings. (Thanks - to Ole Myren Röhne.) - -1998-04-12 Mikael Djurfeldt <mdj@kenneth> - - * socket.c: Check for HAVE_UNIX_DOMAIN_SOCKETS instead of - UNIX_DOMAIN_SOCKETS. (Thanks to Lauri Alanko.) - - * gc.c (scm_gc_sweep): Count cells correctly. (Thanks to Ben - Caradoc-Davies.) - - * eval.c (SCM_CEVAL, SCM_APPLY): In SCM_IM_APPLY and in the - procedure apply: Copy argument lists before pushing them unto the - environment so that the environment won't get mutated due to - manipulation of procedure arguments. This should perhaps be - regarded as a temporary solution until someone finds a more - efficient one. (Thanks to Maciej Stachowiak.) - -1998-04-10 Mikael Djurfeldt <mdj@kenneth> - - * script.c (scm_compile_shell_switches): Use "guile" as default - zero arg if argc is NULL. - -1998-04-02 Mikael Djurfeldt <mdj@nada.kth.se> - - * script.c (scm_compile_shell_switches): Allow NULL argv if argc - is zero. (Thanks to Dirk Herrmann.) - -1998-03-30 Mikael Djurfeldt <mdj@nada.kth.se> - - * ports.c (scm_add_to_port_table): First line is now line 0 - (was 1). (Interface changed according to suggestion by Per - Bothner.) - - * backtrace.c (display_header): Add 1 to line and column numbers - when presenting them to the user. - - * eval.h, eval.c, debug.h, debug.c (scm_evaluator_traps): Moved - from debug.c --> eval.c - - * eval.h, eval.c (scm_eval_options_interface): New options - interface. - (SCM_EVAL_STACK): New option: Size of newly created stacks, - i.e. stacks for new threads. - - * coop.c (COOP_STKSIZE): Use SCM_EVAL_STACK. - - * eval.c (unsafe_setjmp): Removed with #if 0. - - * gsubr.c (scm_gsubr_apply): Added dummy return to avoid compiler - warning. - - * eval.c, numbers.c, unif.c, srcprop.c: Added a few curly braces - to avoid compiler warnings. - - * dynl-dl.c (sysdep_dynl_func): Only define usymb if needed. - -1998-03-28 Mikael Djurfeldt <mdj@nada.kth.se> - - * throw.c (handler_message): Print message on current error port - instead of default error port. (Thanks to Maciej Stachowiak.) - -Mon Mar 2 21:35:02 1998 Gary Houston <ghouston@actrix.gen.nz> - - * ports.c (scm_add_to_port_table): allocate in units of - struct scm_port_table *, not struct scm_port_table. - * posix.c (scm_close_pipe): remove the port from the port table - and mark as closed. - Thanks to Rob Engle for both fixes. - -1998-02-06 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * iselect.h, iselect.c, coop.c, coop-threads.c, coop-threads.h, - coop-defs.h, throw.c, backtrace.c: Added new copyright year 1998. - -1998-02-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * throw.h: Removed jmpbuf arg in scm_catch_body_t. - - * backtrace.c (display_error_body, display_backtrace_body), - coop-threads.c (scheme_body_bootstrip, c_body_bootstrip), - gh_eval.c (eval_str_wrapper, eval_file_wrapper), init.c - (invoke_main_func), root.c (cwdr_body), throw.c (cwss_body, - scm_body_thunk, hbpca_body): Removed the second jmpbuf arg on body - functions. - - * throw.c (scm_internal_catch, scm_internal_lazy_catch): Bodies - don't receive the jmpbuf arg anylonger. - (scm_catch): Don't accept a #f tag. - (scm_throw): Check that key is a symbol. - (scm_ithrow): Don't take a jmpbuf as key. Don't check key arg. - -Fri Jan 30 22:28:07 1998 Mikael Djurfeldt <mdj@kenneth> - - * async.c (async_pending): Removed declaration. - -1998-01-30 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * dynwind.c (scm_wind_chain): New debug function. - - * coop-threads.c (scheme_launch_data, scheme_body_bootstrip, - scheme_handler_bootstrip, scheme_launch_thread, c_launch_data, - c_body_bootstrip, c_handler_bootstrip, c_launch_thread): Add an - extra layer of functions around the body and handler of a thread. - This extra layer makes sure that the handler is called in the - dynamic context of the surround (= empty dynwind list), but under - the *dynamic root* of the body. We can not use the dynamic root - of the surround since that root belongs to another thread => stack - is not handled correctly. It may seem ugly to use this extra - layer, but the extra cost in terms of execution time is really - negligible compared to the total amount of time required to create - a thread, and it would reduce maintainability to duplicate the - crucial and complicated steps performed by cwdr. - - * __scm.h (SCM_ASYNC_TICK): Removed thread switching code. - (SCM_ALLOW_INTS): Added thread switching code before interrupts - get re-enabled. The important effect of this is that interrupts - are blocked during thread switching so that thread data structures - don't risk getting messed up by an unfortunate signal. - (SCM_REDEFER_INTS, SCM_REALLOW_INTS): It turned out that gcc-2.8.0 - seems to do more aggressive optimization which actually move - instructions around in these macros in a fatal way. Therefore: - Introduce Anthony's SCM_FENCE macro! (And I who thought he was - just superstitious...) - (SCM_TICK): Maybe do a context switch and take care of asyncs. - This macro should be used instead of SCM_ASYNC_TICK since the - latter doesn't do context switches any more. - - * eval.c (scm_eval, scm_deval), eq.c (scm_equal_p): Use SCM_TICK - instead of SCM_ASYNC_TICK. - - * coop.c, iselect.c: Since thread switches are now performed with - interrupts masked, we can't use the old mechanism of delivering - signals immediately when they arrive. Signals must instead be - delivered when the asyncs run *after* the end of the critical - section in scm_internal_select. But this also means after context - switch so that the signal will be delivered to a different thread. - To avoid this, I have changed the protocol of - coop_wait_for_runnable_thread and friends so that they are allowed - to return the original thread. So, if a signal arrives during - scm_internal_select, we won't any longer be forced do a context - switch, but can remain in the same thread and deliver the signal - to it. - - * async.c, async.h (asyncs_pending): Renamed asyncs_pending --> - scm_asyncs_pending and made it global. - - * iselect.c: Small fixes. - - * coop.c (coop_mutex_init, coop_mutex_lock, coop_mutex_unlock, - coop_condition_variable_init, coop_condition_variable_wait, - coop_condition_variable_signal): Changed return type from `void' - to `int'. This is to adhere closer to the pthreads interface. - This, in turn, is part of an attempt to provide C versions of the - mutex and condition variable primitives which can be part of a - frontend to COOP or pthreads. - - * coop.c (coop_mutex_destroy, coop_condition_variable_wait_mutex, - coop_condition_variable_destroy): New functions. - - * coop-threads.c (scm_wait_condition_variable): Use - coop_condition_variable_wait_mutex. - - * coop-threads.h, coop-defs.h (coop_q_t, coop_m, coop_c): - Definitions moved to coop-defs.h. - - * coop-defs.h (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, - scm_mutex_destroy, scm_cond_init, scm_cond_wait, scm_cond_signal, - scm_cond_destroy): New C interface to mutecis and cond vars. - -1998-01-24 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * error.c (scm_wta): Added support for SCM_ARG6 and SCM_ARG7. - - * iselect.c: Now several threads can wait on the same file - descriptor. The behaviour is compatible with OS select: All - threads waiting for the fd return with the same status. - -1998-01-23 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * coop-threads.c, threads.h (scm_spawn_thread): New function. - Can spawn a thread from application C code. - -1998-01-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * gh.h, gh_data.c (gh_doubles2scm, gh_doubles2dvect, - gh_doubles2scm): New functions. - -1998-01-15 Mark Galassi <rosalia@nis.lanl.gov> - - * gh_eval.c (gh_eval_str): cleanup -- threw out the old - commented-out version of gh_eval_str() - -Sun Jan 4 02:23:36 1998 Gary Houston <ghouston@actrix.gen.nz> - - * socket.c (scm_bind): free soka after use. - -Sat Jan 3 20:55:07 1998 Gary Houston <ghouston@actrix.gen.nz> - - * stime.c (tzvar): new variable. - (setzone, restorezone, scm_localtime, scm_mktime, scm_strftime): - avoid memory leaks when allocating. - -1998-01-03 Jim Blandy <jimb@totoro.red-bean.com> - - * iselect.h: Some systems require <sys/types.h> to get the FD_SET - macro definitions. - - * gc.c, tags.h: Doc fixes. - -1998-01-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * eval.c (macro-eval!): Removed. This function was a design bug. - It allowed memoized code to leak out to the scheme level. Most - things that you could do with `macro-eval!' can be done with - `local-eval'. - -1997-12-20 Tim Pierce <twp@skepsis.com> - - * fports.c (scm_pipob): Use scm_generic_fgets for line i/o, since - scm_fgets now depends on ftell(3) to know how many bytes were - read. Sigh. - -1997-12-15 Tim Pierce <twp@skepsis.com> - - * gh_data.c (gh_scm2newstr, gh_get_substr): Use RO macros for - dealing with strings. - -1997-12-13 Tim Pierce <twp@skepsis.com> - - Make %read-line more suitable for implementing read-line efficiently. - * ioext.c (scm_read_line): Strip the terminating newline from a - string, and return a cons of the string and its terminator. - - * fports.c, fports.h (scm_fgets): Add `len' argument. The length - of the string that is read is stored in this memory location. - * ports.c, ports.h (scm_generic_fgets, fgets_void_port): Same. - * genio.c, genio.h (scm_do_read_line): Update caller. - * ports.h (scm_ptobfuns): Update typedef. - * fports.c (scm_fptob, scm_pipob): Update struct. - -1997-12-08 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * filesys.c (set_element): Return file descriptor. - (fill_select_type): Return the highest file descriptor. - (scm_select): Tell select about the highest file descriptor. On - some systems the SELECT_SET_SIZE can be as much as 128 bytes. - Therefore the extra overhead for calculating the maximum fd seems - to be more than compensated. Is this correct? In any case, - scm_internal_select will be much faster with this info. - (scm_select, fill_select_type, set_element): Don't accept any kind - of object in the file descriptor list or vector. - -1997-12-07 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * iselect.c (finalize_fd_sets): Bugfix. - -1997-12-06 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * filesys.c (scm_select): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS - when using scm_internal_select (since we might switch to another - thread). - -Sun Dec 7 01:43:56 1997 Gary Houston <ghouston@actrix.gen.nz> - - * simpos.c (scm_system): always define: use sysmissing if not - available. Check for HAVE_SYSTEM instead of _Windows (does - Windows lack system or does it have an unusable one?). - Check for error conditions -1 and 127. Use SCM_DEFER_INTS. - Let the argument be optional: if not supplied, call system(NULL). - - * ports.c (scm_close_port): relax the type check from OPPORTP to - PORTP; closing a closed port is allowed. - -1997-12-04 Tim Pierce <twp@ppp39.Nantucket.net> - - * fports.c (scm_fgets): Return if the last char in a chunk is - newline. When fgets returns a string whose length is `size-1', it - is ambiguous whether a whole line was retrieved, so we must check - explicitly whether a line terminator is present. - -1997-12-04 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * print.h (SCM_COERCE_OUTPORT): Check that the object is a pair - before taking the CDR. (Thanks to Harald Meland.) - - * filesys.c (scm_stat): Slightly optimized. - -Wed Dec 3 12:23:06 1997 Jim Blandy <jimb@totoro.red-bean.com> - - * ports.c (scm_close_port): Make sure the port is open before - trying to close it. - - * guile-snarf.in: Pass args through to gcc in a way that preserves - whitespace boundaries. (Thanks to Greg Badros.) - -1997-12-02 Tim Pierce <twp@skepsis.com> - - * stacks.c (scm_frame_procedure): Reverse the logic in the return - statement. (Thanks to Doug Evans for pointing this out.) - -1997-12-01 Tim Pierce <twp@skepsis.com> - - * scmconfig.h.in: Regenerated for USCORE change in ../acconfig.h. - -Sun Nov 30 11:29:18 1997 Mikael Djurfeldt <mdj@kenneth> - - * coop-defs.h (struct coop_t): Renamed errno --> _errno to prevent - errno macro expansion of this field name. (errno is a C - preprocessor macro on some systems.) - -1997-11-29 Tim Pierce <twp@skepsis.com> - - * iselect.c: Doc fix. - -Sat Nov 29 01:16:53 1997 Mikael Djurfeldt <mdj@kenneth> - - * init.c (scm_start_stack): Removed initialization of - scm_the_last_stack_var. - - * backtrace.h: Declare scm_the_last_stack_var. - - * backtrace.c: Define scm_the_last_stack_var. - - * root.c (mark_root): Don't mark the_last_stack_var. - - * root.h (scm_root_state): Removed the_last_stack_var. - - * throw.c: Added #include "fluids.h" - (ss_handler): `the-last-stack' is now a fluid. - - * (backtrace.h, backtrace.c, throw.c): Renamed the_last_stack_var - --> the_last_stack_fluid. - - * backtrace.c: Added #include "fluids.h" - (scm_init_backtrace): Initialize `the-last-stack' to a fluid. - (scm_backtrace): `the-last-stack' is now a fluid. - - * init.c (scm_boot_guile_1): Moved call to scm_init_backtrace - after scm_init_fluids. - -1997-11-28 Tim Pierce <twp@skepsis.com> - - * iselect.c: #ifdef USE_THREADS around thread-related includes. - - * dynl-dl.c (sysdep_dynl_func): Check both USCORE and - DLSYM_ADDS_USCORE to decide whether to add an underscore. - -1997-11-28 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * iselect.c (coop_next_runnable_thread, - coop_wait_for_runnable_thread): Disable interrupts so that no - async is executed before a potential error_revive. - (scm_internal_select): Disable interrupts during the parts of the - code which manipulate the sleep queue and the file descriptors. - -1997-11-27 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * Makefile.am: Added iselect.c and iselect.h. - - * coop.c (coop_qinit): Initialize fields used by - scm_internal_select. - (coop_qget, coop_qget, coop_tmp_queue): Made global. - (coop_next_runnable_thread): If GUILE_ISELECT enabled, use - replacement in iselect.c. - (coop_mutex_lock, coop_condition_variable_wait, coop_abort, - coop_join): If GUILE_ISELECT enabled, use - coop_wait_for_runnable_thread instead of - coop_next_runnable_thread. - (usleep, sleep): New replacements for system functions if - GUILE_ISELECT is enabled. - - * coop-threads.h: Declare coop_wait_for_runnable_thread. - - * coop-defs.h (coop_t): Added fields used by scm_internal_select. - - * filesys.c: Added #include "iselect.h". Moved FD-macros to - iselect.h. Implement Scheme level `select' using - scm_internal_select. (See NEWS.) - - * genio.c (scm_getc): Block with scm_internal_select. (See NEWS.) - - * init.c: Call scm_init_iselect. - - * iselect.h, iselect.c: New files. Implements - scm_internal_select. (See NEWS.) - -1997-11-27 Tim Pierce <twp@skepsis.com> - - Fix a memory leak in scm_read_line and a type cast bug in the ptob. - * fports.c (scm_fgets): Use malloc/free rather than scm_must_malloc - and scm_must_free, since ultimately the string returned will be copied - by scm_makfrom0str anyway. Also, read any characters that may have - been pushed onto the port with scm_ungetc. - * ports.c (scm_generic_fgets): Same as for scm_fgets. - * ioext.c (scm_read_line): Free string after Guilifying it. - * ports.h (scm_ptobfuns): fgets method returns a char *, not a char. - -1997-11-26 Anthony Green <green@hoser.cygnus.com> - - * gh_data.c (gh_set_substr): Strings can be longer than 256 bytes. - - * gh.h: Safely wrap prototypes for c++ usage. - -1997-11-25 Mark Galassi <rosalia@cygnus.com> - - * gh_test_repl.c (main_prog): changed invocation of gh_repl() to - gh_repl (argc, argv). - -1997-11-24 Mark Galassi <rosalia@nis.lanl.gov> - - * gh_init.c (gh_repl): modified gh_repl() to accept argc and argv - and to invoke scm_shell(). - (gh_launch_pad): took out the loading of boot-9.scm from here, - since it is probably best to let the user control that. In fact, - gh_repl() now invokes scm_shell() which does that. - -1997-11-23 Mark Galassi <rosalia@cygnus.com> - - * gh_test_repl.c (main_prog): added argc and argv to the gh_repl() - invocation. - -1997-11-22 Tim Pierce <twp@twp.tezcat.com> - - * dynl-dl.c (sysdep_dynl_func): Fix memory leak created by - yesterday's underscore patch. (Thanks to Marius Vollmer for - spotting this.) - -1997-11-21 Tim Pierce <twp@twp.tezcat.com> - - * dynl-dl.c (sysdep_dynl_func): Prepend symb with underscore if - DLSYM_ADDS_USCORE is not defined. - -1997-11-17 Mark Galassi <rosalia@nis.lanl.gov> - - * gh_data.c (gh_uniform_vector_length): - (gh_uniform_vector_ref): started implementing the uniform types in - the gh_ interface. - -1997-11-06 Mikael Djurfeldt <mdj@nada.kth.se> - - * regex-posix.c (scm_free_regex_t): Return size of regex_t instead - of 0; size_t --> scm_size_t. Thanks to Bernard Urban. - -1997-10-26 Mikael Djurfeldt <mdj@nada.kth.se> - - * scmconfig.h.in: Updated (HAVE_LIBTERMCAP was added when - configure.in was changed). - -Sun Oct 26 02:20:11 1997 Jim Blandy <jimb@totoro.red-bean.com> - - * Makefile.am (modinclude_HEADERS): Include readline.h here. - * Makefile.in: Regenerated. - -1997-10-25 Marius Vollmer <mvo@zagadka.ping.de> - - * print.h (SCM_COERCE_OPORT): Renamed to SCM_COERCE_OUTPORT. An - OPORT is an `open' port, not an output port. - - * filesys.c (scm_close, set_element, get_element, scm_chown, - scm_chmod, scm_stat, scm_truncate_file, scm_fcntl, scm_fsync): Use - SCM_COERCE_OUTPORT to cope with the printstate/port magic. - * ports.c (scm_port_revealed, scm_set_port_revealed_x, - scm_close_port, scm_port_line, scm_set_port_line_x, - scm_port_column, scm_set_port_column_x, scm_port_filename, - scm_set_port_filename_x, scm_port_mode, - scm_close_all_ports_except, scm_set_current_output_port, - scm_set_current_error_port): Likewise - * ioext.c (scm_redirect_port, scm_dup_to_fdes, scm_freopen, - scm_ftell, scm_fileno, scm_isatty_p, scm_primitive_move_to_fdes): - Likewise - * posix.c (scm_ttyname, scm_tcgetpgrp, scm_tcsetpgrp): Likewise - * backtrace.c (display_backtrace_body): Likewise - * fports (scm_setvbuf): Likewise - * socket.c (scm_getsockopt, scm_setsockopt, scm_shutdown, - scm_connect, scm_bind, scm_listen, scm_accept, scm_getsockname, - scm_getpeername, scm_send, scm_sendto): Likewise - * unif.c (scm_uniform_array_write): Likewise - -Sat Oct 25 02:52:58 1997 Jim Blandy <jimb@totoro.red-bean.com> - - Minor problems with substring-related tag changes. - * symbols.h (SCM_SUBSTRP): Don't mask off the S bit; that's - exactly what we want to leave in to detect substrings. - (SCM_ROSTRINGP, ROUCHARS): Formatting tweaks. - * tags.h: Fix diagrams and comments describing the S tag bit; - remove vestigial remarks about the D tag bit. - (SCM_TYP7, SCM_TYP7S): Rephrased for readability. - * strings.c: Formatting tweaks. - - * load.c (scm_init_load_path): Check GUILE_LOAD_PATH environment - variable first; then SCHEME_LOAD_PATH, with a warning message. - (scm_parse_path): New function. - * script.c: Doc fixes. - -Thu Oct 23 01:02:03 1997 Jim Blandy <jimb@totoro.red-bean.com> - - Readline support, from Daniel Risacher. - * readline.c, readline.h: New files. - * init.c: #include "readline.h". - (scm_boot_guile_1): Call scm_init_readline, if we have it. - * Makefile.am (libguile_la_SOURCES): Include readline.c. - * Makefile.in: Regenerated. - * scmconfig.h.in: Regenerated, after change to ../configure. - -1997-10-20 Mark Galassi <rosalia@nis.lanl.gov> - - * gh.h: gh_vector_set -> gh_vector_set_x - -1997-10-20 Mark Galassi <rosalia@nis.lanl.gov> - - * gh_data.c (gh_vector_set_x): changed name to make it consistent - with the ! -> _x mapping when going from Scheme to C. - -1997-10-19 Mark Galassi <rosalia@cygnus.com> - - * gh.h (gh_reverse): - (gh_list_tail): - (gh_list_ref): - (gh_memq): - (gh_memv): - (gh_member): - (gh_assq): - (gh_assv): - (gh_assoc): added these gh_ functions implemented as macros. - - * gh_predicates.c (gh_null_p): - (gh_string_equal_p): added these two missing predicates. - - * gh_list.c (gh_append): - (gh_append2): - (gh_append3): - (gh_append4): - (gh_set_car_x): - (gh_set_cdr_x): added these routines as I go through and try to - complete the picture R4RS functions that should be mirrored in the - gh_ interface. - -Sat Oct 18 01:52:51 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * tags.h (scm_tc7_substring): Changed the comment and code to - conform with the changes below. Folks! We have suddenly two new - free tc7 codes!!! Jummy, jummy! - -Tue Oct 14 22:03:06 1997 Tom Tromey <tromey@cygnus.com> - - * Makefile.in: Rebuilt. - * Makefile.am (libguile_la_SOURCES): Removed extchrs.c, - mbstrings.c. - (modinclude_HEADERS): Removed extchrs.h, mbstrings.h. - * unif.c (scm_vector_set_length_x): Don't handle multibyte - strings. - * tag.c (scm_utag_mb_string, scm_utag_mb_substring): Removed. - (scm_tag): Don't handle multibyte strings. - * read.c: Don't include mbstrings.h. - (scm_lreadr): Don't handle multibyte ports. - * kw.c: Don't include mbstrings.h. - * init.c: Don't include mbstrings.h. - (scm_boot_guile_1): Don't init mbstrings module. - * hash.c (scm_hasher): Don't handle mbstrings. - * gscm.c (gscm_run_scm): Don't init mbstrings module. - * gc.c (scm_gc_mark): Don't handle mbstrings. - (scm_gc_sweep): Likewise. - * eval.c (SCM_CEVAL): Don't handle mbstrings. - * eq.c (scm_equal_p): Use SCM_TYP7S, not SCM_TYP7SD. - * tags.h (SCM_TYP7SD): Removed. - (SCM_TYP7D): Removed. - (scm_tc7_mb_string): Removed. - (scm_tc7_mb_substring): Removed. - * print.c (scm_iprin1): Handle char printing directly. Don't - handle mbstrings. - Don't include "mbstrings.h". - * symbols.c (scm_intern_obarray_soft, scm_string_to_symbol, - scm_string_to_obarray_symbol, msymbolize): Don't set symbol's - multi-byte flag. - Don't include "mbstrings.h". - * symbols.h (SCM_SYMBOL_MULTI_BYTE_STRINGP): Removed. - (SCM_SYMBOL_SLOTS): Define as 4. - (SCM_ROSTRINGP): Use SCM_TYP7S, not SCM_TYP7SD. - * arbiters.c, backtrace.c, debug.c, dynl.c, eval.c, fluids.c, - gc.c, gsubr.c, ioext.c, kw.c, mallocs.c, numbers.c, ports.c, - print.c, read.c, regex-posix.c, root.c, srcprop.c, stackchk.c, - struct.c, threads.c, throw.c, unif.c, variable.c: Use new - ("gen"-less) I/O function names. - * ports.c (scm_add_to_port_table): Don't set port's - representation. - * ports.h (scm_port_representation_type): Removed. - (scm_string_representation_type): Removed. - (struct scm_port_table ): Removed representation field. - (SCM_PORT_REPRESENTATION): Removed. - (SCM_SET_PORT_REPRESENTATION): Removed. - * genio.h: Use new function names. - * genio.c: Don't include "extchrs.h". - (scm_gen_putc, scm_gen_puts, scm_gen_write, scm_get_getc): - Removed. - (scm_putc, scm_puts, scm_lfwrite): No longer static. - (scm_getc): No longer static; handle line and column changes. - (scm_ungetc): Renamed from scm_gen_ungetc. - (scm_do_read_line): Renamed from scm_gen_read_line. - * libguile.h: Don't include "extchrs.h" or "mbstrings.h" - * extchrs.h, extchrs.c, mbstrings.h, mbstrings.c: Removed. - -1997-10-12 Mark Galassi <rosalia@cygnus.com> - - * gh_test_repl.c (c_vector_test): same as gh_test_c.c - - * gh_test_c.c (c_vector_test): some improvements on the vector - routines test. - - * gh.h (gh_vector): this used to exist but do the wrong thing. - Now it (almost) does the right thing, though it takes a list - instead of the individual arguments. I need to see how it could - be done right. - (gh_list_to_vector): added this function as a macro. Corresponds - to Scheme's (list->vector ...). - (gh_vector_to_list): added this function as a macro. Corresponds - to Scheme's (vector->list ...). - - * gh_data.c (gh_vector_ref): renamed from gh_vref to - gh_vector_ref, so that it resembles the Scheme routines more. - (gh_vector_set): renamed from gh_vset to gh_vector_set, so that it - resembles the Scheme routines more. - (gh_make_vector): this used to be (stupidly) called gh_vector(). - This is the right name, since it does the same thing as the Scheme - (make-vector ...) procedure. - -Sun Oct 12 14:41:39 1997 Mikael Djurfeldt <mdj@kenneth> - - * ports.h: #include "libguile/print.h" - - * eval.c (SCM_CEVAL, scm_apply): Completed GOOPS support code; - Some indentation fixes. - - * objects.h (SCM_METACLASS_STANDARD_LAYOUT): Printer field is no - longer a user field; New field: class_flags. - - * objets.c, objects.h: New metaclass: scm_metaclass_operator. - -Tue Oct 7 09:37:24 1997 Mark Galassi <rosalia@cygnus.com> - - * gh_data.c (gh_bool2scm): new function which replaces - gh_int2scmb(), which is now tagged as obsolete. - -1997-10-03 Mikael Djurfeldt <mdj@nada.kth.se> - - * print.h (SCM_PRINT_STATE_P): Removed SCM_NIMP test. (NIMP - macros should by convention not test for NIMPness.) - (SCM_COERCE_OPORT): Adjust indentation. - - * print.c (scm_valid_oport_value_p): Adjusted indentation; Added - SCM_NIMP test before SCM_PRINT_STATE_P. - - * struct.c, struct.h, gc.c: Renamed: - scm_struct_i_layout --> scm_vtable_index_layout - scm_struct_i_vcell --> scm_vtable_index_vcell - scm_struct_i_vtable --> scm_vtable_index_vtable - scm_struct_i_printer --> scm_vtable_index_printer - scm_struct_i_vtable_offset --> scm_vtable_offset_user - - * struct.c (scm_print_struct): Use new printer slot; Default - printing: Also output hex code of vtable so that type identity - will be indicated as well. - (scm_init_struct): Updated required_vtable_fields to "pruosrpw"; - Removed struct_printer_var; Removed struct-vtable-offset; - (vtable-index-layout, vtable-index-vtable, vtable-index-printer, - vtable-offset-user): New constants. - - * struct.h (scm_struct_i_vtable_offset): Bumped from 3 to 4. - (scm_struct_i_printer, SCM_STRUCT_PRINTER): New slot in vtables. - If this slot contains a procedure, use that to print structures of - the type represented by this vtable. - - * print.c (scm_iprin1): Don't print arguments of macro - transformers. (They are always: exp env.); Bugfix: Unmemoize - transformer source with correct environment. - -1997-10-02 Marius Vollmer <mvo@zagadka.ping.de> - - Streamlining of call-with-dynamic-root: - - * root.c (cwdr_inner_body, cwdr_body): Remove "inner" from name, - there is now only one catch. - (cwdr_outer_body): Removed. - (cwdr_handler): New function. - (scm_internal_cwdr): New function to perform the function of cwdr - but take args that are more useful to C code. Also, the handler - is now invoked *outside* of the new dynamic root, like the docs - say. We no longer have to catch absolutely all errors, the caller - is responsible for using a handler that does not throw, if he - wants that. - (cwdr): Reimplemented in terms of scm_internal_cwdr. - * root.h (scm_internal_cwdr): New prototype. - - Even more but risky streamlining: - - * root.c (USE_STACKJMPBUF): New define to activate a stack-based - allocation of the jumpbuf of a root continuation. The changes - below are controlled by it. They are now deactivated. - (scm_internal_cwdr): Allocate the scm_contregs on the stack. Set - the JMPBUF of the scm_rootcont to NULL before returning. - - * gc.c (scm_gc_sweep): Free the SCM_VELTS of a scm_tc7_contin only - when they are non-NULL. - (scm_gc_mark): Likewise, mark only when non-NULL. - - Make dynamic linking work on Dec Unix. (Thanks to Clark McGrew) - * dynl.c: Include "dynl-dl.c" also when HAVE_DLOPEN is defined. - - * gc.c (scm_done_malloc): New function. - gc.h (scm_done_malloc): New prototype. - - * print.h (SCM_PRINT_STATE_P, SCM_COERCE_OPORT): New macros. - (struct scm_print_state) [revealed]: New field. - (scm_print_state_vtable): Make visible to the outside world for - type checking purposes. - (scm_valid_oport_value_p): New prototype. - - * print.c (scm_valid_oport_value_p): New function to check whether - a certain value is acceptable as a port argument. - (scm_print_state_vtable): New variable. - (scm_free_print_state): Set `revealed' field to false. - (scm_iprin1): Call user supplied closure printer with - scm_printer_apply. Print in the traditional way when there isn't - one or when it returns #f. - (scm_prin1, scm_display, scm_write, scm_newline, scm_write_char): - Accept a port/print-state pair in addition to just a port. - (scm_prin1): Don't return the print_state to the pool when it has - been `revealed'. - (scm_printer_apply): Set `revealed' field of print_state to true. - (scm_init_print): Set scm_print_state_vtable. - (print_state_fluid, print_state_fluid_num): Removed. - - * throw.h (scm_handle_by_proc_catching_all): New prototype - throw.c (scm_handle_by_proc_catching_all): New function - -Mon Sep 29 23:54:09 1997 Jim Blandy <jimb@totoro.red-bean.com> - - * Makefile.in: Regenerated with automake 1.2c. - -Sun Sep 28 21:35:42 1997 Radey Shouman <shouman@zianet.com> - - * ramap.c (scm_array_index_map_x): Fixed for zero-rank arguments, - was looping endlessly. - -Sun Sep 28 00:04:29 1997 Jim Blandy <jimb@totoro.red-bean.com> - - * strports.c (scm_eval_string): Don't close the port. - - * stime.c (bdtime2c): Use SCM_LENGTH, not scm_vector_length; the - former returns a nice normal integer. (Thanks to Daniel - Risacher.) - -Sat Sep 27 20:19:34 1997 Jim Blandy <jimb@totoro.red-bean.com> - - * Makefile.am (libpath.h): Include the value of the THREAD_LIBS - makefile variable as a build parameter called LIBS. The - build-guile program will use this, for the time being. - * Makefile.in: Regenerated. - - Thanks to Shiro Kawai: - * gc.c (scm_gc_mark): Pass NULL to scm_wta as the subroutine name. - * ports.h (scm_ptobfuns): The fgets method returns a char *, not - an SCM. - - * Makefile.in: Regenerated with automake 1.2a. - - * script.c (scm_compile_shell_switches): If we hit the -c or -- - arguments, don't set the car of (command-line) to scm_usage_name, - the prettified name of the guile executable; give it the full - path, the way shells usually handle $0. - -Wed Sep 24 22:09:52 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * ramap.c (scm_array_map): Renamed to scm_array_map_x. Removed - Scheme-level name `array-map' and renamed `serial-array-map' to - `serial-array-map!'. - - * backtrace.c: Introduced exception handlers which now enclose - `display-error' and `display-backtrace' so that error reporting - won't get into infinite loops if an error occurs during displaying - of the error. This can very easily happen with user supplied - print call-back routines. - -Tue Sep 23 12:43:17 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * ramap.c: Added alias `array-map!' for `array-map'. (Probably, - the names `serial-array-map' and `array-map' should be removed.) - -Mon Sep 22 01:21:54 1997 Mikael Djurfeldt <mdj@kenneth> - - * init.c (scm_boot_guile_1): Added scm_init_objects (). - Added #include "objects.h" - - * eval.c (scm_makprom): Added SCM_DEFER_INTS and SCM_ALLOW_INTS. - Add #include "feature.h". - - * Makefile.am (libguile_la_SOURCES): Added objects.c. - (modinclude_HEADERS): Added objects.h. - - * ports.h (SCM_EOF_OBJECT_P): New macro predicate. - This test is needed at many places in the code and should be - abstracted. (Motivated by the need of this test in libguiletk.) - - * ports.c (scm_eof_object_p), vports.c (sfgetc), strports.c - (scm_eval_string), load.c (scm_primitive_load, - scm_read_and_eval_x), gh_eval.c (gh_eval_str): - Use SCM_EOF_OBJECT_P. - - * eval.c (scm_init_eval): Add feature `delay'. - -Tue Sep 16 02:12:02 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * scmhob.h: Removed. - -Mon Sep 15 20:42:03 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * list.h (SCM_LISTn): New macros. Make list creation in C code - prettier. The idea comes from STk. - - * sequences.h, sequences.c, append.h, append.c: Removed. These - files implemented non-R4RS operations which would encourage - non-portable programming style and less easy-to-read code. - - * Makefile.am (sequences.h, sequences.c, append.h, append.c): - Removed. - - * libguile.h, eval.c, init.c, stime.c, unif.c: Removed #include - sequences.h, #include append.h. - - * init.c (scm_boot_guile_1): Removed calls to scm_init_append and - scm_init_sequences. - - * gh.h, gh_list.c: Renamed gh_list_length --> gh_length. - - * list.h, list.c: Renamed scm_list_length --> scm_length, scm - - * stime.c (bdtime2c): Changed scm_obj_length --> scm_vector_length. - -Sat Sep 13 00:21:41 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * eval.c: Added #include "objects.h" - - * tags.h (scm_tc16_object, scm_tc16_entity): Smobtags for objects - and entities. - - * smob.c (scm_smob_prehistory): Create two objectsmobs with - adjacent smob numbers. - -Thu Sep 11 00:59:17 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * procprop.h: Added declaration of scm_i_inner_name. - - * gsubr.c: New global symbol scm_i_inner_name. - - * debug.c (scm_procedure_name): Try procedure property - `inner-name' if `name' fails. - - * print.c (scm_iprin1): Use scm_macro_name. - - * eval.c (scm_m_define): Give names to macros as well; Only the - first top-level definition gives a procedure/macro a name. - Otherwise confusing names can turn up in backtraces. - (SCM_CEVAL): SCM_IM_DEFINE: Set `inner-name' property instead of - `name'; Give names to macros as well. - - * procs.c (scm_closure_p), print.c (scm_iprin1), eval.c - (scm_macro_transformer): Use SCM_CLOSUREP instead of - scm_closure_p. - -Wed Sep 10 20:52:18 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * eval.c (macro?, macro-type, macro-name, macro-transformer): New - procedures; - (prinmacro): Removed. The code has been moved/merged into print.c - in order to decrease code redundancy. We want macros to print in - a way equivalent to procedures, and it would be silly to duplicate - the required code. (We don't want to maintain two places.) - (macrosmob): Print field is now a NULL pointer. - - * eval.h (scm_macro_p, scm_macro_type, scm_macro_name, - scm_macro_transformer): New prototypes. - (scm_tc16_macro): Declared. - - * print.c (scm_iprin1): Added code for printing of macros. Macros - are now printed in a way equivalent to procedures. - -Sat Sep 6 12:20:42 1997 Mikael Djurfeldt <mdj@kenneth> - - * procs.h (scm_closure_p): Added declaration. - -Fri Sep 5 13:36:14 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * gc.c (scm_gc_mark): Fixed "rogue pointer in heap" message: - Shouldn't pass "heap" as the subr name. - -Tue Sep 2 18:14:30 1997 Jim Blandy <jimb@totoro.red-bean.com> - - * gh_predicates.c (gh_boolean_p, gh_symbol_p, gh_char_p, - gh_vector_p, gh_pair_p, gh_number_p, gh_string_p, gh_procedure_p, - gh_list_p, gh_inexact_p, gh_exact_p, gh_eq_p, gh_eqv_p, - gh_equal_p): Use SCM_NFALSEP, instead of testing against - SCM_BOOL_T. Any non-false value is true. - -Tue Sep 2 00:27:07 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * symbols.h (scm_builtin_bindings, scm_builtin_weak_bindings, - scm_gensym): Added prototypes. - - * symbols.c (scm_gensym): New function. This will speed up - certain types of applications (such as macro systems) which - generate lots of symbols. - -Mon Sep 1 22:30:33 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * numbers.c (logand, logior, logxor): Handle 0 or 1 arguments. - -Sat Aug 30 18:56:19 1997 Gary Houston <ghouston@actrix.gen.nz> - - * unif.c (scm_shap2ra): tighten the checking of the array dimension - specifier, since (2) or (2 . 3) would cause SEGV. - (scm_transpose_array): more argument checking fixes. - -Thu Aug 28 23:48:53 1997 Jim Blandy <jimb@totoro.red-bean.com> - - * Makefile.in: Regenerated. - -Wed Aug 27 17:44:44 1997 Jim Blandy <jimb@totoro.red-bean.com> - - * Makefile.in: Regenerated, so it uses "tar", not "gtar". - -Mon Aug 25 13:47:25 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * error.c, error.h (scm_error_callback): Removed (see NEWS). - -Sun Aug 24 01:25:35 1997 Mikael Djurfeldt <mdj@kenneth> - - * regex-posix.c: If <regex.h> can't be found, try <rxposix.h> or - <rx/rxposix.h>. (This is in order to accomodate for the GNU Rx - library.) - - * ramap.c (scm_ra_matchp, scm_array_fill_int, racp, ramap_1, - ramap_2o, scm_array_index_map_x, raeql_1, scm_array_equal_p), - unif.c (scm_vector_set_length_x, scm_uniform_vector_length, - scm_array_p, scm_array_rank, scm_array_dimensions, - scm_enclose_array, scm_array_in_bounds_p, scm_uniform_vector_ref, - scm_cvref, scm_array_set_x, scm_array_contents, scm_array_to_list, - scm_array_prototype): Added case scm_tc7_wvect. - -Sat Aug 23 18:45:44 1997 Gary Houston <ghouston@actrix.gen.nz> - - * errno.h: prototype for scm_strerror. - * error.c (scm_strerror): new procedure. - -Mon Aug 18 14:58:22 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * list.c (scm_list_append_x): Allow non-pair as last argument. - This is consistent with the R4RS append and is probably the - correct behaviour as specified by R2RS. (Thanks to Radey Shouman) - -Sat Aug 16 18:42:15 1997 Gary Houston <ghouston@actrix.gen.nz> - - * stime.h: prototype for scm_times. - * stime.c (scm_times): new procedure. - * ioext.c (scm_fseek): if the first argument is a file descriptor - call lseek. - (scm_ftell): if the first argument is a file descriptor call lseek - (sic). - * filesys.h: prototypes for scm_open_fdes, scm_fsync. - * filesys.c (scm_chmod): if the first argument is a file descriptor, - call fchmod. - (scm_chown): if the first argument is a port or file descriptor, - call fchown. - (scm_truncate_file): new procedure. - Add DEFER/ALLOW INTS to a few other procedures. - (scm_fsync): new procedure. - (scm_open_fdes): new procedure. - (scm_open): use scm_open_fdes. If mode isn't specified, 666 will - now be used. - (scm_fcntl): the first argument can now be a file descriptor. The - third argument is now optional. - - * posix.c (scm_execl, scm_execlp): make the filename argument - compulsory, since omitting it causes SEGV. - (scm_sync): return unspecified instead of #f. - (scm_execle): new procedure. - (environ_list_to_c): new procedure. - (scm_environ): use environ_list_to_c. disable interrupts. - (scm_convert_exec_args): take pos and subr arguments and - improve error checking. - -1997-08-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * stacks.c (scm_make_stack), coop-threads.c, mit-pthreads.c - (scm_call_with_new_thread): Bugfix: SCM_WNA should go as third - argument to SCM_ASSERT. Furthermore, the name of the function - should be passed as first argument when signalling - SCM_WNA. (Thanks to Thomas Morgan) - - * gsubr.c (scm_gsubr_apply): From Radey Shouman - <shouman@zianet.com>: "The switch in scm_gsubr_apply that - dispatches on the number of actual args has a default case - reporting an internal error. This is a vestige from a version - that mallocated a SCM vector to hold the arguments. In the - current version this check is too late: if it ever happens we will - have already overstepped the bounds of the array. - - Also, the patch [...] adds a check for too many actual arguments." - - mdj: Removed check for "internal programming error". - -Wed Aug 13 15:38:44 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * gh_io.c (gh_write): New function. - - * gh_eval.c (catch_with_saved_stack): Removed. Replaced by: - throw.c (scm_internal_stack_catch): New sibling to the other catch - functions. Code moved from gh_eval.c. - throw.h: Added header. - gh_eval.c (gh_eval_str_with_stack_saving_handler): Renamed call to - scm_internal_stack_catch. - -Tue Jul 29 01:03:08 1997 Gary Houston <ghouston@actrix.gen.nz> - - * ioext.h: fix up prototypes. - * ioext.c (scm_dup_to_fdes): renamed from scm_primitive_dup2. - Scheme name is now dup->fdes. - (scm_dup_to_fdes): make the second argument optional and - fold in the functionality of scm_primitive_dup. - (scm_primitive_dup): deleted. - -Mon Jul 28 05:24:42 1997 Gary Houston <ghouston@actrix.gen.nz> - - * fports.h (SCM_P): prototypes for scm_setvbuf, scm_setfileno. - * fports.c (scm_setbuf0): don't disable the setbuf if MSDOS or - ultrix are defined. Use setvbuf instead of setbuf. - (scm_setvbuf): new procedure. - (scm_init_fports): intern _IOFBF, _IOLBF, _IONBF. - (scm_setfileno): moved from ioext.c. - (scm_fgets): cast SCM_STREAM to (FILE *), remove unused lp variable. - (top of file): Delete 25 lines of probably obsolete CPP hair for MSDOS. - -Sun Jul 27 10:54:01 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * fluids.c (scm_fluid_p): New function. - * fluids.h (scm_fluid_p): New prototype. - -Sat Jul 26 21:33:37 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * print.c (scm_iprin1): Enter printed structures into the print - state as nested data while they are printed. - (print_state_fluid, print_state_fluid_num): New variables. - (scm_init_print): Initialize them. - (scm_iprin): If print_state_fluid carries a print_state, use that - instead of creating a new one. - (scm_printer_apply, apply_stub, struct apply_data): New - definitions to help with calling printer functions written in - Scheme. - * print.h (scm_printer_apply): New prototype. - - * struct.c (scm_print_struct): Use scm_printer_apply to call the - user defined struct printer. - - * dynwind.c (scm_dowinds): Handle fluids on the wind list. - * fluids.h (scm_internal_with_fluids, scm_with_fluids, - scm_swap_fluids, scm_swap_fluids_reverse): New prototypes. - * fluids.c (scm_internal_with_fluids, scm_with_fluids, - scm_swap_fluids, scm_swap_fluids_reverse): New functions. - -Fri Jul 25 12:05:46 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fixed use of - SCM_ASSERT: arg comes before pos. - -Fri Jul 25 17:00:38 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * eval.c (scm_apply): Handle the case when a tc7_sybr_2 is applied - to a list of length zero correctly. - -Wed Jul 23 16:17:46 1997 Tim Pierce <twpierce@bio-5.bsd.uchicago.edu> - - Supply an `fgets' method for port objects to do fast line i/o. - * ioext.c (scm_read_line): New function. - * genio.c (scm_gen_read_line): New function. - * fports.c (scm_fgets): New function. - (scm_fptob, scm_pipob): Add scm_fgets method. - * ports.c (fgets_void_port, scm_generic_fgets): New functions. - (void_port_ptob): Add void fgets method. - (scm_newptob): Initialize fgets method from ptob struct. - * ports.h (scm_ptobfuns): Add fgets method. - * vports.c (scm_sfptob): Supply generic fgets method. - * strports.c (scm_stptob): Supply generic fgets method. - -Mon Jul 21 04:03:42 1997 Gary Houston <ghouston@actrix.gen.nz> - - * ioext.h: removed scm_duplicate_port prototype. - - * ioext.c (scm_primitive_dup2): return the new file descriptor - instead of SCM_UNSPECIFIED, since similarity to scm_primitive_dup - is convenient. - (scm_fdopen): bug fix: don't try to make port unbuffered until its - stream has been set. - (scm_duplicate_port): deleted, there's now an implementation in - boot-9.scm. - (scm_primitive_dup2): do nothing if newfd == oldfd. - -Sun Jul 20 03:55:49 1997 Gary Houston <ghouston@actrix.gen.nz> - - * filesys.c (scm_close): oops, don't call SCM_INUM twice on the - argument. - - * ioext.h: new prototypes. - * ioext.c (scm_primitive_dup, scm_primitive_dup2): new procedures. - - * fluids.c (next_fluid_num): don't do - SCM_THREAD_CRITICAL_SECTION_START/END unless USE_THREADS is defined. - - * ports.h: prototypes too. - * ports.c (scm_mode_bits, scm_port_mode): moved from fports.c. - - * fports.h: prototype too. - * fports.c (scm_evict_ports): moved from ioext.c. - -Sat Jul 19 04:56:52 1997 Gary Houston <ghouston@actrix.gen.nz> - - * ports.c (scm_close_port): return a boolean instead of unspecified. - throw an error if an error other than EBADF occurs. - - * filesys.h: scm_close prototype. - * filesys.c (scm_close): new procedure, can close file descriptors - and ports (scsh compatible). - - * ports.c (scm_flush_all_ports): SCM_PROC incorrectly allowed an - optional argument. - -Fri Jul 18 11:19:53 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * fluids.c, fluid.h: New files. - * Makefile.am (libguile_la_SOURCES): Added "fluids.c". - (modinclude_HEADERS): Added "fluids.h" - - * init.c: Include "fluids.h". (scm_boot_guile_1): Added call to - scm_init_fluids to initialize the fluid machine. - (scm_start_stack): Initialize the fluids of the first root with - scm_make_initial_fluids. - - * root.h: Added "fluids" member to scm_root_state. - * root.c: Include "fluids.h". (scm_mark_root): Mark "fluids". - (scm_make_root): Call scm_copy_fluids to make fluid bindings - unique for the new root when it has a parent. - - * smob.h: Include "libguile/print.h" to make scm_print_state - visible. - - * dynl.c (free_dynl_obj): New function to free the dynamic object - data. (dynl_smob): Use it. - * dynl.c (scm_dynamic_link): Moved allocating of the memory for - the dynamic object data below the linking of the object to avoid - memory leak when the linking code throws an error. Now the code - leaks a whole dynamically linked library when must_malloc throws, - but that should be much less likely. - -Fri Jul 11 00:19:47 1997 Jim Blandy <jimb@floss.red-bean.com> - - Changes to compile under gnu-win32, from Marcus Daniels: - * stime.c (tzset): If tzset isn't provided, make it a NOP. - (scm_localtime): Change SCM_EOF to SCM_EOL. - (scm_mktime): Likewise. - * socket.c: Don't include sys/un.h unless autoconf tells - us Unix domain sockets are available. - (scm_fill_sockaddr): Ignore Unix domain code. - (scm_addr_vector): Likewise. - (scm_init_addr_buffer): Likewise. - (scm_socketpair): Don't include unless socketpair was - found during autoconf. - * simpos.c (SYSTNAME): Treat cygwin like Unix. - * scmsigs.c (scm_pause): Don't include unless pause was found - during autoconf. - * posix.c (scm_getgroups): Don't include unless support function - was found during autoconf (in this case, getgroups). - (scm_setpwent): For setpwent. - (scm_setegid): For setegid. - * net_db.c (scm_inet_netof): Don't include unless support - function was found during autoconf (in this case, inet_netof). - (scm_lnaof): For inet_lnaof. - (scm_inet_makeaddr): For inet_makeaddr. - (scm_getnet): For getnetent, getnetbyname, getnetbyaddr. - (scm_getproto): For getprotoent. - (scm_getserv): For getservent. - (scm_sethost): For sethostent, endhostent. - (scm_setnet): For setnetent, endnetent. - (scm_setproto): For setprotoent, endprotoent. - (scm_setserv): For setservent, endservent. - * scmconfig.h.in: Regenerated. - -Thu Jul 10 00:22:24 1997 Jim Blandy <jimb@floss.red-bean.com> - - * stime.c (scm_localtime, scm_mktime): Pass SCM_EOL to - scm_misc_error, not SCM_EOF. - - * error.c (scm_wta): Pass SCM_EOL to scm_misc_error as the list of - arguments for formatting the error message, not SCM_BOOL_F. I - think this is left over from the (eq? '() #f) days. - - * read.c (recsexpr): Give this a dummy definition if - DEBUG_EXTENSIONS isn't #defined. - -Fri Jul 4 23:42:17 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * coop-threads.c (scm_wait_condition_variable): Lock mutex again - after waiting. - -Thu Jul 3 16:31:24 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * root.c (cwdr_outer_body): Bugfix: Pass `c' instead of `&c' to - scm_internal_catch. - -Sat Jun 28 16:14:09 1997 Tim Pierce <twp@twp.tezcat.com> - - * Makefile.am (libguile_la_LIBADD): Remove @ALLOCA@, since - alloca.lo will be included in @LIBLOBJS@. Something better than - this should be possible. - * Makefile.in: Regenerated. - -Sat Jun 28 03:40:15 1997 Gary Houston <ghouston@actrix.gen.nz> - - * simpos.h: prototype for scm_primitive_exit. - * simpos.c (scm_primitive_exit): new procedure, terminates the - process without unwinding the stack. - -Sat Jun 28 03:45:25 1997 Tim Pierce <twp@twp.tezcat.com> - - * regex-posix.c (scm_make_regexp): Make `flags' a variable-length - argument and logior its components together, so the user doesn't - have to do this explicitly. Also, if regexp/basic is supplied, then - turn off REG_EXTENDED. - (scm_init_regex_posix): New regexp/basic symbol. - (REG_BASIC): #define this if it is not already present. - -Fri Jun 27 20:36:35 1997 Tim Pierce <twpierce@bio-5.bsd.uchicago.edu> - - * Makefile.am (libguile_la_LIBADD): Include @ALLOCA@. - (MOSTLYCLEANFILES): New target, changed from CLEANFILES. - (CLEANFILES): New target, clean versiondat.h, libpath.h. - (DISTCLEANFILES): New target, clean *.x. - * Makefile.in: Regenerated. - -Tue Jun 24 00:29:07 1997 Jim Blandy <jimb@floss.red-bean.com> - - * script.c (scm_compile_shell_switches): Add 1997 to copyright - years in usage message. - - * Makefile.am (libguile_la_LDFLAGS): Bump library version. - * Makefile.in: Regenerated. - - * regex-posix.c (scm_init_regex_posix): Delete the regexp/nosub - flag; I don't think we support it. - (scm_make_regexp): Make sure the user doesn't pass the - regexp/nosub flag. - - * regex-posix.c (scm_make_regexp, scm_regexp_exec): Add optional - FLAGS arguments. - (scm_init_regex_posix): Define constants for the REG_mumble flags; - name them according to the SCSH convention: regexp/mumble. - - * regex-posix.h (scm_make_regexp, scm_regexp_exec): Update prototypes. - -Mon Jun 23 18:44:49 1997 Jim Blandy <jimb@floss.red-bean.com> - - * Makefile.am (libpath.h): Include the values of all the standard - Makefile directory variables. Print a message, but don't print - all the commands. - (versiondat.h): Print a message, but don't print all the commands. - * load.c: #include "alist.h". - (init_build_info): New function. - (scm_init_load): Call it. - * Makefile.in: Regenerated. - -Sun Jun 22 19:12:58 1997 Jim Blandy <jimb@floss.red-bean.com> - - * root.c: Establish a reliable catch-all handler for the new root. - After all the Scheme handler function might signal an error too, - and we don't want to lose that. - (cwdr_inner_body): Renamed from cwdr_body. - (cwdr_outer_body): New function, to establish the user's handler, - and pass control to cwdr_inner_body. - (cwdr): Establish the reliable catch-all handler here, and pass - control to cwdr_outer_body. - (struct cwdr_body_data): New field, handler, to allow cwdr to pass - the user's handler through to cwdr_outer_body. - * throw.c (scm_handle_by_message): Move guts into.... - (handler_message): New static function. - (scm_handle_by_message_noexit): New function. - * throw.h (scm_handle_by_message_noexit): New prototype. - - * __scm.h: (SCM_FENCE): New macro: optimizer will not move code - across this. Only works on GCC. Otherwise, we hope for the best. - (SCM_DEFER_INTS, SCM_ALLOW_INTS): Use FENCE appropriately. I have - the feeling that real thread systems will not need this... - -Sun Jun 22 15:46:35 1997 Jim Blandy <jimb@floss.red-bean.com> - - Try to detect when people are using one version of libguile and a - different version of ice-9. People have been skewing things and - sending in bug reports. - * Makefile.am (versiondat.h): New file to generate. - * version.c: #include "versiondat.h", to get version info. - (scm_libguile_config_stamp): New function. - * script.c: #include "version.h". - (scm_compile_switches): Call scm_version to get version number. - * scmconfig.h.in, Makefile.in: Regenerated. - * Makefile.in: Regenerated. - - * Makefile.am (ETAGS_ARGS): Catch SCM_PROC, etc. so we can find - primitive definitions under their Scheme names. - - * Makefile.am (libguile_la_LDFLAGS): Update library version to - 1:2. Helps avoid confusion between installed and uninstalled libs. - - * scmconfig.h.in: Regenerated. (Needed after June 3 change to - ../configure.in.) - - * gdb_interface.h (GDB_INTERFACE): Remove semicolon and trailing - backslash from definition; this should be used like: GDB_INTERFACE; - -Sun Jun 22 04:00:32 1997 Gary Houston <ghouston@actrix.gen.nz> - - * ioext.c (scm_duplicate_port): bug fix: don't try to make the - new port unbuffered until its stream has been set. - -Sat Jun 21 18:44:03 1997 Gary Houston <ghouston@actrix.gen.nz> - - * ports.h: new prototype. - * ports.c (scm_flush_all_ports): new procedure, scsh compatible. - -Sat Jun 21 00:25:03 1997 Jim Blandy <jimb@floss.red-bean.com> - - Make things compile neatly under Sun's C compiler. - * dynl.c (scm_dynamic_func): Cast return value from sysdep_dynl_func. - * extchrs.c (xmbtowc): Make the second arg a normal char, not - unsigned, because that's what the ANSI function takes. - * extchrs.h (xmbtowc): Corresponding change to prototype. - * genio.c (scm_gen_getc): Make buf plain chars. Nobody wants - uchars here. - * mbstrings.c (scm_mb_ilength): Use ANSI arg syntax. Make DATA - argument plain char *. - * strings.c (scm_string): Use SCM_ROCHARS, since c is a plain - char. - * tag.c (scm_tag): Remove unreachable statement. - * unif.c (scm_array_to_list): If we want to shift a 1 bit to the - top of the word, it should be unsigned. - - * eval.c (scm_lookupcar1): Don't declare var2 unless USE_THREADS - is defined, to avoid warnings; it's only used in the - conflict-checking code. Which might go away anyway. - (SCM_CEVAL): All goto's targeting the `dispatch' label are in - conditionals; put the label definition in an #if too, to stifle - warnings. - - * Makefile.am (EXTRA_DIST): Include ChangeLog-gh and - ChangeLog-threads in the distribution. - * Makefile.in: Regenerated. - -Fri Jun 20 10:03:41 1997 Tim Pierce <twpierce@bio-5.bsd.uchicago.edu> - - * guile-snarf.in: Changed regexp to support CPPs that insert - whitespace between lexical tokens (which munges the `%%%' snarf - cookie). - -Tue Jun 17 13:49:56 1997 Tim Pierce <twpierce@bio-5.bsd.uchicago.edu> - - * load.c (scm_init_load_path): Append $(datadir)/guile to - %load-path, so modules do not have to be installed in Guile's - current version directory. - -Mon Jun 16 17:20:55 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * dynl.c (scm_dynamic_call, scm_dynamic_args_call): Wrap dynamic - function call in SCM_DEFER_INTS/SCM_ALLOW_INTS. - (scm_dynamic_link, scm_dynamic_unlink, scm_dynamic_func): Always - call the sysdep functions with deferred ints. - * dynl.c, dynl-dl.c, dynl-dld.c, dynl-shl.c (sysdep_dynl_link, - sysdep_dynl_unlink, sysdep_dynl_func): Expect to be called with - deferred interrupts and insert SCM_ALLOW_INTS before throwing an - error. - - * dynl.c (scm_dynamic_unlink, scm_dynamic_call): Return - SCM_UNSPECIFIED. - -Sat Jun 14 19:00:58 1997 Gary Houston <ghouston@actrix.gen.nz> - - * scmsigs.c (sys_deliver_signals): add a comment about a probable bug. - -Wed Jun 11 00:33:00 1997 Jim Blandy <jimb@floss.red-bean.com> - - * Makefile.in: Regenerated after xtra_PLUGIN_guile_libs change in - ../configure.in. - -Sun Jun 8 14:37:26 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * eval.c (scm_lookupcar1): New procedure to cope with a race - condition during lookup (when using threads). - (scm_lookupcar): Implement in terms of scm_lookupcar1. - (SCM_CEVAL): Use scm_lookupcar1 instead of scm_lookupcar in one - place. - -Fri Jun 6 19:05:07 1997 Jim Blandy <jimb@totoro.cyclic.com> - - * regex-posix.c (scm_regexp_exec): Use the `start' argument if - supplied. (Change from Tim Pierce.) - -Thu Jun 5 16:38:19 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * struct.c (init_struct): Forget to mention this in the "Wed Jun 4 - 23:47:01 1997" changelog: Slots are now initialized with `#f' by - default and not `()'. `#f' is the canonical non-value in Scheme, - right? - -Wed Jun 4 23:47:01 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * struct.c (struct_printer): New variable that holds a handle on - the Scheme variable *struct-printer*. This variable can be set by - Scheme code to override the printing of structures. - (scm_print_struct): If struct_printer is set, call it. If it is - not set, or returns #f, print the structure in the old fashion. - Include "eval.h" for scm_apply. - -Tue Jun 3 23:01:39 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * struct.c (scm_struct_ref, scm_struct_set_x): Use - scm_struct_i_n_words to get the number of fields, not - -scm_struct_n_extra_words. - - On the route to fancier struct printing: - * struct.c (scm_print_struct): New function to print a structure. - Include "genio.h" to support it. This function doesn't do - anything interesting right now, but I think it should be here - anyway. - * struct.h: Include "print.h" and add prototype for - scm_print_struct. - * print.c (scm_iprin1): Call scm_print_struct instead of trying to - print structures ourself. - -Sun Jun 1 07:58:41 1997 Gary Houston <ghouston@actrix.gen.nz> - - * scmsigs.c (sys_deliver_signals): bug fix: reset got_signal[i] - before applying the handler in case it doesn't return. - -Sat May 31 18:57:51 1997 Gary Houston <ghouston@actrix.gen.nz> - - * scmsigs.h, async.h: updated. - - * _scm.h: if HAVE_RESTARTS is defined then don't use a SYSCALL - loop. - - * posix.c (scm_uname): interpret only negative values as an error. - Solaris normally returns a positive value. - - * script.c (scm_compile_shell_switches): if we are not going into - an interactive repl, set scm_mask_ints to zero so that asyncs can - run. - - * simpos.c (scm_system): don't ignore/unignore signals around - the "system" call. - - * posix.c (scm_open_pipe): don't ignore/unignore signals around - the "popen" call. - - * init.c (scm_boot_guile_1): don't call scm_init_signals, it's - done in boot-9.scm instead. - - * scmsigs.c, async.c: Major rewriting of signal handling code. - (scm_sigaction): new procedure. - (scm_sleep): don't wrap sleep in SCM_SYSCALL, it would mess up the - timing. - (scm_raise): return unspecified, throw error on failure. - -Thu May 29 02:47:36 1997 Jim Blandy <jimb@floss.cyclic.com> - - * regex-posix.c (scm_init_regex_posix): Register the "regex" - feature, to help boot-9.scm decide whether to import the regex - module. - -Thu May 29 02:19:40 1997 Jim Blandy <jimb@floss.cyclic.com> - - * eval.c: Include scmconfig.h at the beginning of the file so that - HAVE_ALLOCA_H may properly be defined. Thanks to Bill Janssen for - pointing this out. - - * regex-posix.c: #include "_scm.h" before conditionally #including - <regex.h>; the former defines HAVE_REGCOMP. - - * regex-posix.c: #include <regex.h> conditionally, so the file is - CPP'able (for dependency scanning) even on systems that don't have - a <regex.h> header. - -Tue May 27 23:48:38 1997 Jim Blandy <jimb@floss.cyclic.com> - - Add new R4RS-compliant syntax for keywords. - * read.c (scm_lreadr): Recognize `#:' as a prefix for keywords, - regardless of the setting of the `keywords' read option. - * kw.c (prin_kw): Print keywords using the `#:' syntax, so they - can be re-read no matter what the setting of the `keywords' read - option. - -Tue May 27 22:47:31 1997 Tim Pierce <twp@twp.tezcat.com> - - Add support for POSIX regular expressions. - - * regex-posix.c, regex-posix.h: New files. (Some code - is taken liberally from rx/rgx.c in the old Guile dist.) - - * init.c: Include regex-posix.h. - (scm_boot_guile_1): Call scm_init_regex_posix. - - * Makefile.am (EXTRA_libguile_la_SOURCES, modinclude_HEADERS): - Add regex-posix.[ch] sources. - * Makefile.in: Regenerated. - - * scmconfig.h.in: Add HAVE_REGCOMP macro. (automake is supposed - to do this automatically? It didn't for me, bleh.) - -Mon May 26 18:51:29 1997 Jim Blandy <jimb@floss.cyclic.com> - - * fports.c (print_pipe_port): New function. - (scm_fptob): Use print_pipe_port instead of scm_prinport; the - latter doesn't even take the right arguments. - - * Makefile.am: Increment shared lib revision number. I think - sometimes the uninstalled Guile finds the installed shared lib; - Gord says doing this might help. As things turned out, I can't - say whether it does. - * Makefile.in: Regenerated. - - * gh_init.c (gh_enter): Cast c_main_prog to a void * before - passing it as the closure argument to scm_boot_guile. (Bill - Janssen) - - * ports.c (print_void_port, putc_void_port, puts_void_port, - write_void_port, flush_void_port, getc_void_port, close_void_port, - noop0): Use ANSI prototypes instead of K&R declarations, so the - initialization of void_port_ptob gets aggressively type-checked. - Fix arguments of print_void_port and write_void_port. (Bill - Janssen) - - * COPYING, __scm.h, _scm.h, alist.c, alist.h, append.c, append.h, - appinit.c, arbiters.c, arbiters.h, async.c, async.h, backtrace.c, - backtrace.h, boolean.c, boolean.h, chars.c, chars.h, - continuations.c, continuations.h, coop-defs.h, coop-threads.c, - coop-threads.c.cygnus, coop-threads.h, coop-threads.h.cygnus, - coop.c, debug.c, debug.h, dynl-dl.c, dynl-dld.c, dynl-shl.c, - dynl-vms.c, dynl.c, dynl.h, dynwind.c, dynwind.h, eq.c, eq.h, - error.c, error.h, eval.c, eval.h, extchrs.h, feature.c, feature.h, - filesys.c, filesys.h, fports.c, fports.h, fsu-pthreads.h, gc.c, - gc.h, gdbint.c, gdbint.h, genio.c, genio.h, gh.h, gh_data.c, - gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c, gh_list.c, - gh_predicates.c, gh_test_c.c, gh_test_repl.c, gscm.c, gscm.h, - gsubr.c, gsubr.h, guile.c, hash.c, hash.h, hashtab.c, hashtab.h, - init.c, init.h, ioext.c, ioext.h, kw.c, kw.h, libguile.h, list.c, - list.h, load.c, load.h, mallocs.c, mallocs.h, markers.c, - markers.h, mbstrings.c, mbstrings.h, mit-pthreads.c, - mit-pthreads.h, net_db.c, net_db.h, numbers.c, numbers.h, - objprop.c, objprop.h, options.c, options.h, pairs.c, pairs.h, - ports.c, ports.h, posix.c, posix.h, print.c, print.h, procprop.c, - procprop.h, procs.c, procs.h, putenv.c, ramap.c, ramap.h, read.c, - read.h, root.c, root.h, scmhob.h, scmsigs.c, scmsigs.h, script.c, - script.h, sequences.c, sequences.h, simpos.c, simpos.h, smob.c, - smob.h, snarf.h, socket.c, socket.h, srcprop.c, srcprop.h, - stackchk.c, stackchk.h, stacks.c, stacks.h, stime.c, stime.h, - strings.c, strings.h, strop.c, strop.h, strorder.c, strorder.h, - strports.c, strports.h, struct.c, struct.h, symbols.c, symbols.h, - tag.c, tag.h, tags.h, threads.c, threads.h, throw.c, throw.h, - unif.c, unif.h, variable.c, variable.h, vectors.c, vectors.h, - version.c, version.h, vports.c, vports.h, weaks.c, weaks.h: New - address for FSF. - -Mon May 26 12:37:30 1997 Jim Blandy <jimb@floss.cyclic.com> - - * script.c (scm_find_executable): Use prototype-style definition - here; apparently it's not quite right to have const in a prototype - and then use a K&R declaration. I wonder if stuff like this will - go away if we compile with -Wrequire-prototypes, or whatever that - is... (Bernard URBAN) - - * scmhob.h: New text from Bernard URBAN. - -Sat May 17 17:14:36 1997 Jim Blandy <jimb@floss.cyclic.com> - - * script.c: Don't #define const on hpux. Configure takes care of - this. (Thanks to Larry Schwimmer.) - - * script.c: Use the HAVE_UNISTD_H symbol provided by autoconf to - decide whether to #include <unistd.h>, instead of listing a bunch - of systems. Don't #include stdio twice. Removed dyked-out - definition of scm_find_impl_file. - -Fri May 16 03:06:08 1997 Jim Blandy <jimb@floss.cyclic.com> - - * Makefile.am (libguile_la_LDFLAGS): Update libguile's shared - library version info to 1:0. - * Makefile.in: Regenerated. - - * backtrace.c, backtrace.h, debug.c, debug.h, eq.c, - gdb_interface.h, gdbint.c, gdbint.h, gh_data.c, gh_init.c, - gh_io.c, gh_list.c, gh_predicates.c, gh_test_c.c, gh_test_repl.c, - init.c, net_db.c, options.c, options.h, ports.c, print.c, read.c, - script.h, snarf.h, srcprop.c, srcprop.h, stacks.c, stacks.h, - throw.c: Update copyright years; these files have been worked on - significantly in 1997, but only had copyright years for 1996. - Also, change name of copyright holder on some from Mikael - Djurfeldt to Free Software Foundation; he has signed papers - assigning the changes to the FSF. - - * script.c (scm_shell_usage): Pass FATAL to exit. There's no - reason not to give the user the option. - - * net_db.c (scm_gethost, scm_getnet, scm_getproto, scm_getserv): - Return #f on end-of-file when scanning table (i.e. when called - with no arguments). Try to catch errors, when we can. - * posix.c (scm_getgrgid, scm_getpwuid): Same. - - * script.h (scm_shell_usage, scm_compile_shell_switches): New - external declarations. These are useful. - -Thu May 15 05:21:36 1997 Gary Houston <ghouston@actrix.gen.nz> - - * posix.c: don't include <sys/select.h> or define macros for - select, since they were not used in this file. - - * filesys.c (scm_select): make the fifth parameter microseconds, - not milliseconds. let the fourth parameter be either a real value - or an integer or #f. The first, second and third arguments can - now be vectors: the type of the corresponding return set will be - the same. - (set_element, get_element): new static procedures. - -Wed May 14 12:18:12 1997 Jim Blandy <jimb@floss.cyclic.com> - - * strports.c (scm_eval_string): New function. - (scm_eval_0str): Trivially re-implemented in terms of - scm_eval_string. - * strports.h (scm_eval_string): New extern decl. - - * net_db.c (h_errno): Add extern decl for this. - - * fports.c (local_pclose): New function. - (scm_pipob): Use it in the initializer here. - - From Tim Pierce: - * net_db.c (scm_gethost, scm_getproto, scm_getnet, scm_getserv): - Use a meaningful error message when signalling an error. For - this, scm_gethost must check h_errno rather than errno. - -Tue May 13 16:40:06 1997 Jim Blandy <jimb@floss.cyclic.com> - - * Makefile.in: Regenerated, using automake-1.1p. - -Tue May 13 04:34:52 1997 Gary Houston <ghouston@actrix.gen.nz> - - * socket.c (scm_addr_vector): use SCM_UNDEFINED in scm_listify, - not SCM_UNSPECIFIED. - - * script.c (scm_compile_shell_switches): don't append (quit) if - interactive. - (scm_shell): call scm_exit_status and exit on the result of the - evaluation. - -Mon May 12 17:23:58 1997 Jim Blandy <jimb@floss.cyclic.com> - - Ensure that shared substrings are handled properly when passed to - a system call or other foreign function. Many thanks to Tim - Pierce! - * symbols.h (SCM_COERCE_SUBSTR): new macro. - * filesys.c (scm_chmod, scm_rename, scm_delete_file, scm_mkdir, - scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink, - scm_lstat), ports.c (scm_sys_make_void_port), posix.c (scm_utime, - scm_putenv, scm_setlocale, scm_mknod), stime.c (setzone, - scm_strftime), vports.c (scm_make_soft_port), backtrace.c - (scm_display_error_message): use RO macros when strings may be RO. - * error.c (scm_error_scm), filesys.c (scm_chown, scm_chmod, - scm_rename, scm_delete_file, scm_mkdir, scm_rmdir, scm_opendir, - scm_chdir, scm_symlink, scm_readlink, scm_lstat), ioext.c - (scm_freopen, scm_duplicate_port, scm_fdopen), net_db.c - (scm_gethost, scm_getnet, scm_getproto, scm_getserv), ports.c - (scm_sys_make_void_port), posix.c (scm_getgrgid, scm_utime, - scm_setlocale, scm_mknod), stime.c (setzone, scm_strptime, - scm_strftime), vports.c (scm_make_soft_port): use - SCM_COERCE_SUBSTR to make sure shared substrings are - null-terminated. - -Mon May 12 15:33:10 1997 Jim Blandy <jimb@totoro.cyclic.com> - - * error.c (scm_error): Add newline to error message. - - * init.c (scm_init_standard_ports): Doc fix. - -Thu May 8 14:38:01 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * dynl-shl.c: Completely replaced with new code from Bernard - URBAN. - - * script.c (scm_ice_9_already_loaded): New variable. - (scm_compile_shell_switches): Use it. - -Mon May 5 20:35:08 1997 Gary Houston <ghouston@actrix.gen.nz> - - * filesys.c (scm_input_waiting_p): add missing third argument to - scm_misc_error. - - * stime.c (scm_localtime): copy the result of localtime before - calling gmtime in case they share a buffer. - (scm_localtime, scm_mktime): throw an error if neither HAVE_TM_ZONE - nor HAVE_TZNAME. - -Fri May 2 19:07:11 1997 Gary Houston <ghouston@actrix.gen.nz> - - * eq.c (scm_equal_p): use SCM_TYP7SD (y) not SCM_TYP7SD (x). - -Thu May 1 17:01:45 1997 Jim Blandy <jimb@floss.cyclic.com> - - * Makefile.am (check-local): New target, which causes 'make check' - to run gh_test_c and gh_test_repl, with some trivial input. - * Makefile.in: Rgnrtd. - -Tue Apr 29 19:00:40 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * dynl.c (print_dynl_obj): Indicate whether the dynamic object has - been unlinked. - -Mon Apr 28 06:10:14 1997 Gary Houston <ghouston@actrix.gen.nz> - - * async.c (scm_sys_tick_async_thunk): commented out. I'm not - sure how this was supposed to work. - (scm_async_click): don't send SCM_TICK_SIGNAL. - (scm_init_async): don't initialize %tick-thunk. - - * the following change doesn't affect the Scheme interface: - gc-thunk is called at the end of garbage collection. however it's - no longer implemented by pretending it's a signal. - - * gc.c (scm_gc_end): don't call scm_take_signal. instead mark the - system async corresponding to scm_gc_thunk. - * async.h: declare scm_gc_async. - * async.c (scm_sys_gc_async_thunk): apply the thunk named by - gc-thunk directly, instead of going through a signal handler. - (scm_gc_async): new variable, points to the GC system-async. - (scm_init_async): save the GC async as scm_gc_async instead - of using system_signal_asyncs. - (scm_gc_vcell): new variable, stores the gc-thunk vcell. - -Mon Apr 28 19:14:44 1997 Jim Blandy <jimb@floss.cyclic.com> - - * Makefile.am (libpath.h, cpp_err_symbols.c, cpp_sig_symbols.c): - Don't screw up if we're interrupted. - * Makefile.in: Regeneradet. - -Sun Apr 27 17:57:15 1997 Jim Blandy <jimb@floss.cyclic.com> - - * aclocal.m4: Removed; unnecessary, given changes of Apr 24. - - * Makefile.am (modincludedir): Use "ice-9" instead of "@module@"; - we're not using AM_INIT_GUILE_MODULE any more. - * Makefile.in: Reneregated. - -Thu Apr 24 00:41:08 1997 Jim Blandy <jimb@floss.cyclic.com> - - Functions for finding variable bindings, grace à Tim Pierce. - * gh_data.c (gh_lookup, gh_module_lookup): New functions. - * gh.h (gh_lookup, gh_module_lookup): New prototypes. - - Get 'make dist' to work again. - * Makefile.am (EXTRA_DIST): Remove PLUGIN files. - * Makefile.in: Regenerated, like a surry without a fringe on top. - - Changes for reduced Guile distribution: one configure script, - no plugins. - * configure.in, configure: Removed. - * acconfig.h, acinclude.m4: Moved to parent directory, where the - real configure script lives. - * Makefile.in, scmconfig.h.in: Regenerated. - - * init.c: #include "script.h", to get prototype for script.c's - init function. - -Wed Apr 23 21:25:39 1997 Jim Blandy <jimb@floss.cyclic.com> - - * gh_data.c (gh_scm2newstr, gh_symbol2newstr): Use - scm_must_malloc, not raw malloc. - - * script.c (scm_compile_shell_switches): Dyke out debugging output - code. - -Mon Apr 21 05:00:32 1997 Gary Houston <ghouston@actrix.gen.nz> - - * eq.c (scm_equal_p): use "SCM_TYP7SD", not "SCM (TYP7SD". - - * stime.c: include both <sys/times.h> and <sys/timeb.h> if the - system has them. Hope this is safe. Previously - sys/timeb.h was included if HAVE_FTIME was defined or if - HAVE_SYS_TIMEB_H was defined but HAVE_SYS_TIMES_H was not, - but IRIX iris 5.3 apparently has ftime but not sys/timeb.h. - - * ioext.c (scm_setfileno): add missing third argument to - scm_misc_error call. - -Sun Apr 20 15:09:31 1997 Jim Blandy <jimb@totoro.cyclic.com> - - * eq.c (scm_equal_p): Correctly compare strings of different - varieties. (Thanks to Tim Pierce.) - -Sat Apr 19 03:59:02 1997 Jim Blandy <jimb@floss.cyclic.com> - - * read.c (skip_scsh_block_comment): SCSH says the !# that ends a - #! block comment must occur on a line all by itself. - - Move most of the guts of shell command processing into libguile, - so guile.c can be very small (and eventuallly auto-generated. (I - mean, generated mechanically, not self-generated. Hmm.)) - * guile.c, script.c, script.h: New source files. - * init.c (scm_boot_guile_1): Call scm_init_script. - * libguile.h: #include "script.h". - * Makefile.am (bin_PROGRAMS, guile_SOURCES, guile_LDADD): New - targets, for new executable. - (libguile_la_SOURCES): Mention script.c. - (modinclude_HEADERS): Add script.h. - * configure.in: Always check for -lm, -lsocket, -lnsl, whether or - not dynamic linking is enabled. This is because we're generating - executables now. Move CY_AC_WITH_THREADS call after those, so the - values of cy_cv_threads_libs captures the libs chosen above. - * Makefile.in, configure, aclocal.m4: Regenerated. - - * Makefile.am (EXTRA_DIST): Don't distribute gscm.c or gscm.h. - We don't maintain this interface any more, and it just confuses - people. - - * alloca.c: #include <scmconfig.h>, not <config.h>. - * Makefile.am (EXTRA_libguile_la_SOURCES): Mention alloca.c, so - it'll get included in disties. - -Thu Apr 17 17:45:10 1997 Jim Blandy <jimb@totoro.cyclic.com> - - * gscm.c, gscm.h: These aren't supported any more, and shouldn't - be distributed, because they confuse people. - * Makefile.am (EXTRA_DIST): Remove gscm.c, gscm.h. - -Sat Apr 19 11:56:18 1997 Tim Pierce <twp@twp.tezcat.com> - - * configure.in: check for presence of gethostent (not present on - OpenBSD by default). - * net_db.c (scm_gethost): Check HAVE_GETHOSTENT. - * configure, scmconfig.h.in: Regenerated. - -Wed Apr 16 17:52:38 1997 Jim Blandy <jimb@floss.cyclic.com> - - * backtrace.c (scm_backtrace): Split message string across - newlines properly. GCC is more tolerant of this than other - compilers. - -Mon Apr 14 20:20:14 1997 Jim Blandy <jimb@floss.cyclic.com> - - Merge threads directory into libguile. - * coop-defs.h, coop-threads.c, coop-threads.h, coop.c, threads.c, - threads.h: New source files. - * Makefile.am (EXTRA_libguile_la_SOURCES): Add threads.c. - (noinst_HEADERS): Add coop-threads.c, coop-threads.h, coop.c - here; see comment. - (modinclude_HEADERS): Add threads.h, coop-defs.h. - (EXTRA_DIST): Add fsu-pthreads.h, mit-pthreads.c, mit-pthreads.h, - coop-threads.c.cygnus, coop-threads.h.cygnus. - * configure.in: If we're using threads, include threads.o in - LIBOBJS. - * _scm.h, libguile.h: threads.h lives in this directory now. - * fsu-pthreads.h, mit-pthreads.c, mit-pthreads.h, - coop-threads.c.cygnus, coop-threads.h.cygnus: New files, not - currently used, but brought along for information's sake. - * ChangeLog-threads: log from old 'threads' directory. - * Makefile.in, configure: Rebuilt. - -Mon Apr 14 20:15:29 1997 Jim Blandy <jimb@totoro.cyclic.com> - - * stime.c (scm_mktime): #ifndef HAVE_TM_ZONE, Use lt.tm_zone, not - lt->tm_zone. - -Mon Apr 14 01:32:57 1997 Jim Blandy <jimb@floss.cyclic.com> - - * gh_init.c (gh_standard_handler): Return SCM_BOOL_F, not garbage. - - Merge GH interface library into libguile. - * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c, - gh_list.c, gh_predicates.c, gh_test_c.c, gh_test_repl.c: New files. - * Makefile.am (libguile_la_SOURCES): Add gh_data.c, gh_eval.c, - gh_funcs.c, gh_init.c, gh_io.c, gh_list.c, gh_predicates.c. Move - _scm.h to ... - (EXTRA_libguile_la_SOURCES): ... here. - (pkginclude_HEADERS): Add variable, to get gh.h installed. - (THREAD_LIBS, check_ldadd, check_PROGRAMS, gh_test_c_SOURCES, - gh_test_c_LDADD, gh_test_repl_SOURCES, gh_test_repl_LDADD): - New variables, describing how to build the gh test programs. - * configure.in: Check for -lm, -lsocket, -lnsl; we need this to - build the test programs, and we probably should have been linking - libguile.la against them all along, to support AIX shared libs. - Add cflags for threads to CFLAGS; add libs for threads to new - variable THREAD_LIBS, used in Makefile.am. - * ChangeLog-gh: log from old `gh' subdirectory. - * Makefile.in, configure, scmconfig.h.in: Rebuilt. - -Sun Apr 13 23:03:55 1997 Jim Blandy <jimb@floss.cyclic.com> - - * acconfig.h: Undo change of Apr 9; including the definition of - PACKAGE in the guile headers conflicts with applications' own - definitions. - * scmconfig.h.in: Regenerated. - -Fri Apr 11 14:12:13 1997 Jim Blandy <jimb@floss.cyclic.com> - - * filesys.c (scm_fcntl): New function from Roland McGrath. - (scm_init_filesys): New symbols for use with fcntl. - * filesys.h: Added prototype. - - * eval.c (SCM_APPLY): Set debug apply frame argument list correctly - when PROC is receiving no arguments. - -Fri Apr 11 19:39:32 1997 Jim Blandy <jimb@totoro.cyclic.com> - - * filesys.c (S_ISSOCK): Define this if it's missing, but we do - have S_IFSOCK. This is the case under Ultrix. - - * posix.c (scm_status_exit_val, scm_status_exit_val, - scm_status_term_sig, scm_status_stop_sig): Modified to work with - Ultrix versions of WIFSTOPPED, etc., which assume that their - arguments are lvalues (hmm). - -Thu Apr 10 15:10:07 1997 Jim Blandy <jimb@floss.cyclic.com> - - * eval.c: Doc fixes. - - * throw.c: Doc fixes; rearranged. - - * putenv.c: #include "libguile/scmconfig.h", not <config.h>. - -Wed Apr 9 18:01:20 1997 Jim Blandy <jimb@floss.cyclic.com> - - * acconfig.h: Added entry for PACKAGE. - * scmconfig.h.in: Regenerated. - - Changes to work with automake-1.1n, which has better libtool support. - * Makefile.am: Use lib_LTLIBRARIES instead of lib_PROGRAMS. - Use libguile_la_LIBADD instead of libguile_la_LDADD. (What's the - difference here?) - (libguile_la_SOURCES, modinclude_HEADERS, EXTRA_DIST): Format for - readability. - * Makefile.in: Rebuild. - -Wed Apr 9 09:08:54 1997 Gary Houston <ghouston@actrix.gen.nz> - - * stime.c (scm_mktime): take an optional zone argument. - (scm_localtime): check putenv return value. - (scm_strftime, scm_strptime): moved from posix.c. move #include - sequences.h too. - stime.h, posix.h: update prototypes. - (bdtime2c, setzone, restorezone): new static procedures. - (scm_mktime, scm_strftime): use them. - (scm_strftime): don't call mktime before strftime. Use - filltime for return value. - (filltime): convert NULL zname to #f. - (scm_strptime): return a count of characters consumed, not - the remaining string. - -Sun Apr 6 05:44:11 1997 Gary Houston <ghouston@actrix.gen.nz> - - * stime.c (scm_localtime): check HAVE_TM_ZONE and HAVE_TZNAME. - (scm_mktime): likewise. - Declare *tzname[]. - Uncomment localtime and mktime. - - * configure.in: add AC_STRUCT_TIMEZONE. - -Sat Apr 5 23:56:40 1997 Gary Houston <ghouston@actrix.gen.nz> - - * stime.c (scm_init_stime): don't define ticks/sec. - (scm_gettimeofday): renamed from scm_time_plus_ticks (avoids multiple - return value problem and is still portable.) - -Sat Apr 5 17:59:24 1997 Jim Blandy <jimb@floss.cyclic.com> - - * cpp_err_symbols.in: Renamed from cpp_err_symbols, to avoid - make's implicit cpp_err_symbols: cpp_err_symbols.c rule. - * cpp_sig_symbols.in: Renamed from cpp_sig_symbols. - * Makefile.am (check_errnos, check_signals, cpp_sig_symbols.c, - cpp_err_symbols.c): Corresponding changes. - * Makefile.in: Regenerated. - -Sat Apr 5 02:39:02 1997 Gary Houston <ghouston@actrix.gen.nz> - - * posix.c (scm_putenv): don't check HAVE_PUTENV. - * Makefile.am (EXTRA_libguile_la_SOURCES): add putenv.c. - * configure.in: move putenv from AC_CHECK_FUNCS to AC_REPLACE_FUNCS. - * putenv.c: new file, from sh-utils 1.12. - - * posix.c (scm_environ): use malloc in place of scm_must_malloc - since allocation isn't for Scheme objects. - (scm_putenv): copy strings before placing in the environment. - - * stime.c (scm_current_time): throw an error if time returns -1, - instead of returning #f. - (scm_get_internal_real_time, scm_get_internal_real_time): use - scm_long2num for return value instead of SCM_MAKINUM. - - * stime.h: prototypes updated. - - * stime.c (scm_time_in_msec): apparently unused, deleted. - -Fri Apr 4 08:53:41 1997 Gary Houston <ghouston@actrix.gen.nz> - - * configure.in: check for gettimeofday. - - * stime.c (scm_time_plus_ticks): new procedure, an scsh interface - which may be more usefully portable than a gettimeofday interface. - -Wed Apr 2 17:11:39 1997 Jim Blandy <jimb@totoro.cyclic.com> - - * Makefile.am (EXTRA_DIST): It's cpp_err_symbols, not - cpp_err_signals. - * Makefile.in: Regenerated. - -Mon Mar 31 03:22:37 1997 Gary Houston <ghouston@actrix.gen.nz> - - * stime.c (filltime): recovered static procedure. - (scm_localtime, scm_gmtime, scm_mktime, scm_tzset): recovered from - an earlier Guile. - - * posix.h: add prototype for scm_close_pipe, remove prototypes for - scm_open_input_pipe, scm_open_output_pipe, change scm_mknod prototype. - - * posix.c (scm_mknod): split the mode argument into type and perms - arguments, like the extra fields returned by stat. - - * fports.c (scm_pipob): set the close, free and print procedures. - (scm_close_pipe): new procedure. - - * posix.c (scm_open_input_pipe, scm_open_output_pipe): deleted, - define them in boot-9.scm - -Wed Mar 26 04:10:32 1997 Gary Houston <ghouston@actrix.gen.nz> - - * ioext.c (scm_setfileno): throw a runtime error if SET_FILE_FD_FIELD - wan't defined. Don't include fd.h. - - * Previously fd.h was regenerated whenever configure was run, - forcing a couple of files to be recompiled. - - * fd.h.in: deleted, SET_FILE_FD_FIELD moved to ioext.c. - * configure.in: AC_DEFINE FD_SETTER instead of HAVE_FD_SETTER. - Check for _fileno as well as _file. - Don't output fd.h. - * ioext.c: don't fd.h. - * acconfig.h: remove duplicate HAVE_FD_SETTER and change the - other to FD_SETTER. - - * Change the stratigy for getting information about errno - (and now signal number) values, e.g., ENOSYS, SIGKILL. Instead of - generating lists of symbols during the build process, which will - not always work, include comprehensive lists in the distribution. - To help keep the lists up to date, the "check_signals" and - "check_errnos" make targets can be used. - - * configure.in: don't check for a command to extract errno codes. - * Makefile.am: update file lists, remove errnos.list and errnos.c - targets, add cpp_err_symbols.c, cpp_sig_symbols.c, check_signals, - check_errnos targets. - (CLEANFILES): remove errnos.c and errnos.list, add - cpp_err_symbols_here cpp_err_symbols_diff cpp_err_symbols_new - cpp_sig_symbols_here cpp_sig_symbols_diff cpp_sig_symbols_new - * errnos.default: deleted. - * cpp_signal.c: new file. - * cpp_errno.c: renamed from errnos_get.c. - * cpp_err_symbols, cpp_sig_symbols: new files. - * cpp_cnvt.awk: renamed from errnos_cnvt_awk. - * error.c (scm_init_error): #include cpp_err_symbols instead of - errnos.c. - * posix.c (scm_init_posix): don't intern signal symbols. #include - cpp_sig_symbols.c. - -Tue Mar 25 04:51:10 1997 Gary Houston <ghouston@actrix.gen.nz> - - * strop.c (scm_i_index): allow the lower bound to be equal to the - length of the string, so a null string doesn't always give an error. - - * posix.h: new prototypes. - * posix.c (scm_status_exit_val, scm_status_term_sig, - scm_status_stop_sig): new functions, as in scsh. They break down - process status values as returned by waitpid. - -Sat Mar 22 18:16:29 1997 Gary Houston <ghouston@actrix.gen.nz> - - * net_db.c (scm_gethost): don't check HAVE_GETHOSTENT, since - configure doesn't know about it. - -Fri Mar 21 23:49:28 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * snarf.h, backtrace.c: Name change SCM_GLOBAL --> SCM_VCELL. - - * snarf.h: Added new macros SCM_GLOBAL_SYMBOL and SCM_GLOBAL_VCELL - which defines C variables with global linkage. - -Mon Mar 17 05:57:11 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * snarf.h (SCM_PROC1): Bugfix: Use (void) rather than (...) for - zero arg subrs. - -Sun Mar 16 11:43:49 1997 Mikael Djurfeldt <mdj@floss.cyclic.com> - - * eval.c (safe_setjmp): Temporarily use old setjmp until someone - has time to check why this doesn't work well with continuations. - -Sun Mar 16 05:09:55 1997 Jim Blandy <jimb@totoro.cyclic.com> - - * Fix shell syntax error; some shells won't tolerate - multiple "fi" statements on a single line. (Thanks to Fred Fish.) - -Sat Mar 15 01:11:40 1997 Gary Houston <ghouston@actrix.gen.nz> - - * posix.c (scm_uname): throw an error if uname fails instead - of returning errno. - - * error.h (scm_errno, scm_perror): obsolete prototypes removed. - - * error.c (err_head, scm_errno, scm_perror): obsolete procedures - removed. - - * async.c (scm_ints_disabled): definition moved from error.c. - -Sat Mar 15 00:06:08 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * acconfig.h: Removed PACKAGE. - - * scmconfig.h.in: Regenerated. - - * snarf.h: g++ says it's non-portable not to specify the first - argument in a varargs declaration. I introduced the first - argument by using preprocessor conditionals. - -Thu Mar 13 21:28:25 1997 Gary Houston <ghouston@actrix.gen.nz> - - * ioext.c (scm_read_delimited_x): use RO string macros for delims. - (scm_freopen): use RO string macros for filename and modes. - (scm_duplicate_port, scm_fdopen): use RO string macros for modes. - - * posix.c (scm_getgrgid): simplify conversion of name to C string. - (scm_mknod): use RO string macros for path. - - * socket.c (scm_fill_sockaddr, scm_send, scm_sendto): - use SCM_ROSTRINGP, SCM_ROCHARS, SCM_ROLENGTH. - - * net_db.c (scm_gethost, scm_getnet, scm_getproto, scm_getserv): - use SCM_ROSTRINGP and SCM_ROCHARS. - -Thu Mar 13 18:31:33 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * unif.c (scm_array_set_x): Cast ICHR (obj) to char if storing in - a scm_tc7_byvect. - - * ramap.c (scm_ra_matchp, scm_array_fill_int, racp, - scm_array_index_map_x, raeql_1, scm_array_equal_p): Completed - support for byte vectors. - - * print.c (scm_iprin1): Limit number of vector elements printed - according to pstate->length. - -Thu Mar 13 00:12:35 1997 Gary Houston <ghouston@actrix.gen.nz> - - * backtrace.c (scm_display_error_message): don't segv if message - is an immediate. - - * error.h: prototype for scm_error_scm. - - * error.c (scm_error_scm): new procedure, reimplements scm-error - in C and uses scm_error. - -Tue Mar 11 03:51:00 1997 Gary Houston <ghouston@actrix.gen.nz> - - * read.c (scm_read_hash_extend): make scm_read_hash_procedures a - pointer to the Scheme variable read-hash-procedures and intern it - in scm_init_read. Modify scm_read_hash_extend and - scm_get_hash_procedure to use the pointer. - -Mon Mar 10 06:28:54 1997 Gary Houston <ghouston@actrix.gen.nz> - - * read.h (SCM_N_READ_OPTIONS): increase SCM_N_READ_OPTIONS to 4. - (SCM_KEYWORD_STYLE): defined. - - * read.c (scm_read_opts): add a keywords option. This isn't a - boolean option, in case someone wants to add support for DSSSL - keywords too. - Setup scm_keyword_prefix symbol. - (scm_lreadr): Only process keywords if SCM_KEYWORD_STYLE is - set to 'prefix. - I've left keyword support disabled by default, since it doesn't - seem to break the module system and it gives R4RS standard behaviour. - It can be reactivated with (read-set! keywords 'prefix). - -Sun Mar 9 14:14:39 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * arbiters.c (scm_make_arbiter): Bugfix: Must SCM_DEFER_INTS - before constructing arbiter. - - * eval.c (scm_m_define): Bugfix: Check that the object is a - closure before setting the procedure property! - - * ports.h: Removed prototype for scm_ungetc_char_ready_p. - - * ports.c: Removed `ungetc-char-ready?'. - -Sat Mar 8 00:27:05 1997 Gary Houston <ghouston@actrix.gen.nz> - - * read.c (scm_init_read): intitialise scm_read_hash_procedures - (idea from Mikael: make it a pair so scm_permanent object only - called once.) - (scm_read_hash_extend): don't call scm_permanent_object. - (ideas from Mikael): if chr is already in the list, replace its - procedure instead of appending it again. If proc is #f, remove - it from the list. - (scm_get_hash_procedure): take CDR of scm_read_hash_procedures. - - * strports.c (scm_read_0str, scm_eval_0str): update scm_read usage. - - * gdbint.c (gdb_read): update scm_lreadr usage. - - * load.h: update prototypes. - - * load.c (scm_primitive_load, scm_read_and_eval_x, - scm_primitive_load_path): remove case_insensitive_p, sharp arguments. - - * read.h: add prototype for scm_read_hash_extend. Change args for - other prototypes. - - * read.c (scm_read_hash_procedures): new variable. - (scm_read_hash_extend): new procedure. - (scm_get_hash_procedure): new procedure. - (scm_lreadr): use scm_get_hash_procedure instead of an argument - for extended # processing. - (scm_read, scm_lreadr, scm_lreadrecparen, scm_lreadparen, - scm_read_token): remove case_i, sharp arguments. Change callers. - -Fri Mar 7 08:58:21 1997 Gary Houston <ghouston@actrix.gen.nz> - - * read.h (SCM_N_READ_OPTIONS): increase to 3. - (SCM_CASE_INSENSITIVE_P): define. - - * read.c: add case-insensitive option to scm_read_opts. - (scm_read_token): use SCM_CASE_INSENSITIVE_P instead of an argument - to determine whether to convert symbol case. - (default_case_i): definition removed. - * read.c (scm_read_token): if case_i, downcase ic before doing - anything with it. - -Sat Mar 8 03:49:03 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * configure.in: Added configuration option `guile-debug'. - Configure with --enable-guile-debug if you want a bunch of extra - functions used for debugging when developing Guile. - - * acconfig.h: Added new preprocessor symbol GUILE_DEBUG. - - * procs.c (make-cclo): New undocumented debugging procedure: Make - compiled closure with internal procedure PROC and length LENGTH. - Only compiled if GUILE_DEBUG is defined. - - * debug.c: Only include `debug-hang' if GUILE_DEBUG is defined. - - * print.c: Put #ifdef GUILE_DEBUG around `current-pstate'. - - * ports.c: Changed preprocessor symbol DEBUG --> GUILE_DEBUG. - - * eval.c (SCM_CEVAL): Added code sections for handling of rpsubrs - with 3 or more args internally to the evaluator. - -Fri Mar 7 19:38:18 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * eval.c (SCM_CEVAL): Added code sections for handling of asubrs - with 3 or more args internally to the evaluator. This is mainly - because we don't want to pass entry and exit points of the - debug support twice, but it also seems to increase the speed of - the evaluator for such calls (e. g. (+ 1 2 3)). - - * backtrace.c (scm_display_application): New procedure: - display-application; Set fancy printing parameters individually - for different types of display (backtrace, error, application). - (These should of course be customizable!) - - * debug.h (SCM_RESET_DEBUG_MODE): Bugfix: The old code didn't - clear the CHECK-flags. - -Thu Mar 6 00:53:02 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * tags.h, eval.c (iqq): Fixes to comments about SCM_ECONSP. - -Wed Mar 5 23:31:21 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * tags.h (SCM_ECONSP, SCM_NECONSP): Bugfix: Discriminate structs - from pairs with a GLOC in the car. - - * symbols.c (msymbolize): Bugfix: Also initialize SCM_SYMBOL_HASH, - otherwise `symbol-hash' will behave badly. - (scm_symbol_hash): Bugfix: Must msymbolize if tc7_ssymbol, othwise - we get segmentation fault! - - * symbols.c: Added #include "weaks.h". New functions: - `builtin-bindings' and `builtin-weak-bindings'. (These will be - moved to an extraneous library when we split libguile.) - -Tue Mar 4 19:50:07 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * filesys.c (scm_stat): stat now takes fport arguments too as - documented in the manual. - -Mon Mar 3 07:11:33 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * debug.c (scm_single_step): Bugfix: Call continuation with - scm_call_continuation instead of throwing to it. - -Mon Mar 3 09:07:56 1997 Gary Houston <ghouston@actrix.gen.nz> - - * ports.c (scm_char_ready_p): bug fix: in SCM_PROC char-ready's - argument wasn't declared to be optional. - -Sun Mar 2 16:34:40 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * stime.c (scm_init_stime): Add feature "current-time". - -Sun Mar 2 06:37:31 1997 Gary Houston <ghouston@actrix.gen.nz> - - * throw.h: prototype for scm_exit_status. - * throw.c (scm_handle_by_message): if a 'quit is caught, use its - args to derive an exit status. Allows (quit) to work from a - script. - (scm_exit_status): new function. - #include "eq.h". - -Sat Mar 1 00:09:15 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * eval.c (scm_deval): Removed some old code. - (ENTER_APPLY): Bugfix: Reset apply-frame trap on trap as is done - with the others. - (ENTER_APPLY, scm_deval): Reset trace flag on apply-frame and - exit-frame traps. - - * symbols.c (msymbolize): Bugfix: Must initialize property list to - SCM_EOL. - - * procs.c: Introduce the existent C function scm_thunk_p at the - Scheme level as well. - -Wed Feb 26 12:53:58 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * symbols.c, symbols.h (scm_symbol_value0): New function. Can be - used from C to easily lookup the value of a symbol in the current - module. - -Tue Feb 25 00:14:10 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * unif.c (scm_init_unif): Added #include "unif.x". (There are two - scm_init_unif in this file. This will also fix a previous problem - with guile-snarf.) - - * configure.in: Added AM_MAINTAINER_MODE - -Fri Feb 21 23:07:26 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * gdb_interface.h (GDB_INTERFACE): Added some (void *) casts to - avoid warnings. - -Fri Feb 21 18:00:38 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * Makefile.am (EXTRA_libguile_la_SOURCES): New variable to hold - source files that are not always included in libguile but should - have their dependencies calculated by automake. This variable is - recognized by automake, no further magic is needed. - (libguile_la_DEPENDENCIES): Changed to @LIBLOBJS@. Libtool wants - to deal exclusively with *.lo files, as it seems. The *.o files - are built automatically when the corresponding *.lo file gets - built. - -Wed Feb 19 14:04:23 1997 Jim Blandy <jimb@floss.cyclic.com> - - * list.h (scm_list_cdr_ref): Delete prototype; function no longer - exists. - -Thu Feb 13 21:44:07 1997 Gary Houston <ghouston@actrix.gen.nz> - - * unif.c (scm_array_set_x): minor change to argument error checking. - -Tue Feb 11 18:19:47 1997 Jim Blandy <jimb@floss.cyclic.com> - - * Makefile.am (libguile_la_SOURCES): Remove backtrace.c, debug.c, - inet_aton.c, srcprop.c, stacks.c, and strerror.c from this list. - They should only be included in the library at configure.in's - discretion. - (libguile_la_LDADD): Include the appropriate .lo files here. - (libguile_la_DEPENDENCIES): List the corresponding .o files here, - so we know when to build them (and their .lo bretheren). - * configure.in (LIBLOBJS): New substituted variable. We let - configure decide which .o files to include in LIBOBJS, and then - put the corresponding list of .lo files in LIBLOBJS. The latter - is what we pass to libtool. - * Makefile.in, configure: regenerated. - -Mon Feb 10 00:08:08 1997 Mikael Djurfeldt <mdj@kenneth> - - * symbols.c (scm_sysintern0): New function. Contains the core of - old scm_sysintern but doesn't take a second value argument. - (scm_sysintern): Now uses scm_sysintern0. - (scm_sysintern_no_module_lookup): Renamed to - scm_sysintern0_no_module_lookup and doesn't take a second value - argument any longer. - - * symbols.h (scm_sysintern0: Added declaration. - - * options.c (scm_init_opts): Use scm_sysintern0 instead of - scm_sysintern when interning option keys. Otherwise we risk - destroying the values of already interned variables. - - * symbols.c (scm_sym2vcell): Bugfix: Treat definedp as - scheme-level boolean (use SCM_NFALSEP). - - * backtrace.c (scm_init_backtrace): Make Scheme-level variable - `the-last-stack'. - (scm_backtrace): New function. (C version of old function from - boot-9.scm) Motivation: Make it possible to display backtraces - without depending on boot-9.scm. (I'm uncertain if this - motivation is good enough...) - - * root.h (scm_root_state): Add member the_last_stack_var. - (scm_the_stack_var): Defined to scm_root->the_last_stack_var. - - * root.c (mark_root): Mark scm_the_last_stack_var. - - * init.c (scm_start_stack): Initialize scm_the_last_stack_var to - SCM_BOOL_F. - -Sun Feb 9 18:04:41 1997 Mikael Djurfeldt <mdj@kenneth> - - * throw.c (mark_lazy_catch, free_lazy_catch): Removed. - 1. mark_lazy_catch didn't mark the smob. - 2. Both functions above have standard variants: - (lazy_catch_funs): Changed mark_lazy_catch --> scm_mark0, - free_lazy_catch --> scm_free0. - -Fri Feb 7 17:30:26 1997 Jim Blandy <jimb@floss.cyclic.com> - - * throw.c (scm_internal_lazy_catch): New function. - (scm_lazy_catch): Rewritten to use it. - (scm_ithrow): Handle the new lazy catch representation. - Use SCM_LAZY_CATCH_P, instead of assuming that any wind list entry - that doesn't have a jmpbuf is a lazy catch clause. - (tc16_lazy_catch, struct lazy_catch, mark_lazy_catch, - free_lazy_catch, print_lazy_catch, lazy_catch_funs, - make_lazy_catch, SCM_LAZY_CATCH_P): Support funs, including a new - smob. - (scm_init_throw): Register the new lazy-catch smob type. - * throw.h (scm_internal_lazy_catch): decl for new function. - - * throw.c (scm_internal_catch): Doc fixes. - - * alloca.c: New file, needed to support the AC_FUNC_ALLOCA call in - configure.in. Including this might cause problems if applications - that link against libguile include their own copies of alloca, but - if they're using autoconf, they should be adding libguile to LIBS - before calling AC_FUNC_ALLOCA anyway, in which case they'll find - the copy in libguile, and things will be okay. (I think.) - -Thu Feb 6 03:10:32 1997 Gary Houston <ghouston@actrix.gen.nz> - - * strop.c (scm_string_upcase_x, scm_string_downcase_x): moved from - unif.c. - strop.h: move prototypes too. - -Wed Feb 5 08:33:00 1997 Gary Houston <ghouston@actrix.gen.nz> - - * posix.c (scm_init_posix): don't intern EINTR since it's now done - elsewhere. - - * ioext.c (scm_init_ioext): don't intern stat macros, S_IRUSR - etc. I deleted them from filesys.c long ago, but didn't - notice they were here too (although ineffective since - sys/stat.h wasn't included). - -Tue Feb 4 18:17:50 1997 Tom Tromey <tromey@cygnus.com> - - * eval.c: Don't define alloca in GCC case. gcc will automatically - use __builtin_alloca if appropriate. - -Tue Feb 4 16:57:40 1997 Jim Blandy <jimb@floss.cyclic.com> - - * eval.c (safe_setjmp): New function: trivial wrapper for setjmp. - (SCM_CEVAL, SCM_APPLY): Call it, instead of setjmp, to make sure - that values of automatic variables are preserved. See comments - for safe_setjmp for details. - - Change from Thomas Morgan: - * variable.c: Include eq.h. - (var_equal): New function. - (variable_smob): Use var_equal as the discriminator for variables. - - * throw.c (s_throw): Remove extraneous declaration. - - * configure.in: Call AC_FUNC_ALLOCA, to see if we have alloca. - * eval.c: Add necessary CPP cruft to support that. - * configure, Makefile.in, scmconfig.h.in: regenerated. - - Change from Thomas Morgan: - * procprop.c (scm_procedure_properties): Convert the Scheme - boolean returned by scm_procedure_p into a C boolean before using - it as a condition for SCM_ASSERT. - (scm_procedure_property): Likewise. - - * simpos.c (SYSTNAME): Accept both 'unix' and '__unix' as - indications of Unixness. - * stime.c: Same. - -Tue Feb 4 05:07:35 1997 Gary Houston <ghouston@actrix.gen.nz> - - * net_db.c (scm_lnaof): change scheme name from lnaof to inet-lnaof. - -Mon Feb 3 06:12:37 1997 Gary Houston <ghouston@actrix.gen.nz> - - * read.c (scm_lreadr): use scm_misc_error to improve one of the - "unknown # object" error messages. - - * strop.c (scm_i_index, scm_i_rindex): combine into one procedure - (scm_i_index) and declare it static. Add a 'direction' argument - to indicate what way the search should go. - (scm_i_index): throw out-of-range error instead of wrong-type-arg - if indices are bad. - (scm_string_index, scm_string_rindex): adjust usage of scm_i_index. - strop.h: remove scm_i_index, scm_i_rindex prototypes. - -Fri Jan 31 04:33:11 1997 Gary Houston <ghouston@actrix.gen.nz> - - * ioext.c, ioext.h: remove obsolete _sys_ from 9 procedure names. - - * posix.c (scm_fork): Scheme name changed from fork to primitive-fork, - to avoid clash with various scsh forks. - -Thu Jan 30 20:14:09 1997 Mikael Djurfeldt <mdj@syk-0606.pdc.kth.se> - - The following two changes (ramap.c, throw.c) are motivated by the - apparent unportability of forward declarations of static arrays of - the form `static foo bar[];'. - - * ramap.c (scm_array_fill_x): Moved above scm_array_fill_int. - (ra_rpsubrs, ra_asubrs): Moved to the top of array code. - - * throw.c (scm_throw): Moved above scm_ithrow. - - * options.h: Removed the extern declarations of scm_yes_sym and - scm_no_sym since these are static. - -Fri Jan 24 06:16:32 1997 Gary Houston <ghouston@actrix.gen.nz> - - * ports.c: add SCM_PROC declarations for pt-size and pt-member. - - * Makefile.am: remove AWK=@AWK@. - Add a rule for generating errnos.list. - (CLEANFILES): put errnos.list here instead of in DISTCLEANFILES. - - * configure.in: add AC_SUBST(AWK) and AC_SUBST(ERRNO_EXTRACT). - don't extract errnos, just set a variable (avoids the - need to recompile error.c just because configure is run.) - - * unif.h: update prototypes. - * unif.c (scm_uniform_array_read,write): change the offset and - length arguments to start and end, for consistency. - - * __scm.h: uncomment SCM_ARG6 and SCM_ARG7, I needed SCM_ARG6. - - * ioext.h: update prototypes. - * ioext.c (scm_read_delimited_x): replaces scm_read_line and - scm_read_line_x, it's a more general procedure using an - interface from scsh. read-line and read-line! are now defined - in boot-9.scm. - Note that the new read-line trims the terminator - by default, previously it was appended to the returned string. An - optional argument specifies how to process the terminator (scsh - compatible). For the old behaviour: (read-line port 'concat). - scm_read_line, scm_read_line_x: deleted. (read-line port 'split) - returns a pair, but is converted to multiple values if the scsh - module is loaded. - - socket.h: update prototypes. - * socket.c (scm_recvfrom): for consistency with other procedures, - take start and end as separate optional arguments. - (scm_recv, scm_recvfrom): don't allow the second argument - to be a size, only a buffer. Change the scheme names to - recv! and recvfrom!. Don't return the buffer. - - * ioext.h, posix.h: move prototypes too. - * ioext.c, posix.c (scm_read_line, scm_read_line_x, scm_write_line: - moved back from posix.c to ioext.c. Also move #includes of "genio.h" - "read.h" and "unif.h". - * ioext.c: include "chars.h" - -Mon Jan 20 19:54:49 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * dynl.c: The dynamic linking and module registration functions - are now defined even when dynamic linking is not available for the - host system. Some of their functionality can be done without - dynamic linking; when it's really needed, they throw errors. - -Thu Jan 16 16:39:29 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * configure.in: Only define DYNAMIC_LINKING when one of the system - dependent functions is detected. - * dynl.c (scm_dynamic_func): New function to get the address of a - function in a dynamic object. - (scm_dynamic_call, scm_dynamic_args_call): Accept the values - produced by scm_dynamic_func as the thing to call. - -Sun Jan 12 21:09:42 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * dynl.c, dynl-dl.c, dynl-dld.c, dynl-shl.c: Restructured. - (scm_register_module_xxx, scm_registered_modules, - scm_clear_registered_modules): New functions. - -Sat Jan 11 21:37:15 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * symbols.c (scm_sysintern): Renamed to - scm_sysintern_no_module_lookup. - (scm_sysintern): New function to take the place of the old - scm_sysintern. It uses the current toplevel lookup closure to give - the symbol its value. This is a temporary hack to put packages - like gtcltk into their own module. - (scm_can_use_top_level_lookup_closure_var): New variable to tell - us whether `scm_top_level_lookup_closure_var' has been initialized - and is usable. - * eval.c (scm_init_eval): Set it. - -Sat Jan 18 00:03:31 1997 Gary Houston <ghouston@actrix.gen.nz> - - * fports.c (scm_open_file): pass errno to scm_syserror_msg. - * filesys.h: update prototypes. Remove macros: SCM_FD_P, SCM_FD_FLAGS, - SCM_FD. - * filesys.c (scm_sys_stat, scm_sys_lstat): pass errno to - scm_syserror_msg. - (scm_sys_read_fd, scm_sys_write_fd, scm_sys_close, scm_sys_lseek, - scm_sys_dup): deleted: FD capability will be added to other - procedures. - Remove support for the FD object type: scm_tc16_fd, scm_fd_print, - scm_fd_free, fd_smob, scm_intern_fd. - (scm_open): renamed from scm_sys_open. Return a port instead of - an FD object. Make the mode argument optional. - (scm_sys_create): deleted, it's just a special case of open. - (scm_init_filesys): move interning of constants O_CREAT etc., - here (were previously using SCM_CONST_LONG macro). - Add missing constants: O_RDONLY, O_WRONLY, O_RDWR, O_CREAT. - don't newsmob fd. - (numerous _sys_ procedures): remove gratuitous _sys_ from names. - include "fports.h" and <stdio.h> - (scm_stat, scm_select): don't support FD objects. - - * error.h: adjust scm_syserror_msg prototype. - * error.c (scm_syserror_msg): take an extra argument for errno. - Using the global value didn't always work, since it could be - reset by procedure calls in the message or args arguments. - - * fports.c (scm_setbuf0): call setbuf even if FIONREAD is not defined. - I don't understand why the check was there (and what about the - ultrix check?) - - * strop.c (scm_string_copy): allow shared substrings to be copied. - - * unif.h: corresponding change to prototypes. - * unif.c (scm_uniform_array_read_x, scm_uniform_array_write_x): - recognize two new optional arguments: offset and length. Allow - the port argument to be an integer (file descriptor, for scsh). - Include <unistd.h> for "read" prototype. - -Tue Jan 14 02:42:02 1997 Gary Houston <ghouston@actrix.gen.nz> - - * socket.c: don't include filesys.h. - -Mon Jan 13 03:47:04 1997 Gary Houston <ghouston@actrix.gen.nz> - - * Makefile.am: add AWK=@AWK@ (?) - - * Makefile.am (EXTRA_DIST): add errnos_cnvt.awk, errnos.default, - errnos_get.c. - Add a rule to generate errnos.c from errnos. - * error.c (scm_init_error): include errnos.c. - * errnos_cnvt.awk: new file, converts the list of errno codes to - C expressions. - * errnos_get.c: new file. - * errnos.default: new file, contains errnos to try if they can't - be extracted from errno.h. - * configure.in: if using GCC, try and extract errno codes from - errno.h. - Added AC_PROG_AWK. - -Sat Jan 11 14:47:00 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * configure.in: Replaced AC_PROG_RANLIB with AM_PROG_LIBTOOL. - * Makefile.am: Made libguile into a libtool library. - * PLUGIN/guile.config: Removed "-L ../libguile" from xtra_cflags. - Set libtool_libs to indicate that libguile is a libtool library. - See guile/ChangeLog for details. - * .cvsignore: ignore "*.lo", the libtool library objects. - -Wed Jan 8 06:54:54 1997 Gary Houston <ghouston@actrix.gen.nz> - - * net_db.c (scm_getserv): add missing SCM_ALLOW_INTS. - use htons in getservbyport argument. - -Tue Jan 7 18:11:24 1997 Jim Blandy <jimb@floss.cyclic.com> - - * ports.h (SCM_PTOBNUM): Removed extraneous semicolon. - * smob.h: (SCM_PTOBNUM): Removed entirely; this definition is a - duplicate. - - * objprop.c (scm_object_property): No need to take the CDR of the - value returned by scm_object_properties, since Aug 20 change. - - * configure.in: When checking for struct linger, #include - <sys/types.h> as well as <sys/socket.h>. I've never known - <sys/types.h> to cause any portability problems, and Solaris's - <sys/socket.h> needs it. - * configure: Rebuilt. - - I think the Sun compiler has chosen a perverse way to interpret - ANSI declarations combined with K&R definitions. We'll - appease it a little bit. But when it invades France, we fight. - * print.c (scm_iprlist): Change 'tlr' argument to an int. - * print.h (scm_iprlist): Here too. - * numbers.c (scm_divbigdig): Change definition to match - declaration in numbers.h. - * unif.c (scm_makflo): Change definition to match declaration in - unif.h. - - * init.c (scm_boot_guile): Don't return the value of - scm_boot_guile_1. This function doesn't return a value; - scm_boot_guile_1 doesn't return a value (or return at all). - - * eval.c (unmemocopy): Add a semicolon to appease the Sun - compiler. - - * simpos.c (SYSTNAME): Add case for AIX; otherwise it won't - compile. I have a feeling this function is a bad idea anyway --- - one should always test for features, not systems. - - * smob.h (SCM_SMOBNUM, SCM_PTOBNUM): Remove extraneous - semicolons. Only pure luck kept this from being noticed earlier. - -Tue Jan 7 15:04:06 1997 Mikael Djurfeldt <mdj@kenneth> - - * socket.c (scm_recvfrom): Added missing semicolon. - -Mon Jan 6 20:39:08 1997 Gary Houston <ghouston@actrix.gen.nz> - - * socket.c (scm_recvfrom): allow buff_or_size to be a list containing - the buffer and start and end positions for scsh networking - implementation. - -Sun Jan 5 13:53:53 1997 Jim Blandy <jimb@floss.cyclic.com> - - * configure.in: Revert previous change to this file; the problem - is due to transient automake weirdness. - * configure: Rebuilt. - - * Makefile.am (EXTRA_DIST): Distribute PLUGIN/guile.libs.in, not - PLUGIN/guile.libs. configure generates the latter from the former. - * Makefile.in: Rebuilt. - - * configure.in: Call AM_PROG_INSTALL; the automake manual says we - need this if we install scripts, like guile-snarf. - * configure: Rebuilt. - -Thu Jan 2 01:56:38 1997 Marius Vollmer <mvo@zagadka.ping.de> - - * Makefile.am (EXTRA_DIST): Added DYNAMIC-LINKING - -Sat Dec 28 19:14:01 1996 Gary Houston <ghouston@actrix.gen.nz> - - * socket.c (scm_addr_vector): fix faulty scm_listify. - -Sat Dec 28 13:55:58 1996 Marius Vollmer <mvo@zagadka.ping.de> - - * read.c (scm_lreadr): Encountering EOF after skipping a SCSH - style block comment is no longer considered an error. - -Fri Dec 27 13:44:23 1996 Marius Vollmer <mvo@zagadka.ping.de> - - * PLUGIN/guile.libs.in: New file. - * PLUGIN/guile.libs: Removed from repository. - * configure.in: Create PLUGIN/guile.libs from - PLUGIN/guile.libs.in. This is for including additonal libraries - needed for dynamic linking. - * Makefile.am (EXTRA_DIST): Distribute PLUGIN/guile.libs.in - instead of PLUGIN/guile.libs. - - * Makefile.am: Added explicit dependency "dynl.o: dynl.x". - -Sun Dec 22 23:06:14 1996 Jim Blandy <jimb@floss.cyclic.com> - - * list.c (scm_delq_x, scm_delv_x, scm_delete_x): Delete all - occurrences of the given element from the list, not just the - first. This is how the Emacs Lisp functions behave, how the - analogous Common Lisp functions behave, and (I believe) how the - older Maclisp functions worked. I realize that this change may - break code, but it seemed better to break it before the Guile - release than after. - - * gc.c (scm_protect_object, scm_unprotect_object): New functions. - Their prototypes were already present in gc.h, but they weren't - implemented. - (scm_init_storage): Initialize scm_protects. - * root.c (scm_protects): New element of scm_sys_protects. - - * net_db.h (scm_init_net_db): Fix spelling from scm_init_netdb. - -Sat Dec 21 15:38:32 1996 Jim Blandy <jimb@floss.cyclic.com> - - * libguile.h: Added #include "libguile/net_db.h". - - * libguile.h: Don't #include "libguile/libpath.h", contrary to Oct - 30 change. That file is only meant for communication between the - configuration process and load.c. If code linked against libguile - wants to get at the paths mentioned in libpath.h, it can call - functions declared in load.h. - -Sat Dec 21 14:50:42 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * libguile.h: Removed #include "libguile/fdsocket.h" - - * net_db.c: Added #include <sys/socket.h>. - -Sat Dec 21 00:33:03 1996 Gary Houston <ghouston@actrix.gen.nz> - - * filesys.c (scm_input_waiting_p): use select in preference to - FIONREAD, since the latter doesn't detect EOF. - Throw error if neither select nor FIONREAD available. - - * socket.c (scm_connect): take a port, not a fd object. - (scm_fill_sockaddr): throw an error if fam is not recognised. - (scm_bind): use scm_fill_sockaddr. - (scm_listen): take a port, not a fd object. - (scm_accept): take and return a port. return #f in the car if - address can't be got - (scm_sock_fd_to_port): new procedure. - (scm_socket): use scm_sock_fd_to_port. - (scm_addr_vector): throw error if unrecognised address type. - take an extra argument with the calling procedure name. - (scm_getsockname): take a port. return #f if address can't be got. - (scm_getpeername): take a port. return #f if address can't be got. - (scm_recvfrom): take a port. return #f for address component if can't - be got. - (scm_sendto, scm_socketpair, scm_getsockopt scm_shutdown, - scm_setsockopt, scm_recv, scm_send): take a port not a fd object. - -Fri Dec 20 23:06:53 1996 Jim Blandy <jimb@floss.cyclic.com> - - * throw.c (scm_internal_catch): Make body funcs and handler funcs - use separate data pointers, to allow them to be designed - independently and reused. - (scm_body_thunk, scm_handle_by_proc, scm_handle_by_message): - Renamed from catch_body, catch_handler, and uncaught_throw; made - generically useful. - (struct scm_catch_body_data): Renamed from catch_body_data; moved - to throw.h. - (scm_catch): Use the above. - (scm_throw): Don't bother printing a message for an uncaught - throw; we establish a default handler in init. - * throw.h (scm_internal_catch): Prototype updated. - (scm_body_thunk, scm_handle_by_proc, scm_handle_by_message): New - decls. - (struct scm_body_thunk_data): New structure, used as data - argument to scm_body_thunk. - * init.c (struct main_func_closure): New structure, packaging up - the data to pass to the user's main function. - (scm_boot_guile): Create one. Pass it to scm_boot_guile_1. - (scm_boot_guile_1): Pass it through to invoke_main_func. Use - scm_internal_catch to establish a catch-all handler, using - scm_handle_by_message. This replaces the special-case code in - scm_throw. - (invoke_main_func): Body function for scm_internal_catch; invoke - the user's main function, using the main_func_closure pointer to - decide what to pass it. - * root.c (struct cwdr_body_data): Remove handler_proc member. - (cwdr): Use scm_handle_by_proc instead of cwdr_handler. - (cwdr_handler): Removed. - -Thu Dec 19 00:00:26 1996 Gary Houston <ghouston@actrix.gen.nz> - - * socket.h (SCM_P): update bind prototype. - * socket.c (scm_init_socket): intern PF_UNSPEC, PF_UNIX, PF_INET. - include "feature.h". - (scm_socket): return a port, not a file descriptor object. - include "fports.h" and <unistd.h> - (scm_bind): take a port, not a file descriptor object. - take an extra argument for address args. - - * net_db.c (scm_init_net_db): intern INADDR_ANY, INADDR_BROADCAST, - INADDR_NONE, INADDR_LOOPBACK. - -Tue Dec 17 22:58:26 1996 Gary Houston <ghouston@actrix.gen.nz> - - * init.c: include net_db.h and not fdsocket.h. - (scm_boot_guile_1): call scm_init_net_db and not scm_init_fdsocket. - - * Makefile.am: corresponding changes. - * socket.h: renamed from fdsocket.h, fix names. - * net_db.h: renamed from socket.h, fix names. - * socket.c: renamed from fdsocket.c. - remove _sys from procedure names. - (scm_init_socket): rename from scm_init_fdsocket. include socket.x. - add "socket" to features list. - * net_db.c: renamed from socket.c. - remove _sys from procedure names. - (scm_init_net_db): rename from scm_init_socket. include net_db.x. - add "net-db" to features list. - include "net_db.h". don't include <sys/socket.h> or - <sys/un.h>. - -Thu Dec 19 14:03:24 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * tags.h (scm_tags): Removed comma at end of last enumerator. - -Thu Dec 19 02:54:59 1996 Jim Blandy <jimb@floss.cyclic.com> - - Don't use GCC extensions to allocate space for debugging frames. - (Here he goes again! Why do we put up with this?!) - * debug.h (scm_debug_frame): Make the 'vect' member a pointer to - an scm_debug_info structure, not an in-line array of them. Add - 'info' member, to say how many vect elements we've used, for eval - frames. - * eval.c (SCM_CEVAL): Use alloca to allocate space for vect. Use - a new variable debug_info_end to mark the end of vect, instead of - the address of the 'info' pointer itself. - [DEVAL] (ENTER_APPLY, SCM_CEVAL, SCM_APPLY): Remove casts of - &debug to scm_debug_frame *; debug is a real scm_debug_frame now. - (SCM_APPLY): Explicitly allocate space for debug.vect. - * debug.c (scm_m_start_stack): Same, for vframe.vect. - * stacks.c: Adjusted for new debug frame structure. - (RELOC_INFO, RELOC_FRAME): New macros. - (stack_depth, read_frames): Use them, and new scm_debug_frame - element 'info', instead of magically knowing that eval frames have - an info pointer sitting after vect. - (scm_make_stack, scm_stack_id, scm_last_stack_frame): Use - RELOC_FRAME. - (scm_init_stacks): Formatting tweaks. - -Wed Dec 18 14:57:57 1996 Jim Blandy <jimb@floss.cyclic.com> - - Give GCC more control flow information, so it can be sure that - variables aren't used uninitialized. - * error.h (scm_error, scm_syserror, scm_syserror_msg, - scm_sysmissing, scm_num_overflow, scm_out_of_range, - scm_wrong_num_args, scm_wrong_type_arg, scm_memory_error, - scm_misc_error): Tell GCC that these functions never return. - * struct.c (scm_struct_ref, scm_struct_set_x): If we can't figure - out the field type, call abort if SCM_ASSERT returns, to placate - the optimizer. - * stacks.c (scm_make_stack, scm_last_stack_frame): abort if - scm_wta ever returns. We can't handle this case anyway, and this - gives the optimizer more information. - * unif.c (scm_uniform_vector_ref, scm_array_set_x): Abort if - scm_wta ever returns. - - In some cases, the code is fine, but GCC isn't smart enough to - figure that out; this usually happens when one variable is only - initialized and used when a particular condition holds true, and - we know that condition will never change within a given invocation - of the function. In this case, we simply initialize the variables - to placate the compiler, hopefully to a value which will cause a - crash if it is ever actually used. - * print.c (scm_iprin1): Initialize mw_pos. - * read.c (scm_lreadrecparen): Initialize tl2, ans2. - * throw.c (scm_ithrow): Initialize dynpair. - * unif.c (scm_uniform_vector_ref): Initialize cra. - * struct.c (init_struct): Initialize prot. - * mbstrings.c (scm_print_mb_symbol): Initialize mw_pos and inc. - - * strports.c (scm_eval_0str): Don't return uninitialized garbage - if EXPR contains no expressions. - -Wed Dec 18 11:43:22 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * eval.c, debug.h: Revert changes of Dec 16 and Nov 21. They - cause an infinite loop (???). So much for the algebraic - equivalency of variable-sized arrays and alloca... - -Tue Dec 17 20:29:03 1996 Marius Vollmer <mvo@zagadka.ping.de> - - * backtrace.c (scm_display_error): Bugfix: scm_procedure_p returns - a SCM boolean, not a C boolean. - -Sat Dec 14 23:21:45 1996 Marius Vollmer <mvo@zagadka.ping.de> - - * gc.c (SCM_MTRIGGER_HYSTERESIS): New memory management parameter. - (scm_must_malloc, scm_must_realloc): Added a hysteresis to the - rules for raising scm_mtrigger. Previously, unfortunate but not - unlikely circumstances could result in almost constant invokation - of the gc. Now, this situations should be less likely, but they - are not prevented completely. - -Tue Dec 17 16:19:07 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * numbers.c (scm_fuck): Procedure removed; looks like old test - code. - * numbers.h: Prototype removed. - -Mon Dec 16 18:20:32 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * debug.h (scm_debug_frame): Change `vect' member from an in-line - array to a pointer, to match my Nov 21 change in eval.c. - -Fri Dec 13 16:12:14 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * libguile.h: Added #include "libguile/backtrace.h", #include - "libguile/stacks.h". - - * strings.c (scm_string scm_make_string scm_string_ref - scm_string_set_x scm_string_equal_p scm_string_append): - Bugfix according to scm patch from Aubrey Jaffer: - Corrected long-standing - (not (eqv? (integer->char 128) - (string-ref (make-string 1 (integer->char 128)) 0))) - bug found by John Kozak <jk@noontide.demon.co.uk>. - - * strports.c, strports.h: Make scm_eval_0str return the value of - the last expression evaluated (previously, it returned void). - - * strports.c, strports.h: New function: scm_read_0str. Does what - it sounds like. - -Tue Dec 10 23:38:43 1996 Gary Houston <ghouston@actrix.gen.nz> - - * simpos.c (scm_getenv): return #f if string can't be found in the - environment instead of throwing an exception, for compatibility - with numerous other systems. - -Mon Dec 9 23:23:35 1996 Tom Tromey <tromey@cygnus.com> - - * Makefile.am (.c.x): Use guile-snarf. - * configure.in (AC_OUTPUT): Generate guile-snarf; make it - executable. - * guile-snarf.in: New file, resurrected from old guile-snarf.sh. - -Mon Dec 9 18:36:50 1996 Jim Blandy <jimb@duality.gnu.ai.mit.edu> - - * backtrace.c (scm_display_error_message): Made non-static, and - renamed from display_error_message. - * backtrace.h (scm_display_error_message): Added extern decl. - * throw.c (uncaught_throw): Use it to display the error message. - -Mon Dec 9 10:10:38 1996 Tom Tromey <tromey@cygnus.com> - - * inet_aton.c: Use #if 0, not #ifdef 0. - -Mon Dec 9 06:36:48 1996 Gary Houston <ghouston@actrix.gen.nz> - - * ioext.c (scm_sys_ftell): use scm_long2num instead of SCM_MAKINUM - to convert the returned value. - (scm_sys_fseek): use scm_num2long instead of SCM_INUM to convert - the offset argument. - -Sun Dec 8 21:06:38 1996 Jim Blandy <jimb@duality.gnu.ai.mit.edu> - - Add new interface to catch/throw, usable from C as well as - Scheme. - * throw.h (scm_catch_body_t, scm_catch_handler_t): New types. - (scm_internal_catch): New function, replaces... - (scm_catch_apply): Deleted. - * throw.c (scm_catch_apply): Deleted; replaced with a more general - mechanism which is a bit more code, but can be used nicely from C - and implement the Scheme semantics as well. - (scm_internal_catch): This is the replacement; it's named after - the analogous function in Emacs. - (scm_catch): Reimplemented in terms of the above. - (struct catch_body_data, catch_body, catch_handler): New - functions, used by scm_catch. - * root.c (cwdr): Reimplemented in terms of scm_internal_catch. - (struct cwdr_body_data, cwdr_body, cwdr_handler): New functions; - support for new cwdr. - - * Makefile.am (libpath.h): Re-incorporate Mikael's changes of Wed - Oct 30. - -Sun Dec 8 17:55:34 1996 Marius Vollmer <mvo@zagadka.ping.de> - - * acconfig.h: Added DYNAMIC_LINKING symbol. - * configure.in: Add option and checks for dynamic linking. - * dynl.c, dynl-dl.c, dynl-dld.c, dynl-shl.c, dynl-vms.c, - dynl.h: New files for dynamic linking support. - * Makefile.am (libguile_a_SOURCES): - Added "dynl.c". - (modinclude_HEADERS): Added "dynl.h". - (EXTRA_DIST): Added "dynl-dl.c", "dynl-dld.c", "dynl-shl.c" and - "dynl-vms.c". - * init.c (scm_boot_guile_1): Call - scm_init_dynamic_linking to initialize dynamic linking support. - -Thu Dec 5 22:47:53 1996 Marius Vollmer <mvo@zagadka.ping.de> - - * init.c (scm_boot_guile_1): Moved `live' variable to the toplevel - (as we Schemers say). It needs to be global, so that I can tweak - it for the proper operation of unexec. - (scm_boot_guile_1_live): New variable, see above. - -Sun Dec 1 00:00:49 1996 Tom Tromey <tromey@cygnus.com> - - * guile-snarf.sh: Removed. - * PLUGIN/guile.libs: Added dependency for -lm. - * acinclude.m4: Renamed from aclocal.m4. - * PLUGIN/greet: Removed. - * Makefile.am, aclocal.m4: New files. - * configure.in: Updated for Automake. - -Thu Nov 28 00:23:55 1996 Marius Vollmer <mvo@zagadka.ping.de> - - * eval.c (scm_definedp): Use top_level_lookup_closure_var - and not top_level_lookup_thunk_var. - -Wed Nov 27 22:04:19 1996 Jim Blandy <jimb@baalperazim.frob.com> - - * Makefile.in (ancillary): List ChangeLog-scm, not ChangeLog.scm. - -Wed Nov 27 14:14:56 1996 Marius Vollmer <mvo@zagadka.ping.de> - - * eval.c (scm_definedp): Incompatibly changed to be a builtin - Scheme function, instead of syntax. Single argument is now a - symbol. - -Thu Nov 21 20:26:36 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * ramap.c (scm_ra_sum, scm_ra_difference, scm_ra_product, - scm_ra_divide): Properly terminate statements passed as arguments - to IVDEP macros. (Thanks to Bernard Urban.) - - * eval.c (SCM_CEVAL): Use alloca, not GCC's extensions for arrays - with non-constant sizes. (Thanks to Bernard Urban.) - -Thu Nov 21 11:17:42 1996 Jim Blandy <jimb@floss.cyclic.com> - - It's an "eval closure", not an "eval thunk." A thunk is a - function of no arguments. - * root.h (struct scm_root_state): Renamed - top_level_lookup_closure_var from top_level_lookup_thunk_var. - (scm_top_level_lookup_closure_var): Renamed from - scm_top_level_lookup_thunk_var. - * root.c (mark_root): Uses changed. - * gdbint.c (gdb_eval, gdb_binding): Uses changed. - * init.c (scm_start_stack): Uses changed. - * eval.c (scm_eval, scm_eval_x, scm_init_eval): Rename uses. - Change scheme-visible name to *top-level-lookup-closure* from - *top-level-lookup-thunk*. - -Tue Nov 19 22:43:31 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * gc.c (scm_igc, scm_gc_mark): Round up the size of the stack we - pass to scm_mark_locations. (Thanks to Aubrey Jaffer.) - -Sun Nov 10 13:35:05 1996 Jim Blandy <jimb@floss.cyclic.com> - - * gc.c (struct scm_heap_seg_data): Doc fixes. - - * gc.c (scm_gc_sweep): Empty all segments' freelists before - sweeping. Then, prepend each segment's free cells to its - freelist, rather than wiping out the old value. (Thanks to Marius - Vollmer.) - - * gc.c (which_seg, scm_map_free_list, scm_newcell_count, - scm_check_freelist, scm_debug_newcell): New functions and - variables, for debugging freelist problems. - * pairs.h (SCM_NEWCELL): New debugging version added. - * gc.h (scm_debug_newcell): Added extern declaration, used by - debugging version of SCM_NEWCELL. - -Sat Nov 9 19:02:46 1996 Jim Blandy <jimb@floss.cyclic.com> - - On some systems <libc.h> conflicts with <unistd.h>, and should not - be #included at all. - * aclocal.m4 (GUILE_HEADER_LIBC_WITH_UNISTD): New autoconf macro. - * acconfig.h (LIBC_H_WITH_UNISTD_H): New CPP symbol. - * configure.in: Call it. - * posix.c, filesys.c: Use its results to decide whether or not to - #include <libc.h>. - * configure, scmconfig.h.in: Rebuilt with autoconf and - autoheader. - -Wed Nov 6 16:19:50 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * fports.c (scm_stdio_to_port, scm_open_file): Set the port's - pointer to the stdio stream before calling scm_setbuf0, so the - latter will be able to retrieve it. I'm surprised this didn't - segfault earlier. (Thanks to Christopher Lee.) - -Wed Nov 6 16:01:20 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * throw.c (scm_lazy_catch, scm_ithrow): Completed implementation - of `lazy-catch'. - -Sat Nov 2 21:01:48 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * stacks.c, stacks.h (scm_make_stack): Now takes arbitrary - number of stack narrowing specifier pairs. The first specifier in - a pair controls inner border, the second the outer border. A - number means cut that number of frames, a procedure object means - cut until that object is found in operator position in a frame. - - * root.c (cwdr): Bugfix. - - * read.c: Recording of positions disabled by default. - - * procs.c (scm_closure_p): New function. - - * posix.c (scm_tmpnam): New function. - - * load.c: Added #include "throw.h". - (scm_sys_search_load_path): Bugfix: Don't add an extra '/' if path - ends with '/'. - - * load.c, load.h (scm_read_and_eval_x): New function. - - * eval.c: Renamed debug option "deval" to "debug". - - (scm_eval_x): `eval!' is no longer accessible from the scheme - level. Motivation: We can't allow operations which introduce - glocs into the scheme level. Guile's type system can't handle - these as data. Use `eval' or `read-and-eval!' as replacement. - - * debug.c (scm_m_start_stack): Bugfix: Use SCM_ECONSP instead of - SCM_CONSP since this is a macro!; Set vframe.prev to - scm_last_debug_frame instead of 0. In this way we can look - "above" the virtual start stack frame if we wish. - (scm_debug_hang): New function: Useful for debugging Guile in - certain tricky situations. Will probably be removed later... - - * debug.h: Changed semantics of debug option "backtrace". This - option now only indicates whether we want automatic backtrace at - an error. - -Wed Oct 30 00:31:55 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * ports.c: #include "filesys.h" - (scm_char_ready_p): input_waiting renamed and moved to filesys.c. - - * filesys.c, filesys.h (scm_input_waiting_p): Moved from ports.c. - Motivation: This is system specific code which is related to file - I/O. It also may use select. Added code by Gary Houston to - detect presence of character in stdio buffers. - - * libguile.h: #include "libguile/libpath.h" - - * Makefile.in (libpath.h): Renamed definition of: LIBRARY_PATH --> - SCM_LIBRARY_DIR; Added definitions of: SCM_PKGDATA_DIR, - SCM_SITE_DIR; Install libpath.h among the other include files. - - * load.c, load.h (scm_sys_package_data_dir): New function. - -Mon Oct 28 11:43:41 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * stacks.h: Bugfix: Don't use tail-array length field as stack - length field! This screwed GC. - -Tue Oct 22 01:01:00 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * _scm.h: Added #ifndef around definition of macros min and max. - - * __scm.h: Added hooks for threads to plugin to in ints protection - macros: SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER, - SCM_THREAD_ALLOW_1, SCM_THREAD_ALLOW_2. Motivation: We don't want - the main code in these macros duplicated and spread over multiple - files. Renamed SCM_THREADS_SWITCHING_CODE -> - SCM_THREAD_SWITCHING_CODE. - -Tue Oct 29 14:55:40 1996 Marius Vollmer <mvo@zagadka.ping.de> - - * snarf.h: New file. - * guile-snarf.sh: New file. - * Makefile.in (inner_h_files): Added snarf.h - (ancillary, install, uninstall, distclean): Added actions for - guile-snarf. - (.c.x): Use guile-snarf. - (guile-snarf): New rule, to produce guile-snarf from guile-snarf.sh. - (gen_c_files): Note that these depend on guile-snarf. - * _scm.h: Removed the snarfing macros (SCM_PROC, etc). They are - now in "snarf.h". Added #include "snarf.h" to get them. - * libguile.h: Added #include "snarf.h". - (Patches applied and tweaked by Jim Blandy.) - -Tue Oct 29 13:21:13 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * socket.c: Use K&R style declaration for 'close'; the GNU coding - standards suggest against providing prototypes for system - functions. Thanks to Greg Troxel. - -Mon Oct 28 16:48:32 1996 Jim Blandy <jimb@floss.cyclic.com> - - * strports.c (scm_eval_0str): New function. - #include "read.h", to get prototype for scm_read. - * Makefile.in (strports.o): Update dependencies. - * strports.h: New prototype. - - * numbers.c (scm_integer_p): Renamed from scm_int_p; change its - scheme name from "int?" to "integer?". It seems to do the job. - * numbers.h: Rename prototype too. - * scmhob.h (intp): Change definition to refer to scm_integer_p. I - hope this is right. - - * numbers.c (scm_less_p, scm_gr_p, scm_leq_p, scm_geq_p, - scm_num_eq_p): Rename these according to R4RS conventions: call - them <, <=, =, >, and >=, not <?, <=?, =?, >?, and >=?. En route - to making libguile R4RS compliant without ice-9... - - * load.c (scm_sys_search_load_path): Search for files under all - extensions listed in the %load-extensions variable. If FILENAME - is absolute, return it unchanged, without searching the load path. - (scm_loc_load_extensions): New variable, pointing to - %load-extensions' value cell. - (scm_init_load): Initialize it, and the value it points to. - (scm_primitive_load_path): Improve error reporting. - - * load.c (scm_loc_load_hook): New variable, pointing to value cell - of new Scheme variable %load-hook. - (scm_primitive_load): Apply %load-hook to filename. - -Mon Oct 28 06:28:28 1996 Gary Houston <ghouston@actrix.gen.nz> - - * configure.in: add tests for figuring out whether buffered data - is available in a FILE structure, which is needed by char-ready. - - * acconfig.h: define FILE_CNT_FIELD, FILE_CNT_GPTR and - FILE_CNT_READPTR. - - * simpos.c (scm_getenv): renamed from scm_sys_getenv. Throw - exceptions using misc_error instead of syserror. It seems a bit - odd to throw an exception if a string can't be found in the - environment, but it's consistent with open-file, stat etc. - (simpos.h): remove sys_ from getenv. - - * posix.c (scm_putenv): renamed from scm_sys_putenv. If an error - occurs, throw an error instead of returning errno. Return value - is now unspecified. - (numerous in posix.c and posix.h): removed superfluous sys_ from names. - -Sun Oct 27 01:22:04 1996 Gary Houston <ghouston@actrix.gen.nz> - - * filesys.c (scm_stat2scm): derive file type and permissions from - the stat mode and append them to the returned vector. - There isn't much overhead in doing this and it avoids the need to - work with S_IRUSR et al. in Scheme. - Define symbols scm_sym_regular etc. - (scm_init_filesys): don't intern S_IRUSR etc. - - * load.c: change s_try_load and s_try_load_path to s_primitive_load - and s_primitive_load_path. - - * eval.c, load.c, error.c (scm_wta): use scm_misc_error. - - * error.h: don't declare error symbols. prototype for scm_misc_error. - - * stackchk.c (scm_stack_overflow_key): defined here instead of in - error.c. - - * error.c: use SCM_SYMBOL to set up error keys. - scm_misc_error: new procedure. - -Fri Oct 25 01:56:30 1996 Jim Blandy <jimb@floss.cyclic.com> - - * read.c (scm_lreadr): Recognize SCSH-style block comments; text - between `#!' and `!#' is ignored. - (skip_scsh_block_comment): New function. - - * feature.c (scm_set_program_arguments): New argument, FIRST. - * feature.h: Update prototype. - * init.c (scm_boot_guile_1): Pass new argument to - scm_set_program_arguments. - -Tue Oct 22 20:54:42 1996 Jim Blandy <jimb@floss.cyclic.com> - - * init.c (scm_start_stack): Don't initialize scm_progargs here. - (scm_boot_guile): Call scm_set_program_arguments here, later than - the old initialization. - - * init.c: (scm_boot_guile, scm_boot_guile_1): New, simplified - initialization procedure. - - Delete in, out, err arguments; there are other perfectly good - ways to override these when desired. - - Delete result argument; this function shouldn't ever return. - - Rename init_func argument to main_func, for less confusion. - - Delete boot_cmd argument; main_func is more general. - -Add 'closure' argument, to help people pass data to main_func - without resorting to global variables. - - Abort if reentered; don't bother returning an error code. - - Call scm_init_standard_ports to set up the default/current - standard ports; no need to pass them to scm_start_stack. - - Remove code to evaluate the boot_cmd, and start the repl; let - the user do something like that in main_func if they want. - - Remove code to package up a return value; main_func can do any - of that as needed. - - Call exit (0), instead of returning. - (scm_start_stack): Don't initialize the I/O ports here; that's - weird. Delete in, out, err arguments. Move guts to - scm_init_standard_ports, scm_stdio_to_port. - (scm_init_standard_ports): New function, to set up current and - default standard ports. - (scm_start_stack, scm_restart_stack): Make these static. - * init.h (scm_boot_guile): Adjust declaration. - (scm_start_stack, scm_restart_stack): Remove externally - visible declarations for these. - (enum scm_boot_status): Removed; now scm_boot_guile never returns. - - * fports.c (scm_stdio_to_port): New function. Its guts used to be - written out several times in scm_start_stack. - * fports.h: New declaration for the above. - - * feature.c (scm_set_program_arguments): New function. - * feature.h: New declaration for the above. - - * ports.c: Formatting tweak. - -Sun Oct 20 03:29:32 1996 Mikael Djurfeldt <mdj@kenneth> - - * pairs.h, eval.c, eval.h, feature.c, gc.c, list.c, load.c, - ramap.c, symbols.c: Added new selectors SCM_CARLOC and SCM_CDRLOC - for obtaining the address of a car or cdr field. Motivation: - &SCM_CXR make assumptions about the internal structure of the - SCM_CXR selectors. - - * eval.h, eval.c: Added new selector SCM_GLOC_VAL_LOC. - Motivation: see SCM_CXRLOC. - - * pairs.h, eval.c, gc.c, init.c, ioext.c, ports.c, ports.h, - srcprop.h, tags.h, throw.c, unif.c: Added new selectors - SCM_SETAND_CAR, SCM_SETAND_CDR, SCM_SETOR_CAR and SCM_SETOR_CDR. - Motivation: Safer use. Some other macros are defined in terms of - these operations. If these are defined using the SCM_SETCXR - (<e1>, SCM_CXR (<e1>) <op> <e2>) pattern a complex <e1> will lead - to inefficiency and an <e1> with side-effects could potentially - break. Also, these particular operations are heavily utilized in - the garbage collector. In unoptimized code there will be a - measurable speedup. - - * alist.c, arbiters.c, continuations.c, debug.c, debug.h, eval.c, - eval.h, feature.c, filesys.c, fports.c, gc.c, gsubr.c, init.c, - ioext.c, kw.c, list.c, load.c, mallocs.c, numbers.c, numbers.h, - pairs.c, pairs.h, ports.c, ports.h, posix.c, procprop.c, procs.c, - procs.h, ramap.c, read.c, root.c, srcprop.c, srcprop.h, - strports.c, symbols.c, tags.h, throw.c, unif.c, variable.c, - vports.c: Cleaned up use of pairs: Don't make any special - assumptions about the internal structure of selectors and - mutators: SCM_CXR (<e1>) = <e2> --> SCM_SETCXR (<e1>, <e2>), - SCM_CXR (<e1>) &= <e2> --> SCM_SETAND_CXR (<e1>, <e2>) etc. - (Among other things, this change makes it easier to build Guile - with certain compilers which have problems with casted lvalues.) - -Fri Oct 18 01:11:56 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> - - * stacks.c: Improve selection of relevant stack frames when making - a stack object. Introduce one level of indirection in the stack - object to make it possible to "narrow" to a certain region of the - stack. This facilitates making use of more clever algorithms (not - implemented) for selecting relevant frames and gives a cleaner - design since selection of frames can be done independently of - extraction of frames from the real stack. - (scm_stack_id): Also take #t as argument which means look at - current stack. - - * stacks.h: In struct scm_stack: Turn field frames into a pointer. - Turn n_tail into an integer directly representing current number - of frames in stack. Add field tail. - - * ports.c (scm_port_line_x, scm_port_column_x): New mutators. - - * debug.c (scm_make_memoized): Made it available at scheme level. - (scm_unmemoize, scm_memoized_environment): Bugfix: Check for - SCM_NIMP before applying heavier predicates in argument checking. - (scm_local_eval): Also take memoized object as argument. - - * backtrace.c (scm_display_error): Just a safety measure: Stacks - aren't created with zero length, but should such a strange - creature suddenly turn up... - -Wed Oct 16 11:08:41 1996 Marius Vollmer <mvo@zagadka.ping.de> - - * hashtab.h (scm_hashx_remove_x): Renamed `delete' parameter to - `del', for the sake of C++ compilers. (Patch applied by JimB.) - -Tue Oct 15 17:06:13 1996 Jim Blandy <jimb@floss.cyclic.com> - - * variable.c (scm_make_variable): Make the name hint optional, as - documented. - (anonymous_variable_sym): Renamed from variable_sym. All uses - changed. - - * load.c (scm_primitive_load, scm_primitive_load_path): Renamed - from scm_sys_try_load and scm_sys_try_load_path. The Scheme name - of scm_primitive_load_path was also changed to - "primitive-load-path", from "%try-load-path". Callers changed. - We'd like to respect the convention that a function named - "try-mumble" should behave just like the function called "mumble", - but return #f instead of signalling some error. - * load.h: Rename prototypes. - -Tue Oct 15 05:34:10 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> - - * print.c (make_print_state, grow_print_state), print.h: Modified - the print state representation: Don't use a tail array for - recording of circular references. Resizing of the print state - structure invalidates the print state pointer. To avoid passing - around an indirect print state reference to all printing - functions, we instead let the print state reference a resizable - vector. - -Mon Oct 14 19:25:00 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * alist.c (scm_sloppy_assq, scm_sloppy_assv, scm_sloppy_assoc): - Don't crash when passed an improper list terminated by a - non-immediate value. - -Mon Oct 14 19:08:33 1996 Jim Blandy <jimb@floss.cyclic.com> - - Allocate data for structures on an eight-byte boundary, as - required by the tagging system. - * struct.c (alloc_struct): New function. - (scm_make_struct, scm_make_vtable_vtable): Call it. - * struct.h (scm_struct_n_extra_words): Bump to 3. - (scm_struct_i_ptr): New "field". - * gc.c (scm_gc_sweep): When we need to free the data, use the - information stored by alloc_struct to find the beginning of the - block allocated to the structure, so we can free it. - -Mon Oct 14 17:07:55 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> - - * init.c (scm_boot_guile_1): Moved scm_init_struct in front of - scm_init_stacks. - - * debug.h (SCM_VOIDFRAME, SCM_VOIDFRAMEP): New macros. - (scm_debug_info): New member: id. - - * stacks.c: Stacks are now represented as structs; Stacks have an - id given to them by `start-stack'. - (scm_last_stack_frame): Added predicates `stack?' and `frame?'. - - * stacks.h: Added declarations of scm_stack_p and scm_frame_p; - Changed stack representation. - - * debug.c (scm_procedure_name): Try procedure property `name' for - compiled closures aswell. - - * gc.c (scm_init_storage): Initialize scm_stand_in_procs to SCM_EOL. - - * eval.c: scm_i_name moved to gsubr.c - (scm_m_define): Record names of all kinds of procedure - objects. (Earlier, only closures were recorded.) - - * procprop.h: Added declaration of scm_i_name. - - * gsubr.c: Added global scm_i_name. Added #include "procprop.h". - (scm_make_gsubr): Record names of compiled closures. - -Mon Oct 14 04:21:51 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> - - * debug.c, debug.h: Removed obsolete code. - - * continuations.c, continuations.h, debug.c, gc.c, init.c, root.c, - stacks.c: Renamed regs --> scm_contregs. - - * print.c (scm_free_print_state): Cleanup print state before - returning it to pool. It is better to do it here than in - scm_prin1 since scm_prin1 is called often. - - * srcprop.c (scm_source_properties, scm_set_source_properties_x, - s_set_source_property_x): Check that first argument is a pair or a - memoized object. - - * srcprop.c, srcprop.h: Made scm_i_filename, scm_i_copy, - scm_i_line, scm_i_column and scm_i_breakpoint global. - - * init.c: Added #include "backtrace.h" and #include "stacks.h". - (scm_boot_guile_1): Added calls to scm_init_backtrace and - scm_init_stacks. - - * debug.h: Added debug object smob declaration and macro - definitions. - - * configure.in: Build with backtrace.o and stacks.o if debug - support enabled. - - * Makefile.in: Added entries for new files: backtrace.c, - backtrace.h, stacks.c and stacks.h. - - * symbols.c (scm_sym2ovcell): Fixed documentation. - - * _scm.h (min, max): Added. - - * async.c: Moved `min' macro to _scm.h. - - * debug.h: New debug options SCM_BACKTRACE_MAXDEPTH and - SCM_BACKTRACE_INDENT. - - * eval.c: Added new debug options `maxdepth' and `indent'. - - * print.c (make_print_state): Bugfix: Initialize pstate->ceiling. - - * print.h: Added selector SCM_PRINT_STATE. - - * print.c: New functions: scm_make_print_state, - scm_free_print_state. - - * print.h: Added declarations for scm_make_print_state, - scm_free_print_state. - - * debug.c (scm_m_start_stack): New acro. - - * debug.h: Small cleanup. - - * init.c (scm_boot_guile_1): Moved scm_init_debug below - scm_init_eval. - -Sun Oct 13 20:14:53 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * __scm.h, alist.c, alist.h, append.c, append.h, appinit.c, - arbiters.c, arbiters.h, async.c, async.h, boolean.c, boolean.h, - chars.c, chars.h, continuations.c, continuations.h, debug.c, - debug.h, dynwind.c, dynwind.h, eq.c, eq.h, error.c, eval.c, - eval.h, extchrs.c, extchrs.h, fdsocket.c, fdsocket.h, filesys.c, - filesys.h, fports.c, fports.h, gc.c, gdb_interface.h, gdbint.c, - gdbint.h, genio.c, genio.h, gscm.c, gscm.h, gsubr.c, gsubr.h, - hash.c, hash.h, hashtab.c, hashtab.h, init.c, ioext.c, ioext.h, - kw.c, kw.h, libguile.h, mallocs.c, mallocs.h, markers.c, - markers.h, mbstrings.c, mbstrings.h, numbers.c, numbers.h, - objprop.c, objprop.h, options.c, options.h, pairs.c, pairs.h, - ports.c, ports.h, posix.c, posix.h, print.c, print.h, procprop.c, - procprop.h, procs.c, procs.h, ramap.c, ramap.h, read.c, read.h, - root.c, scmsigs.c, scmsigs.h, sequences.c, sequences.h, simpos.c, - simpos.h, smob.c, socket.c, socket.h, srcprop.c, srcprop.h, - stackchk.c, stackchk.h, stime.c, stime.h, strings.c, strings.h, - strop.c, strop.h, strorder.c, strorder.h, strports.c, strports.h, - struct.c, struct.h, symbols.c, symbols.h, tag.c, tag.h, unif.c, - unif.h, variable.c, variable.h, vectors.c, vectors.h, version.c, - version.h, vports.c, vports.h, weaks.c, weaks.h: Use SCM_P to - declare functions with prototypes. (Patch thanks to Marius - Vollmer.) - - More prototype-related changes from Marius Vollmer: - * gdb_interface.h: Wrapped header file in #ifdef/#endif - * gscm.h (gscm_run_scm): Added prototype for `initfn' paramter. - * ports.h (ptobfuns): Added prototypes. This means some casting in - fports.c. - * fports.c: Added casts for initializations, since the functions - are defined to take FILE * as their stream argument, not SCM. - * fdsocket.c, fdsocket.h: Made `init_addr_buffer' static. - * genio.c (scm_gen_puts): Changed `unsigned char *str_data' parameter - to `char *str_data' to conform to prototype. - -Sat Oct 12 21:49:29 1996 Gary Houston <ghouston@actrix.gen.nz> - - * error.c, eval.c, load.c, stackchk.c: use scm_error not lgh_error. - - * __scm.h (lgh_error): removed, lgh shouldn't be in libguile. - - * stime.c, stime.h: use SCM_P method. - -Sat Oct 12 16:16:25 1996 Jim Blandy <jimb@floss.cyclic.com> - - * eval.c (scm_nconc2last): Don't accept an empty list; apply must - be given at least two arguments. Insist that lst's last element - be a list, but don't make any requirements of its predecessors. - -Fri Oct 11 03:58:25 1996 Jim Blandy <jimb@floss.cyclic.com> - - * eval.c (scm_nconc2last): Revert last change; there seems to be - other stuff going on here. - -Fri Oct 11 02:43:59 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * eval.c (scm_nconc2last): Make sure that each element of lst - (which is a list of argument lists, except for the tail) is a - proper list, i.e., finite and terminated by '(). - -Thu Oct 10 21:09:13 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * unif.c (scm_ra_set_contp): Localize `inc' declaration. - Clarifies flow. - - * struct.c (scm_make_struct, scm_make_vtable_vtable): Use the - symbolic name for the tag, scm_tc3_cons_gloc, instead of just - saying "1". - - * vectors.c (scm_make_vector): Fill vectors with the undefined - value, to help make Guile Scheme code more portable to other - Schemes. - - * symbols.c (scm_intern_obarray_soft, scm_sysintern): Doc fixes. - * symbols.h, tags.h: Doc fixes. - -Wed Oct 9 19:39:29 1996 Jim Blandy <jimb@floss.cyclic.com> - - * async.c (scm_take_signal): Doc fixes. - -Mon Oct 7 22:30:34 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * numbers.c (scm_divbigint): When the remainder is zero, we don't - want to subtract it from the modulus; we just want to leave it - alone. - -Mon Oct 7 00:14:17 1996 Mikael Djurfeldt <mdj@kenneth> - - * init.c (scm_boot_guile_1): Bugfix: i --> base in argument to - `scm_init_threads'. - - * throw.h (scm_catch_apply): Removed the `lazyp' argument. - - * throw.c (scm_catch_apply): Finished implementation of - `lazy-catch'. - -Sun Oct 6 05:26:05 1996 Gary Houston <ghouston@actrix.gen.nz> - - * filesys.c (scm_sys_select): move SCM_ALLOW_INTS past the sreturn - check. - (scm_init_filesys): set "i/o-extensions" feature. - include feature.h. - -Sat Oct 5 12:22:00 1996 Jim Blandy <jimb@floss.cyclic.com> - - * Makefile.in (root.o): Correct dependencies. - -Sat Oct 5 18:40:42 1996 Mikael Djurfeldt <mdj@kenneth> - - * Makefile.in: Added dependency entry for root.o. - - * continuations.c, debug.[ch], eval.c, gscm.c init.c, root.c, - throw.c: Renamed last_debug_info_frame -> scm_last_debug_frame. - - * init.c (scm_start_stack): Set initial root continuation number - to 0. - - * procs.c: New function: scm_thunk_p. - - * procs.h: Added declarations of scm_thunk_p. - - * root.c: Renamed `call-with-new-root' --> - `call-with-dynamic-root'. - (cwdr): Removed allocation of new root state. This should be done - separately by use of scm_make_root. - (scm_apply_with_dynamic_root): New function: Does what it - sounds like. Needed when spawning threads. - - * root.h: Added member last_debug_frame to root state. - Added #include "libguile/debug.h" - - * throw.c: Renamed scm_catch --> scm_catch_apply and added more - arguments. The motivation is that code in root.c needs catch - functionality, and we want to avoid code duplication. - New functions: scm_catch, scm_lazy_catch. These are wrappers for - scm_catch_apply. scm_lazy_catch is intended to introduce catch - handlers that run without popping the stack into the dynwind - chain. - - * throw.h: Added prototypes for scm_catch_apply and - scm_lazy_catch. - -Thu Oct 3 11:12:33 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> - - * root.h (scm_root, scm_set_root): Decouple thread support details - by introducing the selector SCM_THREAD_LOCAL_DATA and the mutator - SCM_SET_THREAD_LOCAL_DATA. - - * print.c (scm_iprlist): Bugfix: Added SCM_ECONSP tests in hare - and tortoise scanning loop. - -Thu Oct 3 00:04:53 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * Makefile.in: Rebuild dependencies. - - * libguile.h: #include "libguile/print.h" before "smob.h", since - the latter uses the print_state structure. - - * throw.c (scm_ithrow): Use the correct variable when checking to - see if a given element of scm_dynwinds is a valid catch. - - * throw.c (scm_ithrow): If scm_dynwinds has invalid list - structure, abort; don't just silently ignore the garbage. - - * _scm.h: #include "print.h" here, since it seems to be used just - about everywhere. - * eval.c, gdbint.c, genio.h, numbers.h, smob.h, srcprop.c, - strports.c, unif.h: Don't #include "print.h". - -Tue Oct 1 05:15:10 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> - - * feature.h (scm_loc_features): Removed external declaration. - (Bug fix suggested by Petr Adamek <adamek@mit.edu>.) - -Tue Oct 1 00:00:10 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> - - * feature.c (scm_init_feature): Added threads feature (needs to be - initialized here, since features doesn't exist when - scm_init_threads is called). - - * libguile.h: Added #include "libguile/../threads/threads.h". - (This is a kludge to get thread support working. This should be - fixed.) - - * configure.in, acconfig.h: Added flags for thread support. - - * scmsigs.c: Define `signal' to be `pthread_signal' if using - mit-pthreads. - - * gc.c (scm_igc): Added SCM_THREAD_CRITICAL_SECTION_START and - SCM_THREAD_CRITICAL_SECTION_END. Moved marking of root data to - root.c:mark_root. - - * _scm.h: Added conditional #include "threads.h" - - * __scm.h (SCM_ASYNC_TICK): Added call to macro - SCM_THREADS_SWITCHING_CODE. - - * init.c (scm_start_stack): Call `scm_make_root' to dynamically - allocate the basic dynamic root object. - (scm_boot_guile): Added call to scm_init_root. - - * root.c, root.h: Added root smob. - (cwdr, scm_call_with_new_root, scm_dynamic_root, scm_app_wdr): New - functions: Implements dynamic roots mostly according to spec in - SCM manual. Main difference is that the second argument is a - throw handler rather than an error "thunk". - - * root.h: Added declaration of scm_init_root. - - * root.c: Added #include "genio.h", #include "smob.h", #include - "pairs.h", #include "throw.h", #include "dynwind.h", #include - "eval.h" - (scm_init_root): Added #include "root.x". - - * throw.c: Added #include "stackchk.h" - (scm_catch): Changed SCM_DEFER_INTS --> SCM_REDEFER_INTS and - SCM_ALLOW_INTS --> SCM_REALLOW_INTS. This is so that scm_catch - can be used in scm_call_with_new_root; Added reenabling of stack - checking when catching a throw. - -Mon Sep 30 21:48:11 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * list.c, list.h: Use SCM_P instead of CPP hair. Doc fixes. - - * list.c (scm_member, scm_memv, scm_memq): Return #f if a matching - element is not found, as per R4RS. - -Sat Sep 28 18:13:01 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * list.c: Doc fixes throughout. - -Sat Sep 28 02:07:43 1996 Gary Houston <ghouston@actrix.gen.nz> - - * strings.c, strings.h: (scm_makfrom0str, scm_makefrom0str_opt: - declare the char * to be const. Avoids a warning in rgx.c. - - * ports.h: spelling fix. - - * filesys.c (scm_sys_stat, scm_sys,lstat): include file name in - error messages. - - * load.c (scm_sys_try_load_path): throw an error if file not found - (like it says it in NEWS). - -Fri Sep 27 18:27:01 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * symbols.c (scm_intern_obarray_soft): Initialize the new symbol's - PROPS slot to '(), not #f; it's an empty alist. - - * throw.h, throw.c: Use SCM_P instead of #if hair. - - Remove special support for uncaught throws; see throw.c for - rationale. - * throw.c (uncaught_throw): New function. - (scm_ithrow): Call uncaught_throw if we don't find a throw - target; don't mess with scm_bad_throw_vcell. - (scm_bad_throw_vcell): Variable deleted. - (scm_init_throw): Don't initialize it. - - * throw.c (scm_ithrow): Don't let outer key matches shadow inner - #t catches. - -Wed Sep 25 04:35:50 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * numbers.c (scm_istr2int): If the number is short (as most - numbers are), just call scm_small_istr2int to deal with it. - (scm_small_istr2int): New function, created by un-#ifdefing the - non-bignum version of scm_istr2int and renaming it. - -Tue Sep 24 06:48:38 1996 Gary Houston <ghouston@actrix.gen.nz> - - * load.c (scm_sys_try_load): don't check whether value returned - by scm_open_file is #f, it won't be. Always return SCM_UNSPECIFIED. - Change the Scheme name from %try-load to primitive-load. - - * error.c (scm_error): convert a NULL message to SCM_BOOL_F. - Can avoid passing a message, allowing it to be derived in the - error handler (e.g., if we want to throw to the key both from - Scheme and C). - -Mon Sep 23 00:42:15 1996 Mikael Djurfeldt <mdj@kenneth> - - * print.c (scm_iprin1, scm_prin1, scm_iprlist): Circular - references now have a new appearance which is more compact and - also gives a clue about what the target of the reference is. - By setting parameters in the print state, more fancy printing can - be achieved. This is used by the (not yet commited) backtrace - code. - -Sun Sep 22 17:10:06 1996 Mikael Djurfeldt <mdj@kenneth> - - * eval.c, numbers.h, unif.h, smob.h, srcprop.c: Added #include - "print.h" - - * print.c: Added #include "struct.h". Removed function - scm_prlist. - - * print.h: Modified prototypes for scm_iprlist, scm_prin1 and - scm_iprin1. Removed prototype for scm_prlist. - - * arbiters.c (prinarb), - async.c (print_async), - debug.c (prindebugobj, prinmemoized), - eval.c (prinprom, prinmacro), - filesys.c (scm_fd_print, scm_dir_print), - kw.c (print_kw), - mallocs.c (prinmalloc), - numbers.c, numbers.h (scm_floprint, scm_bigprint), - smob.h (scm_smobfuns), - srcprop.c (prinsrcprops), - throw.c (prinjb), - unif.c, unif.h (scm_raprin1, rapr1), - variable.c (prin_var): Changed argument `int writing' to - `scm_print_state *pstate'. - - * init.c (scm_boot_guile): Moved scm_init_struct upwards so - that it will be called before scm_init_print. - - * print.c (scm_prin1): Print states are now allocated when calling - scm_prin1 and then passed around to all printing functions as an - argument. A cache `print_state_pool' enables reuse of print - states. - (scm_make_print_state): New function. - (scm_iprin1): Adaption to print states. - (scm_iprlist): An initial "hare and tortoise" scan brings down - time complexity to O (depth * N). (Better time complexity will be - achieved when the printing code is completely rewritten.) - -Fri Sep 20 22:01:36 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * aclocal.m4 (GUILE_STRUCT_UTIMBUF): Use AC_CACHE_CHECK instead of - AC_CACHE_VAL; #define UTIMBUF_NEEDS_POSIX outside AC_CACHE_VAL, so - it gets done whether or not the cache variable has a value. - -Thu Sep 19 17:06:39 1996 Jim Blandy <jimb@totoro.cyclic.com> - - Distinguish #f and (). - * __scm.h: #undef SICP. - * pairs.h (SCM_EOL): Delete this definition, equating it with - SCM_BOOL_F. - * tags.h (SCM_EOL): Give it a new definition here; I think I found - the value it used to have. Doc fixes, too. - -Thu Sep 19 15:33:51 1996 Mikael Djurfeldt <mdj@kenneth> - - * struct.c (scm_make_struct_layout, init_struct, scm_struct_ref, - scm_struct_set_x), struct.h, gc.c (scm_gc_mark): Completed Tom - Lord's implementation of structs, allowing for tail arrays as - described in the manual. Also fixed some bugs. (Both the interface - and the implementation should be improved.) - - * read.c (scm_init_read): Removed #ifdef READER_EXTENSIONS - - * print.c, print.h: Closures now print like #<procedure foo (x)>. - People who whish to see the source can do `(print-enable 'source)'. - Removed #ifdef DEBUG_EXTENSIONS. - -Thu Sep 19 00:00:29 1996 Gary Houston <ghouston@actrix.gen.nz> - - * filesys.c (scsm_sys_stat): don't SIGSEGV if argument is an - integer (assuming for now accepting an integer is a good thing). - - * error.c, fports.c: replace use of %S in lgh_error args with %s. - %S will be used instead for write'ing arguments. - - * unif.c (scm_transpose_array): change arguments in the SCM_WNA - asserts. fix a few other asserts. - (scm_aind, scm_enclose_array, scm_array_in_bounds_p, - scm_uniform_vector_ref, scm_array_set_x, - scm_dimensions_to_unform_array): change args in - SCM_WNA SCM_ASSERTS and change scm_wta's to scm_wrong_num_args. - strop.c (scm_substring_move_left_x, scm_substring_move_right_x, - scm_substring_fill_x): likewise. - gsubr.c (scm_gsubr_apply): likewise. - eval.c (SCM_APPLY): likewise. - - * eval.c (4 places): replace scm_everr with lgh_error or - scm_wrong_num_args. - - * error.c, error.h (scm_wrong_num_args, scm_wrong_type_arg, - scm_memory_error): new procedures. - scm_everr: deleted. can use scm_wta, dropping first two args. - scm_error: convert NULL subr to SCM_BOOL_F. - - * __scm.h: don't define SCM_STACK_OVFLOW, SCM_EXIT, SCM_ARG6, SCM_ARG7, - SCM_ARGERR. - - * stackchk.c (scm_report_stack_overflow): use lgh_error instead - of scm_wta. - - * error.c, error.h: new error keys: scm_arg_type_key, - scm_args_number_key, scm_memory_alloc_key, scm_stack_overflow_key, - scm_misc_error_key. - scm_wta: reimplement using lgh_error instead of scm_everr. - -Wed Sep 18 17:13:35 1996 Mikael Djurfeldt <mdj@kenneth> - - * gdbint.c: scm_lread now has one more argument. - - * ports.c, ports.h: Name change: scm_\(line\|column\)_number --> - scm_port_\1; Added mutator scm_set_port_filename_x (used when - loading source from non-file ports, which, e. g., happens when - using the Emacs interface). - - * fports.c (scm_open_file): Don't call scm_makfrom0str on a scheme - object. - - * read.c: Added code for recording of positions of source code - expressions; New functions: recsexpr, scm_lreadrecparen; - _scm_make_srcprops --> scm_make_srcprops - (scm_flush_ws): Removed updating of positions counters. This work - is already done by scm_gen_getc - - * read.h: Added prototype for scm_lreadrecparen - - * print.c: Added #include "alist.h" - - * eval.c: Added #include "hash.h" - - * eq.c: Added #include "ramap.h" - - * options.c: Documentation fixes. - - * srcprop.c (scm_finish_srcprop): Bugfix: update ptr. - (scm_init_srcprop): Adjusted size of initial source-whash. Name - changes: tc16_srcprops --> scm_tc16_srcprops, _scm_make_srcprops - --> scm_make_srcprops - - * srcprop.h: Name changes: tc16_srcprops --> scm_tc16_srcprops, - _scm_make_srcprops --> scm_make_srcprops; Remove one layer of - function calls in the definition of the whash access macros. - -Tue Sep 17 11:33:16 1996 Lee Iverson <leei@Canada.AI.SRI.COM> - - * init.c (scm_boot_guile): Add level of indirection to - scm_boot_guile_1() to ensure that stack base pointer is properly - initialized. There was no guarantee that variable i was the - highest/lowest variable on stack (i.e. the call frame of - scm_boot_guile was not completely protected from gc). - -Tue Sep 17 01:40:56 1996 Gary Houston <ghouston@actrix.gen.nz> - - * ports.h (scm_port_table): put back file_name, it will be used to - support debugging. Undo related changes in fports.c, ioext.c, - ports.c, gc.c. - -Sun Sep 15 03:58:29 1996 Gary Houston <ghouston@actrix.gen.nz> - - * ports.h (scm_port_table): remove file_name member for now, it seems - undesirable. - * fports.c (scm_open_file): don't set file_name in PTAB. - (prinfport): don't use file_name in PTAB. - * ioext.c (scm_sys_duplicate_port): don't set file_name in PTAB. - * ports.c (scm_add_to_port_table): don't intialize file_name. - (scm_port_file_name): remove for now. - * gc.c (scm_gc_mark): don't mark PTAB file_name. - - * fports.h (scm_mkfile): prototype deleted. - * fports.c (scm_mkfile): merged into scm_open_file to simplify. - - * debug.c, unif.c: use scm_out_of_range instead of - wta for range errors (ASSERT still needs work). - - * error.c, error.h (scm_out_of_range): new procedure. - - * error.c, error.h (scm_out_of_range_key): new key. - - * posix.c (scm_sync): #else was missing. - - * error.c, error.h: append _key to names scm_num_overflow and - scm_system_error. - - * __scm.h (SCM_SYSMISSING, SCM_NUM_OVERFLOW): use SCM_BOOL_F instead - of consing an empty list. - (SCM_SYSERROR etc.): move into error.c, make them procedures instead - of macros, saves code and string space. - error.c, fports.c, numbers.c, posix.c, ioext.c, filesys.c, socket.c, - fdsocket.c, simpos.c: change names of SCM_SYSERROR etc., to - lower case. Rename scm_syserror_m to scm_syserror_msg. - error.h: prototypes for new procedures. - -Sat Sep 14 03:35:41 1996 Gary Houston <ghouston@actrix.gen.nz> - - * numbers.c: use SCM_NUM_OVERFLOW instead of scm_wta or ASSERT. - - * error.c, error.h: setup scm_num_overflow key. - - * __scm.h: SCM_NUM_OVERFLOW: macro for reporting numerical overflow. - Remove definition of SCM_OVSCM_FLOW. - - * fports.c (scm_open_file): use SCM_SYSERROR_M. - - * __scm.h: SCM_SYSERROR_M: new macro for system errors with an - explicit message and args. - - * error.c, error.h, __scm.h: change system_error_sym to - scm_system_error. - - * error.c (system_error_sym): remove leading %% from the Scheme name - "%%system-error". - - * __scm.h (SCM_SYSMISSING): Redefine using lgh_error. - -Fri Sep 13 12:58:08 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> - - * __scm.h, chars.c, debug.c, eval.c, eval.h, extchrs.c, extchrs.h, - fdsocket.c, feature.c, mbstrings.c, mbstrings.h, numbers.c, - numbers.h, print.c, scmhob.h, simpos.h, symbols.c, symbols.h, - tags.h, throw.c, variable.h: Name cleanup. Lots of xxxSCM_yyy - renamed. (These were introduced by unsupervised name - substitution.) - -Fri Sep 13 01:19:08 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> - - * print.c: Added code for detection of circular references during - printing. (init_ref_stack, grow_ref_stack): New functions. Added - a hook for printing of closures (accessible via print options). - This leads to a split of calls to scm_iprin1 into two classes: - elementary print operations (e. g. the code which prints a smob) - still use scm_iprin1 while top level calls (like scm_display) use - scm_prin1. scm_prin1 begins by clearing the data structure used - to record reference information. - - * print.h: Added declarations of scm_prin1 and scm_prlist. - - * strports.c (scm_strprint_obj): scm_iprin1 --> scm_prin1 - - * gscm.c (gscm_portprint_obj): scm_iprin1 --> scm_prin1 - - * gscm.h (gscm_print_obj): scm_iprin1 --> scm_prin1 - - * error.c (err_head): scm_iprin1 --> scm_prin1 - - * debug.c: Adjusted header comment. - - * tags.h: Typo. - -Wed Sep 11 17:55:59 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * strerror.c: Doc fix. - -Thu Sep 12 00:00:32 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> - - * gdbint.c (gdb_read): Now possible to run during GC. - (unmark_port, remark_port): New functions. - - * symbols.h (SCM_SETLENGTH): Use SCM_SETCAR. - - * read.c (scm_grow_tok_buf): Use scm_vector_set_length_x instead - of allocating a new string object. Also, increase size by - the factor 2 instead of 1.5. - -Wed Sep 11 15:10:38 1996 Petr Adamek <jimb@floss.cyclic.com> - - * __scm.h (SCM_P): Corrected to run under traditional C. - - * _scm.h (SCM_PROC): Extraneous semicolon (outside functions) - removed. - - * async.c: Calls to scm_sysintern corrected. - - * async.h (scm_async_clock): Redundant declaration removed. - - * continuations.c (scm_dynthrow): Redundant declaration removed. - - * debug.c (scm_single_step, scm_memoized, scm_lookup_soft): - Definition typos corrected. - - * debug.h: Missing declarations of functions in debug.c added - (lots). - - * eval.h (scm_eval_args, scm_deval_args, scm_m_undefine): - Missing declarations to functions in eval.c added. - - * filesys.c: Possibly uninitialized variable rv. - - * gc.h (scm_object_addr, scm_unhash_name): Missing - declarations of functions defined in gc.c added. - - * genio.c: Possible typos str_data -> wstr_data. ??? - - * genio.c: Possibly unintended shadowing of local variable - `int c' (gotos out of scope of inner `c'). ??? - - * init.c: Uninitialized `SCM last' may be used. - - * ioext.h: (scm_sys_isatty_p): Typo. - - * list.h (scm_list_head): Missing prototype for function in - list.c added. - - * numbers.c (scm_two_doubles): Changed from extern to static - (is used only within numbers.c). - - * numbers.h: Repeated declarations removed. - - * ports.h (scm_close_all_ports_except): Declaration for the - function defined in ports.c added. - - * posix.h: Missing declarations added. - - * procs.h (scm_make_subr_opt): Missing declaration added. - - * socket.h (scm_sys_gethost): Missing declaration added. - - * socket.h: Redundant declarations removed (they are in fdsocket.h). - - * srcprop.h (scm_set_source_property_x, scm_finish_srcprop): - Missing declarations added. - - * stime.h (scm_get_internal_real_time): Repeated declarations removed. - - * struct.c: Uninitialized variable `SCM answer' may be used. - - * unif.c (l2ra): Declaration prototype. - - * unif.c (scm_array_equal_p): Dummy definition removed (it is - defined in ramap.c). - - * unif.h (scm_raprin1, scm_istr2bve, scm_array_equal_p): - Redundant declarations removed (they are in ramap.h). - - * variable.h (scm_make_udvariable, - scm_make_undefined_variable): Declaration corrected to - correspond variable.c. - - * vectors.h (scm_vector_move_left_x, scm_vector_move_right_x): - Missing declarations added. - -Wed Sep 11 14:38:50 1996 Jim Blandy <jimb@floss.cyclic.com> - - * Makefile.in (distclean): Don't forget to delete fd.h. - -Tue Sep 10 14:01:46 1996 Jim Blandy <jimb@floss.cyclic.com> - - * fd.h.in, tags.h: Trivial cleanups. - - * marksweep.c, marksweep.h: Deleted; marksweep.c was empty, and - marksweep.h just declared functions from gc.c. - * gc.h, libguile.h: Don't #include "marksweep.h". - * Makefile.in (libobjs, inner_h_files, c_files, gen_c_files): Omit - marksweep.o, marksweep.h, marksweep.c, and marksweep.x. Other - dependencies updated. - - * libguile.h: Don't #include "files.h"; it's been deleted. - - * files.c (scm_sys_delete_file): Moved to filesys.c. - File is now empty; deleted. - * files.h: Deleted. - * filesys.c: scm_sys_delete_file is now here. Remove - #if's; they seem to rely on remnants of an old portability - regimen. If the problems come up again, solve them properly, - using autoconf. Specifically: Don't test M_SYSV, and #define - remove to be unlink if it's #defined; don't use remove just - because HAVE_STDC_HEADERS is #defined. - * filesys.h: Add declarations for scm_sys_delete_file. - * Makefile.in (libobjs, inner_h_files, c_files, gen_c_files): Omit - files.o, files.h, files.c, and files.x. - * init.c: Don't #include "files.h", and don't call scm_init_files. - - Use SCM_P instead of PROTO; the latter intrudes on the user's - namespace. - * params.h: Deleted; definition of SCM_P moved to... - * __scm.h: ... here, where it replaces PROTO macro. - * libguile.h, smob.h: Don't #include "params.h". - * continuations.c, error.h, feature.h, gc.c, gc.h, init.h, load.h, - smob.h: Fix prototypes accordingly. - * Makefile.in: Update dependencies. - (inner_h_files): Remove params.h. - - * gc.c: #include "gc.h"; every module should include its header, - to let the compiler cross-check the declarations against the - definitions. - - * eq.h, files.h, hashtab.h, load.h, mallocs.h, scmsigs.h, - simpos.h: #include "libguile/__scm.h". - -Mon Sep 9 20:00:15 1996 Jim Blandy <jimb@floss.cyclic.com> - - * init.c: Don't forget to #include smob.h and init.h. - * Makefile.in: Dependencies updated. - - * smob.h: Use PROTO instead of #if __STDC__. - - * continuations.c (scm_dynthrow): Use PROTO, not SCM_P. - - * __scm.h: Doc fixes. - - * __scm.h, libguile.h: Use "quotes" in the #includes, not - <angles>; this allows `make depends' to work properly. - - * libguile.h: #include smob.h and pairs.h before the others; they - define typedefs used by other headers. - - C files should #include only the header files they need, not - libguile.h (which #includes all the header files); the pointless - recompilation was wasting my time. - * Makefile.in (all .o dependency lists): Regenerated. - * libguile.h: Don't try to get a definition for size_t here... - * __scm.h: Do it here. - * _scm.h: Since this is the internal libguile header, put things - here that all (or a majority) of the libguile files will want. - Don't #include <libguile.h> here; that generates dependencies on - way too much. Instead, get "__scm.h", "error.h", "pairs.h", - "list.h", "gc.h", "gsubr.h", "procs.h", "numbers.h", "symbols.h", - "boolean.h", "strings.h", "vectors.h", "root.h", "ports.h", and - "async.h". - * alist.c: Get "eq.h", "list.h", "alist.h". - * append.c: Get "append.h", "list.h". - * arbiters.c: Get "arbiters.h", "smob.h". - * async.c: Get "async.h", "smob.h", "throw.h", "eval.h". - * boolean.c: Get "boolean.h". - * chars.c: Get "chars.h". - * continuations.c: Get "continuations.h", "dynwind.h", "debug.h", - "stackchk.h". - * debug.c: Get "debug.h", "feature.h", "read.h", "strports.h", - "continuations.h", "alist.h", "srcprop.h", "procprop.h", "smob.h", - "genio.h", "throw.h", "eval.h". - * dynwind.c: Get "dynwind.h", "alist.h", "eval.h". - * eq.c: Get "eq.h", "unif.h", "smob.h", "strorder.h", - "stackchk.h". - * error.c: Get "error.h", "throw.h", "genio.h", "pairs.h". - * eval.c: Get "eval.h", "stackchk.h", "srcprop.h", "debug.h", - "hashtab.h", "procprop.h", "markers.h", "smob.h", "throw.h", - "continuations.h", "eq.h", "sequences.h", "alist.h", "append.h", - "debug.h". - * fdsocket.c: Get "fdsocket.h", "unif.h", "filesys.h". - * feature.c: Get "feature.h". - * files.c: Get "files.h". - * filesys.c: Get "filesys.h", "smob.h", "genio.h". - * fports.c: Get "fports.h", "markers.h". - * gc.c: Get "async.h", "unif.h", "smob.h", "weaks.h", - "genio.h", "struct.h", "stackchk.h", "stime.h". - * gdbint.c: Get "gdbint.h", "chars.h", "eval.h", "print.h", - "read.h", "strports.h", "tag.h". - * genio.c: Get "genio.h", "chars.h". - * gsubr.c: Get "gsubr.h", "genio.h". - * hash.c: Get "hash.h", "chars.h". - * hashtab.c: Get "hashtab.h", "eval.h", "hash.h", "alist.h". - * init.c: Get everyone who has an scm_init_mumble function: - "weaks.h", "vports.h", "version.h", "vectors.h", "variable.h", - "unif.h", "throw.h", "tag.h", "symbols.h", "struct.h", - "strports.h", "strorder.h", "strop.h", "strings.h", "stime.h", - "stackchk.h", "srcprop.h", "socket.h", "simpos.h", "sequences.h", - "scmsigs.h", "read.h", "ramap.h", "procs.h", "procprop.h", - "print.h", "posix.h", "ports.h", "pairs.h", "options.h", - "objprop.h", "numbers.h", "mbstrings.h", "mallocs.h", "load.h", - "list.h", "kw.h", "ioext.h", "hashtab.h", "hash.h", "gsubr.h", - "gdbint.h", "gc.h", "fports.h", "filesys.h", "files.h", - "feature.h", "fdsocket.h", "eval.h", "error.h", "eq.h", - "dynwind.h", "debug.h", "continuations.h", "chars.h", "boolean.h", - "async.h", "arbiters.h", "append.h", "alist.h". - * ioext.c: Get "ioext.h", "fports.h". - * kw.c: Get "kw.h", "smob.h", "mbstrings.h", "genio.h". - * list.c: Get "list.h", "eq.h". - * load.c: Get "load.h", "eval.h", "read.h", "fports.h". - * mallocs.c: Get "smob.h", "genio.h". - * markers.c: Get "markers.h". - * mbstrings.c: Get "mbstrings.h", "read.h", "genio.h", "unif.h", - "chars.h". - * numbers.c: Get "unif.h", "genio.h". - * objprop.c: Get "objprop.h", "weaks.h", "alist.h", "hashtab.h". - * options.c: Get "options.h". - * ports.c: Get "ports.h", "vports.h", "strports.h", "fports.h", - "markers.h", "chars.h", "genio.h". - * posix.c: Get "posix.h", "sequences.h", "feature.h", "unif.h", - "read.h", "scmsigs.h", "genio.h", "fports.h". - * print.c: Get "print.h", "unif.h", "weaks.h", "read.h", - "procprop.h", "eval.h", "smob.h", "mbstrings.h", "genio.h", - "chars.h". - * procprop.c: Get "procprop.h", "eval.h", "alist.h". - * procs.c: Get "procs.h". - * ramap.c: Get "ramap.h", "feature.h", "eval.h", "eq.h", - "chars.h", "smob.h", "unif.h". - * read.c: Get "alist.h", "kw.h", "mbstrings.h", "unif.h", - "eval.h", "genio.h", "chars.h". - * root.c: Get "root.h", "stackchk.h". - * scmsigs.c: Get "scmsigs.h". - * sequences.c: Get "sequences.h". - * simpos.c: Get "simpos.h", "scmsigs.h". - * smob.c: Get "smob.h". - * socket.c: Get "socket.h", "feature.h". - * srcprop.c: Get "srcprop.h", "weaks.h", "hashtab.h", "debug.h", - "alist.h", "smob.h". - * stackchk.c: Get "stackchk.h", "genio.h". - * stime.c: Get "stime.h"."libguile/continuations.h". - * strings.c: Get "strings.h", "chars.h". - * strop.c: Get "strop.h", "chars.h". - * strorder.c: Get "strorder.h", "chars.h". - * strports.c: Get "strports.h", "print.h", "eval.h", "unif.h". - * struct.c: Get "struct.h", "chars.h". - * symbols.c: Get "symbols.h", "mbstrings.h", "alist.h", - "variable.h", "eval.h", "chars.h". - * tag.c: Get "tag.h", "struct.h", "chars.h". - * throw.c: Get "throw.h", "continuations.h", "debug.h", - "dynwind.h", "eval.h", "alist.h", "smob.h", "genio.h". - * unif.c: Get "unif.h", "feature.h", "strop.h", "sequences.h", - "smob.h", "genio.h", "eval.h", "chars.h". - * variable.c: Get "variable.h", "smob.h", "genio.h". - * vectors.c: Get "vectors.h", "eq.h". - * version.c: Get "version.h". - * vports.c: Get "vports.h", "fports.h", "chars.h", "eval.h". - * weaks.c: Get "weaks.h". - - * stackchk.h: #include "libguile/debug.h", - - * print.h, read.h: #include "options.h", since everyone who uses - either of these files will need that. - - * smob.h: #include "ports.h", "genio.h", and "print.h", since - anyone who uses this file will need them to define the smob - printing functions. Also, get markers.h, since people will need - to #define the mark functions. - - * smob.h (scm_ptobfuns, SCM_PTOBNUM): Definitions moved... - * ports.h: ... to here. - - * ports.h (scm_port_table_size): Explicitly give type as 'int'; - don't rely on archaic C default type rules. - - * fports.h: #include "libguile/ports.h", since you need that in - order to parse this. - - * genio.h: #include "libguile/print.h", because you need that to - parse this; don't bother #including "ports.h", since print.h gets - that. - - * error.h: Don't #include "pairs.h"; _scm.h will do that now. - - * eval.h (scm_top_level_lookup_thunk_var): Remove declaration for - this; it's now a reference to an element of *scm_root. - - * debug.h: Don't #include "options.h"; the compiler won't be able - to find that once the headers are installed; instead, #include - "libguile/options.h". - * gc.h: Same, with marksweep.h. - * mbstrings.h: Same, with symbols.h. - * scmhob.h: Same, with _scm.h. - * smob.h: Same, with params.h. - - * Makefile.in (depends): Don't nuke scmconfig.h and the generated - C files; there's no need for this, and it forces recompilations - unnecessarily. - -Sat Sep 7 06:57:23 1996 Gary Houston <ghouston@actrix.gen.nz> - - * error.c (scm_error): declare scm_error_callback. - - * error.h: prototype for scm_error_callback. - - * __scm.h: define lgh_error. - (SCM_SYSERROR): redefine using lgh_error. - -Thu Sep 5 22:40:06 1996 Gary Houston <ghouston@actrix.gen.nz> - - * error.c (scm_error): new procedure. - - * error.h: prototype for scm_error. - - * Makefile.in (install): install scmconfig.h from the current - directory, not $(srcdir). - -Thu Sep 5 11:38:07 1996 Jim Blandy <jimb@floss.cyclic.com> - - * alist.h, append.h, arbiters.h, async.h, boolean.h, chars.h, - continuations.h, debug.h, dynwind.h, error.h, eval.h, fdsocket.h, - feature.h, filesys.h, fports.h, gc.h, gdbint.h, genio.h, gsubr.h, - hash.h, init.h, ioext.h, kw.h, list.h, markers.h, marksweep.h, - mbstrings.h, numbers.h, objprop.h, options.h, pairs.h, ports.h, - posix.h, print.h, procprop.h, procs.h, ramap.h, read.h, root.h, - sequences.h, smob.h, socket.h, srcprop.h, stackchk.h, stime.h, - strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h, - tag.h, throw.h, unif.h, variable.h, vectors.h, version.h, - vports.h, weaks.h: #include "libguile/__scm.h", not - <libguile/__scm.h>. This allows 'gcc -MM' to determine which - dependencies are within libguile properly. - -Thu Sep 5 11:38:07 1996 Jim Blandy <jimb@floss.cyclic.com> - - * Makefile.in (.c.x): Simplify; there's no need to run this rule - when scmconfig.h doesn't exist. - - * load.c (scm_sys_try_load): Correct spelling. - - * feature.c (scm_loc_features): Make this static. - - * Makefile.in (libpath.h): Omit trailing slash from path. We - shouldn't require it of users, so why put it here? - - Move code to initialize and search %load-path from ice-9 to C - code, so we can use the load-path to find the ice-9 boot code; - this makes it easier to run Guile without installing it. See - corresponding changes in guile/Makefile.in. - * feature.c: Move stuff concerned with the load path to load.c. - (scm_compiled_library_path): Deleted. - Don't #include libpath.h here. - * feature.h: Don't mention scm_compiled_library_path. - * load.c: #include "libpath.h" here, as well as <sys/types.h>, - <sys/stat.h>, and <unistd.h> (if present). - (R_OK): #define if the system hasn't deigned to. - (scm_loc_load_path): New variable. - (scm_init_load_path, scm_sys_search_load_path, - scm_sys_try_load_path): New functions. - (scm_init_load): Initialize scm_loc_load_path to point to the - value cell of the Scheme %load-path variable. - * load.h: Add declarations for scm_sys_search_load_path, - scm_sys_try_load_path. - * init.c: Call scm_init_load_path. - * Makefile.in (feature.o, load.o): Dependencies updated. - - * load.c, load.h: Rewrite using PROTO macro. - -Thu Sep 5 01:54:33 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> - - * gc.c (scm_cellp): New function: C predicate to determine if an - SCM value can be regarded as a pointer to a cell on the heap. - - * gc.h: Added declaration of scm_cellp. - - * gdb_interface.h: New file: The GDB interface header from the GDB - distribution. - - * gdbint.c: New file: GDB interface. - - * gdbint.h: New file: GDB interface. - - * libguile.h: Added #include <libguile/gdbint.h>. - - * init.c (scm_boot_guile): Added scm_init_gdbint. - - * Makefile.in: Added gdb_interface.h, gdbint.[hc]. - Added -I.. to INCLUDE_CFLAGS (otherwise the include files won't be - found if object files and source are kept separate). - -Wed Sep 4 14:35:02 1996 Jim Blandy <jimb@floss.cyclic.com> - - * feature.h, feature.c: Use PROTO macro, instead of #if __STDC__. - -Wed Sep 4 01:30:47 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * configure.in: Don't substitute the values of TCL_SRC_DIR and - TK_SRC_DIR; they're not relevant any more. - - * Makefile.in (CC): Don't list -Wall here; it's a GCC-specific flag. - * configure.in: Instead, put it in CFLAGS here, iff we're using GCC. - -Wed Sep 4 00:55:49 1996 Jim Blandy <jimb@floss.cyclic.com> - - * PLUGIN/guile.config (xtra_cflags): Include .. in the header - search path, so we can find the <libguile/MUMBLE.h> headers. - - * Makefile.in (ancillary): List aclocal.m4, for 'make dist'. - - * Makefile.in (ALL_CFLAGS): Don't mention CFLAGS here; it's - implicit in the .c.o rule. - (.c.x): Don't mention ALL_CFLAGS here; its value is included in - $(CC) already. - - Put the library path in a header file, instead of passing it on - the command line in every compilation. - * Makefile.in (libpath.h): New target. - (feature.o): Depend on libpath.h. - (clean): Delete libpath.h. - (ALL_CFLAGS): Don't use -DLIBRARY_PATH here. Instead ... - * feature.c: ... #include "libpath.h" here. - * .cvsignore: Ignore libpath.h. - - Don't install the unwashed masses of Guile header files in the - main #include path; put most of them in a subdirectory called - 'libguile'. This avoids naming conflicts between Guile header - files and system header files (of which there were a few). - * Makefile.in (pkgincludedir): Deleted. - (innerincludedir): New variable; this and $(includedir) are enough. - (INCLUDE_CFLAGS): Search for headers in "-I$(srcdir)/..". - (installed_h_files): Divide this up. Now this variable lists - those header files which should go into $(includedir) (i.e. appear - directly in the #include path), and ... - (inner_h_files): ... this new variable says which files appear in - a subdirectory, and are referred to as <libguile/mumble.h>. - (h_files): List them both. - (install): Create innerincludedir, not pkgincludedir. Put - the installed_h_files and inner_h_files in their proper places. - (uninstall): Corresponding changes. - * alist.h, append.h, arbiters.h, async.h, boolean.h, chars.h, - continuations.h, debug.h, dynwind.h, error.h, eval.h, fdsocket.h, - feature.h, fports.h, gc.h, genio.h, gsubr.h, hash.h, init.h, - ioext.h, kw.h, libguile.h, list.h, markers.h, marksweep.h, - mbstrings.h, numbers.h, options.h, pairs.h, ports.h, posix.h, - print.h, procprop.h, procs.h, ramap.h, read.h, root.h, - sequences.h, smob.h, socket.h, srcprop.h, stackchk.h, stime.h, - strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h, - tag.h, throw.h, unif.h, variable.h, vectors.h, version.h, - vports.h, weaks.h: Find __scm.h in its new location. - * __scm.h: Find scmconfig.h and tags.h in their new locations - (they're both "inner" files). - -Tue Sep 3 20:27:35 1996 Jim Blandy <jimb@floss.cyclic.com> - - * Makefile.in (.c.x): Remove duplicate use of $(ALL_CFLAGS). - -Tue Sep 3 19:53:00 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * posix.c: Doc fixes. - -Mon Sep 2 15:22:40 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * socket.c: Don't include a prototype for inet_aton; just use a - K&R style declaration, to avoid warnings but minimize the chance - of conflicts with the system. - - On NextStep, <utime.h> doesn't define struct utime, unless we - #define _POSIX_SOURCE before #including it. - * aclocal.m4 (GUILE_STRUCT_UTIMBUF): New test. - * acconfig.h: New comment text for above CPP symbol. - * configure.in: Call it. - * posix.c: #define _POSIX_SOURCE if it seems necessary. - - * configure.in (AC_CHECK_HEADERS): Include sys/utime.h and utime.h - in the list. - * posix.c: Check HAVE_SYS_UTIME_H and HAVE_UTIME_H, instead of - testing for __EMX__. - - * posix.c: #include <libc.h>, if it exists. - - * posix.c: Cast the return result to GETGROUPS_T, not gid_t; we - don't even know if the latter exists. - - * posix.c (s_sys_setpgid, s_sys_setsid, s_sys_ctermid, - s_sys_tcgetpgrp, s_sys_tcsetpgrp): Renamed from s_setpgid, - s_setsid, s_ctermid, s_tcgetpgrp, s_tcsetpgrp, for consistency. - - * posix.c (R_OK, W_OK, X_OK, F_OK): #define these if the system's - header files don't. - (scm_init_posix): Use them when initializing the Scheme constants - of the same name. - -Fri Aug 30 16:01:30 1996 Jim Blandy <jimb@floss.cyclic.com> - - * Makefile.in (libdir, includedir, bindir): Use the - autoconf-supplied values, instead of deriving them ourselves. - (pkgincludedir, datadir, pkgdatadir): New variables. - (install, uninstall): Put the header files in a special - subdirectory, not in the main search path. - - * Makefile.in (ALL_CFLAGS): Provide the proper value for - LIBRARY_PATH --- use $(pkgdatadir) instead of $(libdir). - - * Makefile.in (IMPLPATH): Deleted; never used. - - * Makefile.in (TCL_SRC_DIR, TK_SRC_DIR): Deleted; we don't depend - on the Tcl/Tk source any more. - (INCLUDE_CFLAGS): Remove references to the above. - - * Makefile.in (version.o): Corrected dependencies. - -Thu Aug 29 23:06:19 1996 Thomas Morgan <tmorgan@gnu.ai.mit.edu> - - * libguile.h: #include "version.h" - - * init.c (scm_boot_guile): Call scm_init_version. - * gscm.c (gscm_run_scm): Call scm_init_version. - - * configure.in (GUILE_MAJOR_VERSION, GUILE_MINOR_VERSION, - GUILE_VERSION): AC_DEFINE these. - (acconfig.h): #undef the above symbols. - - * Makefile.in (libobjs): Add version.o. - (installed_h_files): Add version.h. - (c_files): Add version.c. - (gen_c_files): Add version.x. - (version.o): New rule. - (alist.o, append.o, appinit.o, arbiters.o, async.o, boolean.o, - chars.o, continuations.o, dynwind.o, eq.o, error.o, eval.o, - fdsocket.o, feature.o, files.o, filesys.o, fports.o, gc.o, - genio.o, gsubr.o, hash.o, hashtab.o, init.o, kw.o, list.o, load.o, - mallocs.o, markers.o, marksweep.o, mbstrings.o, numbers.o, - objprop.o, pairs.o, ports.o, posix.o, print.o, procprop.o, - procs.o, ramap.o, read.o, root.o, scmsigs.o, sequences.o, - simpos.o, smob.o, socket.o, stackchk.o, stime.o, strings.o, - strop.o, strorder.o, strports.o, struct.o, symbols.o, tag.o, - throw.o, unif.o, variable.o, vectors.o, version.o, vports.o, - weaks.o): Add version.h to dependency lists. - (markers.o): Remove duplicate rule. - - * version.h: New file. - - * version.c: New file. - -Thu Aug 29 15:21:39 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * symbols.c (scm_strhash): scm_downcase is now a function, not an - array; use it appropriately. Since GCC is quite happy to - subscript functions, it never warned us about this; we should use - -Wpointer-arith in the future. I guess we never tested - case-insensitivity. - -Wed Aug 28 18:52:22 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * socket.c: Doc and copyright fixes. - -Sat Aug 24 05:29:19 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> - - * debug.c: Fixed and improved gdb support. - -Fri Aug 23 18:00:16 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> - - * socket.c: Added declaration of inet_aton to avoid compiler - warning. (Hope this solution is correct.) - - * stime.c: Added declaration of ftime. (This is missing in - Solaris 2 headers.) - -Fri Aug 23 02:03:32 1996 Gary Houston <ghouston@actrix.gen.nz> - - * configure, scmconfig.h.in: Updated, using autoconf and autoheader. - - * Makefile.in (c_files): add strerror.c. - - * strerror.c: new file from Emacs' sysdep.c. - maybe configure should also check for sys_errlist. - - * configure.in (AC_REPLACE_FUNCS): add strerror. - -Fri Aug 23 03:02:46 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> - - * debug.c (scm_init_debug): Added initialization for - scm_evaluator_traps. - - * debug.h, debug.c: Various name changes. - (Mostly prefixing with SCM_.) Renamed "debug-options" --> - "debug-options-interface". See commentary in options.c. - - * options.h, options.c: Options now have documentation strings. - Also added a long explanatory commentary. - - * eval.c, print.h, print.c, read.h, read.c: Modifications to - run-time options. - - * gscm.c, init.c, root.c, throw.c: Bug fixes: - last_debug_info_frame is now updated in all cases. - - * __scm.h, stackchk.h, stackchk.c: Guile now performs stack - checking. - -Thu Aug 22 17:34:17 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> - - * __scm.h: SCM_STACK_LIMIT removed (now a run-time option). - Added option STACK_CHECKING. - -Tue Aug 20 18:48:40 1996 Mikael Djurfeldt <djurfeldt@nada.kth.se> - - * Makefile.in: Added {debug,options,srcprop}.{h,c} - - * __scm.h: Removed symbols for debugging support. - - * acconfig.h: Added symbols for debugging support. - - * configure.in: Added user option for debugging support. - --enable-debug will include the debugging code into libguile.a. - - * continuations.c (scm_make_cont): Enlarged the #if 0 around - scm_relocate_chunk_to_heap. - - * debug.c: New file: low-level debugging support. It also - includes support for debugging with gdb. (The extensions to gdb - are written by Per Bothner at Cygnus.) - - * debug.h: New file: low-level debugging support. - - * eval.c: scm_m_set and SCM_IM_SET no longer supports multiple - argument pairs. Extensive modifications to the debugging - evaluator. Added "SECTION:" commentaries to clarify what happens - when, during double compilation. Renamed EVALIMP --> EVALIM. - Renamed EVAL --> XEVAL. Removed function evalcar. Defined - evalcar to scm_eval_car. Added explanation of "EVAL" symbols to - the beginning of the file. New procedure: scm_unmemocopy. - Added some global state variables needed by the debugging - evaluator: scm_ceval_ptr, last_debug_info_frame, debug_mode, - check_entry, check_apply, check_exit, debug_options and - evaluator_traps. New acro: undefine. - - * eval.h: Renamed EVAL --> XEVAL. - - * gc.c (scm_init_storage): Renamed scm_make_weak_hash_table - --> scm_make_weak_key_hash_table. - - * init.c (scm_restart_stack, scm_boot_guile): Added initialization - of SCM_DFRAME. Added calls to scm_init_{debug,options,srcprop}. - - * libguile.h: Conditionally include debug.h - - * objprop.c (scm_object_properties, scm_set_object_properties_x): - scm_object_properties shouldn't return handle. `handle' now gets - initialized in scm_set_object_properties_x. scm_object_properties - doesn't any longer create an entry in scm_object_whash. - - * options.c: New file: handling of run time options. - - * options.h: New file: handling of run time options. - - * posix.c (scm_getpgrp): Cast pointer to getpgrp. - - * print.c: New procedure: scm_print_options - - * print.h: Defines for print options. - - * read.c: New procedure: scm_read_options - - * read.h: Defines for reader options. - - * root.h: Added scm_source_whash among scm_sys_protects. - - * srcprop.c: New file: source properties. - - * srcprop.h: New file: source properties. - - * throw.c (jbsmob): Jump buffers are now correctly allocated. - (Bug found by A. Green.) - - * weak.c: Renamed scm_weak_hash_table --> scm_weak_key_hash_table. - - * weak.h: Renamed scm_weak_hash_table --> scm_weak_key_hash_table. - -Thu Aug 15 02:05:14 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * libguile.h: #include "objprop.h"; I guess this was forgotten. - - * init.c (scm_boot_guile): Don't call scm_init_rgx; it's a plugin, - and should be called by the final client. - -Wed Aug 14 21:41:37 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * gc.h: Use the PROTO macro when declaring functions. - * gc.c: Use the PROTO macro when declaring static functions. - Remove the CPP hair around function definitions. - - * gc.c (scm_init_storage): Initialize scm_asyncs. - - * libguile.h: #include "__scm.h" before testing the STDC_HEADERS - preprocessor symbol; "__scm.h" is where it might get #defined. - * __scm.h: Similar: #include <scmconfig.h> before testing - HAVE_LIMITS_H. - - * __scm.h: It's HAVE_LIMITS_H, not HAVE_LIMITSH. - -Fri Aug 9 11:09:28 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * init.c (scm_boot_guile): Add init_func argument; call - (*init_func) instead of calling scm_appinit; it's ucky to - hard-code names for the user's procedures. - * init.h (scm_boot_guile): Adjust declaration. - - * __scm.h (PROTO): New macro, for declaring functions with - prototypes. - - * init.h (scm_start_stack, scm_restart_stack): Use PROTO; - eliminate all the __STDC__ conditionals. - (scm_boot_guile): Add declaration. - * init.c (scm_start_stack, scm_restart_stack, scm_boot_guile): - Remove __STDC__ conditionals around function definitions; the - declarations in init.h will provide the same information, more - usefully. - - * __scm.h (SCM_SYSMISSING): When we don't have ENOSYS, don't - complain about it in the error message; the error message is - adequate without that note, and there's nothing the user can do - about it. - -Wed Aug 7 14:14:46 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * Makefile.in (ancillary): Drop def.sed. - - * posix.c (scm_init_posix): Use numeric values, rather than - CPP symbols, when defining the scheme values R_OK, W_OK, X_OK, and - F_OK. The symbols aren't available on some systems, and I'm - pretty sure their values are fixed by common widespread practice. - * ioext.c (scm_init_ioext): Code here defined them too; remove it. - - More functions unavailable on some systems. - * configure.in (AC_CHECK_FUNCS): Add ctermid, setpgid, setsid, - tcgetpgrp, tcsetpgrp, and waitpid to the list of functions to - check for. - * configure, scmconfig.h.in: Updated, using autoconf and autoheader. - * posix.c (scm_sys_ctermid, scm_sys_setpgid, scm_sys_setsid, - scm_sys_tcgetpgrp, scm_sys_tcsetpgrp, scm_sys_waitpid): Put the - bodies of these functions in "#ifdef HAVE_MUMBLE" clauses, with a - stub that signals an error as the #else. - - * Makefile.in (ancillary): Drop acconfig-1.5.h; add acconfig.h. - -Wed Aug 7 06:28:42 1996 Gary Houston <ghouston@actrix.gen.nz> - - * Fixes motivated by Petr Adamek <adamek@mit.edu>: - - * unif.c: include ramap.h. - - * read.c (endif): case_insensative_p renamed case_insensitive_p. - - * ramap.h: rename scm_array_copy prototypes to scm_array_copy_x. - - * ports.c: include sys/ioctl.h. - - * scmconfig.h.in: add HAVE_SYS_IOCTL_H. - - * configure.in: check for sys/ioctl.h. - - * ports.c: include <malloc.h> not "malloc.h". - - * mallocs.c: include <malloc.h> not "malloc.h", likewise for unistd.h. - - * fports.c: remove ttyname and tmpnam declarations. - - * posix.c: fewer ttyname declarations. - - * fports.c: include <string.h> not "string.h". - - * init.c, ioext.c: include string.h and unistd.h. - - * gc.c: include <malloc.h> not "malloc.h", likewise for unistd.h. - - * async.c, strings.h, strports.c, struct.c, symbols.c, feature.c, - genio.c, simpos.c, vports.c: include string.h. - - * socket.c, fdsocket.c: include string.h only if HAVE_STRING_H. - - * fdsocket.c (getsockopt, setsockopt): change type of optlen from - scm_sizet to int. - (scm_addr_buffer_size): change type from scm_sizet to int. - (accept, getsockname, getpeername, recvfrom): change type of tmp_size - from scm_sizet to int. - - * error.c: include unistd.h. - - * __scm.h: (SCM_SYSMISSING): another version in case ENOSYS isn't - defined. - - * Makefile.in: remove references to .hd, .cd suffix and __scm.hd. - - * __scm.hd, def.sed: deleted. - -Tue Aug 6 14:49:08 1996 Jim Blandy <jimb@totoro.cyclic.com> - - Changes for NeXT, suggested by Robert Brown. - * configure.in: Call AC_TYPE_MODE_T. - (AC_CHECK_HEADERS): Add libc.h, to get more prototypes on the - NeXT. Put header file list in alphabetical order. - * configure, scmconfig.h.in: Regenerated. - * filesys.c [HAVE_LIBC_H]: #include <libc.h>. - - * filesys.c [HAVE_STRING_H]: #include <string.h>, to get prototype - for strerror. - - * acconfig.h: New file, providing documentation for the CPP - symbols defined in configure.in - * acconfig-1.5.h: Removed; superceded by the above. - -Sat Aug 3 01:27:14 1996 Gary Houston <ghouston@actrix.gen.nz> - - * ioext.c (scm_sys_fdopen): fix the port-table assignment. - - * fports.c (scm_open_file): don't return #f, throw error. - - * ioext.c (fileno): renamed from %fileno. - (soft-fileno): deleted. - - * ports.c (scm_port_revealed): don't need to check for -1 from - scm_revealed_count. - (scm_set_port_revealed_x): return unspecified, not #f. - - * ioext.c (primitive-move->fdes): return #t or #f, not 1 or 0. - - * fdsocket.c: getsockopt, setsockopt: use HAVE_STRUCT_LINGER. - - * scmconfig.h.in: add HAVE_STRUCT_LINGER. - - * configure.in: check for struct linger, set HAVE_STRUCT_LINGER. - -Thu Aug 1 02:58:39 1996 Jim Blandy <jimb@totoro.cyclic.com> - - * filesys.c, posix.c: #include <sys/types.h> before <sys/stat.h>. - This is necessary on Ultrix, and doesn't hurt portability. - - * Makefile.in (dist-dir): New target, implementing a new dist system. - (installed_h_files): Put in alphabetical order. - Remove duplicate entries for markers.h and unif.h. - (c_files): Remove duplicate entries for markers.c. - (ancillary): Renamed from anillery; all uses changed. Remove - PLUGIN; it's a directory, and needs special treatment in dist-dir. - Remove all the ../doc/* files; doc/Makefile.in handles that. - - * Makefile.in (libobjs): Remove duplicate entry for markers.o. - - * Makefile.in (.c.x): Compensate for Ultrix's broken Bourne shell: - every if must have an else, or else the whole command has a - non-zero exit code whenever the if's condition is false. - -Thu Aug 1 08:22:24 1996 Gary Houston <ghouston@actrix.gen.nz> - - * posix.c: include string.h. - -Wed Jul 31 23:43:05 1996 Gary Houston <ghouston@actrix.gen.nz> - - * numbers.c: rename %expt -> $expt, %atan2 -> $atan2, as it must - have been once. - - * posix.c, ioext.c, socket.c, fdsocket.c, files.c, filesys.c, simpos.c: - Remove leading % from scheme names. - Do not return error values, call SCM_SYSERROR or similar. - - * __scm.h (SCM_SYSERROR, SCM_SYSMISSING): new macros. - -Wed Jun 12 00:28:31 1996 Tom Lord <lord@beehive> - - * struct.c (scm_init_struct): new file. - -Fri Jun 7 14:02:00 1996 Tom Lord <lord@beehive> - - * list.c (scm_list_tail): list-cdr-ref is the same as list-tail. - (scm_list_head): added list-head for rapidly chopping argument - lists off of longer lists (and similar). - -Tue Jun 4 09:40:33 1996 Tom Lord <lord@beehive> - - * objprop.c (scm_object_property): assq the cdr of the whash - handle for obj, not the handle itself. - -Mon Jun 3 17:19:30 1996 Tom Lord <lord@beehive> - - * gc.c (scm_mark_weak_vector_spines): Mark the spines (alists) of - weak hash tables last of all marking to avoid an obscure gc bug. - WARNING: circular lists stored in a weak hash table will hose us. - -Fri May 24 09:53:39 1996 Tom Lord <lord@beehive> - - * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x): - new functions similar to scm_substring_move_left_x and - scm_substring_move_right_x. - -Wed May 22 20:07:01 1996 Tom Lord <lord@beehive> - - * init.c (scm_boot_guile): prevent gc with scm_block_gc not - scm_gc_heap_lock! - -Wed May 15 16:13:29 1996 Tom Lord <lord@beehive> - - * ports.c (scm_unread_char): scm_gen_ungetc as a scheme procedure. - -Thu May 9 09:33:17 1996 Tom Lord <lord@beehive> - - * strports.c (scm_strprint_obj): convenience function. C for - (lambda (obj) (call-with-output-string (lambda (p) (write obj p)))) - - * guile-{tcl,tk}.[ch], events.[ch], keysyms.[ch], tcl-channels.[ch] - removed to a separate library - - * init.c (scm_boot_guile): copied from guile-tcl.c. - Initialization specific to tcl interpreters removed. - -Wed May 8 15:07:37 1996 Tom Lord <lord@beehive> - - * ports.c (scm_ports_prehistory): size malloced here doesn't - matter so long as it is non-0 (got rid of "* 4"). - -Tue May 7 11:43:37 1996 Tom Lord <lord@beehive> - - * gscm.h: gscm_mkarray eliminated (presumably was not being used - since its definition was bogus). - -Mon May 6 13:02:56 1996 Tom Lord <lord@beehive> - - * mallocs.[ch]: back again (for rx at least). - -Wed Apr 17 08:54:20 1996 Tom Lord <lord@beehive> - - * ports.c: removed functions relating to the mapping between ports - and descriptors. (That stuff is unix-specific and should be collected - in a separate library). - - * ramap.c (scm_array_copy): return #<unspecified> not #<undefined>. - (Tom Mckay@avanticorp.com) - -Mon Apr 15 14:16:55 1996 Tom Lord <lord@beehive> - - * gc.c (scm_gc_sweep): Immediates in weak vectors were not - handled correctly (SCM_FREEP was applied to them) -- test for - NIMP. Keys in weak hash tables were spuriously (though harmlessly) - being overwritten with #f. (brown@grettir.bibliotech.com) - -Tue Apr 2 22:25:00 1996 Tom Lord <lord@beehive> - - * gc.c (scm_unhash_name): new procedure, unhash-name, flushes glocs - for a specific symbol or for all symbols. - -Mon Apr 1 10:34:55 1996 Tom Lord <lord@beehive> - - * gc.c (scm_gc_mark): mark weak hash tables correctly (was getting weak - keys and weak values confused). - -Thu Mar 14 22:20:20 1996 Tom Lord <lord@beehive> - - * list.c (scm_last_pair): map '()=>'() - -Wed Mar 13 16:43:34 1996 Tom Lord <lord@beehive> - - * pairs.c, hashtab.c, list.c, alist.c append.c, sequences.c: - Generalized assoc and hash-table functions. - Factored pairs.c into multiple files. - -Fri Mar 8 14:44:39 1996 Tom Lord <lord@beehive> - - * gscm.c (gscm_run_scm): got rid of objprop. - -Fri Mar 1 10:39:52 1996 Tom Lord <lord@beehive> - - * genio.c (scm_getc): - NOTE: fgetc may not be interruptable. - - * procprop.c (scm_stand_in_scm_proc): - NOTE: don't use a alist here. - (scm_set_procedure_properties_x): fix type checking throughout this file. - - * gc.c (scm_gc_sweep): free heap segments with free, not must_free. - - * ports.c (scm_remove_from_port_table): adjust scm_mallocated - after freeing part of the port table. - -Thu Feb 29 16:21:17 1996 Tom Lord <lord@beehive> - - * strports.c (scm_mkstrport): - * vports.c (scm_make_soft_port): allocate a port table entry - (possibly triggering gc) before setting the tag of the corresponding - ports handle. - - * pairs.c (scm_delq_x): never throw an error. - - * vectors.c (scm_make_vector): made the default vector fill argument - into '() (much more useful than the previous value, "#unspecified") - -Mon Feb 26 17:19:09 1996 Tom Lord <lord@beehive> - - * ports.c (scm_add_to_port_table): Added fields - to port table entries: file_name, line_num, col. - Update these in open_file, gen_getc and gen_ungetc. - Added procedures to access those fields. - -Sun Feb 25 00:10:36 1996 Tom Lord <lord@beehive> - - * procs.c (scm_make_subr_opt): new entry point for making - anonymous subrs. - -Sat Feb 24 17:11:31 1996 Tom Lord <lord@beehive> - - * gc.h: SCM_STACK_GROWS_UP is now set by autoconf. - -Fri Feb 23 10:26:29 1996 Tom Lord <lord@beehive> - - * numbers.c (scm_exact_p): This function no longer - implements "integer?". - -Thu Feb 22 20:56:16 1996 Tom Lord <lord@beehive> - - * gc.c (scm_gc_end): simulate a signal at the end of each GC. - (scm_gc_stats): return an assoc of useful data. Replaces "room" - and the stats reporting formerlly built into repl. - - * repl.[ch]: removed. - GC statistics keeping moved to gc.c. - Other statistics keeping can be done from Scheme. - REPLS are now written in Scheme. - -Wed Feb 21 10:28:53 1996 Tom Lord <lord@beehive> - - * cnsvobj.c (gscm_is_gscm_obj): new file for old functions (icky - conservatively marked objects). - - * throw.c (scm_ithrow): Unwind up to the right catch during a throw! - - * error.c (scm_init_error): init system_error_sym here, not in repl.c. - - * feature.c (scm_compiled_library_path): moved here from repl.c. - This file is for stuff relating specifically to Scheme libraries - like slib. - - * eval.c (scm_m_define): don't give warning about redefinition, don't - check verbosity. - - NOTE: this should throw a resumable exception with parameters -- - the name, the top-level env, the variable, the definition, #t/#f: redefining builtin? - - * repl.c (scm_gc_begin/end): don't print a message, don't check verbosity. - - * error.c: scm_warn eliminated. - - * read.c (scm_lreadr): extra right paren gets an error, not a warning. - - * repl.c, marksweep.c, gc.c (various): - lose exit_report, growth_mon. - - * gscm.c: got rid of verbosity functions. - -Tue Feb 20 00:19:10 1996 Tom Lord <lord@beehive> - - * throw.c (scm_ithrow): guard against the bad-throw hook changing - between the call to procedurep and use. - - * error.c (scm_everr): - * gc.c (fixconfig): - * gsubr.c (scm_make_gsubr): use exit, not scm_quit. still wrong, - but less so. - - * strports.c: don't reveal the port's string to the caller - because it changes size. - - (stputc stwrite): check/change the strings length with interrupts - blocked. - - * objprop.c (scm_set_object_property_x &c): use the generic - hashing functions and be threadsafe. - - * eval.c (scm_unmemocar): do this operation in a thread-safe way. - (per suggestion jaffer@gnu.ai.mit.edu). - - * mbstrings.c (scm_multi_byte_string): guard against argument list - changing length. - - * strings.c (scm_make_string): loop cleanup - - * unif.c (scm_vector_set_length_x): scm_vector_set_length_x no longer - a scheme function. - - * weaks.c (scm_weak_vector): guard against argument list - changing length. - - * variable.c (scm_builtin_variable): check for/make a built-in - variable automicly. - - * vectors.c (scm_vector): while filling the new array, - guard against a list of fill elements that grows after - the vector is allocated. - - * hashtab.c -- new file: general hash table - functions. hash, hashq, hashv, hashx. - - * tags.h: made wvect an option bit of vector. - -Mon Feb 19 09:38:05 1996 Tom Lord <lord@beehive> - - * symbols.c: made the basic symbol table operations atomic. - - * root.c &c.: collected stack-specific global state. - linum/colnum etc *should* be port-specific state. - - * struct.c (scm_init_struct): init the first struct type during - initialization to fix a race condition. - - * continuations.c (scm_dynthrow): pass throwval in the 'regs' - object, not in a global. - (suggested by green@cygnus, jaffer@gnu.ai.mit.edu) - - * throw.c (_scm_throw): Pass throwval on the stack, not in a global - (suggested by green@cygnus, jaffer@gnu.ai.mit.edu) - - * *.[ch]: namespace cleanup. Changed all (nearly) exported CPP - and C symbols to begin with SCM_ or scm_. - -Sun Feb 18 15:55:38 1996 Tom Lord <lord@beehive> - - * gsubr.c (scm_gsubr_apply): statically allocate the - array of arguments (bothner@cygnus.com). - -Sat Feb 17 20:20:40 1996 Tom Lord <lord@beehive> - - * scmsigs.c: Simplified to use async rountines. - - * async.c: New support for interrupt handlers. - -Thu Feb 15 11:39:09 1996 Tom Lord <lord@beehive> - - * symbols.c (scm_string_to_symbol et al.): number of tweaky changes to - set the multi_byte flag correctly in symbols. This is wrong. - intern_obbary_soft and msymbolize should take an extra parameter. - Also, weird multibyte symbols don't print correctly. - The weird symbol syntax is also a bit bogus (emacs doesn't quite - cope). - -Tue Feb 13 11:39:37 1996 Tom Lord <lord@beehive> - - * symbols.c (scm_string_to_obarray_symbol): obarray == #f means - use the system symhash. == #t means create an uninterned symbol. - -Wed Feb 7 09:28:02 1996 Tom Lord <lord@beehive> - - * strings.c (scm_make_shared_substring): build'em. - It might better to keep a table of these and use one - less cons-pair per shared-substring. - -Tue Feb 6 17:45:21 1996 Tom Lord <lord@beehive> - - * strings.c (scm_string_shared_substring): create shared - substrings. (Doesn't handle mb strings yet). - - * mbstrings.c (scm_print_mb_string): handle RO strings. - - * print.c (scm_iprin1): print substrings as their non-substring - counterparts (dubious). - - * marksweep.c (scm_gc_mark scm_gc_sweep): handle RO and MB - strings. - - * hash.c (scm_hasher): hash RO and MB strings as bytestrings. - - * eval.c (SCM_CEVAL): self-evaluate RO and MB strings. - - * eq.c (scm_equal_p): handle RO and MB strings. - - * symbols.c (scm_string_to_symbol): - (scm_string_to_obarray_symbol): - * strop.c (scm_i_index): - (scm_i_rindex): - (scm_string_null_p): - (scm_string_to_list): - * strings.c (scm_string_length): - (scm_string_ref): - (scm_substring): - (scm_string_append): - * simpos.c (scm_system): - (scm_getenv): - * fports.c (scm_open_file): - * strorder.c (scm_string_equal_p): - (scm_string_ci_equal_p): - (scm_string_less_p): - (scm_string_ci_less_p): - * pairs.c (scm_obj_length): - * mbstrings.c (scm_multi_byte_string_length): - - Use RO string macros for RO strings. - -Tue Jan 30 09:19:08 1996 Tom Lord <lord@beehive> - - * Makefile.in (CFLAGS ALL_CFLAGS): be more standard. - - * strop.c (scm_i_rindex, scm_i_index): Don't use the BSD functions - index/rindex. Do handle embedded \000 characters. - -Sun Jan 28 13:16:18 1996 Tom Lord <lord@beehive> - - * error.c (def_err_response): (int)scm_err_pos => (long)scm_err_pos - Eliminate a (presumed) warning on some systems. - - * gscm.c (gscm_run_scm): SCM_INIT_PATH => GUILE_INIT_PATH - (Mikael Djurfeldt <mdj@nada.kth.se>) - -Sat Jan 27 12:36:55 1996 Tom Lord <lord@beehive> - - * eval.c (scm_map): added argument type checking. - (kawai@sail.t.u-tokyo.ac.jp) - - * gscm.c (gscm_set_procedure_properties_x): parameter "new" => "new_val" - for C++. (Seth Alves <alves@gryphon.com>) - - (gscm_cstr): uses an uninitialized local variable causing - segv. (kawai@sail.t.u-tokyo.ac.jp) - - - * lvectors.c (scm_get_lvector_hook): - In guile-ii, the lvector code was broken. It was fixed in guile-iii. - It seems to me like if it is broken again in guile-iv...Here is a patch. - "! || (LENGTH (keyvec) == 0))" - (From: Mikael Djurfeldt <mdj@nada.kth.se>) - - - * gscm.c (gscm_sys_default_verbosity): - incorrectly declared for non-__STDC__ - (Tom_Mckay@avanticorp.com) - - * ports.c (scm_setfileno): Tweak the macro a bit - to make it easier to port to systems that use - more than a single structure field to hold a descriptor. - - * debug.c (change_mode): Avoid GNUCism "int foo[n];" - Give a warning, not an error, for unrecognized modes. - - * eval.c (SCM_CEVAL): - static char scm_s_for_each[]; - static char scm_s_map[]; - not needed. - - * strings.c (scm_string_p): - static char s_string[]; - (see next entry) - - * struct.c (scm_sys_struct_set_x): - static char s_sys_make_struct[]; - static char s_sys_struct_ref[]; - static char s_sys_struct_set_x[]; - Rearrange code to eliminate those forward decls for the sake of - broken compilers. - - * variable.c (make_vcell_variable): static char s_make_variable[]; - isn't needed. - - * fports.c (scm_port_mode): - chars modes[3] = ""; - to - chars modes[3]; - modes[0] = '\0'; - (Tom_Mckay@avanticorp.com) - - - * pairs.c (scm_set_cdr_x): non-__STDC__ declaration of - scm_cons2(), scm_acons(), and scm_set_cdr_x() missing semicolon - (Tom_Mckay@avanticorp.com) - - * numbers.c (scm_num_eq_p): Non-__STDC__ declaration of - scm_num_eq_p() was scm_equal_p(). - (Tom_Mckay@avanticorp.com) - - * symbols.c (msymbolize): "CHARS(X) = " => "SETCHARS..." - (Tom_Mckay@avanticorp.com) - -Fri Jan 26 14:03:01 1996 Tom Lord <lord@beehive> - - * weaks.c (scm_make_weak_vector): "VELTS(X) =" => "SETVELTS..." - (Tom_Mckay@avanticorp.com) - - * strop.c (scm_substring_fill_x): - Non-__STDC__ declaration of scm_substring_fill_x() missing semicolon - (Tom_Mckay@avanticorp.com) - - * eval.c (SCM_APPLY): variables "debug_info" -> dbg_info. - Works around a compiler bug on some machines. (Tom_Mckay@avanticorp.com) - - * _scm.h (CxR functions): #define CxR SCM_CxR => #define CxR(X) SCM_CxR(X) - Works around a compiler bug on some machines. (Tom_Mckay@avanticorp.com) - - * lvectors.c (scm_lvector_set_x): avoid VELTS (VELTS (...)[..]) which - can turn into an obscure gc bug. - - * chars.c (scm_char_p): fixed PROC call. - - * gscm.h (gscm_vset): use scm_vector_set_x not (the missing) - scm_vector_set. - -Tue Jan 23 13:29:40 1996 Tom Lord <lord@beehive> - - * elisp.c (new file): dynamic scoping and other bits for - elisp. Don't use this yet unless you specificly want to - hack on elisp emulation. - - * dynwind.c (scm_dowinds): When entering or leaving a dynamic - scope created by scm_with_dynamic_bindings_operation_x, swap - the bindings of that scope with the corresponding globals. - - * continuations.c (scm_make_cont): when a continuation is captured, - relocate the continuation stack chunks registered on the wind chain - to the heap. - -Sun Jan 21 19:31:17 1996 Tom Lord <lord@beehive> - - * eval.c (SCM_CEVAL): if the function position evaluates - to a macro, process it accordingly. (Previously, macros were - handled only if the function position was a symbol naming a - variable bound to a macro). - -Sat Jan 20 23:21:37 1996 Tom Lord <lord@beehive> - - * eval.c (scm_m_set): allow multi-variable set! like - (set! x 1 y 2 z 3). - -Wed Dec 6 02:40:49 1995 Tom Lord <lord@beehive> - - * ports.h fports.c vports.c marksweep.c gc.c strports.c: moved the - STREAM of ports into the port table and replaced it with a - port-table index. - - * repl.c (iprin1): added tc7_mb_string -- same as tc7_string. - - * marksweep.c (scm_gc_mark): added tc7_mb_string -- same as tc7_string. - - * mbstrings.c (new file): functions on multi-byte strings. - - * tags.h (scm_typ7_string, scm_typ7_mb_string): added a tag - for multi-byte strings. Moved the string tag. - - * chars.h chars.c repl.c (many functions): made scm_upcase and - scm_downcase functions that are safe for extended character sets. - - Changed the range of integer->char. - - Changed the type of SCM_ICHR. - -Tue May 16 17:49:58 1995 Mikael Djurfeldt <mdj@sanscalc.nada.kth.se> - - * guile.c: Changed init file name from "SCM_INIT_PATH" to - "GUILE_INIT_PATH" - -Sun Aug 6 15:14:46 1995 Andrew McCallum <mccallum@vein.cs.rochester.edu> - - * guile.c (gscm_is_gscm_type): New function. (Without this how will we - know that it's safe to pass an object to gscm_get_type?) - (gscm_get_type): Fix tyop in error message. - - * variable.c (scm_variable_ref): fixed assertion test. - (Robert STRANDH <strandh@labri.u-bordeaux.fr>) - - * gscm.h: fixed several prototypes, notably gscm_vref. - Add gscm_is_eq and temporarily commented out gscm_eq (see - the note in gscm.h near gscm_eq if this change effects your - code). - (Reported by Mark Galassi <rosalia@sstcx1.lanl.gov>) - - * pairs.c (scm_obj_length): see next entry. - - * gscm.h (gscm_obj_length): A way to get an integer - length for lists, strings, symbols (treated as strings), - and vectors. Returns -1 on error. - - * eq.c (scm_equal_p): fixed smob case. - (William Gribble <grib@arlut.utexas.edu>) - - * Makefile.in (X_CFLAGS): defined. - (William Gribble <grib@arlut.utexas.edu>) - - * gscm.h (gscm_2_double): provided now - (reported by Mark Galassi <rosalia@sstcx1.lanl.gov>) - -Tue Jun 13 01:04:09 1995 gnu - * Vrooom! - - +The ChangeLog continues in the file: "ChangeLog-1996-1999" diff --git a/libguile/ChangeLog-1996-1999 b/libguile/ChangeLog-1996-1999 new file mode 100644 index 000000000..d3721d305 --- /dev/null +++ b/libguile/ChangeLog-1996-1999 @@ -0,0 +1,9828 @@ +1999-12-28 Gary Houston <ghouston@arglist.com> + + * posix.c (scm_waitpid): move the HAVE_WAITPID test out of the + procedure body, so that the procedure is left undefined if waitpid + is not available. previously in this case the procedure was + defined but would raise a system-error when called, which is + pointless. I intend to make the same change for other procedures + and deprecate SCM_SYSMISSING and scm_sysmissing. + +1999-12-22 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * feature.c (s_scm_add_hook_x): Call scm_wrong_type_arg instead of + scm_misc_error when add-hook! is passed a procedure of wring + arity. (Thanks to Greg Harvey.) + +1999-12-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * macros.c (scm_make_synt): Use scm_make_subr_opt to make the + transformer subr. (Thanks to Bill Schottstaedt.) + +1999-12-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * objects.c (scm_class_of): Bugfix: Inserted missing SCM_CDR + setting struct table class. + +Sun Dec 19 10:22:34 1999 Greg J. Badros <gjb@cs.washington.edu> + + * threads.c, mit-pthreads.c, list.c, coop.c: Remove K&R + prototypes; just use ANSI C prototypes. I'm not sure how + mit-pthreads.c ever compiled -- it still doesn't for me, but the + normal make procedure does not try to build it anyway (even + --with-threads I get the other threads code building) so I'm not + too worried about it. + +Sat Dec 18 16:58:34 1999 Greg J. Badros <gjb@cs.washington.edu> + + * tags.h (SCM_CONSP, SCM_NCONSP): Define these in terms of + SCM_SLOPPY_CONSP and SCM_SLOPPY_NCONSP. (SCM_CONSP) Define this + in terms of SCM_SLOPPY_NCONSP instead of repeating the + expression. + + * symbols.h (SCM_SLOPPY_SUBSTRP, SCM_SUBSTRP): Added former, and + define latter in terms of sloppy variant. + + * strings.h (SCM_SLOPPY_STRINGP, SCM_STRINGP): Added former, and + define latter in terms of sloppy variant. + + * scm_validate.h (SCM_MAKE_VALIDATE): Added this macro to factor + out the commonality of the various basic SCM_VALIDATE_foop + macros. Use SCM_MAKE_VALIDATE macro where possible. Fix + SCM_VALIDATE_INT_COPY to not use scm_num2ulong -- that does + coercion to an integer which is more advanced than desired and + SCM_NUM2ULONG provides that functionality. Use SCM_ASSERT_RANGE + appropriately for the various _MIN, _MAX, _RANGE macros. Drop + some superfluous "SCM_NIMP &&" where possible. Eliminate obsoleted + SCM_VALIDATE_NIMCONS (SCM_VALIDATE_CONS now does the NIMP test as + part of its SCM_CONSP test). + + * socket.c, ports.c, pairs.c, list.c, lang.c, async.c: Use + SCM_VALIDATE_CONS, not obsoleted SCM_VALIDATE_NIMCONS. + +Sat Dec 18 15:33:05 1999 Greg J. Badros <gjb@cs.washington.edu> + + * dynl.c: Added #include "scm_validate.h" + +Sat Dec 18 15:22:10 1999 Greg J. Badros <gjb@cs.washington.edu> + + * alist.c, chars.c, dynl.c, net_db.c, numbers.c, unif.c: Use + SCM_NUM2ULONG instead of scm_num2ulong; SCM_NUM2LONG instead of + scm_num2long; SCM_WTA instead of scm_wta. Only done for when + FUNC_NAME was used as an argument of the macro and the formal + argument name was the explicit argument in the old function call. + These were just missed in my first pass of changes. + +1999-12-18 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> + + * guile-doc-snarf.in (filename): Strip path to source dir before + touching the .x-files. + +1999-12-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * debug.c (scm_reverse_lookup): Bugfix: Reinserted SCM_NIMP. + + * eval.c (SCM_CEVAL): Removed check for unbound slot in + SCM_IM_SLOT_REF. (This is now handled in a smarter way in GOOPS.) + +1999-12-17 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * tags.h (SCM_SLOPPY_NCONSP, SCM_SLOPPY_CONSP): New macros. + (SCM_ECONSP): Version which doesn't mix && and || without + parenthesis. + (SCM_NECONSP): Bugfree version. + +Fri Dec 17 12:09:11 1999 Greg J. Badros <gjb@cs.washington.edu> + + * tags.h (SCM_ECONSP, SCM_NECONSP): Fix these macros to have the + SCM_NIMP test integrated into an || clause that I'd missed before + and was causing a segfault in the regression tests. + + * symbols.h (SCM_ROUCHARS): Make cast be to (unsigned char *), not + (char *); fixes a problem reported by the regression test + ports.test. + + * ports.c: Fixed a couple of arg/number mismatches in + SCM_VALIDATE_ macros. + + Now passes the (not-comprehensive) guile-modules test-suite again! + +Thu Dec 16 12:41:22 1999 Greg J. Badros <gjb@cs.washington.edu> + + * coop-threads.c: Remove K&R function headers. + + * scm_validate.h: Added SCM_VALIDATE_THREAD. + + * *.c: Remove SCM_NIMP(X) when it is an extraneous pre-test given + that SCM_FOOP macros all now include SCM_NIMP in their expansion. + This simplifies lots of code, making it far more readable. + +Wed Dec 15 19:45:14 1999 Greg J. Badros <gjb@cs.washington.edu> + + * *.h: Use SCM_NIMP(X) && in all the FOOP macros. + + * *.[ch]: Use do { ... } while (0) idiom in macros that expanded + to a bare block. + +Tue Dec 14 10:53:14 1999 Greg J. Badros <gjb@cs.washington.edu> + + * snarf.h: Put SCM_PROC and SCM_PROC1 back in for + backward-compatibility of packages that use Guile. Internally + Guile should not use them, though. (Maybe enforce this with a new + -DBUILDING_GUILE compile-time flag?). + +Tue Dec 14 09:41:01 1999 Greg J. Badros <gjb@cs.washington.edu> + + * backtrace.c (scm_set_print_params_x): Renamed from + set_print_params_x. + + * guile-doc-snarf.in: Use guile-snarf.awk, not + guile-doc-snarf.awk. Pass the basename of $filename + + * load.h: Added prototypes for scm_sys_library_dir, + scm_sys_site_dir. + + * load.c (scm_sys_library_dir, scm_sys_site_dir): Added these + functions, and took out the old scm_library_dir, scm_site_dir, + scm_pkgdata_dir. Now the primitives are %package-data-dir + (already existed), %library-dir, and %site-dir. + + * debug.c: Use SCM_MISC_ERROR when possible instead of using + s_scm_* in a scm_misc_error() call. + + * Makefile.am: Use guile-snarf.awk, not guile-doc-snarf.awk. Make + using guile-doc-snarf send stdout to $@ to create the .x file like + guile-snarf does. + + * guile-snarf.awk.in: Added. + + * guile-doc-snarf.awk.in: Removed (sorry to back out a recent + commit; if we're going to switch to guile-snarf I figure it makes + sense to get this right now-- I'd already had the change in my + working copy when the below commit happened). + +1999-12-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * guile-doc-snarf.awk: Removed. + + * guile-doc-snarf.awk.in: Added. + + * ports.c (s_scm_pt_member): Fixed validation. + + * guile-doc-snarf.in (filename): Use basename in order to strip + away path. + + * debug.c (scm_make_iloc, s_scm_proc_to_mem): Added missing + semicolon. + (scm_memcons, scm_memcons, mem_to_proc): Renamed function name + strings to new form. + + * backtrace.c (set_print_params_x): Fixed GUILE_PROC macro. + + * tags.h (SCM_UNBOUND): New iflag which is needed for some time to + mark the unboundness of a GOOPS slot. (Added now in order to + correct a oversight. Should probably be removed again and + replaced with SCM_UNDEFINED when the corresponding code in GOOPS + is rewritten.) + + * print.c (scm_isymnames): Added printed representation for + SCM_UNBOUND. + + * eval.c (SCM_CEVAL): Bugfix: Added check for unbound slot in + SCM_IM_SLOT_REF. + +Mon Dec 13 17:23:22 1999 Greg J. Badros <gjb@cs.washington.edu> + + * strings.c: Fixed mistaken default value in + scm_make_shared_substring; thanks Eric Moore! + +Mon Dec 13 16:29:13 1999 Greg J. Badros <gjb@cs.washington.edu> + + * guile-doc-snarf.awk: Use sub instead of gsub in ^ anchored + replacement for docstrings. Fixes problem Ryan Yeske observed + with using mawk on his system. Thanks Ryan! + +Mon Dec 13 13:30:06 1999 Greg J. Badros <gjb@cs.washington.edu> + + * guile-doc-snarf.in: Do not echo to stdout since the output now + gets stuck directly in the files instead of redirected from + stdout. + + * guile-doc-snarf.awk: Escape a literal ) -- thanks Ryan + Yeske. Use print instead of printf to prime the .x file since + AIX's cpp has problems with #include-ing empty files (according to + the old guile-snarf.in file). + +Sun Dec 12 19:39:00 1999 Greg J. Badros <gjb@cs.washington.edu> + + * Makefile.am: Fix ETAGS_ARGS to recognize GUILE_PROC, + GUILE_PROC1. Build guile-procedures.txt, and add that file to + pkgdata_DATA. + + * load.c: Added `pkgdata-dir', `site-dir', `library-dir' + primitives. + + * guile-doc-snarf.awk: Drop trailing space when no arguments: + e.g., "(foo )" is now "(foo)". + + * *.c, alist.c: moved all the documentation for primitives from + guile-doc/ref/{appendices,posix,scheme}.texi into the source code. + This leaves about half of the primitives undocumented. Also, all + the markup is currently still texinfo. I don't have a problem + with texinfo per se, but the markup is not very descriptive or + accurate. + +Sun Dec 12 16:50:26 1999 Greg J. Badros <gjb@cs.washington.edu> + + * scm_validate.h: Drop the SCM_DOCSTRING_SNARF for turning off + SCM_VALIDATE macros; the SCM_VALIDATE macros should be checked for + argument mismatches (along with the FUNC_NAME macro checking) by a + static tool that runs directly over the .c files. + + * snarf.h: Handle SCM_REGISTER_PROC better when snarfing. The + docstring is still missing from the .doc file; it just gives the + name of the C function that gets called instead. + + * guile-doc-snarf.awk: Be sure to touch the output files to help + make out. Also handle SCM_REGISTER_PROC better, and change the + output format slightly. + +Sun Dec 12 15:33:40 1999 Greg J. Badros <gjb@cs.washington.edu> + + * snarf.h: Drop SCM_PROC, SCM_PROC1. Added extra output for + guile-doc-snarf script. + + * guile-doc-snarf.in, guile-doc-snarf.awk: New, simple doc + extraction system. Builds foo.x, foo.doc from foo.{c,cc}. + There are dependencies between these files and snarf.h. This + replaces guile-snarf. + + * guile-snarf.in: Drop everything after $$$ for the new snarf.h + macros. This is obsoleted by guile-doc-snarf, but kept here for + now for good measure. + + * Makefile.am: Added guile-doc-snarf, guile-doc-snarf.awk to + bin_SCRIPTS. Added .doc to SUFFIXES, and give rule for creating + .doc files to use guile-doc-snarf. Update the rule for creating + .x files to use guile-doc-snarf. + +Sun Dec 12 12:31:38 1999 Greg J. Badros <gjb@cs.washington.edu> + + * *.c: Finish replacing K&R style prototypes with ANSI C + prototypes. + + * eval.c: Make scm_m_mody's 3rd argument be a const char *, not a + char *. ANSI prototypes caught this. + + * strorder.c: Use GUILE_PROC1 for the couple SCM_PROC1 expansions + that I missed. + + * scm_validate.h: Use SCM_BOOLP for validating bools. Do not + expand macros if SCM_DOCSTRING_SNARF. + +Sun Dec 12 11:23:22 1999 Greg J. Badros <gjb@cs.washington.edu> + + * *.c, srcprop.h: Use SCM_BOOL(f) instead of (f? SCM_BOOL_T: + SCM_BOOL_F) and use SCM_NEGATE_BOOL(f) instead of (f? SCM_BOOL_F: + SCM_BOOL_T). + +Sun Dec 12 11:08:51 1999 Greg J. Badros <gjb@cs.washington.edu> + + * boolean.h: Added SCM_BOOL, SCM_NEGATE_BOOL, SCM_BOOLP to here, + from scm_validate.h. + + * scm_validate.h: Moved above out into boolean.h, fix typo in + SCM_VALIDATE_NIM macro. + +Sun Dec 12 10:29:12 1999 Greg J. Badros <gjb@cs.washington.edu> + + * *.c, scm_validate.h: Use SCM_VALIDATE_NIM, not SCM_VALIDATE_NIMP + (none of the other validate macros have the trailing P). + +Sun Dec 12 10:07:29 1999 Greg J. Badros <gjb@cs.washington.edu> + + * scm_validate.h: Added the FSF copyright to the top. + + * strings.c: Use SCM_ASSERT_RANGE in a couple of places instead of + SCM_ASSERT w/ SCM_OUT_OF_RANGE. + +Sat Dec 11 18:34:12 1999 Greg J. Badros <gjb@cs.washington.edu> + + * Makefile.am: Added scm_validate.h to modinclude_HEADERS. + + * *.c: Pervasive software-engineering-motivated rewrite of + function headers and argument checking. Switched SCM_PROC, + SCM_PROC1 macros to be GUILE_PROC, GUILE_PROC1 (may change names + later, but was useful to keep old versions around while migrate) + that has docstrings and argument lists embedded in the GUILE_PROC + macro invocations that expand into a function header. Use lots of + new SCM_VALIDATE_* macros to simplify error checking and reduce + tons of redundancy. This is very similar to what I did for Scwm. + + Note that none of the extraction of the docstrings, nor software + engineering checks of Scwm is yet added to Guile. I'll work on + that tomorrow, I expect. + + * chars.c: Added docstrings for the primitives defined in here. + + * snarf.h: Added GUILE_PROC, GUILE_PROC1. Added + SCM_REGISTER_PROC to be like old SCM_PROC, though old SCM_PROC + still remains for now. Changed naming convention for the s_foo + string name of the primitive to be s_scm_foo for ease of use with + the macro. + + * scm_validate.h: Lots of new SCM_VALIDATE macros to simplify + argument checking through guile. Maybe some of these should be + folded into the header file for the types they check, but for now + it was easiest to just stick them all in one place. + +1999-12-10 Greg Harvey <Greg.Harvey@thezone.net> (applied --12/10/99 gjb) + + * smob.c (scm_smob_prehistory): initialize allocated smob + + * tags.h: new tag: scm_tc16_allocated + + * gc.c (scm_gc_for_newcell): set the car of the new cell + to scm_tc16_allocated + * pairs.h (SCM_NEWCELL): set the car to scm_tc16_allocated + (scm_gc_mark): mark allocated cells. + +1999-12-09 Greg J. Badros <gjb@cs.washington.edu> + + * strports.h, strports.c (scm_eval_0str): Fix constness. Some + thanks to Dirk Hermann. + + * gh_eval.c (gh_eval_str, gh_eval_file, gh_eval_str_with_catch, + gh_eval_str_with_standard_handler, + gh_eval_str_with_stack_saving_handler): Fix constness. Some + thanks to Dirk Hermann. + + * gh_data.c (gh_str02scm): Fix constness. + + * gh.h: Fix constness of prototypes for the above. + + * vectors.c: Include "unif.h" to avoid a warning about missing + prototype for scm_uniform_element_size(). + +1999-12-09 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * vectors.c (scm_vector_length, scm_vector_ref, scm_vector_set_x): + Turned into primitive generics. + +1999-12-04 Gary Houston <ghouston@freewire.co.uk> + + * ports.c (scm_port_closed_p): new procedure, implements + "port-closed?" suggested by Bernard Urban. + ports.h: added prototype, removed the SCM_P macros. + +1999-11-30 Gary Houston <ghouston@freewire.co.uk> + + * unif.h: added some comments, removed the SCM_P macros. + +1999-11-29 Gary Houston <ghouston@freewire.co.uk> + + * vports.c (sf_write): use scm_makfromstr, not scm_makfrom0str + (thanks to Daniel Skarda). + +1999-11-22 Jim Blandy <jimb@savonarola.red-bean.com> + + * gscm.c, gscm.h: Deleted. They were unused. + +1999-11-20 Gary Houston <ghouston@freewire.co.uk> + + * unif.c (scm_list_to_uniform_array): call + scm_dimensions_to_uniform_array with a third argument of + SCM_UNDEFINED instead of SCM_EOL. + +1999-11-19 Gary Houston <ghouston@freewire.co.uk> + + * the following changes allow guile to be built with the array + "module" omitted. some of this stuff is just tc7 type support, + which wouldn't be needed if uniform array types were converted + to smobs. + + * tag.c (scm_utag_bvect ... scm_utag_cvect): don't define unless + HAVE_ARRAYS. + (scm_tag): don't check array types unless HAVE_ARRAYS. + + * sort.c (scm_restricted_vector_sort_x, scm_sorted_p): + remove the unused array types. + * (scm_stable_sort, scm_sort): don't support vectors if not + HAVE_ARRAYS. a bit excessive. + + * random.c (vector_scale, vector_sum_squares, + scm_random_solid_sphere_x, scm_random_hollow_sphere_x, + scm_random_normal_vector_x): don't define unless HAVE_ARRAYS. + + * gh_data.c (makvect, gh_chars2byvect, gh_shorts2svect, + gh_longs2ivect, gh_ulongs2uvect, gh_floats2fvect, gh_doubles2dvect, + gh_uniform_vector_length, gh_uniform_vector_ref): + don't define unless HAVE_ARRAYS. + (gh_scm2chars, gh_scm2shorts, gh_scm2longs, gh_scm2floats, + gh_scm2doubles): + don't check vector types if not HAVE_ARRAYS. + + * eq.c (scm_equal_p), eval.c (SCM_CEVAL), print.c (scm_iprin1), + gc.c (scm_gc_mark, scm_gc_sweep), objects.c (scm_class_of): + don't support the array types unless HAVE_ARRAYS is defined. + + * tags.h: make nine tc7 types conditional on HAVE_ARRAYS. + + * read.c (scm_lreadr): don't check for #* unless HAVE_ARRAYS is + defined (this should use read-hash-extend). + + * ramap.c, unif.c: don't check whether ARRAYS is defined. + + * vectors.c (scm_vector_set_length_x): moved here from unif.c. call + scm_uniform_element_size if HAVE_ARRAYS. + vectors.h: prototype too. + + * unif.c (scm_uniform_element_size): new procedure. + + * init.c (scm_boot_guile_1): don't call scm_init_ramap or + scm_init_unif unless HAVE_ARRAYS is defined. + + * __scm.h: don't define ARRAYS. + + * Makefile.am (EXTRA_libguile_la_SOURCES): unif.c and ramap.c + moved here from libguile_la_SOURCES. + +1999-11-18 Gary Houston <ghouston@freewire.co.uk> + + * socket.c (scm_htons, scm_ntohs, scm_htonl, scm_ntohl): new + functions for network data conversion. + + * numbers.c (scm_num2long, scm_num2longlong): + throw out-of-range instead of wrong-type-arg if appropriate. + (scm_iint2str): handle -2^31 correctly. + (scm_num2long): handle -2^31 bignum correctly. + (scm_num2long_long): rewrite the bigdig case: basically copied + from scm_num2long. + numbers.h: (SCM_BITSPERLONGLONG): deleted. + + * unif.c (rapr1): use sprintf instead of intprint for unsigned + longs: intprint can't cope with large values. + + * numbers.c (scm_num2ulong): check more consistently that the + input is not negative. if it is, throw out-of-range instead of + wrong-type-arg. + + * ramap.c (scm_array_fill_int): don't limit fill to INUM for + uvect, ivect or llvect. + Check that fill doesn't overflow short uniform array. + + * __scm.h: add another long to the definition of long_long and + ulong_long. + + * unif.c (scm_raprin1): use 'l' instead of "long_long" in the + print representation of llvect. read can't handle more than + one character. + (scm_dimensions_to_uniform_array): make "fill" an optional argument + instead of a rest argument. + + * tags.h (scm_tc7_llvect): wasn't defined anywhere, so use the free + tag 29 for now. + + * __scm.h: don't mention LONGLONGS. + + * unif.c, numbers.c, eq.c, gc.c, print.c, eval.c, ramap.c: + replace LONGLONGS with HAVE_LONG_LONGS as set by configure. + +1999-11-17 Gary Houston <ghouston@freewire.co.uk> + + * net_db.c (scm_inet_aton): throw errors using the misc-error key + instead of system-error. inet_aton doesn't set errno. + system-error isn't right in gethost either, since it's throwing + the value of h_errno instead of errno. so: + (scm_host_not_found_key, scm_try_again_key, + scm_no_recovery_key, scm_no_data_key): new error keys. + (scm_resolv_error): new procedure, use the new keys. + (scm_gethost): call scm_resolv_error not scm_syserror_msg. + +1999-11-16 Gary Houston <ghouston@freewire.co.uk> + + * error.c: (various): use scm_cons instead of scm_listify + to build short lists. + +1999-11-03 Gary Houston <ghouston@freewire.co.uk> + + * socket.c (scm_fill_sockaddr): zero the address structure before + use, in case it has a sin_len field and the OS doesn't like random + values (thanks to Bertrand Petit). + +1999-10-26 Mark Galassi <rosalia@lanl.gov> + + * gh.h, gh_data.c (gh_symbol2scm): changed gh_symbol2scm() to take + a const char * argument, upon suggestion from Lynn Winebarger. + +1999-10-26 Gary Houston <ghouston@freewire.co.uk> + + * strports.c (st_end_input): avoid dubious pointer arithmetic. + +1999-10-24 Gary Houston <ghouston@freewire.co.uk> + + * Move the responsibility for resetting port buffers from the + caller of the ptob seek procedure to the implementation. This + gives more control in general to the ptob seek: in particular the + change of 1999-10-20 can be made to work without breaking seek on + string ports. There's a comment in NEWS about upgrading port + types. + + * ports.c (scm_seek): don't reset the port buffers here. + + * fports.c (fport_seek): reset the buffers, except for the + 0 SEEK_CUR case. + + * strports.c (st_end_input): (bug fix): decrement pt->read_pos by + offset. check that it's not less than read_buf. + (st_seek): reset the buffers first, unless it's the 0 SEEK_CUR + case and currently reading. + +1999-10-20 Gary Houston <ghouston@freewire.co.uk> + + * ports.c (scm_seek): Add a special case for SEEK_CUR, offset 0, + so that unread chars are not needlessly discarded. (thanks to + Roland Orre). + +1999-10-18 Gary Houston <ghouston@freewire.co.uk> + + * fports.c (scm_fdes_to_port): always set rw_random if the fdes is + random access. rw_active needs to be maintained even for single + directional ports, otherwise scm_seek and probably other things are + broken. (thanks to Roland Orre). + + * strports.c (scm_mkstrport): set rw_random to 1 unconditionally. + + * ports.c (scm_add_to_port_table): initialise rw_random to 0. + + * ports.h (scm_port): change the comments on rw_random and rw_active. + +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), + * unif.c (scm_uniform_array_write): use scm_lfwrite. + * ports.c (scm_putc): change type of first argument from int to char. + +1999-08-04 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> + + * eval.c (SCM_CEVAL): Improvements to SCM_IM_DISPATCH and + SCM_IM_HASH_DISPATCH. + + * objects.h (SCM_CLASSF_GOOPS_VALID): Added. + (scm_si_redfined, scm_si_hashsets): Moved. + + * objects.c (scm_class_of): Use the new SCM_CLASSF_GOOPS_VALID + flag which combines type and status info so that the class + redefinition protocol has zero cost during normal execution. + +1999-08-03 Gary Houston <ghouston@easynet.co.uk> + + * ports.h (scm_ptob_descriptor): include a write procedure again. + it's more efficient for unbuffered fports (e.g., sockets.) + + * ports.c (scm_puts): use ptob->write. + * vports.c (scm_make_sfptob): set write proc in ptob. + * strports.c (scm_make_stptob): set write proc in ptob. + * ports.c (write_void_port): new procedure. + * vports.c (sf_write): new procedure. + * ports.c (scm_lfwrite): use ptob->write. + * strports.c (st_write): new procedure. + * fports.c (fport_write): new procedure. + (scm_make_fptob): set write in ptob to fport_write. + * ports.h: prototype for scm_set_port_write. + * ports.c (scm_make_port_type): initialise ptob write procedure. + (scm_set_port_write): new proc. + +1999-08-01 Jim Blandy <jimb@savonarola.red-bean.com> + + * ports.c (scm_char_ready_p): Don't try to find PORT's ptab entry + until we've verified that it is actually a port. (Thanks to + Lorentey Karoly.) + +1999-07-31 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> + + * gc.c (scm_must_malloc, scm_must_realloc): Removed unnecessary + code, particularly an unnecessary test (len != size, where len == + size). (Was this leftovers from debugging code, or have I missed + something profound?) + + * hashtab.c: Bugfix: Don't declare s_hash_fold without storage + size. (Thanks to James Dean Palmer.) + + * numbers.c (scm_makdbl): Bugfix: Initialize imaginary part. + (Thanks to Lorentey Karoly.) + +1999-07-30 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> + + * eval.c (scm_m_expand_body): Use scm_cons_source. + + * struct.c (scm_print_struct): Use vtable name. + + * print.c (scm_init_print): Set name of print state type. + + * stacks.c (scm_init_stacks): Set name of stack type. + +1999-07-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> + + * eval.c (SCM_CEVAL): Removed old implementation of internal + define. + + * gsubr.c, procprop.h (scm_i_inner_name): Removed. + + * debug.c, debug.h (scm_reverse_lookup): Added. + (scm_procedure_name): Use scm_reverse_lookup to lookup the name of + internal procedure definitions; Don't use scm_i_inner_name. + + * eval.c, tags.h, print.c (SCM_IM_SLOT_REF, SCM_IM_SLOT_SET_X): + New isym operations. + + * eval.h: Added prototypes for multi language support functions. + + * eval.c (SCM_IM_DISPATCH, SCM_IM_HASH_DISPATCH): Don't use + improper lists in the low-level representation, since that will + cause a begin to be prepended at macro expansion. + + * eval.c (scm_cons_source): Version of cons which copies source + properties from an existing cell. + (scm_copy_tree, SCM_CEVAL): Use scm_cons_source. + + * debug.c (scm_procedure_source): Cons SCM_IM_LAMBDA onto + procedure source before calling scm_unmemocopy instead of faking + an environment. + +1998-10-25 Marius Vollmer <mvo@zagadka.ping.de> + + Ported `internal defines' fix from SCM. Original ChangeLog entry: + + 1998-07-09 Radey Shouman <radey@colorage.com> + + * eval.c (ceval_1): Modifications to allow rewriting of interal + DEFINE to LETREC: If an ISYM is evaluated in non-tail position the + body of which it is the CAR is macro expanded by m_expand_body, + which rewrites internal DEFINE. + + (m_expand_body): Added. + + (m_macroexp1): Added argument to control error checking: + m_expand_body may speculatively expand forms in the wrong + environments. Made argument number checks conditional on + RECKLESS. + + (m_body): Added, error checks bodies and inserts the ISYM tokens. + + (m_lambda): (m_letstar): (m_letrec1): (m_letrec): (m_let): Now + call m_body. + + (m_cond): (m_case): (m_quote): Modified to avoid destructively + changing their argument forms. Since m_expand_body + speculatively macro expands forms the process must be + reversible. + + (m_ident_eqp): Fixed to use proper environment. + + (renamed_ident): Added DEFER_INTS_EGC. + + Added prototypes for static functions. + + * eval.c + + (undef_cell): New. + + (scm_lookupcar1, scm_lookupcar): Added CHECK argument. When CHECK + is false, do not produce an error for unbound variables, return a + pointer to cell_undef instead. + + (EVALCELLCAR, XEVALCAR): Call scm_lookupcar with check=1. + + (scm_m_body): New. + + (scm_m_cond, scm_m_case, scm_m_quote): Modified to avoid + destructively changing their argument forms. Since m_expand_body + speculatively macro expands forms the process must be reversible. + + (scm_m_lambda): Use scm_m_body instead of bodycheck. Account for + SCM_IM_LET introduced by named lets. + + (scm_m_letstar): Use scm_m_body instead of bodycheck. + + (scm_m_letrec1, scm_letrec): Split scm_letrec into scm_letrec1 and + scm_letrec. scm_letrec1 does not check for a null binding and + takes an additional argument to specify the ISYM of the body. Use + scm_m_body instead of bodycheck. + + (scm_m_let): Use scm_m_body instead of bodycheck. + + (scm_m_expand_body, scm_macroexp): New. + + (unmemocopy): Account for ISYMs introduced by scm_m_body. + + (ceval, deval): Call scm_m_expand_body. Call scm_lookupcar with + check=1. Throw error for internal defined that have not been + rewritten by scm_m_expand_body. + + * eval.h: Added prototypes for scm_m_expand_body and scm_macroexp. + Removed prototype for SCM_APPLY. + + * tags.h: Added extern declaration of scm_isymnames. + +1999-07-27 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> + + * Makefile.am (EXTRA_libguile_la_SOURCES): Added lang.c. + + * lang.c: New file: Beginning of multi-language support. + + * init.c (scm_boot_guile_1): Added call to scm_init_lang (). + + * dynwind.c (scm_dowinds): Removed obsolete wind_key #f case. + (scm_dynamic_wind): Added argument checking for the after guard so + that we don't add garbage on the dynwind chain. + (scm_swap_bindings): Added. + + * tags.h, print.c (SCM_IM_NIL_COND, SCM_IM_NIL_IFY, SCM_IM_T_IFY, + SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY), print.c + (scm_isymnames): New isyms for multi-language support. + + * eval.c (scm_nil, scm_t): New symbols. + (nil-cond, nil-ify, t-ify, 0-cond, 0-ify, 1-ify): New special + forms for multi-language support. + +1999-07-25 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> + + * random.c, random.h (scm_c_default_rstate, scm_c_uniform32): + Added. + Renamed functions in the random function library interface + from scm_i_XXX --> scm_c_XXX. + +1999-07-25 Gary Houston <ghouston@easynet.co.uk> + + * ports.c (scm_putc): fix line-buffering. + +1999-07-25 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> + + * ports.c, ports.h, fports.c, strports.c, vports.c: Renamed + scm_set_ptob_XXX --> scm_set_port_XXX. + +1999-07-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> + + * ports.c, ports.h (scm_make_port_type): New interface for + creation of port types (replaces scm_newptob). Just as for the + smobs, we need to separate the internal representation of smob + types from the interface, so that we easily can add new fields and + rearrange things without caring about backward compatibility. + This change was forced by the need in GOOPS to create classes + representing port types. + (scm_set_ptob_mark, scm_set_ptob_free, scm_set_ptob_print, + scm_set_ptob_equalp, scm_set_ptob_flush_input, scm_set_ptob_close, + scm_set_ptob_seek, scm_set_ptob_truncate, + scm_set_ptob_input_waiting_p): New setters. + (scm_newptob): Rewritten to use scm_make_port_type. For backward + compatibility. + (scm_ptobs): Changed type scm_ptobfuns --> scm_ptob_descriptor. + (scm_prinport): Removed. + (scm_port_print): Added. + (scm_print_port_mode): Added. + (void_port_ptob, print_void_port, close_void_port, noop0): + Removed. Removed #include "genio.h" Added #include "objects.h", + #include "smobs.h" + + * fports.c (prinfport): Moved code from ports.c. + (local_free): Added. + (scm_fptob): Removed. Instead use new interface. + (scm_make_fptob): Added. (Need to create basic ports in a + specific order in ports.c.) + + * strports.c (scm_stptob, prinstpt, noop0): Removed + (scm_make_stptob): Added. + + * vports.c (scm_sfport, prinsfpt, sf_read_flush, noop0): Removed. + (scm_make_sfport): Added. + + * filesys.c (scm_dir_print): Don't use the port printing code. + Instead provide specific directory printer. + + * gc.c (scm_gc_sweep): Use value returned from scm_ptobs[].free. + + * ioext.c (scm_redirect_port): Replaced scm_ptobfuns --> + scm_ptob_descriptor. + + * smob.c (scm_smob_print): Handle non-existing type name nicely. + Removed #include "genio.h" + + * objects.c (scm_make_port_classes): New function ptr. + +1999-07-24 Gary Houston <ghouston@easynet.co.uk> + + * gdbint.c (gdb_print, gdb_read): call scm_truncate_file. + + * ports.c (scm_truncate_file): renamed from scm_ftruncate. + allow the 1st argument to be a fdes or filename as well as a + port (as in the filesys.c version). + + * filesys.c (scm_truncate_file): removed. + +1999-07-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> + + * readline.c, readline.h: Removed. + + * objects.c, objects.h (scm_port_class): Added. + (scm_class_of): Look up port class in scm_port_class. + (SCM_IN_PCLASS_INDEX, SCM_OUT_PCLASS_INDEX, + SCM_INOUT_PCLASS_INDEX): Added. + + + * Makefile.am: Removed genio.c, genio.x. + + * genio.c: Removed. + +1999-07-23 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se> + + * init.c: Make sure that scm_post_boot_init_modules is called only + once. (Important when using a dumped image.; Thanks to Bernard + Urban.) + +1999-07-19 Jim Blandy <jimb@savonarola.red-bean.com> + + * guardians.c (scm_guardian_zombify): Separate scanning for + zombies from marking the pairs of the free list. + + * guardians.c (scm_guardian_zombify): Don't set marks manually --- + use the macros. (Thanks to Michael Livshin.) + + * eval.c (scm_m_lambda): Let bodycheck check the body of the + lambda. Let your sins be purified by the blood of the lambda. + (Thanks to Eric Hanchrow.) + + * net_db.c (h_errno): Don't declare this if it's #defined. Eew. + (Thanks to Valdis Kletnieks.) + + Fixes for EMX from Mikael Ståldal. + + * filesys.c: #include <io.h>, if we have it. + * scmconfig.h.in: Regenerated. + + * stime.c (ftime): Delete declaration for this function --- let + the system supply it. + + Cleanups from John Bley. + + * gdbint.c: Don't include <stdio.h> and "_scm.h" twice. + + * gsubr.c: Don't include "gsubr.h" twice. + + Cleanups for compilation on Irix 6, from David Kaelbling. + + * regex-posix.c (scm_regexp_error_msg): Change `rx' argument to + regex_t pointer. This is what the callers have, mostly. + (scm_regexp_exec): Don't forget to pass the `rx' argument to + scm_regexp_error_msg. + + * scmsigs.c (scm_sigaction): Cast SIG_DFL and SIG_IGN to SCM, not + int. That way, if we get a warning on this line, it's more likely + that we're really missing bits we care about. + + * snarf.h (SCM_CONST_LONG): Remove trailing semicolon from + definition. + + * tags.h (SCM_IMP, SCM_NCONSP, SCM_NCELLP, SCM_ITAG3, SCM_TYP3, + SCM_TYP7, SCM_TYP7S, SCM_TYP16, SCM_TYP16S, SCM_GCTYP16, + SCM_GCMARKP, SCM_GC8MARKP): Don't cast to int. Either SCM or no + cast at all is more appropriate in every case. At the moment, we + assume everywhere that SCM is an integral type anyway. + +1999-07-14 Gary Houston <ghouston@easynet.co.uk> + + * unif.c (scm_uniform_array_read_x), ports.c (scm_getc): increment + read_pos after scm_fill_buffer. + + * ioext.c (scm_do_read_line): simplify by ignoring the fill_buffer + return char. + + * vports.c (sf_fill_buffer), strports.c (stfill_buffer), + fports.c (fport_fill_buffer): implement the interface change. + + * ports.c (scm_fill_buffer): interface change: no longer increments + read_pos past the character that's returned. it seems clearer to + leave it to the caller to decide what to do (thanks Jim). + + * vports.c (sf_fill_buffer): put the read char into the buffer + as well as returning it. + + * ports.c (scm_grow_port_cbuf): residue of this deleted procedure + deleted. + +1999-07-13 Gary Houston <ghouston@easynet.co.uk> + + * strports.c (scm_strprint_obj): simplify. start with initial + buffer size of 0. + (st_seek): don't allow string to be extended if seeking past + the end of a read-only port. + +1999-07-12 Gary Houston <ghouston@easynet.co.uk> + + * strports.c (st_seek): change the resize checks. + + * ports.c (scm_ftruncate): throw error if offset works out negative. + + * strports.c (st_flush): increase string size in blocks of + SCM_WRITE_BLOCK instead of 1. set read_end to read_pos if + it's greater and reset read_buf_size. + (scm_mkstrport): set rw_randow if only writing, since read_buf needs + to be maintained for output ports too (it holds the written + part of the string, while write_buf may have unwritten buffer + chars.) + (st_truncate): rewritten. + (top of file): added a few notes. + +1999-07-10 Jim Blandy <jimb@savonarola.red-bean.com> + + Patch from Greg Badros: + * snarf.h (SCM_PROC, SCM_PROC1): Use __cplusplus or + GUILE_CPLUSPLUS_SNARF macros to force adding a cast to the last + (function pointer) argument to scm_make_gsubr and scm_make_subr + calls. This avoids warnings in C++ programs using guile-snarf. + +1999-07-06 Gary Houston <ghouston@easynet.co.uk> + + * strports.c (st_grow_port): set pt->read_pos. set + pt->read_buf_size one less than pt->write_buf_size if there's + an unwritten char at the end of the string. similarly for + pt->read_end. + (st_resize_port): renamed from st_grow_port. + (st_seek): simplify by assuming that pt->write_pos == pt->read_pos. + seek from read_end instead of write_end for SEEK_END. + (st_ftruncate): calculate current length using readbuf, not write + buf. + (scm_strport_to_string): use read_buf_size for length. + (stfill_buffer): don't re-initialise the readbuf. + +1999-07-05 Gary Houston <ghouston@easynet.co.uk> + + * strports.c (scm_strport_to_string): new procedure. + (scm_call_with_output_string, scm_strprint_obj): use + scm_strport_to_string. + used SCM_INUM0 instead of SCM_MAKINUM (0) in a few places. + +1999-07-08 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se> + + * symbols.c (scm_gensym): Bugfix. (Thanks to Johannes Hjorth.) + +Fri Jun 25 22:14:32 1999 Greg Badros <gjb@cs.washington.edu> + + * smob.c: added scm_make_smob_type_mfpe (), scm_set_smob_mfpe (); + use scm_make_smob_type_mfpe to initialize "free", "flo", "bigpos", + and "bigneg" smob types. + + * smob.h: Add do ... while(0) idiom to SCM_NEWSMOB. Added + SCM_RETURN_NEWSMOB macro. Added protos for new functions in + smob.c. + + * *.c: Use scm_make_smob_type_mfpe, instead of scm_newsmob, and + use SCM_NEWSMOB or SCM_RETURN_NEWSMOB in constructors instead of + SCM_NEWCELL and setting the CAR/CDR by hand. + +1999-07-04 Gary Houston <ghouston@easynet.co.uk> + + * 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. + + * vports.c (sf_read_flush): likewise. + * strports.c (st_read_flush): take offset arg. + * fports.c (local_read_flush): use offset, don't reset putback + buffer here. + + * ports.h (scm_ptobfuns): let read_flush take an offset argument, + which is the number of chars from the putback buffer. + + * ports.c (scm_read_flush): new procedure, resets the putback + buffer before calling the ptob routine. + + * strports.c (scm_strprint_obj): bug fix: get pt from the port, + not from the parameter obj. (Thanks to Eric Moore.) + + * ports.h: SCM_CRDY, SCM_CUC, SCM_CRDYP, SCM_SETRDY, SCM_CUNGET, + SCM_CGETUN, SCM_CLRDY, SCM_TRY_CLRDY, SCM_N_READY_CHARS: deleted. + + * strings.c (scm_make_string): throw error if 2nd arg isn't + a char. + + * unif.c (scm_uniform_array_read_x): fix reading from a port. + allow non-fports. + (scm_uniform_array_write): likewise. + +1999-06-29 Gary Houston <ghouston@easynet.co.uk> + + * ports.c (scm_drain_input): rewritten. + + * fports.c (local_fclose): check putback_buf. + (local_read_flush): likewise. + + * ports.c (scm_remove_from_port_table): maybe free putback_buf. + + * ports.h (scm_port): replace cbuf/cbufend/cp with putback_buf/ + putback_buf_size. + (SCM_INITIAL_PUTBACK_BUF_SIZE): renamed from SCM_INITIAL_CBUF_SIZE. + + * ports.c (scm_grow_port_cbuf): deleted. + (scm_add_to_port_table): initialise putback_buf to 0. remove cbuf + stuff. + (scm_char_ready_p): check putback_buf + (scm_fill_buffer): likewise. + (scm_ungetc): rewritten. + +1999-06-27 Gary Houston <ghouston@easynet.co.uk> + + * fports.c (local_fclose): account for push-back buffer. + + * ports.c (scm_char_ready_p): check the push-back buffer in + a new way. + + * ioext.c (scm_do_read_line): remove the extra code to handle + the push-back buffer. + + * ports.c (scm_getc): don't use SCM_CRDYP etc. + + * ioext.c (scm_do_read_line): call scm_fill_buffer. + + * ports.c (scm_ungetc): don't call SCM_CUNGET. reset the + read buffer pointers. + scm_fill_buffer: new procedure. + (scm_getc): call scm_fill_buffer. + + * ports.h (struct scm_port): saved_read_buf, saved_read_pos, + saved_read_end: new fields. + +1999-06-24 Mikael Djurfeldt <mdj@orjan.nada.kth.se> + + * dynl-dl.c (sysdep_dynl_link): Added parenthesis around the + trinary conditional in order for the flag computation to be + correct. + +1999-06-23 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se> + + * struct.c, struct.h: + + In order to support different kinds of deallocation, a destructor + slot has been added to struct vtables. This allows for structs + containing pointers to other memory blocks. + + (scm_struct_i_free): New hidden struct slot. Holds destructor for + instances to this vtable. + (scm_struct_free_0): New destructor: Doesn't deallocate data. + (scm_struct_free_light): New destructor: Deallocates a light + struct (i.e. a struct without hidden slots). + (scm_struct_free_standard): New destructor: Deallocates standard + structs. + (scm_struct_free_entity): New destructor: Deallocates entity + structs. + (SCM_SET_VTABLE_DESTRUCTOR): New macro. + + Changes to hidden slots: + + (scm_struct_i_size): scm_struct_i_flags now shares space with + scm_struct_i_size which holds the size of light structs. + (scm_struct_i_n_words): This slot has changed meaning. Previously + it included hidden slots. Now it indicates visible slots. + (scm_alloc_struct): Clear flags. + (SCM_STRUCTF_MASK): 4 new flag positions added => 12 bits. + + (struct_num, scm_struct_i_tag): Removed. + (scm_struct_vtable_tag): Base tag on the pointer to mallocated + memory. + (scm_struct_ihashq): Base hash value on pointer to struct handle. + + * tag.c (scm_tag): Base tag on vtable pointer. + + * objects.c (scm_init_objects): Initialize destructor slot of the + primordial entity class. + + * objects.h (SCM_SET_CLASS_DESTRUCTOR, + SCM_SET_CLASS_INSTANCE_SIZE): New macros. + + * gc.c (scm_gc_sweep): Call struct free slot. + + * keywords.c, keywords.h (scm_c_make_keyword): New function. + (We should remove the use of the prefix '-'.) + + * snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): New macros. + + * libguile.h: #include "objects.h" + +1999-06-22 Marius Vollmer <mvo@zagadka.ping.de> + + * dynl.c (DYNL_GLOBAL): New. + (sysdep_dynl_link): Added `flags' argument. + (kw_global, sym_global): New. + (scm_dynamic_link): Handle keyword arguments. Pass suitable flags + to sysdep_dynl_link. + * dynl-dl.c (sysdep_dynl_link): Handle new `flags' argument by + conditrionally adding RTLD_GLOBAL to DLOPEN_MODES. + * dynl-shl.c (sysdep_dynl_link): Add and ignore new flags + argument. + * dynl-dld.c (sysdep_dynl_link): Add and ignore new flags + argument. + * dynl.h (scm_dynamic_link): Added rest argument. + +1999-06-21 Marius Vollmer <mvo@zagadka.ping.de> + + * dynl.c (sysdep_dynl_unlink, sysdep_dynl_func): Use const + qualifier for char* argument, to match prototypes. Thanks to Mark + Elbrecht. + +1999-06-21 Jim Blandy <jimb@savonarola.red-bean.com> + + * dynl.c (no_dynl_error, sysdep_dynl_link, sysdep_dynl_unlink, + sysdep_dynl_func): Use ANSI declarations, and const char * + pointers. (Thanks to Mark Elbrecht.) + +1999-06-19 Jim Blandy <jimb@savonarola.red-bean.com> + + Patch from Greg Harvey: + * eq.c, eval.c, list.c, ramap.c, vectors.c: Always write parens + around the condition of an `if', `while', etc., even if the + condition is a macro invocation that expands to something + surrounded by parens. It's more readable. + + * eval.c (scm_map, scm_for_each): Verify that all arguments are + proper lists, and of the appropriate lengths. + (check_map_args): New function. (Thanks to Greg Harvey for the + bug report.) + +1999-06-19 Michael Livshin <mike@olan.com> + + * guardians.c (guardian_t): `next' - new field to be used for + chaining the live guardians in a single-linked list during the GC + mark phase. + (GUARDIAN_NEXT): convenience macro to access the `next' field. + (guardians, guardians_size, n_guardians): deleted. + (first_live_guardian, current_link_field): new globals used to + point to the head of the live guardian list and current `next' + field, respectively. + (g_mark): append the guardian to the live guardian list. + (scm_guardian_gc_init): zero the live guardian list. + (scm_guardian_zombify): iterate through the live guardian list. + + (Applied by Jim Blandy.) + +1999-06-16 Jim Blandy <jimb@savonarola.red-bean.com> + + * gc.c (scm_mallocated): Just make this signed. + (scm_igc): Check for underflow by seeing if this is negative. + Much cleaner. + * gc.h (scm_mallocated): Fix declaration. + (Thanks to Greg Harvey.) + + * ports.h: #include <sys/types.h>, to get a definition for `off_t'. + +1999-06-15 Jim Blandy <jimb@savonarola.red-bean.com> + + * stime.c (bdtime2c): Initialize lt->gmtoff and lt->tm_zone from + sbd_time. (Thanks to Eric Hanchrow.) + + Fix from Ken Raeburn <raeburn@raeburn.org>: + * weaks.c (scm_make_weak_vector): Add another extra slot before + vector contents, to be used only during garbage collection. + * weaks.h (SCM_WVECT_GC_CHAIN): New macro to access it. + * gc.c (scm_weak_vectors): Now a SCM instead of a SCM*, and now + static. + (scm_weak_size, scm_n_weak): Deleted. + (scm_igc): Use SCM_WVECT_GC_CHAIN to build up a chain of weak + vectors without allocating new storage during GC, using + scm_weak_vectors as the head of the chain. + (scm_mark_weak_vector_spines): Walk SCM_WVECT_GC_CHAIN chain + instead of stepping through an array. + (scm_gc_sweep): Update offset used to find start of weak vector to + free it. + (scm_init_storage): Set scm_weak_vectors to EOL. + + Fix from Ken Raeburn <raeburn@raeburn.org>: + * gc.c (already_in_gc): New variable. + (scm_igc): Set and clear already_in_gc; abort if it's set at + entry. + +1999-06-14 Jim Blandy <jimb@savonarola.red-bean.com> + + Fix from Gary Houston: + * fports.c (local_seek): Signal an error if the seek fails. + * ports.c (scm_lseek): Don't check return value of port's seek + function; it's its job to signal an error if there's a problem. + +1999-06-12 Jim Blandy <jimb@savonarola.red-bean.com> + + * strports.c (scm_call_with_output_string): Don't include the + extra character at the end of the string in the result. + + * ioext.c (scm_read_line): Switch to reading properly. + + * fports.c, fports.h, gc.c, gdbint.c, ioext.c, ports.c, ports.h, + scmsigs.c, strports.c, vports.c: Install the sources which + actually correspond to the changes described below. I got the + ChangeLog entries and the patch from two different places... + +1999-06-09 Jim Blandy <jimb@savonarola.red-bean.com> + + * gc.c (scm_igc): Check for scm_mallocated underflow. Otherwise, + it shows up as terrible performance, as we GC constantly. + + * ioext.c (scm_do_read_line): Rewritten to use memchr to find the + newline. A bit faster, and definitely hairier. + (scm_read_line): Count newlines here instead. + + * strings.c (scm_take_str): New function. + (scm_take0str): Reimplement in terms of scm_take_str. * strings.h + (scm_take_str): New declaration. * ioext.c (scm_read_line): Use + scm_take_str, to avoid copying the string. + + Add some simple-minded support for line buffered ports. + * 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 + buffering. + (scm_putc, scm_puts, scm_lfwrite): If the port is line-buffered, + and there's a newline to be written, flush the port. + + Gary Houston's open-buffer port patches: + + 1999-04-26 Gary Houston <ghouston@easynet.co.uk> + + * ports.c: (scm_lseek): clear buffers even if just reading current + position. + + * fports.c (local_fclose): call local_fflush unconditionally. + (various): don't use the scm_must... memory procs. + + 1999-04-25 Gary Houston <ghouston@easynet.co.uk> + + * ports.h (scm_port): make read_pos a pointer to const. + strports.c: take care of rw_active and rw_randow. + fports.c: scm_fport_drain_input: removed. do it all in ports.c. + strports.c (scm_mkstrport): check that pos is reasonable. + ioext.c (scm_ftell, scm_fseek): use lseek. + (SCM_CLEAR_BUFFERS): macro deleted. + ioext.c (redirect_port: use ptob fflush, read_flush. + ports.h (scm_ptobfuns): add ftruncate. + ports.c (scm_newptob): set ftruncate. + adjust ptob tables. + 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. + ports.c (scm_init_ports): initialise the seek symbols here + instead of in ioext.c. + strports.c (scm_call_with_output_string): start with an empty + string, so seek and ftruncate can be used. + + gdbint.c: adjust string port usage. + + 1999-04-24 Gary Houston <ghouston@easynet.co.uk> + + * ports.h (scm_ptobfuns): add a read_flush procedure which is the + equivalent to fflush for the read buffer. + * ports.c (scm_newptob): set read_flush. + ports.c (void_port_ptob): set read_flush. + fports.c (local_read_flush): new proc. add to ptob. + strport.c (st_read_flush): likewise. + vport.c (sf_read_flush): likewise. + fports.h (struct scm_fport): remove random member. there's nothing + left but fdes. leaving it as a struct to allow for future changes. + fports.c: replace usage of scm_fport::random with scm_port::rw_random. + ports.c: (scm_putc, scm_puts, scm_lfwrite): call the read_flush + ptob proc if the read buffer is filled. + + 1999-04-23 Gary Houston <ghouston@easynet.co.uk> + + * ports.h (scm_port): add a rw_random member and replace + reading and writing members with rw_active member. + SCM_PORT_READ/SCM_PORT_WRITE: new values. + + 1999-04-22 Gary Houston <ghouston@easynet.co.uk> + + * ports.h (struct scm_port_table): add writing and reading members + to replace write_needs_seek: it isn't good enough for non-fports. + ports.c, ioext.c, fports.c: corresponding changes. + (struct scm_port_table): give it a typedef and rename to scm_port. + ports.c, fports.c, strports.c, vports.c, ioext.c, ports.h: + corresponding changes. + + 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 + and generalised to all port types. + + 1999-04-18 Gary Houston <ghouston@easynet.co.uk> + + * scmsigs.c (scm_init_scmsigs): set the SA_RESTART flag for all + signals (it was only being done for handlers installed from Scheme). + Otherwise (for example) SIGSTOP followed by SIGCONT on an interpreter + waiting for input caused an EINTR error from read. + + 1999-04-07 Gary Houston <ghouston@easynet.co.uk> + + * ports.h (struct scm_port_table): make all the char members + unsigned, so they convert to int without becoming negative if large. + + 1999-03-14 Gary Houston <ghouston@easynet.co.uk> + + * fports.c (scm_fdes_wait_for_input): forgot to check compilation + with threads enabled. rename this procedure to + fport_wait_for_input and take a port instead of a fdes. + use scm_fport_input_waiting_p instead of scm_fdes_waiting_p. + + * readline.c (scm_readline): Applied a patch from Greg Harvey to + get readline support working again: use fdopen to get FILE objects. + + 1999-02-26 Gary Houston <ghouston@easynet.co.uk> + + * gc.c (scm_init_storage): install an atexit proc to flush the + ports. + (cleanup): the new proc. it sets a global variable which can be + checked by the ptob flush procs to avoid trying to throw + exceptions during exit. not very pleasant but it seems more reliable. + * fports.c (local_fflush): check terminating variable and if set + don't throw exception. + * CHECKME: that the atexit proc is installed if unexec used. + + * throw.c (scm_handle_by_message): don't flush all ports here. + it still causes bus errors. + + * fports.h (SCM_FPORT_CLEAR_BUFFERS): rename to SCM_CLEAR_BUFFERS + and move to ioext.c. + + * fports.c (scm_fdes_waiting_p): merged into fport_input_waiting_p. + + * ports.c (scm_char_ready_p): check the port buffer and call the + ptob entry if needed. + + * ports.h (scm_ptobfuns): input_waiting_p added. change all the + ptob initialisers. use it in char-ready + + * ioext.c (scm_do_read_line): moved from ports.c. make it static. + + * vports.c (sfflush): modified to write a char (since softports + currently use shortbuf.) + + * fports.c (scm_standard_stream_to_port): moved to init.c and + made static. + + * init.c (scm_init_standard_ports): make stdout and stderr + unbuffered if connected to a terminal. with stdio they + were line-buffered by default. + + (scm_ptobfuns): fputc, fputs, fwrite, fgetc, fgets removed. + update ptob tables. + + * ports.h (scm_ptobfuns): change fflush return to void. + change flush proc definitions. + + * strports.c (scm_call_with_output_string): get size from + buffer instead of port stream. + (st_flush): new proc. + + * ports.h (struct scm_port_table): added write_end member, + as an optimisation. set it where write_buf_size is set. + + * ports.h (struct scm_port_table): change stream from void * + back to SCM. SCM presumably must be large enough to hold a + pointer (and probably vice versa but who knows.) + (SCM_SSTREAM): deleted. change users back to SCM_STREAM. + + (scm_puts): rewritten + * fports.c (local_ffwrite, local_fputs): removed. + * strports.c (stputc, stputs, stwrite): dyked out (FIXME) + * vports.c (sfputc, sfputs, sfwrite) likewise. + * ports.c (write_void_port, puts_void_port): removed. + (putc_void_port, getc_void_port, fgets_void_port): likewise. + + * ports.c (scm_lfwrite): rewritten using fport.c version. + + * fports.c (local_fputc): deleted. + + * ports.c (scm_add_to_port_table): initialise write_needs_seek. + + * ports.h (scm_ptobfuns): add seek function pointer. + * fports.c: set it to local_seek, new procedure. + + + * fports.h (SCM_MAYBE_DRAIN_INPUT): moved to ports.c. + use ptob for seek. take ptob instead of fport arg. + + * ports.h (struct scm_port_table): new member write_needs_seek, + replaces reading member in fport struct. + + * vports.c (sfgetc): store the getted char into the buffer. + rename to sf_fill_buffer and install it for fill-buffer in ptob. + the Scheme interface is still a procedure that gets a char. + (scm_make_soft_port): set up the port buffer (shortbuf). + + * fports.c (local_fgetc, local_fgets): deleted. + * strports.c (stgetc): likewise. + * ports.c: scm_generic_fgets: likewise. + + * ports.h (scm_ptobfuns): add fill_buffer. + * ports.c (scm_newptob): assign it. + * strports.c (scm_mkstrport): set up the buffer. + put just the string into the stream, not cons (pos stream). + (stfill_buffer): new proc. + + * ports.h: fport buffer moved into port table: to be + used for all port types. + + 1998-12-20 Gary Houston <ghouston@easynet.co.uk> + + * throw.c (scm_handle_by_message): flush ports at exit. + + * socket.c (scm_sock_fd_to_port): use scm_fdes_to_port. + (scm_getsockopt, scm_setsockopt, scm_shutdown, scm_connect, + scm_bind, scm_listen, scm_accept, scm_getsockname, + scm_getpeername, scm_recv, scm_send, scm_recvfrom, + scm_sendto, + use SCM_FPORT_FDES. use SCM_OPFPORTP not SCM_FPORTP. + + * posix.c (scm_getgroups): use SCM_ALLOW/DEFER_INTS. + (scm_ttyname): use SCM_FPORT_FDES. + (scm_tcgetpgrp, scm_tcsetpgrp): likewise. + + * filesys.c (scm_chown): use SCM_FPORT_FDES. + (scm_chmod, scm_stat, scm_truncate_file: likewise. + + * ioext.c (scm_isatty_p): use SCM_FPORT_FDES. + (scm_fdes_to_ports): modified. + (scm_fdopen): use scm_fdes_to_port. + + * ports.c (scm_init_ports): don't try to flush ports using + atexit(). it's too late, errors will cause SEGV. + + * fports.c (scm_fport_buffer_add): new procedure. + + * fports.h (SCM_FDES_RANDOM_P): new macro. use it in + scm_fdes_to_port and scm_redirect_port. + + * ioext.c (scm_redirect_port): use setvbuf to set buffers in the + new port. reset fp->random. + + * 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, + derive buffer size from fdes or use a default. + (scm_fdes_to_port): use setvbuf instead of creating the buffers + directly. + + vports.c (various places): use SCM_SSTREAM. + strports.c: likewise. + * gdbint.c: likewise. + * ports.h (SCM_SSTREAM): new macro. + + * fports.c (scm_input_waiting_p): use scm_return_first, since port + may be removed from the stack by the tail call to scm_fdes_waiting_p. + + * fports.h (SCM_CLEAR_BUFFERS): new macro. + + * filesys.c (scm_fsync): use SCM_FDES. + + * 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). + + * fports.h (SCM_FPORT_FDES): new macro. + + * filesys.c (scm_fcntl): get fdes from fport. + (set_element, get_element): likewise. + + * vports.c (sfflush): don't need to set errno. + + * ports.c: install scm_flush_all_ports to be run on exit. + + * filesys.c (scm_open): adjust port_mode for O_APPEND and O_CREAT. + + ports.c fports.c ioext.c posix.c socket.c net_db.c filesys.c: + removed all uses of SCM_DEFER/ALLOW ints for now. they were mainly + just protecting errno. some may need to be put back. + + * scmsigs.c (take_signal): save and restore errno while this + proc runs. + + *fports.c (print_pipe_port, local_pclose, scm_pipob): deleted. + 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. + + * ioext.c (scm_primitive_move_to_fdes): use fport. + * fport.c (scm_fport_fill_buffer): flush write buffer if needed. + change arg type from scm_fport to SCM port. + fport.h (SCM_SETFDES): removed. + (SCM_MAYBE_DRAIN_INPUT): new macro. + + * fport.h (struct scm_fport): added 'random'. + fport.c (scm_open_file): set random if lseek works. + + * ioext.c (scm_dup_to_fdes): use SCM_FSTREAM. + (scm_ftell): always use lseek and account for the buffer. + (scm_fileno): use fport buffer. + (scm_fseek): clear fport buffers. always use lseek. + + * posix.c (scm_pipe): use fport buffer. + * unif.c: include fports.h instead of genio.h. + * fports.c (scm_fdes_wait_for_input, scm_fport_fill_buffer): new + procedures. + (local_fgetc): use them. + (local_ffwrite): use buffer. + (local_fgets): use buffer. + (scm_setbuf0): 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_stdio_to_port): deleted. + fports.h (struct scm_fport): add shortbuf member to avoid separate + code for unbuffered ports. + (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP, SCM_OPOUTFPORTP): moved + from ports.h. + + * genio.c, genio.h: move contents into ports.c, ports.h. The + division wasn't useful. + + * fports.c, fports.h (scm_fport_drain_input): new procedure. + * ports.c (scm_drain_input): call scm_fport_drain_input. + * scm_fdes_waiting_p: new procedure. + * fports.c (scm_fdes_to_port): allocate read and/or write buffers. + (scm_input_waiting_p): check the buffer. + (local_fgetc, local_fflush, local_fputc): likewise. + + * fports.h (scm_fport): read/write_buf,_pos,_buf_end,,_buf_size: + new members. + * init.c (scm_init_standard_ports): pass fdes instead of FILE *. + + * 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. + (local_fputc, local_fputs, local_ffwrite): use write, not stdio. + (scm_standard_stream_to_port): change first arg from FILE * to + int fdes. + (local_fflush): flush fdes, not FILE *. + * fports.h (SCM_NOFTELL): removed. + * genio.c, ports.c: don't include filesys.h. + * genio.c (scm_getc): don't use scm_internal_select if FPORT. + do it in fports.c:local_fgetc. + * genio.c: don't use SCM_SYSCALL when calling ptob procedures. + do it where it's needed in the port smobs. + * filesys.c (scm_input_waiting_p): moved to fports.c, stdio + buffer support removed. take SCM arg, not FILE *. + * filesys.h: prototype moved too. + * fports.c (scm_fdes_to_port): new procedure. + (local_fgetc): use read not fgetc. + (local_fclose): use close, not fclose. + (local_fgets): use read, not fgets + * fports.h: prototype for scm_fdes_to_port. + * fports.h (scm_fport): new struct. + * fports.c (scm_open_file): use open, not fopen. + #include fcntl.h + * ports.h (struct scm_port_table): change stream from SCM to void *. + * ports.c (scm_add_to_port_table): check for memory allocation error. + (scm_prinport): remove MSDOS hair. + (scm_void_port): set stream to 0 instead of SCM_BOOL_F. + (scm_close_port): don't throw errors: do it in fports.c. + +1999-06-04 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se> + + * numbers.c: Added #include "feature.h". + +1999-05-23 Mikael Djurfeldt <mdj@barbara.nada.kth.se> + + * smob.c, smob.h (scm_make_smob_type): New interface to smob + types (supersedes scm_newsmob). + (scm_set_smob_mark, scm_set_smob_free, scm_set_smob_print, + scm_set_smob_equalp): New functions. Sets smob functions. + (SCM_NEWSMOB): New macro. Creates smob objects. + (scm_make_smob): New function. Creates smob objects and + mallocates memory. + (scm_smob_free, scm_smob_print): Default free and print + functions. + + * Makefile.am: Removed markers.c, markers.x, markers.h. + + * markers.c, markers.h: Removed. (Contents moved to smob.c, + smob.h.) + + * arbiters.c, async.c, regex-posix.c: Use new smob interface. + + * eval.c, fports.c, libguile.h, ports.c: Removed #include + "markers.h". + + * fluids.c, guardians.c, srcprop.c, threads.c: Added #include + "genio.h". + + * regex-posix.c, regex-posix.h: Renamed scm_tc16_regex_t --> + scm_tc16_regex. + +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, + 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 + this finding! :) Preliminary dating suggests an almost 4 year old + remnant from the SCM ancestor. The sample has been removed from + the finding site and is now safely stored in the repository. + + * numbers.h: Removed prototype for num2long. + + * unif.c (scm_array_set_x): Use scm_num2long instead of num2long. + + * gh_data.c (gh_scm2doubles): Make it possible to pass result + array as second arg. + (gh_chars2byvect, gh_shorts2svect, gh_floats2fvect, gh_scm2chars, + gh_scm2shorts, gh_scm2longs, gh_scm2floats): New functions. + * gh.h: Updated and added prototypes. + + * gh_data.c (gh_ints2scm): Handle integers outside INUM limits. + +1998-10-24 Jim Blandy <jimb@zwingli.cygnus.com> + + * gc.h: Remove all uses of SCM_P. (Thanks to Richard Polton.) + + * guile-snarf.in: Never generate an empty file. (Thanks to + Richard Polton.) + + * gh.h (gh_enter, gh_new_procedure0_0, gh_new_procedure0_1, + gh_new_procedure0_2, gh_new_procedure1_0, gh_new_procedure1_1, + gh_new_procedure1_2, gh_new_procedure2_0, gh_new_procedure2_1, + gh_new_procedure2_2, gh_new_procedure3_0, gh_new_procedure4_0, + gh_new_procedure5_0): Specify argument types, to appease C++ + compilers. (Thanks to Brad Bowman.) + + Bug reports from Russ McManus: + * guile-snarf.in: If the CPP environment variable is set, use that + as the C preprocessor, instead of the preprocessor autoconf + found. + * snarf.h (SCM_PROC): Cast the function pointer passed to + scm_make_gsubr, to satisfy C++. + + * gh_eval.c (gh_eval_str_with_catch, gh_eval_file_with_catch): + Use the handler passed, instead of ignoring it and using + gh_standard_handler. (Thanks to Etienne Bernard.) + +1998-10-20 Jim Blandy <jimb@zwingli.cygnus.com> + + * ports.h: Put text after #endif in comment. (Thanks to Nicolas + Neuss.) + +1998-10-19 Jim Blandy <jimb@zwingli.cygnus.com> + + * __scm.h, alist.c, async.c, async.h, backtrace.h, chars.c, + continuations.c, debug.c, debug.h, dynl-dl.c, dynl.c, dynl.h, + dynwind.c, dynwind.h, eq.c, error.c, error.h, eval.c, eval.h, + feature.c, filesys.c, filesys.h, fports.c, fports.h, gc.c, gc.h, + genio.c, genio.h, gh.h, gh_data.c, gsubr.c, gsubr.h, hash.c, + hashtab.c, init.c, init.h, ioext.c, ioext.h, kw.c, libguile.h, + list.c, list.h, load.c, load.h, mallocs.c, markers.c, + mit-pthreads.c, net_db.c, numbers.c, numbers.h, options.c, + ports.c, ports.h, posix.c, posix.h, print.c, print.h, procprop.c, + procprop.h, procs.c, procs.h, ramap.c, ramap.h, regex-posix.c, + regex-posix.h, root.c, root.h, scmsigs.c, scmsigs.h, script.c, + script.h, simpos.c, simpos.h, smob.c, smob.h, snarf.h, socket.c, + srcprop.c, stackchk.c, stackchk.h, stacks.c, stime.c, stime.h, + strings.c, strings.h, strports.c, struct.c, struct.h, symbols.c, + symbols.h, tags.h, threads.c, throw.h, unif.c, variable.c, + vectors.c, vectors.h, version.h, vports.c, weaks.c: Update + copyright years. + + * script.c (scm_compile_shell_switches): Define + use-emacs-interface in the root module, so the repl code can see + it. See today's change to top-repl in ice-9/boot-9.scm. + + * filesys.c (set_element, get_element): Make sure that `element' + is a cell before applying SCM_FPORTP to it. (Thanks to Jost + Boekemeier and Jorgen "forcer" Schaefer.) + +1998-10-18 Jim Blandy <jimb@zwingli.cygnus.com> + + * chars.c (scm_charnames): In ASCII character name table, make + newlines print as #\newline by default, not #\nl. + + * Makefile.am (libguile_la_SOURCES, BUILT_SOURCES): Put these in + alphabetical order. Oh thrills. But it helps me know how far + along in the compilation I am. + * Makefile.in: Regenerated. + +1998-10-18 Mikael Djurfeldt <mdj@barbara.nada.kth.se> + + * unif.c (scm_raprin1): Changed print syntax for byte vectors from + #bytes(...) to #y(...), and syntax for short vectors from + #short(...) to #h(...). This may seem nutty, but, like the other + uniform vectors, byte vectors and short vectors want to have the + same print and read syntax (and, more basic, want to have read + syntax!). Changing the read syntax to use multiple characters + after the hash sign breaks with the conventions used in R5RS and + the conventions used for the other uniform vectors. It also + introduces complexity in the current reader, both on the C and + Scheme levels. (The Right solution is probably to change the + syntax and prototypes for uniform vectors entirely.) + +1998-10-17 Jim Blandy <jimb@savonarola.red-bean.com> + + Don't use local_fgets on sockets; ftell doesn't work on sockets. + (Thanks to Jorgen "forcer" Schaefer.) + * ports.h (SCM_NOFTELL): New flag. + * fports.c (local_fgets): If it's set, use the generic fgets. + * socket.c (scm_socket): Set SCM_NOFTELL on the ports we produce. + +1998-10-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se> + + * script.c (scm_compile_shell_switches): Add handling of -q switch + (inhibit loading of user init file). + (scm_shell_usage): Add usage text for -q switch. + (scm_compile_shell_switches): Always load user init file first if + it is loaded at all. + +1998-10-16 Jim Blandy <jimb@zwingli.cygnus.com> + + * stime.c: The CPP hair to determine a value for CLKTCK is weird, + and is now broken under NetBSD. I can't fathom what it's trying + to do, so I've replaced it with something that I do understand, + which seems to work, and which isn't broken on NetBSD. "Progress? + You Decide." (Thanks to Perry Metzger.) + + * regex-posix.c (scm_regexp_exec): Add a cast to remove a + signed/unsigned comparison. + +1998-10-15 Jim Blandy <jimb@zwingli.cygnus.com> + + Warning fixes from Greg Harvey: + * unif.c (scm_array_set_x): initializer for pos + * throw.c (scm_ithrow): added initializer for jmpbuf (SCM_UNDEFINED) + * struct.c (scm_struct_ref, scm_struct_set_x): Added + initializers for field_type, since EGCS so desparately wants to + play dumb + * debug.h (scm_make_gloc, scm_gloc_p, scm_make_iloc, scm_memcons, + scm_mem_to_proc, scm_proc_to_mem, scm_debug_hang): Added prototypes + when GUILE_DEBUG is defined. + * dynwind.h (scm_wind_chain): Same. + * ports.h (scm_pt_size, scm_pt_member): Same. + * print.h (scm_current_pstate): Same. + * procs.h (scm_make_cclo): Same. + +1998-10-14 Jim Blandy <jimb@zwingli.cygnus.com> + + Handle short and long long uniform arrays properly. (Thanks to + Clark McGrew.) + * ramap.c (scm_ra_matchp, scm_array_fill_int, scm_array_index_map_x, + raeql_1): Add cases for scm_tc7_svect (short vectors) and + scm_tc7_llvect (long long vectors). + + Change the way libguile and boot-9.scm are timestamped, to try to + get rid of these spurious mismatch warnings. Now both + libguile/versiondat.h and ice-9/version.scm are generated directly + by the configuration process, rather than having version.scm + generated directly, and libguile/versiondat.h generated by the + Makefile, which is generated by configure. It seems that + sometimes the Makefile would change, but versiondat.h depends on + Makefile.in, not Makefile, so it wouldn't get rebuilt. + * Makefile.am (versiondat.h): Target removed; this is generated + directly by the configure script now. + (BUILT_SOURCES): Remove versiondat.h. + * versiondat.h.in: New file, transformed by the configure script + into versiondat.h. + * Makefile.in: Regenerated. + + * (__scm.h, alist.c, eval.c, feature.c, gsubr.c, numbers.c, + options.c): Rename RECKLESS -> SCM_RECKLESS, CAUTIOUS -> + SCM_CAUTIOUS; this way, 1) there's only one version of each flag + to define (we used to have both RECKLESS and SCM_RECKLESS), and 2) + if we want to use them in a header file some day, we can. (Thanks + to Michael Livshin.) + + * stime.c (scm_get_internal_real_time): Do the arithmetic using + SCM numbers, so we won't have rollover problems; the range of a + signed long in milliseconds is about 25 days. (Thanks to Karl + Hegbloom.) + + Don't redefine sleep and usleep; fix this problem now. + * coop.c (sleep, usleep): Remove declarations; we don't use or + redefine these any more. + (scm_thread_usleep, scm_thread_sleep): New functions which do the + job of usleep and sleep in a thread-friendly way. We can use + these in the rest of Guile. Define versions for systems both with + and without iselect. + * threads.h (scm_thread_usleep, scm_thread_sleep): New declarations. + * scmsigs.c (usleep): Clean up oddities declaring usleep; since + we're just using it, not redefining it, we can use a K&R style + declaration here. + (sleep): Declare this, too, if the system hasn't. + (scm_sleep, scm_usleep): Use scm_thread_sleep and + scm_uthread_sleep if they're available; otherwise, just call the + system functions. + * scmconfig.h.in: Regenerated. + + * coop.c (scm_thread_sleep): Make `slept' an unsigned long. + + * coop.c (coop_sleephelp): Remove ANSI #ifdef hair. + +1998-10-12 Jim Blandy <jimb@zwingli.cygnus.com> + + * threads.c: Doc fix. + + The argument type of usleep varies from system to system, + as does the return type. We really shouldn't be redefining usleep + at all, but I don't have time to clean that up before the 1.3. + release. It's on the schedule for afterwards. (Thanks to Julian + Satchell.) + * coop.c (usleep): Use USLEEP_ARG_TYPE in prototype and + definition. + * scmsigs.c (usleep): Use USLEEP_ARG_TYPE in prototype. + * scmconfig.h: Regenerated. + + * simpos.c (scm_software_type): Procedure deleted. This isn't the + right way to handle system variation. Autoconf's approach is the + way and the light. + * simpos.h (scm_software_type): Declaration deleted. + + * script.c (scm_find_executable): Don't test if unix is #defined + here; first, NetBSD doesn't #define it, and second, it's the wrong + way to go about these things. (Thanks to Perry Metzger.) + (dld_find_executable): Delete this MSDOS support code. This isn't + the way we want to support this; it needs to be rethunk at a + larger scale. + + * genio.c (scm_do_read_line): Don't just politely check that the + line was either non-empty or EOF. Abort if it's empty and not + EOF. + +1998-10-11 Jim Blandy <jimb@zwingli.cygnus.com> + + * scmconfig.h.in: Regenerated. + + * libguile.h: Don't omit the dynamic linking functions. (Thanks + to Greg Badros.) + + * genio.c (scm_do_read_line): Count lines correctly when the file + doesn't end in a newline. + +1998-10-10 Jim Blandy <jimb@zwingli.cygnus.com> + + * genio.c (scm_do_read_line): Maintain the line count correctly. + (Thanks to Harvey J. Stein and Greg Harvey.) + + * gc.c (scm_return_first): Remove #ifdef __STDC__ garbage; Guile + requires ANSI now. + + * numbers.c (big2str): Protect t from garbage collection until + we're done. (Thanks to Gary Houston.) + +1998-10-09 Jim Blandy <jimb@zwingli.cygnus.com> + + * Makefile.am (libguile_la_LDFLAGS): Increment shared library + version number. + * Makefile.in: Regenerated. + + * fports.h (scm_setbuf0, scm_setvbuf, scm_setfileno, + scm_evict_ports, scm_open_file, scm_stdio_to_port): Get rid of + SCM_P macro. + + Do magic to mix reads and writes on stdio FILE-based ports. + (Thanks to Christian Lynbech.) + * fports.c (FPORT_READ_SAFE, FPORT_WRITE_SAFE, FPORT_ALL_OKAY): + New macros. + (pre_read, pre_write): New functions. + (local_fgetc, local_fgets, local_ffwrite, local_fputc, + local_fputs): Call them. + (local_fflush): Mark the port as ready for reading and writing. + (scm_stdio_to_port): Set the FPORT_READ_SAFE, FPORT_WRITE_SAFE + flags on new port objects. This might not be accurate --- who + knows what state the FILE * is in when we get it --- but it won't + do extraneous calls to fflush or fseek, so it's no worse than the + behavior before this change. + * ports.h: Add comment. + + Centralize the creation of port objects based on stdio FILE * in + fports.c; don't just throw them together anywhere. + * fports.c (scm_stdio_to_port): Make NAME a SCM value, which is + what the rest of Guile wants. Don't set the revealed count; + that's only appropriate for stdin, stdout, stderr. + (scm_standard_stream_to_port): This function does set the revealed + count. + * init.c (scm_init_standard_ports): Use scm_standard_stream_to_port, + not scm_stdio_to_port. + * filesys.c (scm_open): Call scm_stdio_to_port; don't write it out. + * fports.c (scm_open_file): Same. + * posix.c (scm_pipe): Same. + * socket.c (scm_sock_fd_to_port): Same. + * ioext.c (scm_fdopen): Same. + (scm_freopen): Moved from here to... + * fports.c (scm_freopen): ... here. This is really something that + munges the internals of an fport, so it should go here. + * fports.h (scm_stdio_to_port): Adjust prototype. + (scm_standard_stream_to_port, scm_freopen): New protoypes. + * ioext.h (scm_freopen): Prototype removed. + + * filesys.c (set_element, get_element): This can work on both pipe + and file ports, so use SCM_FPORTP to typecheck, instead of testing + for scm_tc16_fport. + + * scmconfig.h.in: Regenerated. + + Change the definition of the functions in scm_ptobfuns so that + they get passed the port object, not the port's stream. + * ports.h (scm_ptobfuns): Rename all `stream' arguments to `port'. + * gc.c (scm_gc_sweep): Pass the port itself to the free function. + * genio.c (scm_putc, scm_puts, scm_lfwrite, scm_fflush, scm_getc): + Pass the port itself to the scm_ptobs function. + * ports.c (scm_close_port, scm_force_output, scm_flush_all_ports, + scm_generic_fgets): Same. + (putc_void_port, puts_void_port, write_void_port, flush_void_port, + getc_void_port, fgets_void_port, close_void_port): Just change the + argument names; these functions don't really do anything. + * fports.c (local_fgetc, local_fgets, local_fclose, local_fflush, + local_fputc, local_fputs, local_ffwrite, local_pclose): Take the + port as an argument, and use SCM_STREAM to get the stdio FILE *. + Also, use prototyped definitions, and get rid of the extra + declarations. + (scm_fptob, scm_pipob): We don't need casts here any more. + * strports.c (prinstpt): Use prototype declarations. + (stputc, stwrite, stputs, stgetc): Take the port as an argument, + and use SCM_STREAM to get the string info. Also, use prototyped + definitions, and get rid of the extra declarations. + * vports.c (sfputc, sfwrite, sfputs, sfflush, sfgetc, sfclose, + noop0): Same. + + * ports.h (scm_ptobfuns): Replace uses of SCM_P with a straight + prototype; it's okay (preferred, even!) to use ANSI C in Guile. + + * fports.c (local_fgetc, local_fgets): Renamed from scm_fgetc and + scm_fgets, for consistency. + (scm_fptop, scm_pipob): References updated. + +1998-10-08 Jim Blandy <jimb@zwingli.cygnus.com> + + Include the source location in error messages for scripts. + * init.c (scm_boot_guile_1): Use scm_internal_lazy_catch, so the + stack is still there when we catch the error. + * throw.c (handler_message): If we are handling an error with a + message, then put together the proper arguments and call + scm_display_error, instead of scm_display_error_message. That + displays source location, if it can find it. + +1998-10-07 Jim Blandy <jimb@zwingli.cygnus.com> + + * gc.c (scm_unprotect_object): Change this so that calls to + scm_protect_object and scm_unprotect_object nest properly. + (scm_protect_object): Doc fixes. + + * strings.c (scm_string_set_x): Require the argument to be a + writable string, not a substring or a symbol. + * strings.h (SCM_RWSTRINGP, SCM_NRWSTRINGP): New predicates. + (Thanks to John Redford and Charbel Jacquin.) + + * scmconfig.h.in: Regenerated; ../acconfig.h has changed. + +1998-10-07 Jim Blandy <jimb@totoro.red-bean.com> + + * eval.c (safe_setjmp): Remove this misunderstanding. + (ENTER_APPLY, SCM_CEVAL, SCM_APPLY): Replace with references to + ordinary setjmp. + +1998-10-06 Jim Blandy <jimb@zwingli.cygnus.com> + + * libguile.h: Mark these as C declarations, for compilation by C++ + compilers. + + * snarf.h (SCM_PROC, SCM_PROC1): Remove very odd code in #ifdef + __cplusplus clause. I seriously doubt this ever worked the way + the author seems to have intended. + +1998-10-05 Jim Blandy <jimb@zwingli.cygnus.com> + + Utterly needless cleanups to hopelessly messy code. + * ports.c: Doc fixes. + (scm_fflush): Moved to ... + * genio.c (scm_fflush): ... here, amongst all the other port + method invocation functions. + * genio.h, ports.h: The prototype moves too. + +1998-10-04 Jim Blandy <jimb@zwingli.cygnus.com> + + * backtrace.c (display_error_body): The current frame does not + always have a parent frame; consider a function called directly + from the MAIN_FUNC passed to scm_boot_guile. (Thanks to Maciej + Stachowiak.) + + * alloca.c (alloca): Undo yesterday's changes, and simply call + malloc directly for storage, and abort if we don't get what we + want. The situation is much simpler --- just call malloc. Emacs + has bizarre/evil requirements (signal handlers might malloc unless + you set this global flag, so you have to set the flag around all + calls to malloc) which we are certainly not going to conform to, + so we can do the simple and obvious thing. + + * coop.c (coop_condition_variable_wait): Make this function + static. It's only useful internally --- you should never just + wait on a condition variable. + * coop-defs.h (coop_condition_variable_wait): Delete prototype. + +1998-10-03 Jim Blandy <jimb@zwingli.cygnus.com> + + * unif.c (scm_array_set_x): Accept any kind of number as an + element for a uniform vector of doubles. This is more consistent + with Scheme's view of numbers. (Thanks to Miroslav Silovic.) + + * alloca.c: Use scm_must_malloc to obtain storage. Hopefully this + works; I can't conveniently test it myself. (Thanks to Dvid + Tillman for the bug report.) + + * init.c: Doc fixes. + + * init.c (invoke_main_func): Load the startup files (boot-9.scm) + from here, not from scm_compile_shell_switches (which is a pretty + dumb place to do it). + (scm_load_startup_files): New function. + (scm_ice_9_already_loaded): Variable moved to here from script.c. + * script.c (scm_compile_shell_switches): Don't load the startup + files here. + (scm_ice_9_already_loaded): Variable moved. + * init.c (scm_load_startup_files): Prototype for new function. + * gh_init.c (gh_enter): Doc fix. + +1998-10-03 Jim Blandy <jimb@savonarola.red-bean.com> + + Some anti-warning changes from Greg Harvey. + * gh_data.c (gh_scm2doubles): Initialize m, to avoid compiler + warnings when it doesn't understand our NORETURN declarations in + error.h. + * posix.c (scm_mknod): Similar. + +1998-10-03 Jim Blandy <jimb@zwingli.cygnus.com> + + * posix.c (scm_getpwuid): If we can't find an entry, return our + own message, instead of using scm_syserror --- the getpwMUMBLE + functions don't set `errno' to anything interesting. + +1998-10-03 Jim Blandy <jimb@savonarola.red-bean.com> + + Get rid of warnings from the cooperative threading system. + * threads.h (scm_single_thread_p, scm_yield, + scm_call_with_new_thread, scm_join_thread, scm_make_mutex, + scm_lock_mutex, scm_unlock_mutex, scm_make_condition_variable, + scm_wait_condition_variable, scm_signal_condition_variable): Add + prototypes for these Scheme-visible functions. + * coop-defs.h (coop_next_runnable_thread, + coop_wait_for_runnable_thread_now, coop_wait_for_runnable_thread): + Prototypes for these here, even though they're from iselect.c. + (coop_condition_variable_wait, coop_join): Add prototypes. + * coop-threads.c (scm_threads_free_thread, scm_threads_free_mutex, + scm_threads_free_condvar): Make these smob functions static. + * coop-threads.h (coop_init): Give this a real prototype. + * coop.c: #include <unistd.h>, if we have it, for `usleep' and `sleep'. + (coop_next_runnable_thread): No need to provide prototype; it's in + coop-defs.h. + + * scmconfig.h.in: .detarenegeR + + * iselect.c, threads.c: Doc fixes. + +1998-10-03 Jim Blandy <jimb@zwingli.cygnus.com> + + * Makefile.in: Regenerated with a patched automake, to get + dependency generation right when using EGCS. + + * inet_aton.c (inet_aton): Add prototype, to remove compiler + warning. (Thanks to Robert Pluim.) + + * inet_aton.c (inet_aton): Reassure the compiler that the + arguments to the <ctype.h> macros are all unsigned characters, not + signed characters. + +1998-10-03 Jim Blandy <jimb@savonarola.red-bean.com> + + Getting rid of more warnings... + * iselect.c: Test for MISSING_BZERO_DECL, not DECLARE_BZERO; see + today's change to ../configure.in. + * scmsigs.c: Test for MISSING_USLEEP_DECL, not DECLARE_USLEEP. + * scmconfig.h.in: Regenertaded.de.,.__ + * stime.c (strptime): Declare this, #ifdef MISSING_STRPTIME_DECL. + (scm_localtime, scm_mktime): Use a const char * to manipulate the + time zone name. + + * readline.c: Doc fix. + (rl_cleanup_after_signal, rl_free_line_state): Make these static. + * readline.h (scm_filename_completion_function): Add prototype. + (scm_init_readline): Make this into a prototype. + + * readline.c (scm_filename_completion_function): Use SCM_PROC to + declare this, instead of calling scm_make_subr manually. + +1998-10-02 Jim Blandy <jimb@savonarola.red-bean.com> + + * readline.h (scm_init_readline): Add prototype for this. + (scm_init_readline): Make this a real prototype. + +1998-09-30 Jim Blandy <jimb@zwingli.cygnus.com> + + Warning fixes from Maciej Stachowiak: + * backtrace.h (scm_display_application, scm_backtrace): Add + prototypes. + * debug.c (scm_m_start_stack): Make this function static. + * fluids.h (scm_fluid_p): Add prototype. + * procprop.c (scm_i_procedure_arity): Make this function static. + * regex-posix.c (scm_regexp_error_msg): Make this function static. + * regex-posix.h (scm_init_regex_posix): Use prototype, not K&R decl. + * root.h (scm_dynamic_root): Add external prototype. + * scmsigs.h (scm_usleep): Add external prototype. + * script.h (scm_init_script): Use prototype, not K&R decl. + * stacks.h (scm_stack_id): Add external prototype. + * symbols.h (scm_sysintern0_no_module_lookup): Add external prototype. + +1998-09-30 Mark Galassi <rosalia@cygnus.com> + + * gh.h: took out the definitions of vset and vref, since they are + replaced by the proper vector routines that correspond to the R4RS + procedures. + +1998-09-29 Jim Blandy <jimb@totoro.red-bean.com> + + * snarf.h (SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT): New macros; + these are analogous to SCM_VCELL and SCM_GLOBAL_VCELL but take a + third argument, a C expression that should result in a SCM value, + which is used to initialize the variable. Reimplemented + SCM_CONST_LONG in terms of SCM_VCELL_INIT. (Thanks to Maciej + Stachowiak.) + + * version.h (scm_libguile_config_stamp): Add prototype. + (From Maciej Stachowiak.) + +1998-09-26 Jim Blandy <jimb@zwingli.cygnus.com> + + * eval.c (scm_force): Assert that x is SCM_NIMP to fix segv when + (force 9) is tried. (Thanks to Karl M. Hegbloom.) + +1998-09-06 Jim Blandy <jimb@zwingli.cygnus.com> + + * print.c (scm_iprin1): Rather than having one i, and using it in + several places, declare a fresh i local to each block where it is + used, and give it a signedness appropriate to its use in each case. + (scm_iprlist): Same. + + * print.c (scm_iprin1): Add cast to avoid unsigned/signed + comparison warnings. + + * print.c (ENTER_NESTED_DATA): Make i an unsigned long, to avoid + signed/unsigned clashes. + + * posix.h (scm_tmpnam): Added prototype. + + * objects.h (scm_set_object_procedure_x, scm_make_class_object, + scm_make_subclass_object): Add external prototypes. + + * numbers.c (scm_mkbig): Add cast, and note that signed/unsigned + comparison is okay here. + + * numbers.c (scm_istr2int): Add cast; len is known to be positive. + + * numbers.c (scm_bigcomp): Clarify logic, and avoid relying on the + (true, but confusing) fact that -1 == ((unsigned) 0 - 1). + + * numbers.c (scm_adjbig): Make nsiz an scm_sizet, to avoid mixing + signed/unsigned. + + * load.c (swap_port): Make this function static. + + * load.c (scm_search_path): Make max_path_len and max_ext_len + unsigned, since they're compared against string sizes. + + * load.c (init_build_info): Make i unsigned. + + * ioext.h (scm_read_line): Add prototype. + + * hashtab.c (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x, + scm_hash_fn_remove_x): Make hash bucket index local variable k + unsigned. Use scm_ulong2num to pass it to SCM_ASSERT as + accurately as possible. + + * gh_data.c (gh_set_substr): Add casts to avoid signed/unsigned + comparisons, and range checking to make sure those casts are + harmless. + + * stackchk.h (SCM_STACK_OVERFLOW_P): Change definition to avoid + signed/unsigned comparisons. + + * smob.c (scm_numsmob): Make this an int, not an scm_sizet, to + avoid signed/unsigned comparisons. + * smob.h (scm_numsmob): Change extern declaration to match. + + * ports.c (scm_numptob): Make this an int, not an scm_sizet, to + avoid signed/unsigned comparisons. + * ports.h (scm_numptob): Change extern declaration to match. + (scm_current_load_port, scm_set_port_line_x, + scm_set_port_column_x): New prototypes. + + * gsubr.c (GSUBR_TEST): Don't #define this. Nobody's using the + test code, and it causes warnings. + + * gh.h (gh_int2scmb, gh_uniform_vector_length, + gh_uniform_vector_ref): Added prototypes. + + * Makefile.am (libguile_la_SOURCES): Include Scheme-level + debugging support unconditionally. That's backtrace.c, stack.c, + debug.c, and srcprop.c. + (EXTRA_libguile_la_SOURCES): Omit those from here. + * Makefile.in: Regenerated. + +1998-08-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * options.c (scm_options): Bugfix: Allow empty list of options! + + * debug.c, debug.h (scm_single_step): Removed. + (scm_with_traps): New procedure. This procedure could easily be + written in Scheme but needs to be highly optimized. + + * eval.h, eval.c: New evaluator trap flag: SCM_TRAPS_P. + + * eval.c (SCM_CEVAL, SCM_APPLY): Removed resetting of trap flags. + Check SCM_TRAPS_P before trapping. + +1998-07-30 Jim Blandy <jimb@zwingli.cygnus.com> + + Changes to avoid signed/unsigned comparison warnings. + * gc.c (scm_mtrigger, scm_heap_size): Make these unsigned longs. + (scm_gc_sweep): Make n and j local to the blocks they're used in, + so they can have appropriate types for each application. Make i + signed. Use initializers in some spots. I'll probably pay for + all this tweaking. + (scm_must_malloc, scm_must_realloc): Use scm_sizet for size args. + (scm_must_realloc): Make nm unsigned. + (init_heap_seg): Make new_seg_index and n_new_objects signed. + (scm_init_storage): Use prototype-style definition, and make the + argument unsigned. + * gc.h (scm_heap_size, scm_mtrigger, scm_must_malloc, + scm_must_realloc, scm_init_storage): Adjust prototype accordingly. + + * filesys.c (scm_readlink): Make local vars rv and size ints, to + avoid signed/unsigned comparison warnings, and because the return + value of readlink may be -1. Don't bother casting the third + argument to readlink. + + * filesys.c (scm_dirname, scm_basename): Move these to their own + page, at the end of the file. + * filesys.h (scm_dirname, scm_basename): Add prototypes for these. + + * eval.h (scm_eval_options_interface): Add external prototype for this. + * eval.c (scm_eval_options_interface): Use prototype-style def'n. + + * eval.c (scm_lookupcar1): Make this static. + + * dynl.h (scm_registered_modules, scm_clear_registered_modules): + Make these prototype declarations, not K&R-style. + + * chars.c (scm_tables_prehistory): Add cast, to remove signed/ + unsigned comparison warning. + + * appinit.c: File removed. It had a single function in it, empty, + whose reason for existence is explained in no documentation or + comment. I think it's there as a default for some Tcl-style + initialization, but Tcl abandoned that approach a while ago. + * Makefile.am (libguile_la_SOURCES): Remove appinit.c. + (BUILT_SOURCES): Remove appinit.x. + * Makefile.in: Regenerated. + +1998-07-29 Jim Blandy <jimb@zwingli.cygnus.com> + + * Makefile.in: Regenerated using the last public version of + automake, not the hacked Cygnus version. + +1998-07-28 Jim Blandy <jimb@zwingli.cygnus.com> + + Remove Totoro kludge. + * Makefile.in, scmconfig.h.in: Regenerated. + * init.c, readline.c: Don't check if TOTORO is #defined. + +1998-07-26 Jim Blandy <jimb@zwingli.cygnus.com> + + * Makefile.am: Adjust for new thread configuration system. + (INCLUDES): Include the value of THREAD_CPPFLAGS. + (guile_LDADD, check_ldadd): THREAD_LIBS_LOCAL has been renamed from + THREAD_LIBS. + (THREAD_LIBS): Definition deleted; automake will generate such + things automatically. + * Makefile.in: Regenerated. + +1998-07-23 Jim Blandy <jimb@zwingli.cygnus.com> + + Simplify smob and port marking; set the mark bit in the generic + marking code, and make marker routines only responsible for + turning up outgoing pointers. + * gc.c (scm_gc_mark): Set the mark bit on ports and smobs here, + before calling the marking function. Don't call the marking + function if it's zero. + * markers.c (scm_mark0): Just return #f. This function isn't + necessary at all now, but it's harmless to call it. We'll leave + it in so other folks' code doesn't croak at link time. + (scm_markcdr): Don't call SCM_SETGC8MARK. + * async.c (mark_async): Don't call SCM_SETGC8MARK. + * dynl.c (mark_dynl_obj): Same. + * root.c (mark_root): Same. + * srcprop.c (marksrcprops): Same. + * unif.c (markra): Same. + * variable.c (scm_markvar): Same. + * ports.c (scm_markstream): Same. + (void_port_ptob): Specify zero for our marking function. + * debug.c (debugobjsmob): Same. + * dynwind.c (guardsmob): Same. + * filesys.c (dir_smob): Same. + * fluids.c (fluid_smob): Same. + * fports.c (scm_fptob, scm_pipob): Same. + * mallocs.c (mallocsmob): Same. + * regex-posix.c (regex_t_smob): Same. + * smob.c (freecell, flob, bigob): Same. + * threads.c (thread_smob, mutex_smob, condvar_smob): Same. + * throw.c (jbsmob, lazy_catch_funs): Same. + +1998-07-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se> + + * eval.c (scm_copy_tree): Reverted last change: `eval' uses + scm_copy_tree on code in order not to let memoized code to leak + out. Thus, scm_copy_tree needs to copy vectors as well since + quasiquote can introduce evaluated code also inside vector + constants. + +1998-07-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se> + + * eval.c (scm_copy_tree): Removed ability to copy vectors. + + * gh_data.c, gh.h (gh_ints2scm, gh_longs2ivect, + gh_ulongs2uvect): New procedures. (Complements gh_doubles2scm and + gh_doubles2dvect.) + + * unif.c: Say that ivect and uvect are of type signed and unsigned + long instead of int in commentary so that it correctly describes + the implementation. + +1998-07-12 Mikael Djurfeldt <mdj@barbara.nada.kth.se> + + * stime.c: Removed declaration of strptime. (It should be + declared by the system headers. If it turns out that some systems + don't, we'll handle that then.) (Thanks to Greg Troxel.) + + * stime.h: Renamed TIMEH --> STIMEH + + * backtrace.c (scm_display_error, scm_display_backtrace): In order + to increase portability, don't use structure assignment. + (Thanks to Nicolas Neuss.) + + * iselect.c: Use LONG_MAX instead of ULONG_MAX for increased + portability. + (finalize_fd_sets): Added empty statement after last case label. + (Thanks to Nicolas Neuss.) + + * gc.c (scm_igc): Changed //-comment into /*-comment. (Thanks to + Nicolas Neuss.) + +Sat Jul 11 22:08:21 1998 Mikael Djurfeldt <mdj@totoro.red-bean.com> + + * init.c, readline.c: OK, I won't have these readline.x bug + reports anymore. We've had them since April. The current reason + is a completely unintelligible failure of totoro.red-bean.com to + do the test for rl_getc_function in libreadline correctly. This + kludge overrides the test if we're on totoro so that the snapshot + generation process can work. + + * readline.c: Define a strdup replacement if not existent on system. + +1998-07-12 Mikael Djurfeldt <mdj@barbara.nada.kth.se> + + * vectors.c, vectors.h (scm_make_vector): Removed third argument. + This change makes scm_make_vector R5RS compatible. We cannot keep + the third argument since people want to be able to deduce the form + of the C function call only by looking at R5RS. (At the same time + we have removed some unnecessary complexity!) + + * eval.c, filesys.c, fluids.c, gc.c, gh_data.c, init.c, kw.c, + net_db.c, posix.c, print.c, regex-posix.c, scmsigs.c, socket.c, + stime.c, symbols.c, unif.c, vectors.c, weaks.c: Removed third + argument in call to scm_make_vector. + +1998-07-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * numbers.h (SCM_NUM2DBL): New macro. Complements SCM_NUMBERP. + This macro is useful in applications. + +1998-06-21 Mikael Djurfeldt <mdj@barbara.nada.kth.se> + + * load.c (scm_internal_parse_path): Renamed from scm_parse_path. + (scm_parse_path, scm_search_path): New Scheme level procedures. + + * load.h (scm_internal_parse_path, scm_parse_path, + scm_search_path): Declared. + +1998-06-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * filesys.c (dirname, basename): New procedures. + + * init.c (scm_boot_guile_1): Removed condition around + scm_init_options. + + * dynwind.c: #include "genio.h"; #include "smob.h"; Implemented a + new data type (guards) for representation of C level guards and + data on the wind chain. + (scm_internal_dynamic_wind): New function. + + * dynwind.h: Declare scm_internal_dynamic_wind. + + * root.h (scm_root_state): Added scm_cur_loadp. + + * root.c (mark_root): Added comment about cur_loadp. + + * load.c: #include "dynwind.h"; + (scm_primitive_load): Use scm_inner_dynamic_wind to update + scm_cur_loadp. + + * init.c (scm_init_standard_ports): Initialize scm_def_loadp. + + * ports.c (current-load-port): New procedure. + +1998-06-09 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * ioext.c (scm_isatty_p): Accept any kind of data as argument. If + not a tty, return #f. + + * regex-posix.c (scm_regexp_exec): Free malloced memory. (Thanks + to Julian Satchell and Roland Kaufmann.) + + * gh.h (gh_memv, gh_member): Fixed typos in macro definitions. + (gh_write): Added declaration. (Thanks to Eiichi Takamori.) + +1998-06-07 Mikael Djurfeldt <mdj@barbara.nada.kth.se> + + * debug.h, debug.c (scm_start_stack): New function. Implements + the guts of old scm_m_start_stack. + + * debug.c (scm_m_start_stack): Use scm_start_stack. + + * init.c (scm_start_stack, scm_restart_stack): Renamed to + start_stack and restart_stack. (These have static scope.) + +1998-05-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * readline.c (rl_cleanup_after_signals, rl_free_line_state): New + readline functions to come in release 2.3. (Thanks to Chet + Ramey.) + (handle_errors): Use the above functions. + +1998-05-12 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * readline.c: Improvements for readline support: Handle errors + better; Implement before-read-hook. + +1998-05-11 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * init.c (scm_boot_guile_1), readline.c: Test for + HAVE_RL_GETC_FUNCTION instead of HAVE_LIBREADLINE. (Need to + assure that we have version >= 2.1.) + +1998-05-11 Mikael Djurfeldt <mdj@kenneth> + + * readline.c (scm_readline): Defer interrupts while we're calling + readline. + + * readline.c (scm_add_history): Bugfix: Do strdup before giving + away the string to add_history. + (completion_function): Do completion for readline. (Thanks to + Andrew Archibald.) + (scm_filename_completion_function): New procedure: Filename + completer. + (current_input_getc): New function. Use this one instead of + standard getc from readline. + + * throw.c, throw.h (scm_handle_by_throw): New function: This + handler throws errors to next handler on the dynwind chain. + +1998-05-09 Mikael Djurfeldt <mdj@kenneth> + + * scmsigs.c (scm_usleep): Bugfix: Don't define j if it isn't + used. + +1998-05-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * procprop.c (scm_i_procedure_arity): New function. Returns arity + of procedure. + (scm_procedure_properties): Modified to return arity together with + other properties. + (scm_procedure_property): Added the read-only property `arity'. + (scm_set_procedure_property_x): It is an error to set the `arity' + property. + + * gsubr.h, gsubr.c: Moved macros from gsubr.c to gsubr.h and added + prefix SCM_; Made f_gsubr_apply global and added prefix scm_. + + * procprop.h (scm_sym_arity): New symbol. + + * objects.c (scm_set_object_procedure_x): New procedure: Use this + to set the dispatch procedure of an operator or entity object. + + * objects.h (SCM_METACLASS_OPERATOR_LAYOUT, SCM_ENTITY_LAYOUT): + Made procedure slots read-only. + + * eval.c (SCM_CEVAL): Moved scm_tc7_contin case above + scm_tcs_cons_gloc case in zero args switch; Fixed args + construction for operators in scm_tcs_cons_gloc case in two args + switch. + +1998-05-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * fluids.c: Removed use of assert.h (in order to avoid + __eprintf). + + * Makefile.am (libguile_la_LDFLAGS): Added -export-dynamic. + + * dynl.c (maybe_drag_in_eprintf): Disabled through #ifdef 0. + + * eval.c (SCM_CEVAL): Do more thorough argument checking. This + change makes the evaluator safer at the cost of evaluation speed. + It handles the case when the user has added a non-immediate + improper end of the application form, e.g., `(+ 0 . x)'. + (Earlier only cases like `(+ 0 . 0)' were handled.) I've tried to + minimize the extra cost as much as possible. The new code is + enclosed in #ifdef CAUTIOUS regions. NOTE: This also fixes the + problem with structs planted directly in the code (e.g. by a + macro). This no longer causes segmentation fault. (Thanks to + Eric Hanchrow.) + + * eval.c, eval.h (scm_eval_args, scm_deval_args): Take one extra + arg `proc' in order to be able to throw errors; New argument + checking code. + + * Removed extra #include "debug.h" + +1998-04-25 Mikael Djurfeldt <mdj@kenneth> + + * scmsigs.c: Declare usleep as returning void on some systems. + (scm_usleep): Return SCM_INUM0 on those systems. (Thanks to Julian + Satchell.) + + * coop.c (usleep): Return void on some systems. + +1998-04-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * Makefile.am (libguile_la_LDFLAGS): Removed redundant -rpath. + + * coop.c: Changed return type of usleep to int. + + * scmsigs.c (scm_usleep): New procedure; Declare usleep if it + isn't found in the OS. + + * iselect.h: #define scm_internal_select select if GUILE_ISELECT + isn't enabled. (Thought that I had made this change ages ago...) + + * iselect.c: Declare bzero if not defined by OS. + +1998-04-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * dynl.c (scm_must_free_argv): Fixed memory leak due to negated + condition. (Thanks to John Tobey.) + + * continuations.c (scm_make_cont), debug.c (scm_make_memoized, + scm_make_debugobj), eval.c (scm_makprom): SCM_DEFER/ALLOW_INTS --> + A section. + + * __scm.h: Start the long-term project of moving to POSIX threads. + Phase 1: Classification of all critical sections. + (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): New macros: Delimiters + for A sections. (See comments in __scm.h for details.) + + * dynl.c: Only check that HAVE_DLOPEN is defined before loading + dynl-dl.c; Test on HAVE_LIBDLD instead of HAVE_DLD. + +1998-04-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * Makefile.am (BUILT_SOURCES): Added cpp_err_symbols.c, + cpp_sig_symbols.c, libpath.h and versiondat.h to BUILT_SOURCES + (libpath.h, versiondat.h): Replaced dependency on Makefile with + dependencies on $(srcdir)/Makefile.in + $(top_builddir)/config.status in order to avoid circularity. + + * script.c (scm_compile_shell_switches): Bugfix: Don't discount i + from argc if argc was 0 initially. + + * Makefile.am (Makefile.am): Replaced THREAD_LIBS --> GUILE_LIBS + in generation of libpath.h. + +1998-04-15 Mikael Djurfeldt <mdj@nada.kth.se> + + * Makefile.am (libguile_la_LDFLAGS): Bumped version number of + libguile from 2 to 3. + +1998-04-14 Mikael Djurfeldt <mdj@nada.kth.se> + + * Makefile.am: Added .x-dependencies to variable BUILT_SOURCES. + +1998-04-13 Mikael Djurfeldt <mdj@kenneth> + + * ports.c (scm_port_line, scm_set_port_line_x, scm_port_column, + scm_set_port_column_x, scm_port_filename, + scm_set_port_filename_x): Removed optional arguments. Added + proper argument checking. + + * eval.c, eval.h, coop.c (scm_eval_stack, SCM_EVAL_STACK): Measure + stack size in machine words. + + * unif.c (scm_uniform_vector_ref, scm_cvref, scm_array_set_x, + rapr1): Use SCM_UCHARS instead of SCM_CHARS for strings. (Thanks + to Ole Myren Röhne.) + +1998-04-12 Mikael Djurfeldt <mdj@kenneth> + + * socket.c: Check for HAVE_UNIX_DOMAIN_SOCKETS instead of + UNIX_DOMAIN_SOCKETS. (Thanks to Lauri Alanko.) + + * gc.c (scm_gc_sweep): Count cells correctly. (Thanks to Ben + Caradoc-Davies.) + + * eval.c (SCM_CEVAL, SCM_APPLY): In SCM_IM_APPLY and in the + procedure apply: Copy argument lists before pushing them unto the + environment so that the environment won't get mutated due to + manipulation of procedure arguments. This should perhaps be + regarded as a temporary solution until someone finds a more + efficient one. (Thanks to Maciej Stachowiak.) + +1998-04-10 Mikael Djurfeldt <mdj@kenneth> + + * script.c (scm_compile_shell_switches): Use "guile" as default + zero arg if argc is NULL. + +1998-04-02 Mikael Djurfeldt <mdj@nada.kth.se> + + * script.c (scm_compile_shell_switches): Allow NULL argv if argc + is zero. (Thanks to Dirk Herrmann.) + +1998-03-30 Mikael Djurfeldt <mdj@nada.kth.se> + + * ports.c (scm_add_to_port_table): First line is now line 0 + (was 1). (Interface changed according to suggestion by Per + Bothner.) + + * backtrace.c (display_header): Add 1 to line and column numbers + when presenting them to the user. + + * eval.h, eval.c, debug.h, debug.c (scm_evaluator_traps): Moved + from debug.c --> eval.c + + * eval.h, eval.c (scm_eval_options_interface): New options + interface. + (SCM_EVAL_STACK): New option: Size of newly created stacks, + i.e. stacks for new threads. + + * coop.c (COOP_STKSIZE): Use SCM_EVAL_STACK. + + * eval.c (unsafe_setjmp): Removed with #if 0. + + * gsubr.c (scm_gsubr_apply): Added dummy return to avoid compiler + warning. + + * eval.c, numbers.c, unif.c, srcprop.c: Added a few curly braces + to avoid compiler warnings. + + * dynl-dl.c (sysdep_dynl_func): Only define usymb if needed. + +1998-03-28 Mikael Djurfeldt <mdj@nada.kth.se> + + * throw.c (handler_message): Print message on current error port + instead of default error port. (Thanks to Maciej Stachowiak.) + +Mon Mar 2 21:35:02 1998 Gary Houston <ghouston@actrix.gen.nz> + + * ports.c (scm_add_to_port_table): allocate in units of + struct scm_port_table *, not struct scm_port_table. + * posix.c (scm_close_pipe): remove the port from the port table + and mark as closed. + Thanks to Rob Engle for both fixes. + +1998-02-06 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * iselect.h, iselect.c, coop.c, coop-threads.c, coop-threads.h, + coop-defs.h, throw.c, backtrace.c: Added new copyright year 1998. + +1998-02-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * throw.h: Removed jmpbuf arg in scm_catch_body_t. + + * backtrace.c (display_error_body, display_backtrace_body), + coop-threads.c (scheme_body_bootstrip, c_body_bootstrip), + gh_eval.c (eval_str_wrapper, eval_file_wrapper), init.c + (invoke_main_func), root.c (cwdr_body), throw.c (cwss_body, + scm_body_thunk, hbpca_body): Removed the second jmpbuf arg on body + functions. + + * throw.c (scm_internal_catch, scm_internal_lazy_catch): Bodies + don't receive the jmpbuf arg anylonger. + (scm_catch): Don't accept a #f tag. + (scm_throw): Check that key is a symbol. + (scm_ithrow): Don't take a jmpbuf as key. Don't check key arg. + +Fri Jan 30 22:28:07 1998 Mikael Djurfeldt <mdj@kenneth> + + * async.c (async_pending): Removed declaration. + +1998-01-30 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * dynwind.c (scm_wind_chain): New debug function. + + * coop-threads.c (scheme_launch_data, scheme_body_bootstrip, + scheme_handler_bootstrip, scheme_launch_thread, c_launch_data, + c_body_bootstrip, c_handler_bootstrip, c_launch_thread): Add an + extra layer of functions around the body and handler of a thread. + This extra layer makes sure that the handler is called in the + dynamic context of the surround (= empty dynwind list), but under + the *dynamic root* of the body. We can not use the dynamic root + of the surround since that root belongs to another thread => stack + is not handled correctly. It may seem ugly to use this extra + layer, but the extra cost in terms of execution time is really + negligible compared to the total amount of time required to create + a thread, and it would reduce maintainability to duplicate the + crucial and complicated steps performed by cwdr. + + * __scm.h (SCM_ASYNC_TICK): Removed thread switching code. + (SCM_ALLOW_INTS): Added thread switching code before interrupts + get re-enabled. The important effect of this is that interrupts + are blocked during thread switching so that thread data structures + don't risk getting messed up by an unfortunate signal. + (SCM_REDEFER_INTS, SCM_REALLOW_INTS): It turned out that gcc-2.8.0 + seems to do more aggressive optimization which actually move + instructions around in these macros in a fatal way. Therefore: + Introduce Anthony's SCM_FENCE macro! (And I who thought he was + just superstitious...) + (SCM_TICK): Maybe do a context switch and take care of asyncs. + This macro should be used instead of SCM_ASYNC_TICK since the + latter doesn't do context switches any more. + + * eval.c (scm_eval, scm_deval), eq.c (scm_equal_p): Use SCM_TICK + instead of SCM_ASYNC_TICK. + + * coop.c, iselect.c: Since thread switches are now performed with + interrupts masked, we can't use the old mechanism of delivering + signals immediately when they arrive. Signals must instead be + delivered when the asyncs run *after* the end of the critical + section in scm_internal_select. But this also means after context + switch so that the signal will be delivered to a different thread. + To avoid this, I have changed the protocol of + coop_wait_for_runnable_thread and friends so that they are allowed + to return the original thread. So, if a signal arrives during + scm_internal_select, we won't any longer be forced do a context + switch, but can remain in the same thread and deliver the signal + to it. + + * async.c, async.h (asyncs_pending): Renamed asyncs_pending --> + scm_asyncs_pending and made it global. + + * iselect.c: Small fixes. + + * coop.c (coop_mutex_init, coop_mutex_lock, coop_mutex_unlock, + coop_condition_variable_init, coop_condition_variable_wait, + coop_condition_variable_signal): Changed return type from `void' + to `int'. This is to adhere closer to the pthreads interface. + This, in turn, is part of an attempt to provide C versions of the + mutex and condition variable primitives which can be part of a + frontend to COOP or pthreads. + + * coop.c (coop_mutex_destroy, coop_condition_variable_wait_mutex, + coop_condition_variable_destroy): New functions. + + * coop-threads.c (scm_wait_condition_variable): Use + coop_condition_variable_wait_mutex. + + * coop-threads.h, coop-defs.h (coop_q_t, coop_m, coop_c): + Definitions moved to coop-defs.h. + + * coop-defs.h (scm_mutex_init, scm_mutex_lock, scm_mutex_unlock, + scm_mutex_destroy, scm_cond_init, scm_cond_wait, scm_cond_signal, + scm_cond_destroy): New C interface to mutecis and cond vars. + +1998-01-24 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * error.c (scm_wta): Added support for SCM_ARG6 and SCM_ARG7. + + * iselect.c: Now several threads can wait on the same file + descriptor. The behaviour is compatible with OS select: All + threads waiting for the fd return with the same status. + +1998-01-23 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * coop-threads.c, threads.h (scm_spawn_thread): New function. + Can spawn a thread from application C code. + +1998-01-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * gh.h, gh_data.c (gh_doubles2scm, gh_doubles2dvect, + gh_doubles2scm): New functions. + +1998-01-15 Mark Galassi <rosalia@nis.lanl.gov> + + * gh_eval.c (gh_eval_str): cleanup -- threw out the old + commented-out version of gh_eval_str() + +Sun Jan 4 02:23:36 1998 Gary Houston <ghouston@actrix.gen.nz> + + * socket.c (scm_bind): free soka after use. + +Sat Jan 3 20:55:07 1998 Gary Houston <ghouston@actrix.gen.nz> + + * stime.c (tzvar): new variable. + (setzone, restorezone, scm_localtime, scm_mktime, scm_strftime): + avoid memory leaks when allocating. + +1998-01-03 Jim Blandy <jimb@totoro.red-bean.com> + + * iselect.h: Some systems require <sys/types.h> to get the FD_SET + macro definitions. + + * gc.c, tags.h: Doc fixes. + +1998-01-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * eval.c (macro-eval!): Removed. This function was a design bug. + It allowed memoized code to leak out to the scheme level. Most + things that you could do with `macro-eval!' can be done with + `local-eval'. + +1997-12-20 Tim Pierce <twp@skepsis.com> + + * fports.c (scm_pipob): Use scm_generic_fgets for line i/o, since + scm_fgets now depends on ftell(3) to know how many bytes were + read. Sigh. + +1997-12-15 Tim Pierce <twp@skepsis.com> + + * gh_data.c (gh_scm2newstr, gh_get_substr): Use RO macros for + dealing with strings. + +1997-12-13 Tim Pierce <twp@skepsis.com> + + Make %read-line more suitable for implementing read-line efficiently. + * ioext.c (scm_read_line): Strip the terminating newline from a + string, and return a cons of the string and its terminator. + + * fports.c, fports.h (scm_fgets): Add `len' argument. The length + of the string that is read is stored in this memory location. + * ports.c, ports.h (scm_generic_fgets, fgets_void_port): Same. + * genio.c, genio.h (scm_do_read_line): Update caller. + * ports.h (scm_ptobfuns): Update typedef. + * fports.c (scm_fptob, scm_pipob): Update struct. + +1997-12-08 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * filesys.c (set_element): Return file descriptor. + (fill_select_type): Return the highest file descriptor. + (scm_select): Tell select about the highest file descriptor. On + some systems the SELECT_SET_SIZE can be as much as 128 bytes. + Therefore the extra overhead for calculating the maximum fd seems + to be more than compensated. Is this correct? In any case, + scm_internal_select will be much faster with this info. + (scm_select, fill_select_type, set_element): Don't accept any kind + of object in the file descriptor list or vector. + +1997-12-07 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * iselect.c (finalize_fd_sets): Bugfix. + +1997-12-06 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * filesys.c (scm_select): Don't use SCM_DEFER_INTS/SCM_ALLOW_INTS + when using scm_internal_select (since we might switch to another + thread). + +Sun Dec 7 01:43:56 1997 Gary Houston <ghouston@actrix.gen.nz> + + * simpos.c (scm_system): always define: use sysmissing if not + available. Check for HAVE_SYSTEM instead of _Windows (does + Windows lack system or does it have an unusable one?). + Check for error conditions -1 and 127. Use SCM_DEFER_INTS. + Let the argument be optional: if not supplied, call system(NULL). + + * ports.c (scm_close_port): relax the type check from OPPORTP to + PORTP; closing a closed port is allowed. + +1997-12-04 Tim Pierce <twp@ppp39.Nantucket.net> + + * fports.c (scm_fgets): Return if the last char in a chunk is + newline. When fgets returns a string whose length is `size-1', it + is ambiguous whether a whole line was retrieved, so we must check + explicitly whether a line terminator is present. + +1997-12-04 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * print.h (SCM_COERCE_OUTPORT): Check that the object is a pair + before taking the CDR. (Thanks to Harald Meland.) + + * filesys.c (scm_stat): Slightly optimized. + +Wed Dec 3 12:23:06 1997 Jim Blandy <jimb@totoro.red-bean.com> + + * ports.c (scm_close_port): Make sure the port is open before + trying to close it. + + * guile-snarf.in: Pass args through to gcc in a way that preserves + whitespace boundaries. (Thanks to Greg Badros.) + +1997-12-02 Tim Pierce <twp@skepsis.com> + + * stacks.c (scm_frame_procedure): Reverse the logic in the return + statement. (Thanks to Doug Evans for pointing this out.) + +1997-12-01 Tim Pierce <twp@skepsis.com> + + * scmconfig.h.in: Regenerated for USCORE change in ../acconfig.h. + +Sun Nov 30 11:29:18 1997 Mikael Djurfeldt <mdj@kenneth> + + * coop-defs.h (struct coop_t): Renamed errno --> _errno to prevent + errno macro expansion of this field name. (errno is a C + preprocessor macro on some systems.) + +1997-11-29 Tim Pierce <twp@skepsis.com> + + * iselect.c: Doc fix. + +Sat Nov 29 01:16:53 1997 Mikael Djurfeldt <mdj@kenneth> + + * init.c (scm_start_stack): Removed initialization of + scm_the_last_stack_var. + + * backtrace.h: Declare scm_the_last_stack_var. + + * backtrace.c: Define scm_the_last_stack_var. + + * root.c (mark_root): Don't mark the_last_stack_var. + + * root.h (scm_root_state): Removed the_last_stack_var. + + * throw.c: Added #include "fluids.h" + (ss_handler): `the-last-stack' is now a fluid. + + * (backtrace.h, backtrace.c, throw.c): Renamed the_last_stack_var + --> the_last_stack_fluid. + + * backtrace.c: Added #include "fluids.h" + (scm_init_backtrace): Initialize `the-last-stack' to a fluid. + (scm_backtrace): `the-last-stack' is now a fluid. + + * init.c (scm_boot_guile_1): Moved call to scm_init_backtrace + after scm_init_fluids. + +1997-11-28 Tim Pierce <twp@skepsis.com> + + * iselect.c: #ifdef USE_THREADS around thread-related includes. + + * dynl-dl.c (sysdep_dynl_func): Check both USCORE and + DLSYM_ADDS_USCORE to decide whether to add an underscore. + +1997-11-28 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * iselect.c (coop_next_runnable_thread, + coop_wait_for_runnable_thread): Disable interrupts so that no + async is executed before a potential error_revive. + (scm_internal_select): Disable interrupts during the parts of the + code which manipulate the sleep queue and the file descriptors. + +1997-11-27 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * Makefile.am: Added iselect.c and iselect.h. + + * coop.c (coop_qinit): Initialize fields used by + scm_internal_select. + (coop_qget, coop_qget, coop_tmp_queue): Made global. + (coop_next_runnable_thread): If GUILE_ISELECT enabled, use + replacement in iselect.c. + (coop_mutex_lock, coop_condition_variable_wait, coop_abort, + coop_join): If GUILE_ISELECT enabled, use + coop_wait_for_runnable_thread instead of + coop_next_runnable_thread. + (usleep, sleep): New replacements for system functions if + GUILE_ISELECT is enabled. + + * coop-threads.h: Declare coop_wait_for_runnable_thread. + + * coop-defs.h (coop_t): Added fields used by scm_internal_select. + + * filesys.c: Added #include "iselect.h". Moved FD-macros to + iselect.h. Implement Scheme level `select' using + scm_internal_select. (See NEWS.) + + * genio.c (scm_getc): Block with scm_internal_select. (See NEWS.) + + * init.c: Call scm_init_iselect. + + * iselect.h, iselect.c: New files. Implements + scm_internal_select. (See NEWS.) + +1997-11-27 Tim Pierce <twp@skepsis.com> + + Fix a memory leak in scm_read_line and a type cast bug in the ptob. + * fports.c (scm_fgets): Use malloc/free rather than scm_must_malloc + and scm_must_free, since ultimately the string returned will be copied + by scm_makfrom0str anyway. Also, read any characters that may have + been pushed onto the port with scm_ungetc. + * ports.c (scm_generic_fgets): Same as for scm_fgets. + * ioext.c (scm_read_line): Free string after Guilifying it. + * ports.h (scm_ptobfuns): fgets method returns a char *, not a char. + +1997-11-26 Anthony Green <green@hoser.cygnus.com> + + * gh_data.c (gh_set_substr): Strings can be longer than 256 bytes. + + * gh.h: Safely wrap prototypes for c++ usage. + +1997-11-25 Mark Galassi <rosalia@cygnus.com> + + * gh_test_repl.c (main_prog): changed invocation of gh_repl() to + gh_repl (argc, argv). + +1997-11-24 Mark Galassi <rosalia@nis.lanl.gov> + + * gh_init.c (gh_repl): modified gh_repl() to accept argc and argv + and to invoke scm_shell(). + (gh_launch_pad): took out the loading of boot-9.scm from here, + since it is probably best to let the user control that. In fact, + gh_repl() now invokes scm_shell() which does that. + +1997-11-23 Mark Galassi <rosalia@cygnus.com> + + * gh_test_repl.c (main_prog): added argc and argv to the gh_repl() + invocation. + +1997-11-22 Tim Pierce <twp@twp.tezcat.com> + + * dynl-dl.c (sysdep_dynl_func): Fix memory leak created by + yesterday's underscore patch. (Thanks to Marius Vollmer for + spotting this.) + +1997-11-21 Tim Pierce <twp@twp.tezcat.com> + + * dynl-dl.c (sysdep_dynl_func): Prepend symb with underscore if + DLSYM_ADDS_USCORE is not defined. + +1997-11-17 Mark Galassi <rosalia@nis.lanl.gov> + + * gh_data.c (gh_uniform_vector_length): + (gh_uniform_vector_ref): started implementing the uniform types in + the gh_ interface. + +1997-11-06 Mikael Djurfeldt <mdj@nada.kth.se> + + * regex-posix.c (scm_free_regex_t): Return size of regex_t instead + of 0; size_t --> scm_size_t. Thanks to Bernard Urban. + +1997-10-26 Mikael Djurfeldt <mdj@nada.kth.se> + + * scmconfig.h.in: Updated (HAVE_LIBTERMCAP was added when + configure.in was changed). + +Sun Oct 26 02:20:11 1997 Jim Blandy <jimb@totoro.red-bean.com> + + * Makefile.am (modinclude_HEADERS): Include readline.h here. + * Makefile.in: Regenerated. + +1997-10-25 Marius Vollmer <mvo@zagadka.ping.de> + + * print.h (SCM_COERCE_OPORT): Renamed to SCM_COERCE_OUTPORT. An + OPORT is an `open' port, not an output port. + + * filesys.c (scm_close, set_element, get_element, scm_chown, + scm_chmod, scm_stat, scm_truncate_file, scm_fcntl, scm_fsync): Use + SCM_COERCE_OUTPORT to cope with the printstate/port magic. + * ports.c (scm_port_revealed, scm_set_port_revealed_x, + scm_close_port, scm_port_line, scm_set_port_line_x, + scm_port_column, scm_set_port_column_x, scm_port_filename, + scm_set_port_filename_x, scm_port_mode, + scm_close_all_ports_except, scm_set_current_output_port, + scm_set_current_error_port): Likewise + * ioext.c (scm_redirect_port, scm_dup_to_fdes, scm_freopen, + scm_ftell, scm_fileno, scm_isatty_p, scm_primitive_move_to_fdes): + Likewise + * posix.c (scm_ttyname, scm_tcgetpgrp, scm_tcsetpgrp): Likewise + * backtrace.c (display_backtrace_body): Likewise + * fports (scm_setvbuf): Likewise + * socket.c (scm_getsockopt, scm_setsockopt, scm_shutdown, + scm_connect, scm_bind, scm_listen, scm_accept, scm_getsockname, + scm_getpeername, scm_send, scm_sendto): Likewise + * unif.c (scm_uniform_array_write): Likewise + +Sat Oct 25 02:52:58 1997 Jim Blandy <jimb@totoro.red-bean.com> + + Minor problems with substring-related tag changes. + * symbols.h (SCM_SUBSTRP): Don't mask off the S bit; that's + exactly what we want to leave in to detect substrings. + (SCM_ROSTRINGP, ROUCHARS): Formatting tweaks. + * tags.h: Fix diagrams and comments describing the S tag bit; + remove vestigial remarks about the D tag bit. + (SCM_TYP7, SCM_TYP7S): Rephrased for readability. + * strings.c: Formatting tweaks. + + * load.c (scm_init_load_path): Check GUILE_LOAD_PATH environment + variable first; then SCHEME_LOAD_PATH, with a warning message. + (scm_parse_path): New function. + * script.c: Doc fixes. + +Thu Oct 23 01:02:03 1997 Jim Blandy <jimb@totoro.red-bean.com> + + Readline support, from Daniel Risacher. + * readline.c, readline.h: New files. + * init.c: #include "readline.h". + (scm_boot_guile_1): Call scm_init_readline, if we have it. + * Makefile.am (libguile_la_SOURCES): Include readline.c. + * Makefile.in: Regenerated. + * scmconfig.h.in: Regenerated, after change to ../configure. + +1997-10-20 Mark Galassi <rosalia@nis.lanl.gov> + + * gh.h: gh_vector_set -> gh_vector_set_x + +1997-10-20 Mark Galassi <rosalia@nis.lanl.gov> + + * gh_data.c (gh_vector_set_x): changed name to make it consistent + with the ! -> _x mapping when going from Scheme to C. + +1997-10-19 Mark Galassi <rosalia@cygnus.com> + + * gh.h (gh_reverse): + (gh_list_tail): + (gh_list_ref): + (gh_memq): + (gh_memv): + (gh_member): + (gh_assq): + (gh_assv): + (gh_assoc): added these gh_ functions implemented as macros. + + * gh_predicates.c (gh_null_p): + (gh_string_equal_p): added these two missing predicates. + + * gh_list.c (gh_append): + (gh_append2): + (gh_append3): + (gh_append4): + (gh_set_car_x): + (gh_set_cdr_x): added these routines as I go through and try to + complete the picture R4RS functions that should be mirrored in the + gh_ interface. + +Sat Oct 18 01:52:51 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * tags.h (scm_tc7_substring): Changed the comment and code to + conform with the changes below. Folks! We have suddenly two new + free tc7 codes!!! Jummy, jummy! + +Tue Oct 14 22:03:06 1997 Tom Tromey <tromey@cygnus.com> + + * Makefile.in: Rebuilt. + * Makefile.am (libguile_la_SOURCES): Removed extchrs.c, + mbstrings.c. + (modinclude_HEADERS): Removed extchrs.h, mbstrings.h. + * unif.c (scm_vector_set_length_x): Don't handle multibyte + strings. + * tag.c (scm_utag_mb_string, scm_utag_mb_substring): Removed. + (scm_tag): Don't handle multibyte strings. + * read.c: Don't include mbstrings.h. + (scm_lreadr): Don't handle multibyte ports. + * kw.c: Don't include mbstrings.h. + * init.c: Don't include mbstrings.h. + (scm_boot_guile_1): Don't init mbstrings module. + * hash.c (scm_hasher): Don't handle mbstrings. + * gscm.c (gscm_run_scm): Don't init mbstrings module. + * gc.c (scm_gc_mark): Don't handle mbstrings. + (scm_gc_sweep): Likewise. + * eval.c (SCM_CEVAL): Don't handle mbstrings. + * eq.c (scm_equal_p): Use SCM_TYP7S, not SCM_TYP7SD. + * tags.h (SCM_TYP7SD): Removed. + (SCM_TYP7D): Removed. + (scm_tc7_mb_string): Removed. + (scm_tc7_mb_substring): Removed. + * print.c (scm_iprin1): Handle char printing directly. Don't + handle mbstrings. + Don't include "mbstrings.h". + * symbols.c (scm_intern_obarray_soft, scm_string_to_symbol, + scm_string_to_obarray_symbol, msymbolize): Don't set symbol's + multi-byte flag. + Don't include "mbstrings.h". + * symbols.h (SCM_SYMBOL_MULTI_BYTE_STRINGP): Removed. + (SCM_SYMBOL_SLOTS): Define as 4. + (SCM_ROSTRINGP): Use SCM_TYP7S, not SCM_TYP7SD. + * arbiters.c, backtrace.c, debug.c, dynl.c, eval.c, fluids.c, + gc.c, gsubr.c, ioext.c, kw.c, mallocs.c, numbers.c, ports.c, + print.c, read.c, regex-posix.c, root.c, srcprop.c, stackchk.c, + struct.c, threads.c, throw.c, unif.c, variable.c: Use new + ("gen"-less) I/O function names. + * ports.c (scm_add_to_port_table): Don't set port's + representation. + * ports.h (scm_port_representation_type): Removed. + (scm_string_representation_type): Removed. + (struct scm_port_table ): Removed representation field. + (SCM_PORT_REPRESENTATION): Removed. + (SCM_SET_PORT_REPRESENTATION): Removed. + * genio.h: Use new function names. + * genio.c: Don't include "extchrs.h". + (scm_gen_putc, scm_gen_puts, scm_gen_write, scm_get_getc): + Removed. + (scm_putc, scm_puts, scm_lfwrite): No longer static. + (scm_getc): No longer static; handle line and column changes. + (scm_ungetc): Renamed from scm_gen_ungetc. + (scm_do_read_line): Renamed from scm_gen_read_line. + * libguile.h: Don't include "extchrs.h" or "mbstrings.h" + * extchrs.h, extchrs.c, mbstrings.h, mbstrings.c: Removed. + +1997-10-12 Mark Galassi <rosalia@cygnus.com> + + * gh_test_repl.c (c_vector_test): same as gh_test_c.c + + * gh_test_c.c (c_vector_test): some improvements on the vector + routines test. + + * gh.h (gh_vector): this used to exist but do the wrong thing. + Now it (almost) does the right thing, though it takes a list + instead of the individual arguments. I need to see how it could + be done right. + (gh_list_to_vector): added this function as a macro. Corresponds + to Scheme's (list->vector ...). + (gh_vector_to_list): added this function as a macro. Corresponds + to Scheme's (vector->list ...). + + * gh_data.c (gh_vector_ref): renamed from gh_vref to + gh_vector_ref, so that it resembles the Scheme routines more. + (gh_vector_set): renamed from gh_vset to gh_vector_set, so that it + resembles the Scheme routines more. + (gh_make_vector): this used to be (stupidly) called gh_vector(). + This is the right name, since it does the same thing as the Scheme + (make-vector ...) procedure. + +Sun Oct 12 14:41:39 1997 Mikael Djurfeldt <mdj@kenneth> + + * ports.h: #include "libguile/print.h" + + * eval.c (SCM_CEVAL, scm_apply): Completed GOOPS support code; + Some indentation fixes. + + * objects.h (SCM_METACLASS_STANDARD_LAYOUT): Printer field is no + longer a user field; New field: class_flags. + + * objets.c, objects.h: New metaclass: scm_metaclass_operator. + +Tue Oct 7 09:37:24 1997 Mark Galassi <rosalia@cygnus.com> + + * gh_data.c (gh_bool2scm): new function which replaces + gh_int2scmb(), which is now tagged as obsolete. + +1997-10-03 Mikael Djurfeldt <mdj@nada.kth.se> + + * print.h (SCM_PRINT_STATE_P): Removed SCM_NIMP test. (NIMP + macros should by convention not test for NIMPness.) + (SCM_COERCE_OPORT): Adjust indentation. + + * print.c (scm_valid_oport_value_p): Adjusted indentation; Added + SCM_NIMP test before SCM_PRINT_STATE_P. + + * struct.c, struct.h, gc.c: Renamed: + scm_struct_i_layout --> scm_vtable_index_layout + scm_struct_i_vcell --> scm_vtable_index_vcell + scm_struct_i_vtable --> scm_vtable_index_vtable + scm_struct_i_printer --> scm_vtable_index_printer + scm_struct_i_vtable_offset --> scm_vtable_offset_user + + * struct.c (scm_print_struct): Use new printer slot; Default + printing: Also output hex code of vtable so that type identity + will be indicated as well. + (scm_init_struct): Updated required_vtable_fields to "pruosrpw"; + Removed struct_printer_var; Removed struct-vtable-offset; + (vtable-index-layout, vtable-index-vtable, vtable-index-printer, + vtable-offset-user): New constants. + + * struct.h (scm_struct_i_vtable_offset): Bumped from 3 to 4. + (scm_struct_i_printer, SCM_STRUCT_PRINTER): New slot in vtables. + If this slot contains a procedure, use that to print structures of + the type represented by this vtable. + + * print.c (scm_iprin1): Don't print arguments of macro + transformers. (They are always: exp env.); Bugfix: Unmemoize + transformer source with correct environment. + +1997-10-02 Marius Vollmer <mvo@zagadka.ping.de> + + Streamlining of call-with-dynamic-root: + + * root.c (cwdr_inner_body, cwdr_body): Remove "inner" from name, + there is now only one catch. + (cwdr_outer_body): Removed. + (cwdr_handler): New function. + (scm_internal_cwdr): New function to perform the function of cwdr + but take args that are more useful to C code. Also, the handler + is now invoked *outside* of the new dynamic root, like the docs + say. We no longer have to catch absolutely all errors, the caller + is responsible for using a handler that does not throw, if he + wants that. + (cwdr): Reimplemented in terms of scm_internal_cwdr. + * root.h (scm_internal_cwdr): New prototype. + + Even more but risky streamlining: + + * root.c (USE_STACKJMPBUF): New define to activate a stack-based + allocation of the jumpbuf of a root continuation. The changes + below are controlled by it. They are now deactivated. + (scm_internal_cwdr): Allocate the scm_contregs on the stack. Set + the JMPBUF of the scm_rootcont to NULL before returning. + + * gc.c (scm_gc_sweep): Free the SCM_VELTS of a scm_tc7_contin only + when they are non-NULL. + (scm_gc_mark): Likewise, mark only when non-NULL. + + Make dynamic linking work on Dec Unix. (Thanks to Clark McGrew) + * dynl.c: Include "dynl-dl.c" also when HAVE_DLOPEN is defined. + + * gc.c (scm_done_malloc): New function. + gc.h (scm_done_malloc): New prototype. + + * print.h (SCM_PRINT_STATE_P, SCM_COERCE_OPORT): New macros. + (struct scm_print_state) [revealed]: New field. + (scm_print_state_vtable): Make visible to the outside world for + type checking purposes. + (scm_valid_oport_value_p): New prototype. + + * print.c (scm_valid_oport_value_p): New function to check whether + a certain value is acceptable as a port argument. + (scm_print_state_vtable): New variable. + (scm_free_print_state): Set `revealed' field to false. + (scm_iprin1): Call user supplied closure printer with + scm_printer_apply. Print in the traditional way when there isn't + one or when it returns #f. + (scm_prin1, scm_display, scm_write, scm_newline, scm_write_char): + Accept a port/print-state pair in addition to just a port. + (scm_prin1): Don't return the print_state to the pool when it has + been `revealed'. + (scm_printer_apply): Set `revealed' field of print_state to true. + (scm_init_print): Set scm_print_state_vtable. + (print_state_fluid, print_state_fluid_num): Removed. + + * throw.h (scm_handle_by_proc_catching_all): New prototype + throw.c (scm_handle_by_proc_catching_all): New function + +Mon Sep 29 23:54:09 1997 Jim Blandy <jimb@totoro.red-bean.com> + + * Makefile.in: Regenerated with automake 1.2c. + +Sun Sep 28 21:35:42 1997 Radey Shouman <shouman@zianet.com> + + * ramap.c (scm_array_index_map_x): Fixed for zero-rank arguments, + was looping endlessly. + +Sun Sep 28 00:04:29 1997 Jim Blandy <jimb@totoro.red-bean.com> + + * strports.c (scm_eval_string): Don't close the port. + + * stime.c (bdtime2c): Use SCM_LENGTH, not scm_vector_length; the + former returns a nice normal integer. (Thanks to Daniel + Risacher.) + +Sat Sep 27 20:19:34 1997 Jim Blandy <jimb@totoro.red-bean.com> + + * Makefile.am (libpath.h): Include the value of the THREAD_LIBS + makefile variable as a build parameter called LIBS. The + build-guile program will use this, for the time being. + * Makefile.in: Regenerated. + + Thanks to Shiro Kawai: + * gc.c (scm_gc_mark): Pass NULL to scm_wta as the subroutine name. + * ports.h (scm_ptobfuns): The fgets method returns a char *, not + an SCM. + + * Makefile.in: Regenerated with automake 1.2a. + + * script.c (scm_compile_shell_switches): If we hit the -c or -- + arguments, don't set the car of (command-line) to scm_usage_name, + the prettified name of the guile executable; give it the full + path, the way shells usually handle $0. + +Wed Sep 24 22:09:52 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * ramap.c (scm_array_map): Renamed to scm_array_map_x. Removed + Scheme-level name `array-map' and renamed `serial-array-map' to + `serial-array-map!'. + + * backtrace.c: Introduced exception handlers which now enclose + `display-error' and `display-backtrace' so that error reporting + won't get into infinite loops if an error occurs during displaying + of the error. This can very easily happen with user supplied + print call-back routines. + +Tue Sep 23 12:43:17 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * ramap.c: Added alias `array-map!' for `array-map'. (Probably, + the names `serial-array-map' and `array-map' should be removed.) + +Mon Sep 22 01:21:54 1997 Mikael Djurfeldt <mdj@kenneth> + + * init.c (scm_boot_guile_1): Added scm_init_objects (). + Added #include "objects.h" + + * eval.c (scm_makprom): Added SCM_DEFER_INTS and SCM_ALLOW_INTS. + Add #include "feature.h". + + * Makefile.am (libguile_la_SOURCES): Added objects.c. + (modinclude_HEADERS): Added objects.h. + + * ports.h (SCM_EOF_OBJECT_P): New macro predicate. + This test is needed at many places in the code and should be + abstracted. (Motivated by the need of this test in libguiletk.) + + * ports.c (scm_eof_object_p), vports.c (sfgetc), strports.c + (scm_eval_string), load.c (scm_primitive_load, + scm_read_and_eval_x), gh_eval.c (gh_eval_str): + Use SCM_EOF_OBJECT_P. + + * eval.c (scm_init_eval): Add feature `delay'. + +Tue Sep 16 02:12:02 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * scmhob.h: Removed. + +Mon Sep 15 20:42:03 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * list.h (SCM_LISTn): New macros. Make list creation in C code + prettier. The idea comes from STk. + + * sequences.h, sequences.c, append.h, append.c: Removed. These + files implemented non-R4RS operations which would encourage + non-portable programming style and less easy-to-read code. + + * Makefile.am (sequences.h, sequences.c, append.h, append.c): + Removed. + + * libguile.h, eval.c, init.c, stime.c, unif.c: Removed #include + sequences.h, #include append.h. + + * init.c (scm_boot_guile_1): Removed calls to scm_init_append and + scm_init_sequences. + + * gh.h, gh_list.c: Renamed gh_list_length --> gh_length. + + * list.h, list.c: Renamed scm_list_length --> scm_length, scm + + * stime.c (bdtime2c): Changed scm_obj_length --> scm_vector_length. + +Sat Sep 13 00:21:41 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * eval.c: Added #include "objects.h" + + * tags.h (scm_tc16_object, scm_tc16_entity): Smobtags for objects + and entities. + + * smob.c (scm_smob_prehistory): Create two objectsmobs with + adjacent smob numbers. + +Thu Sep 11 00:59:17 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * procprop.h: Added declaration of scm_i_inner_name. + + * gsubr.c: New global symbol scm_i_inner_name. + + * debug.c (scm_procedure_name): Try procedure property + `inner-name' if `name' fails. + + * print.c (scm_iprin1): Use scm_macro_name. + + * eval.c (scm_m_define): Give names to macros as well; Only the + first top-level definition gives a procedure/macro a name. + Otherwise confusing names can turn up in backtraces. + (SCM_CEVAL): SCM_IM_DEFINE: Set `inner-name' property instead of + `name'; Give names to macros as well. + + * procs.c (scm_closure_p), print.c (scm_iprin1), eval.c + (scm_macro_transformer): Use SCM_CLOSUREP instead of + scm_closure_p. + +Wed Sep 10 20:52:18 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * eval.c (macro?, macro-type, macro-name, macro-transformer): New + procedures; + (prinmacro): Removed. The code has been moved/merged into print.c + in order to decrease code redundancy. We want macros to print in + a way equivalent to procedures, and it would be silly to duplicate + the required code. (We don't want to maintain two places.) + (macrosmob): Print field is now a NULL pointer. + + * eval.h (scm_macro_p, scm_macro_type, scm_macro_name, + scm_macro_transformer): New prototypes. + (scm_tc16_macro): Declared. + + * print.c (scm_iprin1): Added code for printing of macros. Macros + are now printed in a way equivalent to procedures. + +Sat Sep 6 12:20:42 1997 Mikael Djurfeldt <mdj@kenneth> + + * procs.h (scm_closure_p): Added declaration. + +Fri Sep 5 13:36:14 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * gc.c (scm_gc_mark): Fixed "rogue pointer in heap" message: + Shouldn't pass "heap" as the subr name. + +Tue Sep 2 18:14:30 1997 Jim Blandy <jimb@totoro.red-bean.com> + + * gh_predicates.c (gh_boolean_p, gh_symbol_p, gh_char_p, + gh_vector_p, gh_pair_p, gh_number_p, gh_string_p, gh_procedure_p, + gh_list_p, gh_inexact_p, gh_exact_p, gh_eq_p, gh_eqv_p, + gh_equal_p): Use SCM_NFALSEP, instead of testing against + SCM_BOOL_T. Any non-false value is true. + +Tue Sep 2 00:27:07 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * symbols.h (scm_builtin_bindings, scm_builtin_weak_bindings, + scm_gensym): Added prototypes. + + * symbols.c (scm_gensym): New function. This will speed up + certain types of applications (such as macro systems) which + generate lots of symbols. + +Mon Sep 1 22:30:33 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * numbers.c (logand, logior, logxor): Handle 0 or 1 arguments. + +Sat Aug 30 18:56:19 1997 Gary Houston <ghouston@actrix.gen.nz> + + * unif.c (scm_shap2ra): tighten the checking of the array dimension + specifier, since (2) or (2 . 3) would cause SEGV. + (scm_transpose_array): more argument checking fixes. + +Thu Aug 28 23:48:53 1997 Jim Blandy <jimb@totoro.red-bean.com> + + * Makefile.in: Regenerated. + +Wed Aug 27 17:44:44 1997 Jim Blandy <jimb@totoro.red-bean.com> + + * Makefile.in: Regenerated, so it uses "tar", not "gtar". + +Mon Aug 25 13:47:25 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * error.c, error.h (scm_error_callback): Removed (see NEWS). + +Sun Aug 24 01:25:35 1997 Mikael Djurfeldt <mdj@kenneth> + + * regex-posix.c: If <regex.h> can't be found, try <rxposix.h> or + <rx/rxposix.h>. (This is in order to accomodate for the GNU Rx + library.) + + * ramap.c (scm_ra_matchp, scm_array_fill_int, racp, ramap_1, + ramap_2o, scm_array_index_map_x, raeql_1, scm_array_equal_p), + unif.c (scm_vector_set_length_x, scm_uniform_vector_length, + scm_array_p, scm_array_rank, scm_array_dimensions, + scm_enclose_array, scm_array_in_bounds_p, scm_uniform_vector_ref, + scm_cvref, scm_array_set_x, scm_array_contents, scm_array_to_list, + scm_array_prototype): Added case scm_tc7_wvect. + +Sat Aug 23 18:45:44 1997 Gary Houston <ghouston@actrix.gen.nz> + + * errno.h: prototype for scm_strerror. + * error.c (scm_strerror): new procedure. + +Mon Aug 18 14:58:22 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * list.c (scm_list_append_x): Allow non-pair as last argument. + This is consistent with the R4RS append and is probably the + correct behaviour as specified by R2RS. (Thanks to Radey Shouman) + +Sat Aug 16 18:42:15 1997 Gary Houston <ghouston@actrix.gen.nz> + + * stime.h: prototype for scm_times. + * stime.c (scm_times): new procedure. + * ioext.c (scm_fseek): if the first argument is a file descriptor + call lseek. + (scm_ftell): if the first argument is a file descriptor call lseek + (sic). + * filesys.h: prototypes for scm_open_fdes, scm_fsync. + * filesys.c (scm_chmod): if the first argument is a file descriptor, + call fchmod. + (scm_chown): if the first argument is a port or file descriptor, + call fchown. + (scm_truncate_file): new procedure. + Add DEFER/ALLOW INTS to a few other procedures. + (scm_fsync): new procedure. + (scm_open_fdes): new procedure. + (scm_open): use scm_open_fdes. If mode isn't specified, 666 will + now be used. + (scm_fcntl): the first argument can now be a file descriptor. The + third argument is now optional. + + * posix.c (scm_execl, scm_execlp): make the filename argument + compulsory, since omitting it causes SEGV. + (scm_sync): return unspecified instead of #f. + (scm_execle): new procedure. + (environ_list_to_c): new procedure. + (scm_environ): use environ_list_to_c. disable interrupts. + (scm_convert_exec_args): take pos and subr arguments and + improve error checking. + +1997-08-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * stacks.c (scm_make_stack), coop-threads.c, mit-pthreads.c + (scm_call_with_new_thread): Bugfix: SCM_WNA should go as third + argument to SCM_ASSERT. Furthermore, the name of the function + should be passed as first argument when signalling + SCM_WNA. (Thanks to Thomas Morgan) + + * gsubr.c (scm_gsubr_apply): From Radey Shouman + <shouman@zianet.com>: "The switch in scm_gsubr_apply that + dispatches on the number of actual args has a default case + reporting an internal error. This is a vestige from a version + that mallocated a SCM vector to hold the arguments. In the + current version this check is too late: if it ever happens we will + have already overstepped the bounds of the array. + + Also, the patch [...] adds a check for too many actual arguments." + + mdj: Removed check for "internal programming error". + +Wed Aug 13 15:38:44 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * gh_io.c (gh_write): New function. + + * gh_eval.c (catch_with_saved_stack): Removed. Replaced by: + throw.c (scm_internal_stack_catch): New sibling to the other catch + functions. Code moved from gh_eval.c. + throw.h: Added header. + gh_eval.c (gh_eval_str_with_stack_saving_handler): Renamed call to + scm_internal_stack_catch. + +Tue Jul 29 01:03:08 1997 Gary Houston <ghouston@actrix.gen.nz> + + * ioext.h: fix up prototypes. + * ioext.c (scm_dup_to_fdes): renamed from scm_primitive_dup2. + Scheme name is now dup->fdes. + (scm_dup_to_fdes): make the second argument optional and + fold in the functionality of scm_primitive_dup. + (scm_primitive_dup): deleted. + +Mon Jul 28 05:24:42 1997 Gary Houston <ghouston@actrix.gen.nz> + + * fports.h (SCM_P): prototypes for scm_setvbuf, scm_setfileno. + * fports.c (scm_setbuf0): don't disable the setbuf if MSDOS or + ultrix are defined. Use setvbuf instead of setbuf. + (scm_setvbuf): new procedure. + (scm_init_fports): intern _IOFBF, _IOLBF, _IONBF. + (scm_setfileno): moved from ioext.c. + (scm_fgets): cast SCM_STREAM to (FILE *), remove unused lp variable. + (top of file): Delete 25 lines of probably obsolete CPP hair for MSDOS. + +Sun Jul 27 10:54:01 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * fluids.c (scm_fluid_p): New function. + * fluids.h (scm_fluid_p): New prototype. + +Sat Jul 26 21:33:37 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * print.c (scm_iprin1): Enter printed structures into the print + state as nested data while they are printed. + (print_state_fluid, print_state_fluid_num): New variables. + (scm_init_print): Initialize them. + (scm_iprin): If print_state_fluid carries a print_state, use that + instead of creating a new one. + (scm_printer_apply, apply_stub, struct apply_data): New + definitions to help with calling printer functions written in + Scheme. + * print.h (scm_printer_apply): New prototype. + + * struct.c (scm_print_struct): Use scm_printer_apply to call the + user defined struct printer. + + * dynwind.c (scm_dowinds): Handle fluids on the wind list. + * fluids.h (scm_internal_with_fluids, scm_with_fluids, + scm_swap_fluids, scm_swap_fluids_reverse): New prototypes. + * fluids.c (scm_internal_with_fluids, scm_with_fluids, + scm_swap_fluids, scm_swap_fluids_reverse): New functions. + +Fri Jul 25 12:05:46 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * fluids.c (scm_fluid_ref, scm_fluid_set_x): Fixed use of + SCM_ASSERT: arg comes before pos. + +Fri Jul 25 17:00:38 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * eval.c (scm_apply): Handle the case when a tc7_sybr_2 is applied + to a list of length zero correctly. + +Wed Jul 23 16:17:46 1997 Tim Pierce <twpierce@bio-5.bsd.uchicago.edu> + + Supply an `fgets' method for port objects to do fast line i/o. + * ioext.c (scm_read_line): New function. + * genio.c (scm_gen_read_line): New function. + * fports.c (scm_fgets): New function. + (scm_fptob, scm_pipob): Add scm_fgets method. + * ports.c (fgets_void_port, scm_generic_fgets): New functions. + (void_port_ptob): Add void fgets method. + (scm_newptob): Initialize fgets method from ptob struct. + * ports.h (scm_ptobfuns): Add fgets method. + * vports.c (scm_sfptob): Supply generic fgets method. + * strports.c (scm_stptob): Supply generic fgets method. + +Mon Jul 21 04:03:42 1997 Gary Houston <ghouston@actrix.gen.nz> + + * ioext.h: removed scm_duplicate_port prototype. + + * ioext.c (scm_primitive_dup2): return the new file descriptor + instead of SCM_UNSPECIFIED, since similarity to scm_primitive_dup + is convenient. + (scm_fdopen): bug fix: don't try to make port unbuffered until its + stream has been set. + (scm_duplicate_port): deleted, there's now an implementation in + boot-9.scm. + (scm_primitive_dup2): do nothing if newfd == oldfd. + +Sun Jul 20 03:55:49 1997 Gary Houston <ghouston@actrix.gen.nz> + + * filesys.c (scm_close): oops, don't call SCM_INUM twice on the + argument. + + * ioext.h: new prototypes. + * ioext.c (scm_primitive_dup, scm_primitive_dup2): new procedures. + + * fluids.c (next_fluid_num): don't do + SCM_THREAD_CRITICAL_SECTION_START/END unless USE_THREADS is defined. + + * ports.h: prototypes too. + * ports.c (scm_mode_bits, scm_port_mode): moved from fports.c. + + * fports.h: prototype too. + * fports.c (scm_evict_ports): moved from ioext.c. + +Sat Jul 19 04:56:52 1997 Gary Houston <ghouston@actrix.gen.nz> + + * ports.c (scm_close_port): return a boolean instead of unspecified. + throw an error if an error other than EBADF occurs. + + * filesys.h: scm_close prototype. + * filesys.c (scm_close): new procedure, can close file descriptors + and ports (scsh compatible). + + * ports.c (scm_flush_all_ports): SCM_PROC incorrectly allowed an + optional argument. + +Fri Jul 18 11:19:53 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * fluids.c, fluid.h: New files. + * Makefile.am (libguile_la_SOURCES): Added "fluids.c". + (modinclude_HEADERS): Added "fluids.h" + + * init.c: Include "fluids.h". (scm_boot_guile_1): Added call to + scm_init_fluids to initialize the fluid machine. + (scm_start_stack): Initialize the fluids of the first root with + scm_make_initial_fluids. + + * root.h: Added "fluids" member to scm_root_state. + * root.c: Include "fluids.h". (scm_mark_root): Mark "fluids". + (scm_make_root): Call scm_copy_fluids to make fluid bindings + unique for the new root when it has a parent. + + * smob.h: Include "libguile/print.h" to make scm_print_state + visible. + + * dynl.c (free_dynl_obj): New function to free the dynamic object + data. (dynl_smob): Use it. + * dynl.c (scm_dynamic_link): Moved allocating of the memory for + the dynamic object data below the linking of the object to avoid + memory leak when the linking code throws an error. Now the code + leaks a whole dynamically linked library when must_malloc throws, + but that should be much less likely. + +Fri Jul 11 00:19:47 1997 Jim Blandy <jimb@floss.red-bean.com> + + Changes to compile under gnu-win32, from Marcus Daniels: + * stime.c (tzset): If tzset isn't provided, make it a NOP. + (scm_localtime): Change SCM_EOF to SCM_EOL. + (scm_mktime): Likewise. + * socket.c: Don't include sys/un.h unless autoconf tells + us Unix domain sockets are available. + (scm_fill_sockaddr): Ignore Unix domain code. + (scm_addr_vector): Likewise. + (scm_init_addr_buffer): Likewise. + (scm_socketpair): Don't include unless socketpair was + found during autoconf. + * simpos.c (SYSTNAME): Treat cygwin like Unix. + * scmsigs.c (scm_pause): Don't include unless pause was found + during autoconf. + * posix.c (scm_getgroups): Don't include unless support function + was found during autoconf (in this case, getgroups). + (scm_setpwent): For setpwent. + (scm_setegid): For setegid. + * net_db.c (scm_inet_netof): Don't include unless support + function was found during autoconf (in this case, inet_netof). + (scm_lnaof): For inet_lnaof. + (scm_inet_makeaddr): For inet_makeaddr. + (scm_getnet): For getnetent, getnetbyname, getnetbyaddr. + (scm_getproto): For getprotoent. + (scm_getserv): For getservent. + (scm_sethost): For sethostent, endhostent. + (scm_setnet): For setnetent, endnetent. + (scm_setproto): For setprotoent, endprotoent. + (scm_setserv): For setservent, endservent. + * scmconfig.h.in: Regenerated. + +Thu Jul 10 00:22:24 1997 Jim Blandy <jimb@floss.red-bean.com> + + * stime.c (scm_localtime, scm_mktime): Pass SCM_EOL to + scm_misc_error, not SCM_EOF. + + * error.c (scm_wta): Pass SCM_EOL to scm_misc_error as the list of + arguments for formatting the error message, not SCM_BOOL_F. I + think this is left over from the (eq? '() #f) days. + + * read.c (recsexpr): Give this a dummy definition if + DEBUG_EXTENSIONS isn't #defined. + +Fri Jul 4 23:42:17 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * coop-threads.c (scm_wait_condition_variable): Lock mutex again + after waiting. + +Thu Jul 3 16:31:24 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * root.c (cwdr_outer_body): Bugfix: Pass `c' instead of `&c' to + scm_internal_catch. + +Sat Jun 28 16:14:09 1997 Tim Pierce <twp@twp.tezcat.com> + + * Makefile.am (libguile_la_LIBADD): Remove @ALLOCA@, since + alloca.lo will be included in @LIBLOBJS@. Something better than + this should be possible. + * Makefile.in: Regenerated. + +Sat Jun 28 03:40:15 1997 Gary Houston <ghouston@actrix.gen.nz> + + * simpos.h: prototype for scm_primitive_exit. + * simpos.c (scm_primitive_exit): new procedure, terminates the + process without unwinding the stack. + +Sat Jun 28 03:45:25 1997 Tim Pierce <twp@twp.tezcat.com> + + * regex-posix.c (scm_make_regexp): Make `flags' a variable-length + argument and logior its components together, so the user doesn't + have to do this explicitly. Also, if regexp/basic is supplied, then + turn off REG_EXTENDED. + (scm_init_regex_posix): New regexp/basic symbol. + (REG_BASIC): #define this if it is not already present. + +Fri Jun 27 20:36:35 1997 Tim Pierce <twpierce@bio-5.bsd.uchicago.edu> + + * Makefile.am (libguile_la_LIBADD): Include @ALLOCA@. + (MOSTLYCLEANFILES): New target, changed from CLEANFILES. + (CLEANFILES): New target, clean versiondat.h, libpath.h. + (DISTCLEANFILES): New target, clean *.x. + * Makefile.in: Regenerated. + +Tue Jun 24 00:29:07 1997 Jim Blandy <jimb@floss.red-bean.com> + + * script.c (scm_compile_shell_switches): Add 1997 to copyright + years in usage message. + + * Makefile.am (libguile_la_LDFLAGS): Bump library version. + * Makefile.in: Regenerated. + + * regex-posix.c (scm_init_regex_posix): Delete the regexp/nosub + flag; I don't think we support it. + (scm_make_regexp): Make sure the user doesn't pass the + regexp/nosub flag. + + * regex-posix.c (scm_make_regexp, scm_regexp_exec): Add optional + FLAGS arguments. + (scm_init_regex_posix): Define constants for the REG_mumble flags; + name them according to the SCSH convention: regexp/mumble. + + * regex-posix.h (scm_make_regexp, scm_regexp_exec): Update prototypes. + +Mon Jun 23 18:44:49 1997 Jim Blandy <jimb@floss.red-bean.com> + + * Makefile.am (libpath.h): Include the values of all the standard + Makefile directory variables. Print a message, but don't print + all the commands. + (versiondat.h): Print a message, but don't print all the commands. + * load.c: #include "alist.h". + (init_build_info): New function. + (scm_init_load): Call it. + * Makefile.in: Regenerated. + +Sun Jun 22 19:12:58 1997 Jim Blandy <jimb@floss.red-bean.com> + + * root.c: Establish a reliable catch-all handler for the new root. + After all the Scheme handler function might signal an error too, + and we don't want to lose that. + (cwdr_inner_body): Renamed from cwdr_body. + (cwdr_outer_body): New function, to establish the user's handler, + and pass control to cwdr_inner_body. + (cwdr): Establish the reliable catch-all handler here, and pass + control to cwdr_outer_body. + (struct cwdr_body_data): New field, handler, to allow cwdr to pass + the user's handler through to cwdr_outer_body. + * throw.c (scm_handle_by_message): Move guts into.... + (handler_message): New static function. + (scm_handle_by_message_noexit): New function. + * throw.h (scm_handle_by_message_noexit): New prototype. + + * __scm.h: (SCM_FENCE): New macro: optimizer will not move code + across this. Only works on GCC. Otherwise, we hope for the best. + (SCM_DEFER_INTS, SCM_ALLOW_INTS): Use FENCE appropriately. I have + the feeling that real thread systems will not need this... + +Sun Jun 22 15:46:35 1997 Jim Blandy <jimb@floss.red-bean.com> + + Try to detect when people are using one version of libguile and a + different version of ice-9. People have been skewing things and + sending in bug reports. + * Makefile.am (versiondat.h): New file to generate. + * version.c: #include "versiondat.h", to get version info. + (scm_libguile_config_stamp): New function. + * script.c: #include "version.h". + (scm_compile_switches): Call scm_version to get version number. + * scmconfig.h.in, Makefile.in: Regenerated. + * Makefile.in: Regenerated. + + * Makefile.am (ETAGS_ARGS): Catch SCM_PROC, etc. so we can find + primitive definitions under their Scheme names. + + * Makefile.am (libguile_la_LDFLAGS): Update library version to + 1:2. Helps avoid confusion between installed and uninstalled libs. + + * scmconfig.h.in: Regenerated. (Needed after June 3 change to + ../configure.in.) + + * gdb_interface.h (GDB_INTERFACE): Remove semicolon and trailing + backslash from definition; this should be used like: GDB_INTERFACE; + +Sun Jun 22 04:00:32 1997 Gary Houston <ghouston@actrix.gen.nz> + + * ioext.c (scm_duplicate_port): bug fix: don't try to make the + new port unbuffered until its stream has been set. + +Sat Jun 21 18:44:03 1997 Gary Houston <ghouston@actrix.gen.nz> + + * ports.h: new prototype. + * ports.c (scm_flush_all_ports): new procedure, scsh compatible. + +Sat Jun 21 00:25:03 1997 Jim Blandy <jimb@floss.red-bean.com> + + Make things compile neatly under Sun's C compiler. + * dynl.c (scm_dynamic_func): Cast return value from sysdep_dynl_func. + * extchrs.c (xmbtowc): Make the second arg a normal char, not + unsigned, because that's what the ANSI function takes. + * extchrs.h (xmbtowc): Corresponding change to prototype. + * genio.c (scm_gen_getc): Make buf plain chars. Nobody wants + uchars here. + * mbstrings.c (scm_mb_ilength): Use ANSI arg syntax. Make DATA + argument plain char *. + * strings.c (scm_string): Use SCM_ROCHARS, since c is a plain + char. + * tag.c (scm_tag): Remove unreachable statement. + * unif.c (scm_array_to_list): If we want to shift a 1 bit to the + top of the word, it should be unsigned. + + * eval.c (scm_lookupcar1): Don't declare var2 unless USE_THREADS + is defined, to avoid warnings; it's only used in the + conflict-checking code. Which might go away anyway. + (SCM_CEVAL): All goto's targeting the `dispatch' label are in + conditionals; put the label definition in an #if too, to stifle + warnings. + + * Makefile.am (EXTRA_DIST): Include ChangeLog-gh and + ChangeLog-threads in the distribution. + * Makefile.in: Regenerated. + +Fri Jun 20 10:03:41 1997 Tim Pierce <twpierce@bio-5.bsd.uchicago.edu> + + * guile-snarf.in: Changed regexp to support CPPs that insert + whitespace between lexical tokens (which munges the `%%%' snarf + cookie). + +Tue Jun 17 13:49:56 1997 Tim Pierce <twpierce@bio-5.bsd.uchicago.edu> + + * load.c (scm_init_load_path): Append $(datadir)/guile to + %load-path, so modules do not have to be installed in Guile's + current version directory. + +Mon Jun 16 17:20:55 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * dynl.c (scm_dynamic_call, scm_dynamic_args_call): Wrap dynamic + function call in SCM_DEFER_INTS/SCM_ALLOW_INTS. + (scm_dynamic_link, scm_dynamic_unlink, scm_dynamic_func): Always + call the sysdep functions with deferred ints. + * dynl.c, dynl-dl.c, dynl-dld.c, dynl-shl.c (sysdep_dynl_link, + sysdep_dynl_unlink, sysdep_dynl_func): Expect to be called with + deferred interrupts and insert SCM_ALLOW_INTS before throwing an + error. + + * dynl.c (scm_dynamic_unlink, scm_dynamic_call): Return + SCM_UNSPECIFIED. + +Sat Jun 14 19:00:58 1997 Gary Houston <ghouston@actrix.gen.nz> + + * scmsigs.c (sys_deliver_signals): add a comment about a probable bug. + +Wed Jun 11 00:33:00 1997 Jim Blandy <jimb@floss.red-bean.com> + + * Makefile.in: Regenerated after xtra_PLUGIN_guile_libs change in + ../configure.in. + +Sun Jun 8 14:37:26 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * eval.c (scm_lookupcar1): New procedure to cope with a race + condition during lookup (when using threads). + (scm_lookupcar): Implement in terms of scm_lookupcar1. + (SCM_CEVAL): Use scm_lookupcar1 instead of scm_lookupcar in one + place. + +Fri Jun 6 19:05:07 1997 Jim Blandy <jimb@totoro.cyclic.com> + + * regex-posix.c (scm_regexp_exec): Use the `start' argument if + supplied. (Change from Tim Pierce.) + +Thu Jun 5 16:38:19 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * struct.c (init_struct): Forget to mention this in the "Wed Jun 4 + 23:47:01 1997" changelog: Slots are now initialized with `#f' by + default and not `()'. `#f' is the canonical non-value in Scheme, + right? + +Wed Jun 4 23:47:01 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * struct.c (struct_printer): New variable that holds a handle on + the Scheme variable *struct-printer*. This variable can be set by + Scheme code to override the printing of structures. + (scm_print_struct): If struct_printer is set, call it. If it is + not set, or returns #f, print the structure in the old fashion. + Include "eval.h" for scm_apply. + +Tue Jun 3 23:01:39 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * struct.c (scm_struct_ref, scm_struct_set_x): Use + scm_struct_i_n_words to get the number of fields, not + -scm_struct_n_extra_words. + + On the route to fancier struct printing: + * struct.c (scm_print_struct): New function to print a structure. + Include "genio.h" to support it. This function doesn't do + anything interesting right now, but I think it should be here + anyway. + * struct.h: Include "print.h" and add prototype for + scm_print_struct. + * print.c (scm_iprin1): Call scm_print_struct instead of trying to + print structures ourself. + +Sun Jun 1 07:58:41 1997 Gary Houston <ghouston@actrix.gen.nz> + + * scmsigs.c (sys_deliver_signals): bug fix: reset got_signal[i] + before applying the handler in case it doesn't return. + +Sat May 31 18:57:51 1997 Gary Houston <ghouston@actrix.gen.nz> + + * scmsigs.h, async.h: updated. + + * _scm.h: if HAVE_RESTARTS is defined then don't use a SYSCALL + loop. + + * posix.c (scm_uname): interpret only negative values as an error. + Solaris normally returns a positive value. + + * script.c (scm_compile_shell_switches): if we are not going into + an interactive repl, set scm_mask_ints to zero so that asyncs can + run. + + * simpos.c (scm_system): don't ignore/unignore signals around + the "system" call. + + * posix.c (scm_open_pipe): don't ignore/unignore signals around + the "popen" call. + + * init.c (scm_boot_guile_1): don't call scm_init_signals, it's + done in boot-9.scm instead. + + * scmsigs.c, async.c: Major rewriting of signal handling code. + (scm_sigaction): new procedure. + (scm_sleep): don't wrap sleep in SCM_SYSCALL, it would mess up the + timing. + (scm_raise): return unspecified, throw error on failure. + +Thu May 29 02:47:36 1997 Jim Blandy <jimb@floss.cyclic.com> + + * regex-posix.c (scm_init_regex_posix): Register the "regex" + feature, to help boot-9.scm decide whether to import the regex + module. + +Thu May 29 02:19:40 1997 Jim Blandy <jimb@floss.cyclic.com> + + * eval.c: Include scmconfig.h at the beginning of the file so that + HAVE_ALLOCA_H may properly be defined. Thanks to Bill Janssen for + pointing this out. + + * regex-posix.c: #include "_scm.h" before conditionally #including + <regex.h>; the former defines HAVE_REGCOMP. + + * regex-posix.c: #include <regex.h> conditionally, so the file is + CPP'able (for dependency scanning) even on systems that don't have + a <regex.h> header. + +Tue May 27 23:48:38 1997 Jim Blandy <jimb@floss.cyclic.com> + + Add new R4RS-compliant syntax for keywords. + * read.c (scm_lreadr): Recognize `#:' as a prefix for keywords, + regardless of the setting of the `keywords' read option. + * kw.c (prin_kw): Print keywords using the `#:' syntax, so they + can be re-read no matter what the setting of the `keywords' read + option. + +Tue May 27 22:47:31 1997 Tim Pierce <twp@twp.tezcat.com> + + Add support for POSIX regular expressions. + + * regex-posix.c, regex-posix.h: New files. (Some code + is taken liberally from rx/rgx.c in the old Guile dist.) + + * init.c: Include regex-posix.h. + (scm_boot_guile_1): Call scm_init_regex_posix. + + * Makefile.am (EXTRA_libguile_la_SOURCES, modinclude_HEADERS): + Add regex-posix.[ch] sources. + * Makefile.in: Regenerated. + + * scmconfig.h.in: Add HAVE_REGCOMP macro. (automake is supposed + to do this automatically? It didn't for me, bleh.) + +Mon May 26 18:51:29 1997 Jim Blandy <jimb@floss.cyclic.com> + + * fports.c (print_pipe_port): New function. + (scm_fptob): Use print_pipe_port instead of scm_prinport; the + latter doesn't even take the right arguments. + + * Makefile.am: Increment shared lib revision number. I think + sometimes the uninstalled Guile finds the installed shared lib; + Gord says doing this might help. As things turned out, I can't + say whether it does. + * Makefile.in: Regenerated. + + * gh_init.c (gh_enter): Cast c_main_prog to a void * before + passing it as the closure argument to scm_boot_guile. (Bill + Janssen) + + * ports.c (print_void_port, putc_void_port, puts_void_port, + write_void_port, flush_void_port, getc_void_port, close_void_port, + noop0): Use ANSI prototypes instead of K&R declarations, so the + initialization of void_port_ptob gets aggressively type-checked. + Fix arguments of print_void_port and write_void_port. (Bill + Janssen) + + * COPYING, __scm.h, _scm.h, alist.c, alist.h, append.c, append.h, + appinit.c, arbiters.c, arbiters.h, async.c, async.h, backtrace.c, + backtrace.h, boolean.c, boolean.h, chars.c, chars.h, + continuations.c, continuations.h, coop-defs.h, coop-threads.c, + coop-threads.c.cygnus, coop-threads.h, coop-threads.h.cygnus, + coop.c, debug.c, debug.h, dynl-dl.c, dynl-dld.c, dynl-shl.c, + dynl-vms.c, dynl.c, dynl.h, dynwind.c, dynwind.h, eq.c, eq.h, + error.c, error.h, eval.c, eval.h, extchrs.h, feature.c, feature.h, + filesys.c, filesys.h, fports.c, fports.h, fsu-pthreads.h, gc.c, + gc.h, gdbint.c, gdbint.h, genio.c, genio.h, gh.h, gh_data.c, + gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c, gh_list.c, + gh_predicates.c, gh_test_c.c, gh_test_repl.c, gscm.c, gscm.h, + gsubr.c, gsubr.h, guile.c, hash.c, hash.h, hashtab.c, hashtab.h, + init.c, init.h, ioext.c, ioext.h, kw.c, kw.h, libguile.h, list.c, + list.h, load.c, load.h, mallocs.c, mallocs.h, markers.c, + markers.h, mbstrings.c, mbstrings.h, mit-pthreads.c, + mit-pthreads.h, net_db.c, net_db.h, numbers.c, numbers.h, + objprop.c, objprop.h, options.c, options.h, pairs.c, pairs.h, + ports.c, ports.h, posix.c, posix.h, print.c, print.h, procprop.c, + procprop.h, procs.c, procs.h, putenv.c, ramap.c, ramap.h, read.c, + read.h, root.c, root.h, scmhob.h, scmsigs.c, scmsigs.h, script.c, + script.h, sequences.c, sequences.h, simpos.c, simpos.h, smob.c, + smob.h, snarf.h, socket.c, socket.h, srcprop.c, srcprop.h, + stackchk.c, stackchk.h, stacks.c, stacks.h, stime.c, stime.h, + strings.c, strings.h, strop.c, strop.h, strorder.c, strorder.h, + strports.c, strports.h, struct.c, struct.h, symbols.c, symbols.h, + tag.c, tag.h, tags.h, threads.c, threads.h, throw.c, throw.h, + unif.c, unif.h, variable.c, variable.h, vectors.c, vectors.h, + version.c, version.h, vports.c, vports.h, weaks.c, weaks.h: New + address for FSF. + +Mon May 26 12:37:30 1997 Jim Blandy <jimb@floss.cyclic.com> + + * script.c (scm_find_executable): Use prototype-style definition + here; apparently it's not quite right to have const in a prototype + and then use a K&R declaration. I wonder if stuff like this will + go away if we compile with -Wrequire-prototypes, or whatever that + is... (Bernard URBAN) + + * scmhob.h: New text from Bernard URBAN. + +Sat May 17 17:14:36 1997 Jim Blandy <jimb@floss.cyclic.com> + + * script.c: Don't #define const on hpux. Configure takes care of + this. (Thanks to Larry Schwimmer.) + + * script.c: Use the HAVE_UNISTD_H symbol provided by autoconf to + decide whether to #include <unistd.h>, instead of listing a bunch + of systems. Don't #include stdio twice. Removed dyked-out + definition of scm_find_impl_file. + +Fri May 16 03:06:08 1997 Jim Blandy <jimb@floss.cyclic.com> + + * Makefile.am (libguile_la_LDFLAGS): Update libguile's shared + library version info to 1:0. + * Makefile.in: Regenerated. + + * backtrace.c, backtrace.h, debug.c, debug.h, eq.c, + gdb_interface.h, gdbint.c, gdbint.h, gh_data.c, gh_init.c, + gh_io.c, gh_list.c, gh_predicates.c, gh_test_c.c, gh_test_repl.c, + init.c, net_db.c, options.c, options.h, ports.c, print.c, read.c, + script.h, snarf.h, srcprop.c, srcprop.h, stacks.c, stacks.h, + throw.c: Update copyright years; these files have been worked on + significantly in 1997, but only had copyright years for 1996. + Also, change name of copyright holder on some from Mikael + Djurfeldt to Free Software Foundation; he has signed papers + assigning the changes to the FSF. + + * script.c (scm_shell_usage): Pass FATAL to exit. There's no + reason not to give the user the option. + + * net_db.c (scm_gethost, scm_getnet, scm_getproto, scm_getserv): + Return #f on end-of-file when scanning table (i.e. when called + with no arguments). Try to catch errors, when we can. + * posix.c (scm_getgrgid, scm_getpwuid): Same. + + * script.h (scm_shell_usage, scm_compile_shell_switches): New + external declarations. These are useful. + +Thu May 15 05:21:36 1997 Gary Houston <ghouston@actrix.gen.nz> + + * posix.c: don't include <sys/select.h> or define macros for + select, since they were not used in this file. + + * filesys.c (scm_select): make the fifth parameter microseconds, + not milliseconds. let the fourth parameter be either a real value + or an integer or #f. The first, second and third arguments can + now be vectors: the type of the corresponding return set will be + the same. + (set_element, get_element): new static procedures. + +Wed May 14 12:18:12 1997 Jim Blandy <jimb@floss.cyclic.com> + + * strports.c (scm_eval_string): New function. + (scm_eval_0str): Trivially re-implemented in terms of + scm_eval_string. + * strports.h (scm_eval_string): New extern decl. + + * net_db.c (h_errno): Add extern decl for this. + + * fports.c (local_pclose): New function. + (scm_pipob): Use it in the initializer here. + + From Tim Pierce: + * net_db.c (scm_gethost, scm_getproto, scm_getnet, scm_getserv): + Use a meaningful error message when signalling an error. For + this, scm_gethost must check h_errno rather than errno. + +Tue May 13 16:40:06 1997 Jim Blandy <jimb@floss.cyclic.com> + + * Makefile.in: Regenerated, using automake-1.1p. + +Tue May 13 04:34:52 1997 Gary Houston <ghouston@actrix.gen.nz> + + * socket.c (scm_addr_vector): use SCM_UNDEFINED in scm_listify, + not SCM_UNSPECIFIED. + + * script.c (scm_compile_shell_switches): don't append (quit) if + interactive. + (scm_shell): call scm_exit_status and exit on the result of the + evaluation. + +Mon May 12 17:23:58 1997 Jim Blandy <jimb@floss.cyclic.com> + + Ensure that shared substrings are handled properly when passed to + a system call or other foreign function. Many thanks to Tim + Pierce! + * symbols.h (SCM_COERCE_SUBSTR): new macro. + * filesys.c (scm_chmod, scm_rename, scm_delete_file, scm_mkdir, + scm_rmdir, scm_opendir, scm_chdir, scm_symlink, scm_readlink, + scm_lstat), ports.c (scm_sys_make_void_port), posix.c (scm_utime, + scm_putenv, scm_setlocale, scm_mknod), stime.c (setzone, + scm_strftime), vports.c (scm_make_soft_port), backtrace.c + (scm_display_error_message): use RO macros when strings may be RO. + * error.c (scm_error_scm), filesys.c (scm_chown, scm_chmod, + scm_rename, scm_delete_file, scm_mkdir, scm_rmdir, scm_opendir, + scm_chdir, scm_symlink, scm_readlink, scm_lstat), ioext.c + (scm_freopen, scm_duplicate_port, scm_fdopen), net_db.c + (scm_gethost, scm_getnet, scm_getproto, scm_getserv), ports.c + (scm_sys_make_void_port), posix.c (scm_getgrgid, scm_utime, + scm_setlocale, scm_mknod), stime.c (setzone, scm_strptime, + scm_strftime), vports.c (scm_make_soft_port): use + SCM_COERCE_SUBSTR to make sure shared substrings are + null-terminated. + +Mon May 12 15:33:10 1997 Jim Blandy <jimb@totoro.cyclic.com> + + * error.c (scm_error): Add newline to error message. + + * init.c (scm_init_standard_ports): Doc fix. + +Thu May 8 14:38:01 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * dynl-shl.c: Completely replaced with new code from Bernard + URBAN. + + * script.c (scm_ice_9_already_loaded): New variable. + (scm_compile_shell_switches): Use it. + +Mon May 5 20:35:08 1997 Gary Houston <ghouston@actrix.gen.nz> + + * filesys.c (scm_input_waiting_p): add missing third argument to + scm_misc_error. + + * stime.c (scm_localtime): copy the result of localtime before + calling gmtime in case they share a buffer. + (scm_localtime, scm_mktime): throw an error if neither HAVE_TM_ZONE + nor HAVE_TZNAME. + +Fri May 2 19:07:11 1997 Gary Houston <ghouston@actrix.gen.nz> + + * eq.c (scm_equal_p): use SCM_TYP7SD (y) not SCM_TYP7SD (x). + +Thu May 1 17:01:45 1997 Jim Blandy <jimb@floss.cyclic.com> + + * Makefile.am (check-local): New target, which causes 'make check' + to run gh_test_c and gh_test_repl, with some trivial input. + * Makefile.in: Rgnrtd. + +Tue Apr 29 19:00:40 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * dynl.c (print_dynl_obj): Indicate whether the dynamic object has + been unlinked. + +Mon Apr 28 06:10:14 1997 Gary Houston <ghouston@actrix.gen.nz> + + * async.c (scm_sys_tick_async_thunk): commented out. I'm not + sure how this was supposed to work. + (scm_async_click): don't send SCM_TICK_SIGNAL. + (scm_init_async): don't initialize %tick-thunk. + + * the following change doesn't affect the Scheme interface: + gc-thunk is called at the end of garbage collection. however it's + no longer implemented by pretending it's a signal. + + * gc.c (scm_gc_end): don't call scm_take_signal. instead mark the + system async corresponding to scm_gc_thunk. + * async.h: declare scm_gc_async. + * async.c (scm_sys_gc_async_thunk): apply the thunk named by + gc-thunk directly, instead of going through a signal handler. + (scm_gc_async): new variable, points to the GC system-async. + (scm_init_async): save the GC async as scm_gc_async instead + of using system_signal_asyncs. + (scm_gc_vcell): new variable, stores the gc-thunk vcell. + +Mon Apr 28 19:14:44 1997 Jim Blandy <jimb@floss.cyclic.com> + + * Makefile.am (libpath.h, cpp_err_symbols.c, cpp_sig_symbols.c): + Don't screw up if we're interrupted. + * Makefile.in: Regeneradet. + +Sun Apr 27 17:57:15 1997 Jim Blandy <jimb@floss.cyclic.com> + + * aclocal.m4: Removed; unnecessary, given changes of Apr 24. + + * Makefile.am (modincludedir): Use "ice-9" instead of "@module@"; + we're not using AM_INIT_GUILE_MODULE any more. + * Makefile.in: Reneregated. + +Thu Apr 24 00:41:08 1997 Jim Blandy <jimb@floss.cyclic.com> + + Functions for finding variable bindings, grace à Tim Pierce. + * gh_data.c (gh_lookup, gh_module_lookup): New functions. + * gh.h (gh_lookup, gh_module_lookup): New prototypes. + + Get 'make dist' to work again. + * Makefile.am (EXTRA_DIST): Remove PLUGIN files. + * Makefile.in: Regenerated, like a surry without a fringe on top. + + Changes for reduced Guile distribution: one configure script, + no plugins. + * configure.in, configure: Removed. + * acconfig.h, acinclude.m4: Moved to parent directory, where the + real configure script lives. + * Makefile.in, scmconfig.h.in: Regenerated. + + * init.c: #include "script.h", to get prototype for script.c's + init function. + +Wed Apr 23 21:25:39 1997 Jim Blandy <jimb@floss.cyclic.com> + + * gh_data.c (gh_scm2newstr, gh_symbol2newstr): Use + scm_must_malloc, not raw malloc. + + * script.c (scm_compile_shell_switches): Dyke out debugging output + code. + +Mon Apr 21 05:00:32 1997 Gary Houston <ghouston@actrix.gen.nz> + + * eq.c (scm_equal_p): use "SCM_TYP7SD", not "SCM (TYP7SD". + + * stime.c: include both <sys/times.h> and <sys/timeb.h> if the + system has them. Hope this is safe. Previously + sys/timeb.h was included if HAVE_FTIME was defined or if + HAVE_SYS_TIMEB_H was defined but HAVE_SYS_TIMES_H was not, + but IRIX iris 5.3 apparently has ftime but not sys/timeb.h. + + * ioext.c (scm_setfileno): add missing third argument to + scm_misc_error call. + +Sun Apr 20 15:09:31 1997 Jim Blandy <jimb@totoro.cyclic.com> + + * eq.c (scm_equal_p): Correctly compare strings of different + varieties. (Thanks to Tim Pierce.) + +Sat Apr 19 03:59:02 1997 Jim Blandy <jimb@floss.cyclic.com> + + * read.c (skip_scsh_block_comment): SCSH says the !# that ends a + #! block comment must occur on a line all by itself. + + Move most of the guts of shell command processing into libguile, + so guile.c can be very small (and eventuallly auto-generated. (I + mean, generated mechanically, not self-generated. Hmm.)) + * guile.c, script.c, script.h: New source files. + * init.c (scm_boot_guile_1): Call scm_init_script. + * libguile.h: #include "script.h". + * Makefile.am (bin_PROGRAMS, guile_SOURCES, guile_LDADD): New + targets, for new executable. + (libguile_la_SOURCES): Mention script.c. + (modinclude_HEADERS): Add script.h. + * configure.in: Always check for -lm, -lsocket, -lnsl, whether or + not dynamic linking is enabled. This is because we're generating + executables now. Move CY_AC_WITH_THREADS call after those, so the + values of cy_cv_threads_libs captures the libs chosen above. + * Makefile.in, configure, aclocal.m4: Regenerated. + + * Makefile.am (EXTRA_DIST): Don't distribute gscm.c or gscm.h. + We don't maintain this interface any more, and it just confuses + people. + + * alloca.c: #include <scmconfig.h>, not <config.h>. + * Makefile.am (EXTRA_libguile_la_SOURCES): Mention alloca.c, so + it'll get included in disties. + +Thu Apr 17 17:45:10 1997 Jim Blandy <jimb@totoro.cyclic.com> + + * gscm.c, gscm.h: These aren't supported any more, and shouldn't + be distributed, because they confuse people. + * Makefile.am (EXTRA_DIST): Remove gscm.c, gscm.h. + +Sat Apr 19 11:56:18 1997 Tim Pierce <twp@twp.tezcat.com> + + * configure.in: check for presence of gethostent (not present on + OpenBSD by default). + * net_db.c (scm_gethost): Check HAVE_GETHOSTENT. + * configure, scmconfig.h.in: Regenerated. + +Wed Apr 16 17:52:38 1997 Jim Blandy <jimb@floss.cyclic.com> + + * backtrace.c (scm_backtrace): Split message string across + newlines properly. GCC is more tolerant of this than other + compilers. + +Mon Apr 14 20:20:14 1997 Jim Blandy <jimb@floss.cyclic.com> + + Merge threads directory into libguile. + * coop-defs.h, coop-threads.c, coop-threads.h, coop.c, threads.c, + threads.h: New source files. + * Makefile.am (EXTRA_libguile_la_SOURCES): Add threads.c. + (noinst_HEADERS): Add coop-threads.c, coop-threads.h, coop.c + here; see comment. + (modinclude_HEADERS): Add threads.h, coop-defs.h. + (EXTRA_DIST): Add fsu-pthreads.h, mit-pthreads.c, mit-pthreads.h, + coop-threads.c.cygnus, coop-threads.h.cygnus. + * configure.in: If we're using threads, include threads.o in + LIBOBJS. + * _scm.h, libguile.h: threads.h lives in this directory now. + * fsu-pthreads.h, mit-pthreads.c, mit-pthreads.h, + coop-threads.c.cygnus, coop-threads.h.cygnus: New files, not + currently used, but brought along for information's sake. + * ChangeLog-threads: log from old 'threads' directory. + * Makefile.in, configure: Rebuilt. + +Mon Apr 14 20:15:29 1997 Jim Blandy <jimb@totoro.cyclic.com> + + * stime.c (scm_mktime): #ifndef HAVE_TM_ZONE, Use lt.tm_zone, not + lt->tm_zone. + +Mon Apr 14 01:32:57 1997 Jim Blandy <jimb@floss.cyclic.com> + + * gh_init.c (gh_standard_handler): Return SCM_BOOL_F, not garbage. + + Merge GH interface library into libguile. + * gh.h, gh_data.c, gh_eval.c, gh_funcs.c, gh_init.c, gh_io.c, + gh_list.c, gh_predicates.c, gh_test_c.c, gh_test_repl.c: New files. + * Makefile.am (libguile_la_SOURCES): Add gh_data.c, gh_eval.c, + gh_funcs.c, gh_init.c, gh_io.c, gh_list.c, gh_predicates.c. Move + _scm.h to ... + (EXTRA_libguile_la_SOURCES): ... here. + (pkginclude_HEADERS): Add variable, to get gh.h installed. + (THREAD_LIBS, check_ldadd, check_PROGRAMS, gh_test_c_SOURCES, + gh_test_c_LDADD, gh_test_repl_SOURCES, gh_test_repl_LDADD): + New variables, describing how to build the gh test programs. + * configure.in: Check for -lm, -lsocket, -lnsl; we need this to + build the test programs, and we probably should have been linking + libguile.la against them all along, to support AIX shared libs. + Add cflags for threads to CFLAGS; add libs for threads to new + variable THREAD_LIBS, used in Makefile.am. + * ChangeLog-gh: log from old `gh' subdirectory. + * Makefile.in, configure, scmconfig.h.in: Rebuilt. + +Sun Apr 13 23:03:55 1997 Jim Blandy <jimb@floss.cyclic.com> + + * acconfig.h: Undo change of Apr 9; including the definition of + PACKAGE in the guile headers conflicts with applications' own + definitions. + * scmconfig.h.in: Regenerated. + +Fri Apr 11 14:12:13 1997 Jim Blandy <jimb@floss.cyclic.com> + + * filesys.c (scm_fcntl): New function from Roland McGrath. + (scm_init_filesys): New symbols for use with fcntl. + * filesys.h: Added prototype. + + * eval.c (SCM_APPLY): Set debug apply frame argument list correctly + when PROC is receiving no arguments. + +Fri Apr 11 19:39:32 1997 Jim Blandy <jimb@totoro.cyclic.com> + + * filesys.c (S_ISSOCK): Define this if it's missing, but we do + have S_IFSOCK. This is the case under Ultrix. + + * posix.c (scm_status_exit_val, scm_status_exit_val, + scm_status_term_sig, scm_status_stop_sig): Modified to work with + Ultrix versions of WIFSTOPPED, etc., which assume that their + arguments are lvalues (hmm). + +Thu Apr 10 15:10:07 1997 Jim Blandy <jimb@floss.cyclic.com> + + * eval.c: Doc fixes. + + * throw.c: Doc fixes; rearranged. + + * putenv.c: #include "libguile/scmconfig.h", not <config.h>. + +Wed Apr 9 18:01:20 1997 Jim Blandy <jimb@floss.cyclic.com> + + * acconfig.h: Added entry for PACKAGE. + * scmconfig.h.in: Regenerated. + + Changes to work with automake-1.1n, which has better libtool support. + * Makefile.am: Use lib_LTLIBRARIES instead of lib_PROGRAMS. + Use libguile_la_LIBADD instead of libguile_la_LDADD. (What's the + difference here?) + (libguile_la_SOURCES, modinclude_HEADERS, EXTRA_DIST): Format for + readability. + * Makefile.in: Rebuild. + +Wed Apr 9 09:08:54 1997 Gary Houston <ghouston@actrix.gen.nz> + + * stime.c (scm_mktime): take an optional zone argument. + (scm_localtime): check putenv return value. + (scm_strftime, scm_strptime): moved from posix.c. move #include + sequences.h too. + stime.h, posix.h: update prototypes. + (bdtime2c, setzone, restorezone): new static procedures. + (scm_mktime, scm_strftime): use them. + (scm_strftime): don't call mktime before strftime. Use + filltime for return value. + (filltime): convert NULL zname to #f. + (scm_strptime): return a count of characters consumed, not + the remaining string. + +Sun Apr 6 05:44:11 1997 Gary Houston <ghouston@actrix.gen.nz> + + * stime.c (scm_localtime): check HAVE_TM_ZONE and HAVE_TZNAME. + (scm_mktime): likewise. + Declare *tzname[]. + Uncomment localtime and mktime. + + * configure.in: add AC_STRUCT_TIMEZONE. + +Sat Apr 5 23:56:40 1997 Gary Houston <ghouston@actrix.gen.nz> + + * stime.c (scm_init_stime): don't define ticks/sec. + (scm_gettimeofday): renamed from scm_time_plus_ticks (avoids multiple + return value problem and is still portable.) + +Sat Apr 5 17:59:24 1997 Jim Blandy <jimb@floss.cyclic.com> + + * cpp_err_symbols.in: Renamed from cpp_err_symbols, to avoid + make's implicit cpp_err_symbols: cpp_err_symbols.c rule. + * cpp_sig_symbols.in: Renamed from cpp_sig_symbols. + * Makefile.am (check_errnos, check_signals, cpp_sig_symbols.c, + cpp_err_symbols.c): Corresponding changes. + * Makefile.in: Regenerated. + +Sat Apr 5 02:39:02 1997 Gary Houston <ghouston@actrix.gen.nz> + + * posix.c (scm_putenv): don't check HAVE_PUTENV. + * Makefile.am (EXTRA_libguile_la_SOURCES): add putenv.c. + * configure.in: move putenv from AC_CHECK_FUNCS to AC_REPLACE_FUNCS. + * putenv.c: new file, from sh-utils 1.12. + + * posix.c (scm_environ): use malloc in place of scm_must_malloc + since allocation isn't for Scheme objects. + (scm_putenv): copy strings before placing in the environment. + + * stime.c (scm_current_time): throw an error if time returns -1, + instead of returning #f. + (scm_get_internal_real_time, scm_get_internal_real_time): use + scm_long2num for return value instead of SCM_MAKINUM. + + * stime.h: prototypes updated. + + * stime.c (scm_time_in_msec): apparently unused, deleted. + +Fri Apr 4 08:53:41 1997 Gary Houston <ghouston@actrix.gen.nz> + + * configure.in: check for gettimeofday. + + * stime.c (scm_time_plus_ticks): new procedure, an scsh interface + which may be more usefully portable than a gettimeofday interface. + +Wed Apr 2 17:11:39 1997 Jim Blandy <jimb@totoro.cyclic.com> + + * Makefile.am (EXTRA_DIST): It's cpp_err_symbols, not + cpp_err_signals. + * Makefile.in: Regenerated. + +Mon Mar 31 03:22:37 1997 Gary Houston <ghouston@actrix.gen.nz> + + * stime.c (filltime): recovered static procedure. + (scm_localtime, scm_gmtime, scm_mktime, scm_tzset): recovered from + an earlier Guile. + + * posix.h: add prototype for scm_close_pipe, remove prototypes for + scm_open_input_pipe, scm_open_output_pipe, change scm_mknod prototype. + + * posix.c (scm_mknod): split the mode argument into type and perms + arguments, like the extra fields returned by stat. + + * fports.c (scm_pipob): set the close, free and print procedures. + (scm_close_pipe): new procedure. + + * posix.c (scm_open_input_pipe, scm_open_output_pipe): deleted, + define them in boot-9.scm + +Wed Mar 26 04:10:32 1997 Gary Houston <ghouston@actrix.gen.nz> + + * ioext.c (scm_setfileno): throw a runtime error if SET_FILE_FD_FIELD + wan't defined. Don't include fd.h. + + * Previously fd.h was regenerated whenever configure was run, + forcing a couple of files to be recompiled. + + * fd.h.in: deleted, SET_FILE_FD_FIELD moved to ioext.c. + * configure.in: AC_DEFINE FD_SETTER instead of HAVE_FD_SETTER. + Check for _fileno as well as _file. + Don't output fd.h. + * ioext.c: don't fd.h. + * acconfig.h: remove duplicate HAVE_FD_SETTER and change the + other to FD_SETTER. + + * Change the stratigy for getting information about errno + (and now signal number) values, e.g., ENOSYS, SIGKILL. Instead of + generating lists of symbols during the build process, which will + not always work, include comprehensive lists in the distribution. + To help keep the lists up to date, the "check_signals" and + "check_errnos" make targets can be used. + + * configure.in: don't check for a command to extract errno codes. + * Makefile.am: update file lists, remove errnos.list and errnos.c + targets, add cpp_err_symbols.c, cpp_sig_symbols.c, check_signals, + check_errnos targets. + (CLEANFILES): remove errnos.c and errnos.list, add + cpp_err_symbols_here cpp_err_symbols_diff cpp_err_symbols_new + cpp_sig_symbols_here cpp_sig_symbols_diff cpp_sig_symbols_new + * errnos.default: deleted. + * cpp_signal.c: new file. + * cpp_errno.c: renamed from errnos_get.c. + * cpp_err_symbols, cpp_sig_symbols: new files. + * cpp_cnvt.awk: renamed from errnos_cnvt_awk. + * error.c (scm_init_error): #include cpp_err_symbols instead of + errnos.c. + * posix.c (scm_init_posix): don't intern signal symbols. #include + cpp_sig_symbols.c. + +Tue Mar 25 04:51:10 1997 Gary Houston <ghouston@actrix.gen.nz> + + * strop.c (scm_i_index): allow the lower bound to be equal to the + length of the string, so a null string doesn't always give an error. + + * posix.h: new prototypes. + * posix.c (scm_status_exit_val, scm_status_term_sig, + scm_status_stop_sig): new functions, as in scsh. They break down + process status values as returned by waitpid. + +Sat Mar 22 18:16:29 1997 Gary Houston <ghouston@actrix.gen.nz> + + * net_db.c (scm_gethost): don't check HAVE_GETHOSTENT, since + configure doesn't know about it. + +Fri Mar 21 23:49:28 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * snarf.h, backtrace.c: Name change SCM_GLOBAL --> SCM_VCELL. + + * snarf.h: Added new macros SCM_GLOBAL_SYMBOL and SCM_GLOBAL_VCELL + which defines C variables with global linkage. + +Mon Mar 17 05:57:11 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * snarf.h (SCM_PROC1): Bugfix: Use (void) rather than (...) for + zero arg subrs. + +Sun Mar 16 11:43:49 1997 Mikael Djurfeldt <mdj@floss.cyclic.com> + + * eval.c (safe_setjmp): Temporarily use old setjmp until someone + has time to check why this doesn't work well with continuations. + +Sun Mar 16 05:09:55 1997 Jim Blandy <jimb@totoro.cyclic.com> + + * Fix shell syntax error; some shells won't tolerate + multiple "fi" statements on a single line. (Thanks to Fred Fish.) + +Sat Mar 15 01:11:40 1997 Gary Houston <ghouston@actrix.gen.nz> + + * posix.c (scm_uname): throw an error if uname fails instead + of returning errno. + + * error.h (scm_errno, scm_perror): obsolete prototypes removed. + + * error.c (err_head, scm_errno, scm_perror): obsolete procedures + removed. + + * async.c (scm_ints_disabled): definition moved from error.c. + +Sat Mar 15 00:06:08 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * acconfig.h: Removed PACKAGE. + + * scmconfig.h.in: Regenerated. + + * snarf.h: g++ says it's non-portable not to specify the first + argument in a varargs declaration. I introduced the first + argument by using preprocessor conditionals. + +Thu Mar 13 21:28:25 1997 Gary Houston <ghouston@actrix.gen.nz> + + * ioext.c (scm_read_delimited_x): use RO string macros for delims. + (scm_freopen): use RO string macros for filename and modes. + (scm_duplicate_port, scm_fdopen): use RO string macros for modes. + + * posix.c (scm_getgrgid): simplify conversion of name to C string. + (scm_mknod): use RO string macros for path. + + * socket.c (scm_fill_sockaddr, scm_send, scm_sendto): + use SCM_ROSTRINGP, SCM_ROCHARS, SCM_ROLENGTH. + + * net_db.c (scm_gethost, scm_getnet, scm_getproto, scm_getserv): + use SCM_ROSTRINGP and SCM_ROCHARS. + +Thu Mar 13 18:31:33 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * unif.c (scm_array_set_x): Cast ICHR (obj) to char if storing in + a scm_tc7_byvect. + + * ramap.c (scm_ra_matchp, scm_array_fill_int, racp, + scm_array_index_map_x, raeql_1, scm_array_equal_p): Completed + support for byte vectors. + + * print.c (scm_iprin1): Limit number of vector elements printed + according to pstate->length. + +Thu Mar 13 00:12:35 1997 Gary Houston <ghouston@actrix.gen.nz> + + * backtrace.c (scm_display_error_message): don't segv if message + is an immediate. + + * error.h: prototype for scm_error_scm. + + * error.c (scm_error_scm): new procedure, reimplements scm-error + in C and uses scm_error. + +Tue Mar 11 03:51:00 1997 Gary Houston <ghouston@actrix.gen.nz> + + * read.c (scm_read_hash_extend): make scm_read_hash_procedures a + pointer to the Scheme variable read-hash-procedures and intern it + in scm_init_read. Modify scm_read_hash_extend and + scm_get_hash_procedure to use the pointer. + +Mon Mar 10 06:28:54 1997 Gary Houston <ghouston@actrix.gen.nz> + + * read.h (SCM_N_READ_OPTIONS): increase SCM_N_READ_OPTIONS to 4. + (SCM_KEYWORD_STYLE): defined. + + * read.c (scm_read_opts): add a keywords option. This isn't a + boolean option, in case someone wants to add support for DSSSL + keywords too. + Setup scm_keyword_prefix symbol. + (scm_lreadr): Only process keywords if SCM_KEYWORD_STYLE is + set to 'prefix. + I've left keyword support disabled by default, since it doesn't + seem to break the module system and it gives R4RS standard behaviour. + It can be reactivated with (read-set! keywords 'prefix). + +Sun Mar 9 14:14:39 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * arbiters.c (scm_make_arbiter): Bugfix: Must SCM_DEFER_INTS + before constructing arbiter. + + * eval.c (scm_m_define): Bugfix: Check that the object is a + closure before setting the procedure property! + + * ports.h: Removed prototype for scm_ungetc_char_ready_p. + + * ports.c: Removed `ungetc-char-ready?'. + +Sat Mar 8 00:27:05 1997 Gary Houston <ghouston@actrix.gen.nz> + + * read.c (scm_init_read): intitialise scm_read_hash_procedures + (idea from Mikael: make it a pair so scm_permanent object only + called once.) + (scm_read_hash_extend): don't call scm_permanent_object. + (ideas from Mikael): if chr is already in the list, replace its + procedure instead of appending it again. If proc is #f, remove + it from the list. + (scm_get_hash_procedure): take CDR of scm_read_hash_procedures. + + * strports.c (scm_read_0str, scm_eval_0str): update scm_read usage. + + * gdbint.c (gdb_read): update scm_lreadr usage. + + * load.h: update prototypes. + + * load.c (scm_primitive_load, scm_read_and_eval_x, + scm_primitive_load_path): remove case_insensitive_p, sharp arguments. + + * read.h: add prototype for scm_read_hash_extend. Change args for + other prototypes. + + * read.c (scm_read_hash_procedures): new variable. + (scm_read_hash_extend): new procedure. + (scm_get_hash_procedure): new procedure. + (scm_lreadr): use scm_get_hash_procedure instead of an argument + for extended # processing. + (scm_read, scm_lreadr, scm_lreadrecparen, scm_lreadparen, + scm_read_token): remove case_i, sharp arguments. Change callers. + +Fri Mar 7 08:58:21 1997 Gary Houston <ghouston@actrix.gen.nz> + + * read.h (SCM_N_READ_OPTIONS): increase to 3. + (SCM_CASE_INSENSITIVE_P): define. + + * read.c: add case-insensitive option to scm_read_opts. + (scm_read_token): use SCM_CASE_INSENSITIVE_P instead of an argument + to determine whether to convert symbol case. + (default_case_i): definition removed. + * read.c (scm_read_token): if case_i, downcase ic before doing + anything with it. + +Sat Mar 8 03:49:03 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * configure.in: Added configuration option `guile-debug'. + Configure with --enable-guile-debug if you want a bunch of extra + functions used for debugging when developing Guile. + + * acconfig.h: Added new preprocessor symbol GUILE_DEBUG. + + * procs.c (make-cclo): New undocumented debugging procedure: Make + compiled closure with internal procedure PROC and length LENGTH. + Only compiled if GUILE_DEBUG is defined. + + * debug.c: Only include `debug-hang' if GUILE_DEBUG is defined. + + * print.c: Put #ifdef GUILE_DEBUG around `current-pstate'. + + * ports.c: Changed preprocessor symbol DEBUG --> GUILE_DEBUG. + + * eval.c (SCM_CEVAL): Added code sections for handling of rpsubrs + with 3 or more args internally to the evaluator. + +Fri Mar 7 19:38:18 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * eval.c (SCM_CEVAL): Added code sections for handling of asubrs + with 3 or more args internally to the evaluator. This is mainly + because we don't want to pass entry and exit points of the + debug support twice, but it also seems to increase the speed of + the evaluator for such calls (e. g. (+ 1 2 3)). + + * backtrace.c (scm_display_application): New procedure: + display-application; Set fancy printing parameters individually + for different types of display (backtrace, error, application). + (These should of course be customizable!) + + * debug.h (SCM_RESET_DEBUG_MODE): Bugfix: The old code didn't + clear the CHECK-flags. + +Thu Mar 6 00:53:02 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * tags.h, eval.c (iqq): Fixes to comments about SCM_ECONSP. + +Wed Mar 5 23:31:21 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * tags.h (SCM_ECONSP, SCM_NECONSP): Bugfix: Discriminate structs + from pairs with a GLOC in the car. + + * symbols.c (msymbolize): Bugfix: Also initialize SCM_SYMBOL_HASH, + otherwise `symbol-hash' will behave badly. + (scm_symbol_hash): Bugfix: Must msymbolize if tc7_ssymbol, othwise + we get segmentation fault! + + * symbols.c: Added #include "weaks.h". New functions: + `builtin-bindings' and `builtin-weak-bindings'. (These will be + moved to an extraneous library when we split libguile.) + +Tue Mar 4 19:50:07 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * filesys.c (scm_stat): stat now takes fport arguments too as + documented in the manual. + +Mon Mar 3 07:11:33 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * debug.c (scm_single_step): Bugfix: Call continuation with + scm_call_continuation instead of throwing to it. + +Mon Mar 3 09:07:56 1997 Gary Houston <ghouston@actrix.gen.nz> + + * ports.c (scm_char_ready_p): bug fix: in SCM_PROC char-ready's + argument wasn't declared to be optional. + +Sun Mar 2 16:34:40 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * stime.c (scm_init_stime): Add feature "current-time". + +Sun Mar 2 06:37:31 1997 Gary Houston <ghouston@actrix.gen.nz> + + * throw.h: prototype for scm_exit_status. + * throw.c (scm_handle_by_message): if a 'quit is caught, use its + args to derive an exit status. Allows (quit) to work from a + script. + (scm_exit_status): new function. + #include "eq.h". + +Sat Mar 1 00:09:15 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * eval.c (scm_deval): Removed some old code. + (ENTER_APPLY): Bugfix: Reset apply-frame trap on trap as is done + with the others. + (ENTER_APPLY, scm_deval): Reset trace flag on apply-frame and + exit-frame traps. + + * symbols.c (msymbolize): Bugfix: Must initialize property list to + SCM_EOL. + + * procs.c: Introduce the existent C function scm_thunk_p at the + Scheme level as well. + +Wed Feb 26 12:53:58 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * symbols.c, symbols.h (scm_symbol_value0): New function. Can be + used from C to easily lookup the value of a symbol in the current + module. + +Tue Feb 25 00:14:10 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * unif.c (scm_init_unif): Added #include "unif.x". (There are two + scm_init_unif in this file. This will also fix a previous problem + with guile-snarf.) + + * configure.in: Added AM_MAINTAINER_MODE + +Fri Feb 21 23:07:26 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * gdb_interface.h (GDB_INTERFACE): Added some (void *) casts to + avoid warnings. + +Fri Feb 21 18:00:38 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * Makefile.am (EXTRA_libguile_la_SOURCES): New variable to hold + source files that are not always included in libguile but should + have their dependencies calculated by automake. This variable is + recognized by automake, no further magic is needed. + (libguile_la_DEPENDENCIES): Changed to @LIBLOBJS@. Libtool wants + to deal exclusively with *.lo files, as it seems. The *.o files + are built automatically when the corresponding *.lo file gets + built. + +Wed Feb 19 14:04:23 1997 Jim Blandy <jimb@floss.cyclic.com> + + * list.h (scm_list_cdr_ref): Delete prototype; function no longer + exists. + +Thu Feb 13 21:44:07 1997 Gary Houston <ghouston@actrix.gen.nz> + + * unif.c (scm_array_set_x): minor change to argument error checking. + +Tue Feb 11 18:19:47 1997 Jim Blandy <jimb@floss.cyclic.com> + + * Makefile.am (libguile_la_SOURCES): Remove backtrace.c, debug.c, + inet_aton.c, srcprop.c, stacks.c, and strerror.c from this list. + They should only be included in the library at configure.in's + discretion. + (libguile_la_LDADD): Include the appropriate .lo files here. + (libguile_la_DEPENDENCIES): List the corresponding .o files here, + so we know when to build them (and their .lo bretheren). + * configure.in (LIBLOBJS): New substituted variable. We let + configure decide which .o files to include in LIBOBJS, and then + put the corresponding list of .lo files in LIBLOBJS. The latter + is what we pass to libtool. + * Makefile.in, configure: regenerated. + +Mon Feb 10 00:08:08 1997 Mikael Djurfeldt <mdj@kenneth> + + * symbols.c (scm_sysintern0): New function. Contains the core of + old scm_sysintern but doesn't take a second value argument. + (scm_sysintern): Now uses scm_sysintern0. + (scm_sysintern_no_module_lookup): Renamed to + scm_sysintern0_no_module_lookup and doesn't take a second value + argument any longer. + + * symbols.h (scm_sysintern0: Added declaration. + + * options.c (scm_init_opts): Use scm_sysintern0 instead of + scm_sysintern when interning option keys. Otherwise we risk + destroying the values of already interned variables. + + * symbols.c (scm_sym2vcell): Bugfix: Treat definedp as + scheme-level boolean (use SCM_NFALSEP). + + * backtrace.c (scm_init_backtrace): Make Scheme-level variable + `the-last-stack'. + (scm_backtrace): New function. (C version of old function from + boot-9.scm) Motivation: Make it possible to display backtraces + without depending on boot-9.scm. (I'm uncertain if this + motivation is good enough...) + + * root.h (scm_root_state): Add member the_last_stack_var. + (scm_the_stack_var): Defined to scm_root->the_last_stack_var. + + * root.c (mark_root): Mark scm_the_last_stack_var. + + * init.c (scm_start_stack): Initialize scm_the_last_stack_var to + SCM_BOOL_F. + +Sun Feb 9 18:04:41 1997 Mikael Djurfeldt <mdj@kenneth> + + * throw.c (mark_lazy_catch, free_lazy_catch): Removed. + 1. mark_lazy_catch didn't mark the smob. + 2. Both functions above have standard variants: + (lazy_catch_funs): Changed mark_lazy_catch --> scm_mark0, + free_lazy_catch --> scm_free0. + +Fri Feb 7 17:30:26 1997 Jim Blandy <jimb@floss.cyclic.com> + + * throw.c (scm_internal_lazy_catch): New function. + (scm_lazy_catch): Rewritten to use it. + (scm_ithrow): Handle the new lazy catch representation. + Use SCM_LAZY_CATCH_P, instead of assuming that any wind list entry + that doesn't have a jmpbuf is a lazy catch clause. + (tc16_lazy_catch, struct lazy_catch, mark_lazy_catch, + free_lazy_catch, print_lazy_catch, lazy_catch_funs, + make_lazy_catch, SCM_LAZY_CATCH_P): Support funs, including a new + smob. + (scm_init_throw): Register the new lazy-catch smob type. + * throw.h (scm_internal_lazy_catch): decl for new function. + + * throw.c (scm_internal_catch): Doc fixes. + + * alloca.c: New file, needed to support the AC_FUNC_ALLOCA call in + configure.in. Including this might cause problems if applications + that link against libguile include their own copies of alloca, but + if they're using autoconf, they should be adding libguile to LIBS + before calling AC_FUNC_ALLOCA anyway, in which case they'll find + the copy in libguile, and things will be okay. (I think.) + +Thu Feb 6 03:10:32 1997 Gary Houston <ghouston@actrix.gen.nz> + + * strop.c (scm_string_upcase_x, scm_string_downcase_x): moved from + unif.c. + strop.h: move prototypes too. + +Wed Feb 5 08:33:00 1997 Gary Houston <ghouston@actrix.gen.nz> + + * posix.c (scm_init_posix): don't intern EINTR since it's now done + elsewhere. + + * ioext.c (scm_init_ioext): don't intern stat macros, S_IRUSR + etc. I deleted them from filesys.c long ago, but didn't + notice they were here too (although ineffective since + sys/stat.h wasn't included). + +Tue Feb 4 18:17:50 1997 Tom Tromey <tromey@cygnus.com> + + * eval.c: Don't define alloca in GCC case. gcc will automatically + use __builtin_alloca if appropriate. + +Tue Feb 4 16:57:40 1997 Jim Blandy <jimb@floss.cyclic.com> + + * eval.c (safe_setjmp): New function: trivial wrapper for setjmp. + (SCM_CEVAL, SCM_APPLY): Call it, instead of setjmp, to make sure + that values of automatic variables are preserved. See comments + for safe_setjmp for details. + + Change from Thomas Morgan: + * variable.c: Include eq.h. + (var_equal): New function. + (variable_smob): Use var_equal as the discriminator for variables. + + * throw.c (s_throw): Remove extraneous declaration. + + * configure.in: Call AC_FUNC_ALLOCA, to see if we have alloca. + * eval.c: Add necessary CPP cruft to support that. + * configure, Makefile.in, scmconfig.h.in: regenerated. + + Change from Thomas Morgan: + * procprop.c (scm_procedure_properties): Convert the Scheme + boolean returned by scm_procedure_p into a C boolean before using + it as a condition for SCM_ASSERT. + (scm_procedure_property): Likewise. + + * simpos.c (SYSTNAME): Accept both 'unix' and '__unix' as + indications of Unixness. + * stime.c: Same. + +Tue Feb 4 05:07:35 1997 Gary Houston <ghouston@actrix.gen.nz> + + * net_db.c (scm_lnaof): change scheme name from lnaof to inet-lnaof. + +Mon Feb 3 06:12:37 1997 Gary Houston <ghouston@actrix.gen.nz> + + * read.c (scm_lreadr): use scm_misc_error to improve one of the + "unknown # object" error messages. + + * strop.c (scm_i_index, scm_i_rindex): combine into one procedure + (scm_i_index) and declare it static. Add a 'direction' argument + to indicate what way the search should go. + (scm_i_index): throw out-of-range error instead of wrong-type-arg + if indices are bad. + (scm_string_index, scm_string_rindex): adjust usage of scm_i_index. + strop.h: remove scm_i_index, scm_i_rindex prototypes. + +Fri Jan 31 04:33:11 1997 Gary Houston <ghouston@actrix.gen.nz> + + * ioext.c, ioext.h: remove obsolete _sys_ from 9 procedure names. + + * posix.c (scm_fork): Scheme name changed from fork to primitive-fork, + to avoid clash with various scsh forks. + +Thu Jan 30 20:14:09 1997 Mikael Djurfeldt <mdj@syk-0606.pdc.kth.se> + + The following two changes (ramap.c, throw.c) are motivated by the + apparent unportability of forward declarations of static arrays of + the form `static foo bar[];'. + + * ramap.c (scm_array_fill_x): Moved above scm_array_fill_int. + (ra_rpsubrs, ra_asubrs): Moved to the top of array code. + + * throw.c (scm_throw): Moved above scm_ithrow. + + * options.h: Removed the extern declarations of scm_yes_sym and + scm_no_sym since these are static. + +Fri Jan 24 06:16:32 1997 Gary Houston <ghouston@actrix.gen.nz> + + * ports.c: add SCM_PROC declarations for pt-size and pt-member. + + * Makefile.am: remove AWK=@AWK@. + Add a rule for generating errnos.list. + (CLEANFILES): put errnos.list here instead of in DISTCLEANFILES. + + * configure.in: add AC_SUBST(AWK) and AC_SUBST(ERRNO_EXTRACT). + don't extract errnos, just set a variable (avoids the + need to recompile error.c just because configure is run.) + + * unif.h: update prototypes. + * unif.c (scm_uniform_array_read,write): change the offset and + length arguments to start and end, for consistency. + + * __scm.h: uncomment SCM_ARG6 and SCM_ARG7, I needed SCM_ARG6. + + * ioext.h: update prototypes. + * ioext.c (scm_read_delimited_x): replaces scm_read_line and + scm_read_line_x, it's a more general procedure using an + interface from scsh. read-line and read-line! are now defined + in boot-9.scm. + Note that the new read-line trims the terminator + by default, previously it was appended to the returned string. An + optional argument specifies how to process the terminator (scsh + compatible). For the old behaviour: (read-line port 'concat). + scm_read_line, scm_read_line_x: deleted. (read-line port 'split) + returns a pair, but is converted to multiple values if the scsh + module is loaded. + + socket.h: update prototypes. + * socket.c (scm_recvfrom): for consistency with other procedures, + take start and end as separate optional arguments. + (scm_recv, scm_recvfrom): don't allow the second argument + to be a size, only a buffer. Change the scheme names to + recv! and recvfrom!. Don't return the buffer. + + * ioext.h, posix.h: move prototypes too. + * ioext.c, posix.c (scm_read_line, scm_read_line_x, scm_write_line: + moved back from posix.c to ioext.c. Also move #includes of "genio.h" + "read.h" and "unif.h". + * ioext.c: include "chars.h" + +Mon Jan 20 19:54:49 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * dynl.c: The dynamic linking and module registration functions + are now defined even when dynamic linking is not available for the + host system. Some of their functionality can be done without + dynamic linking; when it's really needed, they throw errors. + +Thu Jan 16 16:39:29 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * configure.in: Only define DYNAMIC_LINKING when one of the system + dependent functions is detected. + * dynl.c (scm_dynamic_func): New function to get the address of a + function in a dynamic object. + (scm_dynamic_call, scm_dynamic_args_call): Accept the values + produced by scm_dynamic_func as the thing to call. + +Sun Jan 12 21:09:42 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * dynl.c, dynl-dl.c, dynl-dld.c, dynl-shl.c: Restructured. + (scm_register_module_xxx, scm_registered_modules, + scm_clear_registered_modules): New functions. + +Sat Jan 11 21:37:15 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * symbols.c (scm_sysintern): Renamed to + scm_sysintern_no_module_lookup. + (scm_sysintern): New function to take the place of the old + scm_sysintern. It uses the current toplevel lookup closure to give + the symbol its value. This is a temporary hack to put packages + like gtcltk into their own module. + (scm_can_use_top_level_lookup_closure_var): New variable to tell + us whether `scm_top_level_lookup_closure_var' has been initialized + and is usable. + * eval.c (scm_init_eval): Set it. + +Sat Jan 18 00:03:31 1997 Gary Houston <ghouston@actrix.gen.nz> + + * fports.c (scm_open_file): pass errno to scm_syserror_msg. + * filesys.h: update prototypes. Remove macros: SCM_FD_P, SCM_FD_FLAGS, + SCM_FD. + * filesys.c (scm_sys_stat, scm_sys_lstat): pass errno to + scm_syserror_msg. + (scm_sys_read_fd, scm_sys_write_fd, scm_sys_close, scm_sys_lseek, + scm_sys_dup): deleted: FD capability will be added to other + procedures. + Remove support for the FD object type: scm_tc16_fd, scm_fd_print, + scm_fd_free, fd_smob, scm_intern_fd. + (scm_open): renamed from scm_sys_open. Return a port instead of + an FD object. Make the mode argument optional. + (scm_sys_create): deleted, it's just a special case of open. + (scm_init_filesys): move interning of constants O_CREAT etc., + here (were previously using SCM_CONST_LONG macro). + Add missing constants: O_RDONLY, O_WRONLY, O_RDWR, O_CREAT. + don't newsmob fd. + (numerous _sys_ procedures): remove gratuitous _sys_ from names. + include "fports.h" and <stdio.h> + (scm_stat, scm_select): don't support FD objects. + + * error.h: adjust scm_syserror_msg prototype. + * error.c (scm_syserror_msg): take an extra argument for errno. + Using the global value didn't always work, since it could be + reset by procedure calls in the message or args arguments. + + * fports.c (scm_setbuf0): call setbuf even if FIONREAD is not defined. + I don't understand why the check was there (and what about the + ultrix check?) + + * strop.c (scm_string_copy): allow shared substrings to be copied. + + * unif.h: corresponding change to prototypes. + * unif.c (scm_uniform_array_read_x, scm_uniform_array_write_x): + recognize two new optional arguments: offset and length. Allow + the port argument to be an integer (file descriptor, for scsh). + Include <unistd.h> for "read" prototype. + +Tue Jan 14 02:42:02 1997 Gary Houston <ghouston@actrix.gen.nz> + + * socket.c: don't include filesys.h. + +Mon Jan 13 03:47:04 1997 Gary Houston <ghouston@actrix.gen.nz> + + * Makefile.am: add AWK=@AWK@ (?) + + * Makefile.am (EXTRA_DIST): add errnos_cnvt.awk, errnos.default, + errnos_get.c. + Add a rule to generate errnos.c from errnos. + * error.c (scm_init_error): include errnos.c. + * errnos_cnvt.awk: new file, converts the list of errno codes to + C expressions. + * errnos_get.c: new file. + * errnos.default: new file, contains errnos to try if they can't + be extracted from errno.h. + * configure.in: if using GCC, try and extract errno codes from + errno.h. + Added AC_PROG_AWK. + +Sat Jan 11 14:47:00 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * configure.in: Replaced AC_PROG_RANLIB with AM_PROG_LIBTOOL. + * Makefile.am: Made libguile into a libtool library. + * PLUGIN/guile.config: Removed "-L ../libguile" from xtra_cflags. + Set libtool_libs to indicate that libguile is a libtool library. + See guile/ChangeLog for details. + * .cvsignore: ignore "*.lo", the libtool library objects. + +Wed Jan 8 06:54:54 1997 Gary Houston <ghouston@actrix.gen.nz> + + * net_db.c (scm_getserv): add missing SCM_ALLOW_INTS. + use htons in getservbyport argument. + +Tue Jan 7 18:11:24 1997 Jim Blandy <jimb@floss.cyclic.com> + + * ports.h (SCM_PTOBNUM): Removed extraneous semicolon. + * smob.h: (SCM_PTOBNUM): Removed entirely; this definition is a + duplicate. + + * objprop.c (scm_object_property): No need to take the CDR of the + value returned by scm_object_properties, since Aug 20 change. + + * configure.in: When checking for struct linger, #include + <sys/types.h> as well as <sys/socket.h>. I've never known + <sys/types.h> to cause any portability problems, and Solaris's + <sys/socket.h> needs it. + * configure: Rebuilt. + + I think the Sun compiler has chosen a perverse way to interpret + ANSI declarations combined with K&R definitions. We'll + appease it a little bit. But when it invades France, we fight. + * print.c (scm_iprlist): Change 'tlr' argument to an int. + * print.h (scm_iprlist): Here too. + * numbers.c (scm_divbigdig): Change definition to match + declaration in numbers.h. + * unif.c (scm_makflo): Change definition to match declaration in + unif.h. + + * init.c (scm_boot_guile): Don't return the value of + scm_boot_guile_1. This function doesn't return a value; + scm_boot_guile_1 doesn't return a value (or return at all). + + * eval.c (unmemocopy): Add a semicolon to appease the Sun + compiler. + + * simpos.c (SYSTNAME): Add case for AIX; otherwise it won't + compile. I have a feeling this function is a bad idea anyway --- + one should always test for features, not systems. + + * smob.h (SCM_SMOBNUM, SCM_PTOBNUM): Remove extraneous + semicolons. Only pure luck kept this from being noticed earlier. + +Tue Jan 7 15:04:06 1997 Mikael Djurfeldt <mdj@kenneth> + + * socket.c (scm_recvfrom): Added missing semicolon. + +Mon Jan 6 20:39:08 1997 Gary Houston <ghouston@actrix.gen.nz> + + * socket.c (scm_recvfrom): allow buff_or_size to be a list containing + the buffer and start and end positions for scsh networking + implementation. + +Sun Jan 5 13:53:53 1997 Jim Blandy <jimb@floss.cyclic.com> + + * configure.in: Revert previous change to this file; the problem + is due to transient automake weirdness. + * configure: Rebuilt. + + * Makefile.am (EXTRA_DIST): Distribute PLUGIN/guile.libs.in, not + PLUGIN/guile.libs. configure generates the latter from the former. + * Makefile.in: Rebuilt. + + * configure.in: Call AM_PROG_INSTALL; the automake manual says we + need this if we install scripts, like guile-snarf. + * configure: Rebuilt. + +Thu Jan 2 01:56:38 1997 Marius Vollmer <mvo@zagadka.ping.de> + + * Makefile.am (EXTRA_DIST): Added DYNAMIC-LINKING + +Sat Dec 28 19:14:01 1996 Gary Houston <ghouston@actrix.gen.nz> + + * socket.c (scm_addr_vector): fix faulty scm_listify. + +Sat Dec 28 13:55:58 1996 Marius Vollmer <mvo@zagadka.ping.de> + + * read.c (scm_lreadr): Encountering EOF after skipping a SCSH + style block comment is no longer considered an error. + +Fri Dec 27 13:44:23 1996 Marius Vollmer <mvo@zagadka.ping.de> + + * PLUGIN/guile.libs.in: New file. + * PLUGIN/guile.libs: Removed from repository. + * configure.in: Create PLUGIN/guile.libs from + PLUGIN/guile.libs.in. This is for including additonal libraries + needed for dynamic linking. + * Makefile.am (EXTRA_DIST): Distribute PLUGIN/guile.libs.in + instead of PLUGIN/guile.libs. + + * Makefile.am: Added explicit dependency "dynl.o: dynl.x". + +Sun Dec 22 23:06:14 1996 Jim Blandy <jimb@floss.cyclic.com> + + * list.c (scm_delq_x, scm_delv_x, scm_delete_x): Delete all + occurrences of the given element from the list, not just the + first. This is how the Emacs Lisp functions behave, how the + analogous Common Lisp functions behave, and (I believe) how the + older Maclisp functions worked. I realize that this change may + break code, but it seemed better to break it before the Guile + release than after. + + * gc.c (scm_protect_object, scm_unprotect_object): New functions. + Their prototypes were already present in gc.h, but they weren't + implemented. + (scm_init_storage): Initialize scm_protects. + * root.c (scm_protects): New element of scm_sys_protects. + + * net_db.h (scm_init_net_db): Fix spelling from scm_init_netdb. + +Sat Dec 21 15:38:32 1996 Jim Blandy <jimb@floss.cyclic.com> + + * libguile.h: Added #include "libguile/net_db.h". + + * libguile.h: Don't #include "libguile/libpath.h", contrary to Oct + 30 change. That file is only meant for communication between the + configuration process and load.c. If code linked against libguile + wants to get at the paths mentioned in libpath.h, it can call + functions declared in load.h. + +Sat Dec 21 14:50:42 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * libguile.h: Removed #include "libguile/fdsocket.h" + + * net_db.c: Added #include <sys/socket.h>. + +Sat Dec 21 00:33:03 1996 Gary Houston <ghouston@actrix.gen.nz> + + * filesys.c (scm_input_waiting_p): use select in preference to + FIONREAD, since the latter doesn't detect EOF. + Throw error if neither select nor FIONREAD available. + + * socket.c (scm_connect): take a port, not a fd object. + (scm_fill_sockaddr): throw an error if fam is not recognised. + (scm_bind): use scm_fill_sockaddr. + (scm_listen): take a port, not a fd object. + (scm_accept): take and return a port. return #f in the car if + address can't be got + (scm_sock_fd_to_port): new procedure. + (scm_socket): use scm_sock_fd_to_port. + (scm_addr_vector): throw error if unrecognised address type. + take an extra argument with the calling procedure name. + (scm_getsockname): take a port. return #f if address can't be got. + (scm_getpeername): take a port. return #f if address can't be got. + (scm_recvfrom): take a port. return #f for address component if can't + be got. + (scm_sendto, scm_socketpair, scm_getsockopt scm_shutdown, + scm_setsockopt, scm_recv, scm_send): take a port not a fd object. + +Fri Dec 20 23:06:53 1996 Jim Blandy <jimb@floss.cyclic.com> + + * throw.c (scm_internal_catch): Make body funcs and handler funcs + use separate data pointers, to allow them to be designed + independently and reused. + (scm_body_thunk, scm_handle_by_proc, scm_handle_by_message): + Renamed from catch_body, catch_handler, and uncaught_throw; made + generically useful. + (struct scm_catch_body_data): Renamed from catch_body_data; moved + to throw.h. + (scm_catch): Use the above. + (scm_throw): Don't bother printing a message for an uncaught + throw; we establish a default handler in init. + * throw.h (scm_internal_catch): Prototype updated. + (scm_body_thunk, scm_handle_by_proc, scm_handle_by_message): New + decls. + (struct scm_body_thunk_data): New structure, used as data + argument to scm_body_thunk. + * init.c (struct main_func_closure): New structure, packaging up + the data to pass to the user's main function. + (scm_boot_guile): Create one. Pass it to scm_boot_guile_1. + (scm_boot_guile_1): Pass it through to invoke_main_func. Use + scm_internal_catch to establish a catch-all handler, using + scm_handle_by_message. This replaces the special-case code in + scm_throw. + (invoke_main_func): Body function for scm_internal_catch; invoke + the user's main function, using the main_func_closure pointer to + decide what to pass it. + * root.c (struct cwdr_body_data): Remove handler_proc member. + (cwdr): Use scm_handle_by_proc instead of cwdr_handler. + (cwdr_handler): Removed. + +Thu Dec 19 00:00:26 1996 Gary Houston <ghouston@actrix.gen.nz> + + * socket.h (SCM_P): update bind prototype. + * socket.c (scm_init_socket): intern PF_UNSPEC, PF_UNIX, PF_INET. + include "feature.h". + (scm_socket): return a port, not a file descriptor object. + include "fports.h" and <unistd.h> + (scm_bind): take a port, not a file descriptor object. + take an extra argument for address args. + + * net_db.c (scm_init_net_db): intern INADDR_ANY, INADDR_BROADCAST, + INADDR_NONE, INADDR_LOOPBACK. + +Tue Dec 17 22:58:26 1996 Gary Houston <ghouston@actrix.gen.nz> + + * init.c: include net_db.h and not fdsocket.h. + (scm_boot_guile_1): call scm_init_net_db and not scm_init_fdsocket. + + * Makefile.am: corresponding changes. + * socket.h: renamed from fdsocket.h, fix names. + * net_db.h: renamed from socket.h, fix names. + * socket.c: renamed from fdsocket.c. + remove _sys from procedure names. + (scm_init_socket): rename from scm_init_fdsocket. include socket.x. + add "socket" to features list. + * net_db.c: renamed from socket.c. + remove _sys from procedure names. + (scm_init_net_db): rename from scm_init_socket. include net_db.x. + add "net-db" to features list. + include "net_db.h". don't include <sys/socket.h> or + <sys/un.h>. + +Thu Dec 19 14:03:24 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * tags.h (scm_tags): Removed comma at end of last enumerator. + +Thu Dec 19 02:54:59 1996 Jim Blandy <jimb@floss.cyclic.com> + + Don't use GCC extensions to allocate space for debugging frames. + (Here he goes again! Why do we put up with this?!) + * debug.h (scm_debug_frame): Make the 'vect' member a pointer to + an scm_debug_info structure, not an in-line array of them. Add + 'info' member, to say how many vect elements we've used, for eval + frames. + * eval.c (SCM_CEVAL): Use alloca to allocate space for vect. Use + a new variable debug_info_end to mark the end of vect, instead of + the address of the 'info' pointer itself. + [DEVAL] (ENTER_APPLY, SCM_CEVAL, SCM_APPLY): Remove casts of + &debug to scm_debug_frame *; debug is a real scm_debug_frame now. + (SCM_APPLY): Explicitly allocate space for debug.vect. + * debug.c (scm_m_start_stack): Same, for vframe.vect. + * stacks.c: Adjusted for new debug frame structure. + (RELOC_INFO, RELOC_FRAME): New macros. + (stack_depth, read_frames): Use them, and new scm_debug_frame + element 'info', instead of magically knowing that eval frames have + an info pointer sitting after vect. + (scm_make_stack, scm_stack_id, scm_last_stack_frame): Use + RELOC_FRAME. + (scm_init_stacks): Formatting tweaks. + +Wed Dec 18 14:57:57 1996 Jim Blandy <jimb@floss.cyclic.com> + + Give GCC more control flow information, so it can be sure that + variables aren't used uninitialized. + * error.h (scm_error, scm_syserror, scm_syserror_msg, + scm_sysmissing, scm_num_overflow, scm_out_of_range, + scm_wrong_num_args, scm_wrong_type_arg, scm_memory_error, + scm_misc_error): Tell GCC that these functions never return. + * struct.c (scm_struct_ref, scm_struct_set_x): If we can't figure + out the field type, call abort if SCM_ASSERT returns, to placate + the optimizer. + * stacks.c (scm_make_stack, scm_last_stack_frame): abort if + scm_wta ever returns. We can't handle this case anyway, and this + gives the optimizer more information. + * unif.c (scm_uniform_vector_ref, scm_array_set_x): Abort if + scm_wta ever returns. + + In some cases, the code is fine, but GCC isn't smart enough to + figure that out; this usually happens when one variable is only + initialized and used when a particular condition holds true, and + we know that condition will never change within a given invocation + of the function. In this case, we simply initialize the variables + to placate the compiler, hopefully to a value which will cause a + crash if it is ever actually used. + * print.c (scm_iprin1): Initialize mw_pos. + * read.c (scm_lreadrecparen): Initialize tl2, ans2. + * throw.c (scm_ithrow): Initialize dynpair. + * unif.c (scm_uniform_vector_ref): Initialize cra. + * struct.c (init_struct): Initialize prot. + * mbstrings.c (scm_print_mb_symbol): Initialize mw_pos and inc. + + * strports.c (scm_eval_0str): Don't return uninitialized garbage + if EXPR contains no expressions. + +Wed Dec 18 11:43:22 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * eval.c, debug.h: Revert changes of Dec 16 and Nov 21. They + cause an infinite loop (???). So much for the algebraic + equivalency of variable-sized arrays and alloca... + +Tue Dec 17 20:29:03 1996 Marius Vollmer <mvo@zagadka.ping.de> + + * backtrace.c (scm_display_error): Bugfix: scm_procedure_p returns + a SCM boolean, not a C boolean. + +Sat Dec 14 23:21:45 1996 Marius Vollmer <mvo@zagadka.ping.de> + + * gc.c (SCM_MTRIGGER_HYSTERESIS): New memory management parameter. + (scm_must_malloc, scm_must_realloc): Added a hysteresis to the + rules for raising scm_mtrigger. Previously, unfortunate but not + unlikely circumstances could result in almost constant invokation + of the gc. Now, this situations should be less likely, but they + are not prevented completely. + +Tue Dec 17 16:19:07 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * numbers.c (scm_fuck): Procedure removed; looks like old test + code. + * numbers.h: Prototype removed. + +Mon Dec 16 18:20:32 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * debug.h (scm_debug_frame): Change `vect' member from an in-line + array to a pointer, to match my Nov 21 change in eval.c. + +Fri Dec 13 16:12:14 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * libguile.h: Added #include "libguile/backtrace.h", #include + "libguile/stacks.h". + + * strings.c (scm_string scm_make_string scm_string_ref + scm_string_set_x scm_string_equal_p scm_string_append): + Bugfix according to scm patch from Aubrey Jaffer: + Corrected long-standing + (not (eqv? (integer->char 128) + (string-ref (make-string 1 (integer->char 128)) 0))) + bug found by John Kozak <jk@noontide.demon.co.uk>. + + * strports.c, strports.h: Make scm_eval_0str return the value of + the last expression evaluated (previously, it returned void). + + * strports.c, strports.h: New function: scm_read_0str. Does what + it sounds like. + +Tue Dec 10 23:38:43 1996 Gary Houston <ghouston@actrix.gen.nz> + + * simpos.c (scm_getenv): return #f if string can't be found in the + environment instead of throwing an exception, for compatibility + with numerous other systems. + +Mon Dec 9 23:23:35 1996 Tom Tromey <tromey@cygnus.com> + + * Makefile.am (.c.x): Use guile-snarf. + * configure.in (AC_OUTPUT): Generate guile-snarf; make it + executable. + * guile-snarf.in: New file, resurrected from old guile-snarf.sh. + +Mon Dec 9 18:36:50 1996 Jim Blandy <jimb@duality.gnu.ai.mit.edu> + + * backtrace.c (scm_display_error_message): Made non-static, and + renamed from display_error_message. + * backtrace.h (scm_display_error_message): Added extern decl. + * throw.c (uncaught_throw): Use it to display the error message. + +Mon Dec 9 10:10:38 1996 Tom Tromey <tromey@cygnus.com> + + * inet_aton.c: Use #if 0, not #ifdef 0. + +Mon Dec 9 06:36:48 1996 Gary Houston <ghouston@actrix.gen.nz> + + * ioext.c (scm_sys_ftell): use scm_long2num instead of SCM_MAKINUM + to convert the returned value. + (scm_sys_fseek): use scm_num2long instead of SCM_INUM to convert + the offset argument. + +Sun Dec 8 21:06:38 1996 Jim Blandy <jimb@duality.gnu.ai.mit.edu> + + Add new interface to catch/throw, usable from C as well as + Scheme. + * throw.h (scm_catch_body_t, scm_catch_handler_t): New types. + (scm_internal_catch): New function, replaces... + (scm_catch_apply): Deleted. + * throw.c (scm_catch_apply): Deleted; replaced with a more general + mechanism which is a bit more code, but can be used nicely from C + and implement the Scheme semantics as well. + (scm_internal_catch): This is the replacement; it's named after + the analogous function in Emacs. + (scm_catch): Reimplemented in terms of the above. + (struct catch_body_data, catch_body, catch_handler): New + functions, used by scm_catch. + * root.c (cwdr): Reimplemented in terms of scm_internal_catch. + (struct cwdr_body_data, cwdr_body, cwdr_handler): New functions; + support for new cwdr. + + * Makefile.am (libpath.h): Re-incorporate Mikael's changes of Wed + Oct 30. + +Sun Dec 8 17:55:34 1996 Marius Vollmer <mvo@zagadka.ping.de> + + * acconfig.h: Added DYNAMIC_LINKING symbol. + * configure.in: Add option and checks for dynamic linking. + * dynl.c, dynl-dl.c, dynl-dld.c, dynl-shl.c, dynl-vms.c, + dynl.h: New files for dynamic linking support. + * Makefile.am (libguile_a_SOURCES): + Added "dynl.c". + (modinclude_HEADERS): Added "dynl.h". + (EXTRA_DIST): Added "dynl-dl.c", "dynl-dld.c", "dynl-shl.c" and + "dynl-vms.c". + * init.c (scm_boot_guile_1): Call + scm_init_dynamic_linking to initialize dynamic linking support. + +Thu Dec 5 22:47:53 1996 Marius Vollmer <mvo@zagadka.ping.de> + + * init.c (scm_boot_guile_1): Moved `live' variable to the toplevel + (as we Schemers say). It needs to be global, so that I can tweak + it for the proper operation of unexec. + (scm_boot_guile_1_live): New variable, see above. + +Sun Dec 1 00:00:49 1996 Tom Tromey <tromey@cygnus.com> + + * guile-snarf.sh: Removed. + * PLUGIN/guile.libs: Added dependency for -lm. + * acinclude.m4: Renamed from aclocal.m4. + * PLUGIN/greet: Removed. + * Makefile.am, aclocal.m4: New files. + * configure.in: Updated for Automake. + +Thu Nov 28 00:23:55 1996 Marius Vollmer <mvo@zagadka.ping.de> + + * eval.c (scm_definedp): Use top_level_lookup_closure_var + and not top_level_lookup_thunk_var. + +Wed Nov 27 22:04:19 1996 Jim Blandy <jimb@baalperazim.frob.com> + + * Makefile.in (ancillary): List ChangeLog-scm, not ChangeLog.scm. + +Wed Nov 27 14:14:56 1996 Marius Vollmer <mvo@zagadka.ping.de> + + * eval.c (scm_definedp): Incompatibly changed to be a builtin + Scheme function, instead of syntax. Single argument is now a + symbol. + +Thu Nov 21 20:26:36 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * ramap.c (scm_ra_sum, scm_ra_difference, scm_ra_product, + scm_ra_divide): Properly terminate statements passed as arguments + to IVDEP macros. (Thanks to Bernard Urban.) + + * eval.c (SCM_CEVAL): Use alloca, not GCC's extensions for arrays + with non-constant sizes. (Thanks to Bernard Urban.) + +Thu Nov 21 11:17:42 1996 Jim Blandy <jimb@floss.cyclic.com> + + It's an "eval closure", not an "eval thunk." A thunk is a + function of no arguments. + * root.h (struct scm_root_state): Renamed + top_level_lookup_closure_var from top_level_lookup_thunk_var. + (scm_top_level_lookup_closure_var): Renamed from + scm_top_level_lookup_thunk_var. + * root.c (mark_root): Uses changed. + * gdbint.c (gdb_eval, gdb_binding): Uses changed. + * init.c (scm_start_stack): Uses changed. + * eval.c (scm_eval, scm_eval_x, scm_init_eval): Rename uses. + Change scheme-visible name to *top-level-lookup-closure* from + *top-level-lookup-thunk*. + +Tue Nov 19 22:43:31 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * gc.c (scm_igc, scm_gc_mark): Round up the size of the stack we + pass to scm_mark_locations. (Thanks to Aubrey Jaffer.) + +Sun Nov 10 13:35:05 1996 Jim Blandy <jimb@floss.cyclic.com> + + * gc.c (struct scm_heap_seg_data): Doc fixes. + + * gc.c (scm_gc_sweep): Empty all segments' freelists before + sweeping. Then, prepend each segment's free cells to its + freelist, rather than wiping out the old value. (Thanks to Marius + Vollmer.) + + * gc.c (which_seg, scm_map_free_list, scm_newcell_count, + scm_check_freelist, scm_debug_newcell): New functions and + variables, for debugging freelist problems. + * pairs.h (SCM_NEWCELL): New debugging version added. + * gc.h (scm_debug_newcell): Added extern declaration, used by + debugging version of SCM_NEWCELL. + +Sat Nov 9 19:02:46 1996 Jim Blandy <jimb@floss.cyclic.com> + + On some systems <libc.h> conflicts with <unistd.h>, and should not + be #included at all. + * aclocal.m4 (GUILE_HEADER_LIBC_WITH_UNISTD): New autoconf macro. + * acconfig.h (LIBC_H_WITH_UNISTD_H): New CPP symbol. + * configure.in: Call it. + * posix.c, filesys.c: Use its results to decide whether or not to + #include <libc.h>. + * configure, scmconfig.h.in: Rebuilt with autoconf and + autoheader. + +Wed Nov 6 16:19:50 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * fports.c (scm_stdio_to_port, scm_open_file): Set the port's + pointer to the stdio stream before calling scm_setbuf0, so the + latter will be able to retrieve it. I'm surprised this didn't + segfault earlier. (Thanks to Christopher Lee.) + +Wed Nov 6 16:01:20 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * throw.c (scm_lazy_catch, scm_ithrow): Completed implementation + of `lazy-catch'. + +Sat Nov 2 21:01:48 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * stacks.c, stacks.h (scm_make_stack): Now takes arbitrary + number of stack narrowing specifier pairs. The first specifier in + a pair controls inner border, the second the outer border. A + number means cut that number of frames, a procedure object means + cut until that object is found in operator position in a frame. + + * root.c (cwdr): Bugfix. + + * read.c: Recording of positions disabled by default. + + * procs.c (scm_closure_p): New function. + + * posix.c (scm_tmpnam): New function. + + * load.c: Added #include "throw.h". + (scm_sys_search_load_path): Bugfix: Don't add an extra '/' if path + ends with '/'. + + * load.c, load.h (scm_read_and_eval_x): New function. + + * eval.c: Renamed debug option "deval" to "debug". + + (scm_eval_x): `eval!' is no longer accessible from the scheme + level. Motivation: We can't allow operations which introduce + glocs into the scheme level. Guile's type system can't handle + these as data. Use `eval' or `read-and-eval!' as replacement. + + * debug.c (scm_m_start_stack): Bugfix: Use SCM_ECONSP instead of + SCM_CONSP since this is a macro!; Set vframe.prev to + scm_last_debug_frame instead of 0. In this way we can look + "above" the virtual start stack frame if we wish. + (scm_debug_hang): New function: Useful for debugging Guile in + certain tricky situations. Will probably be removed later... + + * debug.h: Changed semantics of debug option "backtrace". This + option now only indicates whether we want automatic backtrace at + an error. + +Wed Oct 30 00:31:55 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * ports.c: #include "filesys.h" + (scm_char_ready_p): input_waiting renamed and moved to filesys.c. + + * filesys.c, filesys.h (scm_input_waiting_p): Moved from ports.c. + Motivation: This is system specific code which is related to file + I/O. It also may use select. Added code by Gary Houston to + detect presence of character in stdio buffers. + + * libguile.h: #include "libguile/libpath.h" + + * Makefile.in (libpath.h): Renamed definition of: LIBRARY_PATH --> + SCM_LIBRARY_DIR; Added definitions of: SCM_PKGDATA_DIR, + SCM_SITE_DIR; Install libpath.h among the other include files. + + * load.c, load.h (scm_sys_package_data_dir): New function. + +Mon Oct 28 11:43:41 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * stacks.h: Bugfix: Don't use tail-array length field as stack + length field! This screwed GC. + +Tue Oct 22 01:01:00 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * _scm.h: Added #ifndef around definition of macros min and max. + + * __scm.h: Added hooks for threads to plugin to in ints protection + macros: SCM_THREAD_DEFER, SCM_THREAD_ALLOW, SCM_THREAD_REDEFER, + SCM_THREAD_ALLOW_1, SCM_THREAD_ALLOW_2. Motivation: We don't want + the main code in these macros duplicated and spread over multiple + files. Renamed SCM_THREADS_SWITCHING_CODE -> + SCM_THREAD_SWITCHING_CODE. + +Tue Oct 29 14:55:40 1996 Marius Vollmer <mvo@zagadka.ping.de> + + * snarf.h: New file. + * guile-snarf.sh: New file. + * Makefile.in (inner_h_files): Added snarf.h + (ancillary, install, uninstall, distclean): Added actions for + guile-snarf. + (.c.x): Use guile-snarf. + (guile-snarf): New rule, to produce guile-snarf from guile-snarf.sh. + (gen_c_files): Note that these depend on guile-snarf. + * _scm.h: Removed the snarfing macros (SCM_PROC, etc). They are + now in "snarf.h". Added #include "snarf.h" to get them. + * libguile.h: Added #include "snarf.h". + (Patches applied and tweaked by Jim Blandy.) + +Tue Oct 29 13:21:13 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * socket.c: Use K&R style declaration for 'close'; the GNU coding + standards suggest against providing prototypes for system + functions. Thanks to Greg Troxel. + +Mon Oct 28 16:48:32 1996 Jim Blandy <jimb@floss.cyclic.com> + + * strports.c (scm_eval_0str): New function. + #include "read.h", to get prototype for scm_read. + * Makefile.in (strports.o): Update dependencies. + * strports.h: New prototype. + + * numbers.c (scm_integer_p): Renamed from scm_int_p; change its + scheme name from "int?" to "integer?". It seems to do the job. + * numbers.h: Rename prototype too. + * scmhob.h (intp): Change definition to refer to scm_integer_p. I + hope this is right. + + * numbers.c (scm_less_p, scm_gr_p, scm_leq_p, scm_geq_p, + scm_num_eq_p): Rename these according to R4RS conventions: call + them <, <=, =, >, and >=, not <?, <=?, =?, >?, and >=?. En route + to making libguile R4RS compliant without ice-9... + + * load.c (scm_sys_search_load_path): Search for files under all + extensions listed in the %load-extensions variable. If FILENAME + is absolute, return it unchanged, without searching the load path. + (scm_loc_load_extensions): New variable, pointing to + %load-extensions' value cell. + (scm_init_load): Initialize it, and the value it points to. + (scm_primitive_load_path): Improve error reporting. + + * load.c (scm_loc_load_hook): New variable, pointing to value cell + of new Scheme variable %load-hook. + (scm_primitive_load): Apply %load-hook to filename. + +Mon Oct 28 06:28:28 1996 Gary Houston <ghouston@actrix.gen.nz> + + * configure.in: add tests for figuring out whether buffered data + is available in a FILE structure, which is needed by char-ready. + + * acconfig.h: define FILE_CNT_FIELD, FILE_CNT_GPTR and + FILE_CNT_READPTR. + + * simpos.c (scm_getenv): renamed from scm_sys_getenv. Throw + exceptions using misc_error instead of syserror. It seems a bit + odd to throw an exception if a string can't be found in the + environment, but it's consistent with open-file, stat etc. + (simpos.h): remove sys_ from getenv. + + * posix.c (scm_putenv): renamed from scm_sys_putenv. If an error + occurs, throw an error instead of returning errno. Return value + is now unspecified. + (numerous in posix.c and posix.h): removed superfluous sys_ from names. + +Sun Oct 27 01:22:04 1996 Gary Houston <ghouston@actrix.gen.nz> + + * filesys.c (scm_stat2scm): derive file type and permissions from + the stat mode and append them to the returned vector. + There isn't much overhead in doing this and it avoids the need to + work with S_IRUSR et al. in Scheme. + Define symbols scm_sym_regular etc. + (scm_init_filesys): don't intern S_IRUSR etc. + + * load.c: change s_try_load and s_try_load_path to s_primitive_load + and s_primitive_load_path. + + * eval.c, load.c, error.c (scm_wta): use scm_misc_error. + + * error.h: don't declare error symbols. prototype for scm_misc_error. + + * stackchk.c (scm_stack_overflow_key): defined here instead of in + error.c. + + * error.c: use SCM_SYMBOL to set up error keys. + scm_misc_error: new procedure. + +Fri Oct 25 01:56:30 1996 Jim Blandy <jimb@floss.cyclic.com> + + * read.c (scm_lreadr): Recognize SCSH-style block comments; text + between `#!' and `!#' is ignored. + (skip_scsh_block_comment): New function. + + * feature.c (scm_set_program_arguments): New argument, FIRST. + * feature.h: Update prototype. + * init.c (scm_boot_guile_1): Pass new argument to + scm_set_program_arguments. + +Tue Oct 22 20:54:42 1996 Jim Blandy <jimb@floss.cyclic.com> + + * init.c (scm_start_stack): Don't initialize scm_progargs here. + (scm_boot_guile): Call scm_set_program_arguments here, later than + the old initialization. + + * init.c: (scm_boot_guile, scm_boot_guile_1): New, simplified + initialization procedure. + - Delete in, out, err arguments; there are other perfectly good + ways to override these when desired. + - Delete result argument; this function shouldn't ever return. + - Rename init_func argument to main_func, for less confusion. + - Delete boot_cmd argument; main_func is more general. + -Add 'closure' argument, to help people pass data to main_func + without resorting to global variables. + - Abort if reentered; don't bother returning an error code. + - Call scm_init_standard_ports to set up the default/current + standard ports; no need to pass them to scm_start_stack. + - Remove code to evaluate the boot_cmd, and start the repl; let + the user do something like that in main_func if they want. + - Remove code to package up a return value; main_func can do any + of that as needed. + - Call exit (0), instead of returning. + (scm_start_stack): Don't initialize the I/O ports here; that's + weird. Delete in, out, err arguments. Move guts to + scm_init_standard_ports, scm_stdio_to_port. + (scm_init_standard_ports): New function, to set up current and + default standard ports. + (scm_start_stack, scm_restart_stack): Make these static. + * init.h (scm_boot_guile): Adjust declaration. + (scm_start_stack, scm_restart_stack): Remove externally + visible declarations for these. + (enum scm_boot_status): Removed; now scm_boot_guile never returns. + + * fports.c (scm_stdio_to_port): New function. Its guts used to be + written out several times in scm_start_stack. + * fports.h: New declaration for the above. + + * feature.c (scm_set_program_arguments): New function. + * feature.h: New declaration for the above. + + * ports.c: Formatting tweak. + +Sun Oct 20 03:29:32 1996 Mikael Djurfeldt <mdj@kenneth> + + * pairs.h, eval.c, eval.h, feature.c, gc.c, list.c, load.c, + ramap.c, symbols.c: Added new selectors SCM_CARLOC and SCM_CDRLOC + for obtaining the address of a car or cdr field. Motivation: + &SCM_CXR make assumptions about the internal structure of the + SCM_CXR selectors. + + * eval.h, eval.c: Added new selector SCM_GLOC_VAL_LOC. + Motivation: see SCM_CXRLOC. + + * pairs.h, eval.c, gc.c, init.c, ioext.c, ports.c, ports.h, + srcprop.h, tags.h, throw.c, unif.c: Added new selectors + SCM_SETAND_CAR, SCM_SETAND_CDR, SCM_SETOR_CAR and SCM_SETOR_CDR. + Motivation: Safer use. Some other macros are defined in terms of + these operations. If these are defined using the SCM_SETCXR + (<e1>, SCM_CXR (<e1>) <op> <e2>) pattern a complex <e1> will lead + to inefficiency and an <e1> with side-effects could potentially + break. Also, these particular operations are heavily utilized in + the garbage collector. In unoptimized code there will be a + measurable speedup. + + * alist.c, arbiters.c, continuations.c, debug.c, debug.h, eval.c, + eval.h, feature.c, filesys.c, fports.c, gc.c, gsubr.c, init.c, + ioext.c, kw.c, list.c, load.c, mallocs.c, numbers.c, numbers.h, + pairs.c, pairs.h, ports.c, ports.h, posix.c, procprop.c, procs.c, + procs.h, ramap.c, read.c, root.c, srcprop.c, srcprop.h, + strports.c, symbols.c, tags.h, throw.c, unif.c, variable.c, + vports.c: Cleaned up use of pairs: Don't make any special + assumptions about the internal structure of selectors and + mutators: SCM_CXR (<e1>) = <e2> --> SCM_SETCXR (<e1>, <e2>), + SCM_CXR (<e1>) &= <e2> --> SCM_SETAND_CXR (<e1>, <e2>) etc. + (Among other things, this change makes it easier to build Guile + with certain compilers which have problems with casted lvalues.) + +Fri Oct 18 01:11:56 1996 Mikael Djurfeldt <mdj@mdj.nada.kth.se> + + * stacks.c: Improve selection of relevant stack frames when making + a stack object. Introduce one level of indirection in the stack + object to make it possible to "narrow" to a certain region of the + stack. This facilitates making use of more clever algorithms (not + implemented) for selecting relevant frames and gives a cleaner + design since selection of frames can be done independently of + extraction of frames from the real stack. + (scm_stack_id): Also take #t as argument which means look at + current stack. + + * stacks.h: In struct scm_stack: Turn field frames into a pointer. + Turn n_tail into an integer directly representing current number + of frames in stack. Add field tail. + + * ports.c (scm_port_line_x, scm_port_column_x): New mutators. + + * debug.c (scm_make_memoized): Made it available at scheme level. + (scm_unmemoize, scm_memoized_environment): Bugfix: Check for + SCM_NIMP before applying heavier predicates in argument checking. + (scm_local_eval): Also take memoized object as argument. + + * backtrace.c (scm_display_error): Just a safety measure: Stacks + aren't created with zero length, but should such a strange + creature suddenly turn up... + +Wed Oct 16 11:08:41 1996 Marius Vollmer <mvo@zagadka.ping.de> + + * hashtab.h (scm_hashx_remove_x): Renamed `delete' parameter to + `del', for the sake of C++ compilers. (Patch applied by JimB.) + +Tue Oct 15 17:06:13 1996 Jim Blandy <jimb@floss.cyclic.com> + + * variable.c (scm_make_variable): Make the name hint optional, as + documented. + (anonymous_variable_sym): Renamed from variable_sym. All uses + changed. + + * load.c (scm_primitive_load, scm_primitive_load_path): Renamed + from scm_sys_try_load and scm_sys_try_load_path. The Scheme name + of scm_primitive_load_path was also changed to + "primitive-load-path", from "%try-load-path". Callers changed. + We'd like to respect the convention that a function named + "try-mumble" should behave just like the function called "mumble", + but return #f instead of signalling some error. + * load.h: Rename prototypes. + +Tue Oct 15 05:34:10 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> + + * print.c (make_print_state, grow_print_state), print.h: Modified + the print state representation: Don't use a tail array for + recording of circular references. Resizing of the print state + structure invalidates the print state pointer. To avoid passing + around an indirect print state reference to all printing + functions, we instead let the print state reference a resizable + vector. + +Mon Oct 14 19:25:00 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * alist.c (scm_sloppy_assq, scm_sloppy_assv, scm_sloppy_assoc): + Don't crash when passed an improper list terminated by a + non-immediate value. + +Mon Oct 14 19:08:33 1996 Jim Blandy <jimb@floss.cyclic.com> + + Allocate data for structures on an eight-byte boundary, as + required by the tagging system. + * struct.c (alloc_struct): New function. + (scm_make_struct, scm_make_vtable_vtable): Call it. + * struct.h (scm_struct_n_extra_words): Bump to 3. + (scm_struct_i_ptr): New "field". + * gc.c (scm_gc_sweep): When we need to free the data, use the + information stored by alloc_struct to find the beginning of the + block allocated to the structure, so we can free it. + +Mon Oct 14 17:07:55 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> + + * init.c (scm_boot_guile_1): Moved scm_init_struct in front of + scm_init_stacks. + + * debug.h (SCM_VOIDFRAME, SCM_VOIDFRAMEP): New macros. + (scm_debug_info): New member: id. + + * stacks.c: Stacks are now represented as structs; Stacks have an + id given to them by `start-stack'. + (scm_last_stack_frame): Added predicates `stack?' and `frame?'. + + * stacks.h: Added declarations of scm_stack_p and scm_frame_p; + Changed stack representation. + + * debug.c (scm_procedure_name): Try procedure property `name' for + compiled closures aswell. + + * gc.c (scm_init_storage): Initialize scm_stand_in_procs to SCM_EOL. + + * eval.c: scm_i_name moved to gsubr.c + (scm_m_define): Record names of all kinds of procedure + objects. (Earlier, only closures were recorded.) + + * procprop.h: Added declaration of scm_i_name. + + * gsubr.c: Added global scm_i_name. Added #include "procprop.h". + (scm_make_gsubr): Record names of compiled closures. + +Mon Oct 14 04:21:51 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> + + * debug.c, debug.h: Removed obsolete code. + + * continuations.c, continuations.h, debug.c, gc.c, init.c, root.c, + stacks.c: Renamed regs --> scm_contregs. + + * print.c (scm_free_print_state): Cleanup print state before + returning it to pool. It is better to do it here than in + scm_prin1 since scm_prin1 is called often. + + * srcprop.c (scm_source_properties, scm_set_source_properties_x, + s_set_source_property_x): Check that first argument is a pair or a + memoized object. + + * srcprop.c, srcprop.h: Made scm_i_filename, scm_i_copy, + scm_i_line, scm_i_column and scm_i_breakpoint global. + + * init.c: Added #include "backtrace.h" and #include "stacks.h". + (scm_boot_guile_1): Added calls to scm_init_backtrace and + scm_init_stacks. + + * debug.h: Added debug object smob declaration and macro + definitions. + + * configure.in: Build with backtrace.o and stacks.o if debug + support enabled. + + * Makefile.in: Added entries for new files: backtrace.c, + backtrace.h, stacks.c and stacks.h. + + * symbols.c (scm_sym2ovcell): Fixed documentation. + + * _scm.h (min, max): Added. + + * async.c: Moved `min' macro to _scm.h. + + * debug.h: New debug options SCM_BACKTRACE_MAXDEPTH and + SCM_BACKTRACE_INDENT. + + * eval.c: Added new debug options `maxdepth' and `indent'. + + * print.c (make_print_state): Bugfix: Initialize pstate->ceiling. + + * print.h: Added selector SCM_PRINT_STATE. + + * print.c: New functions: scm_make_print_state, + scm_free_print_state. + + * print.h: Added declarations for scm_make_print_state, + scm_free_print_state. + + * debug.c (scm_m_start_stack): New acro. + + * debug.h: Small cleanup. + + * init.c (scm_boot_guile_1): Moved scm_init_debug below + scm_init_eval. + +Sun Oct 13 20:14:53 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * __scm.h, alist.c, alist.h, append.c, append.h, appinit.c, + arbiters.c, arbiters.h, async.c, async.h, boolean.c, boolean.h, + chars.c, chars.h, continuations.c, continuations.h, debug.c, + debug.h, dynwind.c, dynwind.h, eq.c, eq.h, error.c, eval.c, + eval.h, extchrs.c, extchrs.h, fdsocket.c, fdsocket.h, filesys.c, + filesys.h, fports.c, fports.h, gc.c, gdb_interface.h, gdbint.c, + gdbint.h, genio.c, genio.h, gscm.c, gscm.h, gsubr.c, gsubr.h, + hash.c, hash.h, hashtab.c, hashtab.h, init.c, ioext.c, ioext.h, + kw.c, kw.h, libguile.h, mallocs.c, mallocs.h, markers.c, + markers.h, mbstrings.c, mbstrings.h, numbers.c, numbers.h, + objprop.c, objprop.h, options.c, options.h, pairs.c, pairs.h, + ports.c, ports.h, posix.c, posix.h, print.c, print.h, procprop.c, + procprop.h, procs.c, procs.h, ramap.c, ramap.h, read.c, read.h, + root.c, scmsigs.c, scmsigs.h, sequences.c, sequences.h, simpos.c, + simpos.h, smob.c, socket.c, socket.h, srcprop.c, srcprop.h, + stackchk.c, stackchk.h, stime.c, stime.h, strings.c, strings.h, + strop.c, strop.h, strorder.c, strorder.h, strports.c, strports.h, + struct.c, struct.h, symbols.c, symbols.h, tag.c, tag.h, unif.c, + unif.h, variable.c, variable.h, vectors.c, vectors.h, version.c, + version.h, vports.c, vports.h, weaks.c, weaks.h: Use SCM_P to + declare functions with prototypes. (Patch thanks to Marius + Vollmer.) + + More prototype-related changes from Marius Vollmer: + * gdb_interface.h: Wrapped header file in #ifdef/#endif + * gscm.h (gscm_run_scm): Added prototype for `initfn' paramter. + * ports.h (ptobfuns): Added prototypes. This means some casting in + fports.c. + * fports.c: Added casts for initializations, since the functions + are defined to take FILE * as their stream argument, not SCM. + * fdsocket.c, fdsocket.h: Made `init_addr_buffer' static. + * genio.c (scm_gen_puts): Changed `unsigned char *str_data' parameter + to `char *str_data' to conform to prototype. + +Sat Oct 12 21:49:29 1996 Gary Houston <ghouston@actrix.gen.nz> + + * error.c, eval.c, load.c, stackchk.c: use scm_error not lgh_error. + + * __scm.h (lgh_error): removed, lgh shouldn't be in libguile. + + * stime.c, stime.h: use SCM_P method. + +Sat Oct 12 16:16:25 1996 Jim Blandy <jimb@floss.cyclic.com> + + * eval.c (scm_nconc2last): Don't accept an empty list; apply must + be given at least two arguments. Insist that lst's last element + be a list, but don't make any requirements of its predecessors. + +Fri Oct 11 03:58:25 1996 Jim Blandy <jimb@floss.cyclic.com> + + * eval.c (scm_nconc2last): Revert last change; there seems to be + other stuff going on here. + +Fri Oct 11 02:43:59 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * eval.c (scm_nconc2last): Make sure that each element of lst + (which is a list of argument lists, except for the tail) is a + proper list, i.e., finite and terminated by '(). + +Thu Oct 10 21:09:13 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * unif.c (scm_ra_set_contp): Localize `inc' declaration. + Clarifies flow. + + * struct.c (scm_make_struct, scm_make_vtable_vtable): Use the + symbolic name for the tag, scm_tc3_cons_gloc, instead of just + saying "1". + + * vectors.c (scm_make_vector): Fill vectors with the undefined + value, to help make Guile Scheme code more portable to other + Schemes. + + * symbols.c (scm_intern_obarray_soft, scm_sysintern): Doc fixes. + * symbols.h, tags.h: Doc fixes. + +Wed Oct 9 19:39:29 1996 Jim Blandy <jimb@floss.cyclic.com> + + * async.c (scm_take_signal): Doc fixes. + +Mon Oct 7 22:30:34 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * numbers.c (scm_divbigint): When the remainder is zero, we don't + want to subtract it from the modulus; we just want to leave it + alone. + +Mon Oct 7 00:14:17 1996 Mikael Djurfeldt <mdj@kenneth> + + * init.c (scm_boot_guile_1): Bugfix: i --> base in argument to + `scm_init_threads'. + + * throw.h (scm_catch_apply): Removed the `lazyp' argument. + + * throw.c (scm_catch_apply): Finished implementation of + `lazy-catch'. + +Sun Oct 6 05:26:05 1996 Gary Houston <ghouston@actrix.gen.nz> + + * filesys.c (scm_sys_select): move SCM_ALLOW_INTS past the sreturn + check. + (scm_init_filesys): set "i/o-extensions" feature. + include feature.h. + +Sat Oct 5 12:22:00 1996 Jim Blandy <jimb@floss.cyclic.com> + + * Makefile.in (root.o): Correct dependencies. + +Sat Oct 5 18:40:42 1996 Mikael Djurfeldt <mdj@kenneth> + + * Makefile.in: Added dependency entry for root.o. + + * continuations.c, debug.[ch], eval.c, gscm.c init.c, root.c, + throw.c: Renamed last_debug_info_frame -> scm_last_debug_frame. + + * init.c (scm_start_stack): Set initial root continuation number + to 0. + + * procs.c: New function: scm_thunk_p. + + * procs.h: Added declarations of scm_thunk_p. + + * root.c: Renamed `call-with-new-root' --> + `call-with-dynamic-root'. + (cwdr): Removed allocation of new root state. This should be done + separately by use of scm_make_root. + (scm_apply_with_dynamic_root): New function: Does what it + sounds like. Needed when spawning threads. + + * root.h: Added member last_debug_frame to root state. + Added #include "libguile/debug.h" + + * throw.c: Renamed scm_catch --> scm_catch_apply and added more + arguments. The motivation is that code in root.c needs catch + functionality, and we want to avoid code duplication. + New functions: scm_catch, scm_lazy_catch. These are wrappers for + scm_catch_apply. scm_lazy_catch is intended to introduce catch + handlers that run without popping the stack into the dynwind + chain. + + * throw.h: Added prototypes for scm_catch_apply and + scm_lazy_catch. + +Thu Oct 3 11:12:33 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> + + * root.h (scm_root, scm_set_root): Decouple thread support details + by introducing the selector SCM_THREAD_LOCAL_DATA and the mutator + SCM_SET_THREAD_LOCAL_DATA. + + * print.c (scm_iprlist): Bugfix: Added SCM_ECONSP tests in hare + and tortoise scanning loop. + +Thu Oct 3 00:04:53 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * Makefile.in: Rebuild dependencies. + + * libguile.h: #include "libguile/print.h" before "smob.h", since + the latter uses the print_state structure. + + * throw.c (scm_ithrow): Use the correct variable when checking to + see if a given element of scm_dynwinds is a valid catch. + + * throw.c (scm_ithrow): If scm_dynwinds has invalid list + structure, abort; don't just silently ignore the garbage. + + * _scm.h: #include "print.h" here, since it seems to be used just + about everywhere. + * eval.c, gdbint.c, genio.h, numbers.h, smob.h, srcprop.c, + strports.c, unif.h: Don't #include "print.h". + +Tue Oct 1 05:15:10 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> + + * feature.h (scm_loc_features): Removed external declaration. + (Bug fix suggested by Petr Adamek <adamek@mit.edu>.) + +Tue Oct 1 00:00:10 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> + + * feature.c (scm_init_feature): Added threads feature (needs to be + initialized here, since features doesn't exist when + scm_init_threads is called). + + * libguile.h: Added #include "libguile/../threads/threads.h". + (This is a kludge to get thread support working. This should be + fixed.) + + * configure.in, acconfig.h: Added flags for thread support. + + * scmsigs.c: Define `signal' to be `pthread_signal' if using + mit-pthreads. + + * gc.c (scm_igc): Added SCM_THREAD_CRITICAL_SECTION_START and + SCM_THREAD_CRITICAL_SECTION_END. Moved marking of root data to + root.c:mark_root. + + * _scm.h: Added conditional #include "threads.h" + + * __scm.h (SCM_ASYNC_TICK): Added call to macro + SCM_THREADS_SWITCHING_CODE. + + * init.c (scm_start_stack): Call `scm_make_root' to dynamically + allocate the basic dynamic root object. + (scm_boot_guile): Added call to scm_init_root. + + * root.c, root.h: Added root smob. + (cwdr, scm_call_with_new_root, scm_dynamic_root, scm_app_wdr): New + functions: Implements dynamic roots mostly according to spec in + SCM manual. Main difference is that the second argument is a + throw handler rather than an error "thunk". + + * root.h: Added declaration of scm_init_root. + + * root.c: Added #include "genio.h", #include "smob.h", #include + "pairs.h", #include "throw.h", #include "dynwind.h", #include + "eval.h" + (scm_init_root): Added #include "root.x". + + * throw.c: Added #include "stackchk.h" + (scm_catch): Changed SCM_DEFER_INTS --> SCM_REDEFER_INTS and + SCM_ALLOW_INTS --> SCM_REALLOW_INTS. This is so that scm_catch + can be used in scm_call_with_new_root; Added reenabling of stack + checking when catching a throw. + +Mon Sep 30 21:48:11 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * list.c, list.h: Use SCM_P instead of CPP hair. Doc fixes. + + * list.c (scm_member, scm_memv, scm_memq): Return #f if a matching + element is not found, as per R4RS. + +Sat Sep 28 18:13:01 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * list.c: Doc fixes throughout. + +Sat Sep 28 02:07:43 1996 Gary Houston <ghouston@actrix.gen.nz> + + * strings.c, strings.h: (scm_makfrom0str, scm_makefrom0str_opt: + declare the char * to be const. Avoids a warning in rgx.c. + + * ports.h: spelling fix. + + * filesys.c (scm_sys_stat, scm_sys,lstat): include file name in + error messages. + + * load.c (scm_sys_try_load_path): throw an error if file not found + (like it says it in NEWS). + +Fri Sep 27 18:27:01 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * symbols.c (scm_intern_obarray_soft): Initialize the new symbol's + PROPS slot to '(), not #f; it's an empty alist. + + * throw.h, throw.c: Use SCM_P instead of #if hair. + + Remove special support for uncaught throws; see throw.c for + rationale. + * throw.c (uncaught_throw): New function. + (scm_ithrow): Call uncaught_throw if we don't find a throw + target; don't mess with scm_bad_throw_vcell. + (scm_bad_throw_vcell): Variable deleted. + (scm_init_throw): Don't initialize it. + + * throw.c (scm_ithrow): Don't let outer key matches shadow inner + #t catches. + +Wed Sep 25 04:35:50 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * numbers.c (scm_istr2int): If the number is short (as most + numbers are), just call scm_small_istr2int to deal with it. + (scm_small_istr2int): New function, created by un-#ifdefing the + non-bignum version of scm_istr2int and renaming it. + +Tue Sep 24 06:48:38 1996 Gary Houston <ghouston@actrix.gen.nz> + + * load.c (scm_sys_try_load): don't check whether value returned + by scm_open_file is #f, it won't be. Always return SCM_UNSPECIFIED. + Change the Scheme name from %try-load to primitive-load. + + * error.c (scm_error): convert a NULL message to SCM_BOOL_F. + Can avoid passing a message, allowing it to be derived in the + error handler (e.g., if we want to throw to the key both from + Scheme and C). + +Mon Sep 23 00:42:15 1996 Mikael Djurfeldt <mdj@kenneth> + + * print.c (scm_iprin1, scm_prin1, scm_iprlist): Circular + references now have a new appearance which is more compact and + also gives a clue about what the target of the reference is. + By setting parameters in the print state, more fancy printing can + be achieved. This is used by the (not yet commited) backtrace + code. + +Sun Sep 22 17:10:06 1996 Mikael Djurfeldt <mdj@kenneth> + + * eval.c, numbers.h, unif.h, smob.h, srcprop.c: Added #include + "print.h" + + * print.c: Added #include "struct.h". Removed function + scm_prlist. + + * print.h: Modified prototypes for scm_iprlist, scm_prin1 and + scm_iprin1. Removed prototype for scm_prlist. + + * arbiters.c (prinarb), + async.c (print_async), + debug.c (prindebugobj, prinmemoized), + eval.c (prinprom, prinmacro), + filesys.c (scm_fd_print, scm_dir_print), + kw.c (print_kw), + mallocs.c (prinmalloc), + numbers.c, numbers.h (scm_floprint, scm_bigprint), + smob.h (scm_smobfuns), + srcprop.c (prinsrcprops), + throw.c (prinjb), + unif.c, unif.h (scm_raprin1, rapr1), + variable.c (prin_var): Changed argument `int writing' to + `scm_print_state *pstate'. + + * init.c (scm_boot_guile): Moved scm_init_struct upwards so + that it will be called before scm_init_print. + + * print.c (scm_prin1): Print states are now allocated when calling + scm_prin1 and then passed around to all printing functions as an + argument. A cache `print_state_pool' enables reuse of print + states. + (scm_make_print_state): New function. + (scm_iprin1): Adaption to print states. + (scm_iprlist): An initial "hare and tortoise" scan brings down + time complexity to O (depth * N). (Better time complexity will be + achieved when the printing code is completely rewritten.) + +Fri Sep 20 22:01:36 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * aclocal.m4 (GUILE_STRUCT_UTIMBUF): Use AC_CACHE_CHECK instead of + AC_CACHE_VAL; #define UTIMBUF_NEEDS_POSIX outside AC_CACHE_VAL, so + it gets done whether or not the cache variable has a value. + +Thu Sep 19 17:06:39 1996 Jim Blandy <jimb@totoro.cyclic.com> + + Distinguish #f and (). + * __scm.h: #undef SICP. + * pairs.h (SCM_EOL): Delete this definition, equating it with + SCM_BOOL_F. + * tags.h (SCM_EOL): Give it a new definition here; I think I found + the value it used to have. Doc fixes, too. + +Thu Sep 19 15:33:51 1996 Mikael Djurfeldt <mdj@kenneth> + + * struct.c (scm_make_struct_layout, init_struct, scm_struct_ref, + scm_struct_set_x), struct.h, gc.c (scm_gc_mark): Completed Tom + Lord's implementation of structs, allowing for tail arrays as + described in the manual. Also fixed some bugs. (Both the interface + and the implementation should be improved.) + + * read.c (scm_init_read): Removed #ifdef READER_EXTENSIONS + + * print.c, print.h: Closures now print like #<procedure foo (x)>. + People who whish to see the source can do `(print-enable 'source)'. + Removed #ifdef DEBUG_EXTENSIONS. + +Thu Sep 19 00:00:29 1996 Gary Houston <ghouston@actrix.gen.nz> + + * filesys.c (scsm_sys_stat): don't SIGSEGV if argument is an + integer (assuming for now accepting an integer is a good thing). + + * error.c, fports.c: replace use of %S in lgh_error args with %s. + %S will be used instead for write'ing arguments. + + * unif.c (scm_transpose_array): change arguments in the SCM_WNA + asserts. fix a few other asserts. + (scm_aind, scm_enclose_array, scm_array_in_bounds_p, + scm_uniform_vector_ref, scm_array_set_x, + scm_dimensions_to_unform_array): change args in + SCM_WNA SCM_ASSERTS and change scm_wta's to scm_wrong_num_args. + strop.c (scm_substring_move_left_x, scm_substring_move_right_x, + scm_substring_fill_x): likewise. + gsubr.c (scm_gsubr_apply): likewise. + eval.c (SCM_APPLY): likewise. + + * eval.c (4 places): replace scm_everr with lgh_error or + scm_wrong_num_args. + + * error.c, error.h (scm_wrong_num_args, scm_wrong_type_arg, + scm_memory_error): new procedures. + scm_everr: deleted. can use scm_wta, dropping first two args. + scm_error: convert NULL subr to SCM_BOOL_F. + + * __scm.h: don't define SCM_STACK_OVFLOW, SCM_EXIT, SCM_ARG6, SCM_ARG7, + SCM_ARGERR. + + * stackchk.c (scm_report_stack_overflow): use lgh_error instead + of scm_wta. + + * error.c, error.h: new error keys: scm_arg_type_key, + scm_args_number_key, scm_memory_alloc_key, scm_stack_overflow_key, + scm_misc_error_key. + scm_wta: reimplement using lgh_error instead of scm_everr. + +Wed Sep 18 17:13:35 1996 Mikael Djurfeldt <mdj@kenneth> + + * gdbint.c: scm_lread now has one more argument. + + * ports.c, ports.h: Name change: scm_\(line\|column\)_number --> + scm_port_\1; Added mutator scm_set_port_filename_x (used when + loading source from non-file ports, which, e. g., happens when + using the Emacs interface). + + * fports.c (scm_open_file): Don't call scm_makfrom0str on a scheme + object. + + * read.c: Added code for recording of positions of source code + expressions; New functions: recsexpr, scm_lreadrecparen; + _scm_make_srcprops --> scm_make_srcprops + (scm_flush_ws): Removed updating of positions counters. This work + is already done by scm_gen_getc + + * read.h: Added prototype for scm_lreadrecparen + + * print.c: Added #include "alist.h" + + * eval.c: Added #include "hash.h" + + * eq.c: Added #include "ramap.h" + + * options.c: Documentation fixes. + + * srcprop.c (scm_finish_srcprop): Bugfix: update ptr. + (scm_init_srcprop): Adjusted size of initial source-whash. Name + changes: tc16_srcprops --> scm_tc16_srcprops, _scm_make_srcprops + --> scm_make_srcprops + + * srcprop.h: Name changes: tc16_srcprops --> scm_tc16_srcprops, + _scm_make_srcprops --> scm_make_srcprops; Remove one layer of + function calls in the definition of the whash access macros. + +Tue Sep 17 11:33:16 1996 Lee Iverson <leei@Canada.AI.SRI.COM> + + * init.c (scm_boot_guile): Add level of indirection to + scm_boot_guile_1() to ensure that stack base pointer is properly + initialized. There was no guarantee that variable i was the + highest/lowest variable on stack (i.e. the call frame of + scm_boot_guile was not completely protected from gc). + +Tue Sep 17 01:40:56 1996 Gary Houston <ghouston@actrix.gen.nz> + + * ports.h (scm_port_table): put back file_name, it will be used to + support debugging. Undo related changes in fports.c, ioext.c, + ports.c, gc.c. + +Sun Sep 15 03:58:29 1996 Gary Houston <ghouston@actrix.gen.nz> + + * ports.h (scm_port_table): remove file_name member for now, it seems + undesirable. + * fports.c (scm_open_file): don't set file_name in PTAB. + (prinfport): don't use file_name in PTAB. + * ioext.c (scm_sys_duplicate_port): don't set file_name in PTAB. + * ports.c (scm_add_to_port_table): don't intialize file_name. + (scm_port_file_name): remove for now. + * gc.c (scm_gc_mark): don't mark PTAB file_name. + + * fports.h (scm_mkfile): prototype deleted. + * fports.c (scm_mkfile): merged into scm_open_file to simplify. + + * debug.c, unif.c: use scm_out_of_range instead of + wta for range errors (ASSERT still needs work). + + * error.c, error.h (scm_out_of_range): new procedure. + + * error.c, error.h (scm_out_of_range_key): new key. + + * posix.c (scm_sync): #else was missing. + + * error.c, error.h: append _key to names scm_num_overflow and + scm_system_error. + + * __scm.h (SCM_SYSMISSING, SCM_NUM_OVERFLOW): use SCM_BOOL_F instead + of consing an empty list. + (SCM_SYSERROR etc.): move into error.c, make them procedures instead + of macros, saves code and string space. + error.c, fports.c, numbers.c, posix.c, ioext.c, filesys.c, socket.c, + fdsocket.c, simpos.c: change names of SCM_SYSERROR etc., to + lower case. Rename scm_syserror_m to scm_syserror_msg. + error.h: prototypes for new procedures. + +Sat Sep 14 03:35:41 1996 Gary Houston <ghouston@actrix.gen.nz> + + * numbers.c: use SCM_NUM_OVERFLOW instead of scm_wta or ASSERT. + + * error.c, error.h: setup scm_num_overflow key. + + * __scm.h: SCM_NUM_OVERFLOW: macro for reporting numerical overflow. + Remove definition of SCM_OVSCM_FLOW. + + * fports.c (scm_open_file): use SCM_SYSERROR_M. + + * __scm.h: SCM_SYSERROR_M: new macro for system errors with an + explicit message and args. + + * error.c, error.h, __scm.h: change system_error_sym to + scm_system_error. + + * error.c (system_error_sym): remove leading %% from the Scheme name + "%%system-error". + + * __scm.h (SCM_SYSMISSING): Redefine using lgh_error. + +Fri Sep 13 12:58:08 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> + + * __scm.h, chars.c, debug.c, eval.c, eval.h, extchrs.c, extchrs.h, + fdsocket.c, feature.c, mbstrings.c, mbstrings.h, numbers.c, + numbers.h, print.c, scmhob.h, simpos.h, symbols.c, symbols.h, + tags.h, throw.c, variable.h: Name cleanup. Lots of xxxSCM_yyy + renamed. (These were introduced by unsupervised name + substitution.) + +Fri Sep 13 01:19:08 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> + + * print.c: Added code for detection of circular references during + printing. (init_ref_stack, grow_ref_stack): New functions. Added + a hook for printing of closures (accessible via print options). + This leads to a split of calls to scm_iprin1 into two classes: + elementary print operations (e. g. the code which prints a smob) + still use scm_iprin1 while top level calls (like scm_display) use + scm_prin1. scm_prin1 begins by clearing the data structure used + to record reference information. + + * print.h: Added declarations of scm_prin1 and scm_prlist. + + * strports.c (scm_strprint_obj): scm_iprin1 --> scm_prin1 + + * gscm.c (gscm_portprint_obj): scm_iprin1 --> scm_prin1 + + * gscm.h (gscm_print_obj): scm_iprin1 --> scm_prin1 + + * error.c (err_head): scm_iprin1 --> scm_prin1 + + * debug.c: Adjusted header comment. + + * tags.h: Typo. + +Wed Sep 11 17:55:59 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * strerror.c: Doc fix. + +Thu Sep 12 00:00:32 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> + + * gdbint.c (gdb_read): Now possible to run during GC. + (unmark_port, remark_port): New functions. + + * symbols.h (SCM_SETLENGTH): Use SCM_SETCAR. + + * read.c (scm_grow_tok_buf): Use scm_vector_set_length_x instead + of allocating a new string object. Also, increase size by + the factor 2 instead of 1.5. + +Wed Sep 11 15:10:38 1996 Petr Adamek <jimb@floss.cyclic.com> + + * __scm.h (SCM_P): Corrected to run under traditional C. + + * _scm.h (SCM_PROC): Extraneous semicolon (outside functions) + removed. + + * async.c: Calls to scm_sysintern corrected. + + * async.h (scm_async_clock): Redundant declaration removed. + + * continuations.c (scm_dynthrow): Redundant declaration removed. + + * debug.c (scm_single_step, scm_memoized, scm_lookup_soft): + Definition typos corrected. + + * debug.h: Missing declarations of functions in debug.c added + (lots). + + * eval.h (scm_eval_args, scm_deval_args, scm_m_undefine): + Missing declarations to functions in eval.c added. + + * filesys.c: Possibly uninitialized variable rv. + + * gc.h (scm_object_addr, scm_unhash_name): Missing + declarations of functions defined in gc.c added. + + * genio.c: Possible typos str_data -> wstr_data. ??? + + * genio.c: Possibly unintended shadowing of local variable + `int c' (gotos out of scope of inner `c'). ??? + + * init.c: Uninitialized `SCM last' may be used. + + * ioext.h: (scm_sys_isatty_p): Typo. + + * list.h (scm_list_head): Missing prototype for function in + list.c added. + + * numbers.c (scm_two_doubles): Changed from extern to static + (is used only within numbers.c). + + * numbers.h: Repeated declarations removed. + + * ports.h (scm_close_all_ports_except): Declaration for the + function defined in ports.c added. + + * posix.h: Missing declarations added. + + * procs.h (scm_make_subr_opt): Missing declaration added. + + * socket.h (scm_sys_gethost): Missing declaration added. + + * socket.h: Redundant declarations removed (they are in fdsocket.h). + + * srcprop.h (scm_set_source_property_x, scm_finish_srcprop): + Missing declarations added. + + * stime.h (scm_get_internal_real_time): Repeated declarations removed. + + * struct.c: Uninitialized variable `SCM answer' may be used. + + * unif.c (l2ra): Declaration prototype. + + * unif.c (scm_array_equal_p): Dummy definition removed (it is + defined in ramap.c). + + * unif.h (scm_raprin1, scm_istr2bve, scm_array_equal_p): + Redundant declarations removed (they are in ramap.h). + + * variable.h (scm_make_udvariable, + scm_make_undefined_variable): Declaration corrected to + correspond variable.c. + + * vectors.h (scm_vector_move_left_x, scm_vector_move_right_x): + Missing declarations added. + +Wed Sep 11 14:38:50 1996 Jim Blandy <jimb@floss.cyclic.com> + + * Makefile.in (distclean): Don't forget to delete fd.h. + +Tue Sep 10 14:01:46 1996 Jim Blandy <jimb@floss.cyclic.com> + + * fd.h.in, tags.h: Trivial cleanups. + + * marksweep.c, marksweep.h: Deleted; marksweep.c was empty, and + marksweep.h just declared functions from gc.c. + * gc.h, libguile.h: Don't #include "marksweep.h". + * Makefile.in (libobjs, inner_h_files, c_files, gen_c_files): Omit + marksweep.o, marksweep.h, marksweep.c, and marksweep.x. Other + dependencies updated. + + * libguile.h: Don't #include "files.h"; it's been deleted. + + * files.c (scm_sys_delete_file): Moved to filesys.c. + File is now empty; deleted. + * files.h: Deleted. + * filesys.c: scm_sys_delete_file is now here. Remove + #if's; they seem to rely on remnants of an old portability + regimen. If the problems come up again, solve them properly, + using autoconf. Specifically: Don't test M_SYSV, and #define + remove to be unlink if it's #defined; don't use remove just + because HAVE_STDC_HEADERS is #defined. + * filesys.h: Add declarations for scm_sys_delete_file. + * Makefile.in (libobjs, inner_h_files, c_files, gen_c_files): Omit + files.o, files.h, files.c, and files.x. + * init.c: Don't #include "files.h", and don't call scm_init_files. + + Use SCM_P instead of PROTO; the latter intrudes on the user's + namespace. + * params.h: Deleted; definition of SCM_P moved to... + * __scm.h: ... here, where it replaces PROTO macro. + * libguile.h, smob.h: Don't #include "params.h". + * continuations.c, error.h, feature.h, gc.c, gc.h, init.h, load.h, + smob.h: Fix prototypes accordingly. + * Makefile.in: Update dependencies. + (inner_h_files): Remove params.h. + + * gc.c: #include "gc.h"; every module should include its header, + to let the compiler cross-check the declarations against the + definitions. + + * eq.h, files.h, hashtab.h, load.h, mallocs.h, scmsigs.h, + simpos.h: #include "libguile/__scm.h". + +Mon Sep 9 20:00:15 1996 Jim Blandy <jimb@floss.cyclic.com> + + * init.c: Don't forget to #include smob.h and init.h. + * Makefile.in: Dependencies updated. + + * smob.h: Use PROTO instead of #if __STDC__. + + * continuations.c (scm_dynthrow): Use PROTO, not SCM_P. + + * __scm.h: Doc fixes. + + * __scm.h, libguile.h: Use "quotes" in the #includes, not + <angles>; this allows `make depends' to work properly. + + * libguile.h: #include smob.h and pairs.h before the others; they + define typedefs used by other headers. + + C files should #include only the header files they need, not + libguile.h (which #includes all the header files); the pointless + recompilation was wasting my time. + * Makefile.in (all .o dependency lists): Regenerated. + * libguile.h: Don't try to get a definition for size_t here... + * __scm.h: Do it here. + * _scm.h: Since this is the internal libguile header, put things + here that all (or a majority) of the libguile files will want. + Don't #include <libguile.h> here; that generates dependencies on + way too much. Instead, get "__scm.h", "error.h", "pairs.h", + "list.h", "gc.h", "gsubr.h", "procs.h", "numbers.h", "symbols.h", + "boolean.h", "strings.h", "vectors.h", "root.h", "ports.h", and + "async.h". + * alist.c: Get "eq.h", "list.h", "alist.h". + * append.c: Get "append.h", "list.h". + * arbiters.c: Get "arbiters.h", "smob.h". + * async.c: Get "async.h", "smob.h", "throw.h", "eval.h". + * boolean.c: Get "boolean.h". + * chars.c: Get "chars.h". + * continuations.c: Get "continuations.h", "dynwind.h", "debug.h", + "stackchk.h". + * debug.c: Get "debug.h", "feature.h", "read.h", "strports.h", + "continuations.h", "alist.h", "srcprop.h", "procprop.h", "smob.h", + "genio.h", "throw.h", "eval.h". + * dynwind.c: Get "dynwind.h", "alist.h", "eval.h". + * eq.c: Get "eq.h", "unif.h", "smob.h", "strorder.h", + "stackchk.h". + * error.c: Get "error.h", "throw.h", "genio.h", "pairs.h". + * eval.c: Get "eval.h", "stackchk.h", "srcprop.h", "debug.h", + "hashtab.h", "procprop.h", "markers.h", "smob.h", "throw.h", + "continuations.h", "eq.h", "sequences.h", "alist.h", "append.h", + "debug.h". + * fdsocket.c: Get "fdsocket.h", "unif.h", "filesys.h". + * feature.c: Get "feature.h". + * files.c: Get "files.h". + * filesys.c: Get "filesys.h", "smob.h", "genio.h". + * fports.c: Get "fports.h", "markers.h". + * gc.c: Get "async.h", "unif.h", "smob.h", "weaks.h", + "genio.h", "struct.h", "stackchk.h", "stime.h". + * gdbint.c: Get "gdbint.h", "chars.h", "eval.h", "print.h", + "read.h", "strports.h", "tag.h". + * genio.c: Get "genio.h", "chars.h". + * gsubr.c: Get "gsubr.h", "genio.h". + * hash.c: Get "hash.h", "chars.h". + * hashtab.c: Get "hashtab.h", "eval.h", "hash.h", "alist.h". + * init.c: Get everyone who has an scm_init_mumble function: + "weaks.h", "vports.h", "version.h", "vectors.h", "variable.h", + "unif.h", "throw.h", "tag.h", "symbols.h", "struct.h", + "strports.h", "strorder.h", "strop.h", "strings.h", "stime.h", + "stackchk.h", "srcprop.h", "socket.h", "simpos.h", "sequences.h", + "scmsigs.h", "read.h", "ramap.h", "procs.h", "procprop.h", + "print.h", "posix.h", "ports.h", "pairs.h", "options.h", + "objprop.h", "numbers.h", "mbstrings.h", "mallocs.h", "load.h", + "list.h", "kw.h", "ioext.h", "hashtab.h", "hash.h", "gsubr.h", + "gdbint.h", "gc.h", "fports.h", "filesys.h", "files.h", + "feature.h", "fdsocket.h", "eval.h", "error.h", "eq.h", + "dynwind.h", "debug.h", "continuations.h", "chars.h", "boolean.h", + "async.h", "arbiters.h", "append.h", "alist.h". + * ioext.c: Get "ioext.h", "fports.h". + * kw.c: Get "kw.h", "smob.h", "mbstrings.h", "genio.h". + * list.c: Get "list.h", "eq.h". + * load.c: Get "load.h", "eval.h", "read.h", "fports.h". + * mallocs.c: Get "smob.h", "genio.h". + * markers.c: Get "markers.h". + * mbstrings.c: Get "mbstrings.h", "read.h", "genio.h", "unif.h", + "chars.h". + * numbers.c: Get "unif.h", "genio.h". + * objprop.c: Get "objprop.h", "weaks.h", "alist.h", "hashtab.h". + * options.c: Get "options.h". + * ports.c: Get "ports.h", "vports.h", "strports.h", "fports.h", + "markers.h", "chars.h", "genio.h". + * posix.c: Get "posix.h", "sequences.h", "feature.h", "unif.h", + "read.h", "scmsigs.h", "genio.h", "fports.h". + * print.c: Get "print.h", "unif.h", "weaks.h", "read.h", + "procprop.h", "eval.h", "smob.h", "mbstrings.h", "genio.h", + "chars.h". + * procprop.c: Get "procprop.h", "eval.h", "alist.h". + * procs.c: Get "procs.h". + * ramap.c: Get "ramap.h", "feature.h", "eval.h", "eq.h", + "chars.h", "smob.h", "unif.h". + * read.c: Get "alist.h", "kw.h", "mbstrings.h", "unif.h", + "eval.h", "genio.h", "chars.h". + * root.c: Get "root.h", "stackchk.h". + * scmsigs.c: Get "scmsigs.h". + * sequences.c: Get "sequences.h". + * simpos.c: Get "simpos.h", "scmsigs.h". + * smob.c: Get "smob.h". + * socket.c: Get "socket.h", "feature.h". + * srcprop.c: Get "srcprop.h", "weaks.h", "hashtab.h", "debug.h", + "alist.h", "smob.h". + * stackchk.c: Get "stackchk.h", "genio.h". + * stime.c: Get "stime.h"."libguile/continuations.h". + * strings.c: Get "strings.h", "chars.h". + * strop.c: Get "strop.h", "chars.h". + * strorder.c: Get "strorder.h", "chars.h". + * strports.c: Get "strports.h", "print.h", "eval.h", "unif.h". + * struct.c: Get "struct.h", "chars.h". + * symbols.c: Get "symbols.h", "mbstrings.h", "alist.h", + "variable.h", "eval.h", "chars.h". + * tag.c: Get "tag.h", "struct.h", "chars.h". + * throw.c: Get "throw.h", "continuations.h", "debug.h", + "dynwind.h", "eval.h", "alist.h", "smob.h", "genio.h". + * unif.c: Get "unif.h", "feature.h", "strop.h", "sequences.h", + "smob.h", "genio.h", "eval.h", "chars.h". + * variable.c: Get "variable.h", "smob.h", "genio.h". + * vectors.c: Get "vectors.h", "eq.h". + * version.c: Get "version.h". + * vports.c: Get "vports.h", "fports.h", "chars.h", "eval.h". + * weaks.c: Get "weaks.h". + + * stackchk.h: #include "libguile/debug.h", + + * print.h, read.h: #include "options.h", since everyone who uses + either of these files will need that. + + * smob.h: #include "ports.h", "genio.h", and "print.h", since + anyone who uses this file will need them to define the smob + printing functions. Also, get markers.h, since people will need + to #define the mark functions. + + * smob.h (scm_ptobfuns, SCM_PTOBNUM): Definitions moved... + * ports.h: ... to here. + + * ports.h (scm_port_table_size): Explicitly give type as 'int'; + don't rely on archaic C default type rules. + + * fports.h: #include "libguile/ports.h", since you need that in + order to parse this. + + * genio.h: #include "libguile/print.h", because you need that to + parse this; don't bother #including "ports.h", since print.h gets + that. + + * error.h: Don't #include "pairs.h"; _scm.h will do that now. + + * eval.h (scm_top_level_lookup_thunk_var): Remove declaration for + this; it's now a reference to an element of *scm_root. + + * debug.h: Don't #include "options.h"; the compiler won't be able + to find that once the headers are installed; instead, #include + "libguile/options.h". + * gc.h: Same, with marksweep.h. + * mbstrings.h: Same, with symbols.h. + * scmhob.h: Same, with _scm.h. + * smob.h: Same, with params.h. + + * Makefile.in (depends): Don't nuke scmconfig.h and the generated + C files; there's no need for this, and it forces recompilations + unnecessarily. + +Sat Sep 7 06:57:23 1996 Gary Houston <ghouston@actrix.gen.nz> + + * error.c (scm_error): declare scm_error_callback. + + * error.h: prototype for scm_error_callback. + + * __scm.h: define lgh_error. + (SCM_SYSERROR): redefine using lgh_error. + +Thu Sep 5 22:40:06 1996 Gary Houston <ghouston@actrix.gen.nz> + + * error.c (scm_error): new procedure. + + * error.h: prototype for scm_error. + + * Makefile.in (install): install scmconfig.h from the current + directory, not $(srcdir). + +Thu Sep 5 11:38:07 1996 Jim Blandy <jimb@floss.cyclic.com> + + * alist.h, append.h, arbiters.h, async.h, boolean.h, chars.h, + continuations.h, debug.h, dynwind.h, error.h, eval.h, fdsocket.h, + feature.h, filesys.h, fports.h, gc.h, gdbint.h, genio.h, gsubr.h, + hash.h, init.h, ioext.h, kw.h, list.h, markers.h, marksweep.h, + mbstrings.h, numbers.h, objprop.h, options.h, pairs.h, ports.h, + posix.h, print.h, procprop.h, procs.h, ramap.h, read.h, root.h, + sequences.h, smob.h, socket.h, srcprop.h, stackchk.h, stime.h, + strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h, + tag.h, throw.h, unif.h, variable.h, vectors.h, version.h, + vports.h, weaks.h: #include "libguile/__scm.h", not + <libguile/__scm.h>. This allows 'gcc -MM' to determine which + dependencies are within libguile properly. + +Thu Sep 5 11:38:07 1996 Jim Blandy <jimb@floss.cyclic.com> + + * Makefile.in (.c.x): Simplify; there's no need to run this rule + when scmconfig.h doesn't exist. + + * load.c (scm_sys_try_load): Correct spelling. + + * feature.c (scm_loc_features): Make this static. + + * Makefile.in (libpath.h): Omit trailing slash from path. We + shouldn't require it of users, so why put it here? + + Move code to initialize and search %load-path from ice-9 to C + code, so we can use the load-path to find the ice-9 boot code; + this makes it easier to run Guile without installing it. See + corresponding changes in guile/Makefile.in. + * feature.c: Move stuff concerned with the load path to load.c. + (scm_compiled_library_path): Deleted. + Don't #include libpath.h here. + * feature.h: Don't mention scm_compiled_library_path. + * load.c: #include "libpath.h" here, as well as <sys/types.h>, + <sys/stat.h>, and <unistd.h> (if present). + (R_OK): #define if the system hasn't deigned to. + (scm_loc_load_path): New variable. + (scm_init_load_path, scm_sys_search_load_path, + scm_sys_try_load_path): New functions. + (scm_init_load): Initialize scm_loc_load_path to point to the + value cell of the Scheme %load-path variable. + * load.h: Add declarations for scm_sys_search_load_path, + scm_sys_try_load_path. + * init.c: Call scm_init_load_path. + * Makefile.in (feature.o, load.o): Dependencies updated. + + * load.c, load.h: Rewrite using PROTO macro. + +Thu Sep 5 01:54:33 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> + + * gc.c (scm_cellp): New function: C predicate to determine if an + SCM value can be regarded as a pointer to a cell on the heap. + + * gc.h: Added declaration of scm_cellp. + + * gdb_interface.h: New file: The GDB interface header from the GDB + distribution. + + * gdbint.c: New file: GDB interface. + + * gdbint.h: New file: GDB interface. + + * libguile.h: Added #include <libguile/gdbint.h>. + + * init.c (scm_boot_guile): Added scm_init_gdbint. + + * Makefile.in: Added gdb_interface.h, gdbint.[hc]. + Added -I.. to INCLUDE_CFLAGS (otherwise the include files won't be + found if object files and source are kept separate). + +Wed Sep 4 14:35:02 1996 Jim Blandy <jimb@floss.cyclic.com> + + * feature.h, feature.c: Use PROTO macro, instead of #if __STDC__. + +Wed Sep 4 01:30:47 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * configure.in: Don't substitute the values of TCL_SRC_DIR and + TK_SRC_DIR; they're not relevant any more. + + * Makefile.in (CC): Don't list -Wall here; it's a GCC-specific flag. + * configure.in: Instead, put it in CFLAGS here, iff we're using GCC. + +Wed Sep 4 00:55:49 1996 Jim Blandy <jimb@floss.cyclic.com> + + * PLUGIN/guile.config (xtra_cflags): Include .. in the header + search path, so we can find the <libguile/MUMBLE.h> headers. + + * Makefile.in (ancillary): List aclocal.m4, for 'make dist'. + + * Makefile.in (ALL_CFLAGS): Don't mention CFLAGS here; it's + implicit in the .c.o rule. + (.c.x): Don't mention ALL_CFLAGS here; its value is included in + $(CC) already. + + Put the library path in a header file, instead of passing it on + the command line in every compilation. + * Makefile.in (libpath.h): New target. + (feature.o): Depend on libpath.h. + (clean): Delete libpath.h. + (ALL_CFLAGS): Don't use -DLIBRARY_PATH here. Instead ... + * feature.c: ... #include "libpath.h" here. + * .cvsignore: Ignore libpath.h. + + Don't install the unwashed masses of Guile header files in the + main #include path; put most of them in a subdirectory called + 'libguile'. This avoids naming conflicts between Guile header + files and system header files (of which there were a few). + * Makefile.in (pkgincludedir): Deleted. + (innerincludedir): New variable; this and $(includedir) are enough. + (INCLUDE_CFLAGS): Search for headers in "-I$(srcdir)/..". + (installed_h_files): Divide this up. Now this variable lists + those header files which should go into $(includedir) (i.e. appear + directly in the #include path), and ... + (inner_h_files): ... this new variable says which files appear in + a subdirectory, and are referred to as <libguile/mumble.h>. + (h_files): List them both. + (install): Create innerincludedir, not pkgincludedir. Put + the installed_h_files and inner_h_files in their proper places. + (uninstall): Corresponding changes. + * alist.h, append.h, arbiters.h, async.h, boolean.h, chars.h, + continuations.h, debug.h, dynwind.h, error.h, eval.h, fdsocket.h, + feature.h, fports.h, gc.h, genio.h, gsubr.h, hash.h, init.h, + ioext.h, kw.h, libguile.h, list.h, markers.h, marksweep.h, + mbstrings.h, numbers.h, options.h, pairs.h, ports.h, posix.h, + print.h, procprop.h, procs.h, ramap.h, read.h, root.h, + sequences.h, smob.h, socket.h, srcprop.h, stackchk.h, stime.h, + strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h, + tag.h, throw.h, unif.h, variable.h, vectors.h, version.h, + vports.h, weaks.h: Find __scm.h in its new location. + * __scm.h: Find scmconfig.h and tags.h in their new locations + (they're both "inner" files). + +Tue Sep 3 20:27:35 1996 Jim Blandy <jimb@floss.cyclic.com> + + * Makefile.in (.c.x): Remove duplicate use of $(ALL_CFLAGS). + +Tue Sep 3 19:53:00 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * posix.c: Doc fixes. + +Mon Sep 2 15:22:40 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * socket.c: Don't include a prototype for inet_aton; just use a + K&R style declaration, to avoid warnings but minimize the chance + of conflicts with the system. + + On NextStep, <utime.h> doesn't define struct utime, unless we + #define _POSIX_SOURCE before #including it. + * aclocal.m4 (GUILE_STRUCT_UTIMBUF): New test. + * acconfig.h: New comment text for above CPP symbol. + * configure.in: Call it. + * posix.c: #define _POSIX_SOURCE if it seems necessary. + + * configure.in (AC_CHECK_HEADERS): Include sys/utime.h and utime.h + in the list. + * posix.c: Check HAVE_SYS_UTIME_H and HAVE_UTIME_H, instead of + testing for __EMX__. + + * posix.c: #include <libc.h>, if it exists. + + * posix.c: Cast the return result to GETGROUPS_T, not gid_t; we + don't even know if the latter exists. + + * posix.c (s_sys_setpgid, s_sys_setsid, s_sys_ctermid, + s_sys_tcgetpgrp, s_sys_tcsetpgrp): Renamed from s_setpgid, + s_setsid, s_ctermid, s_tcgetpgrp, s_tcsetpgrp, for consistency. + + * posix.c (R_OK, W_OK, X_OK, F_OK): #define these if the system's + header files don't. + (scm_init_posix): Use them when initializing the Scheme constants + of the same name. + +Fri Aug 30 16:01:30 1996 Jim Blandy <jimb@floss.cyclic.com> + + * Makefile.in (libdir, includedir, bindir): Use the + autoconf-supplied values, instead of deriving them ourselves. + (pkgincludedir, datadir, pkgdatadir): New variables. + (install, uninstall): Put the header files in a special + subdirectory, not in the main search path. + + * Makefile.in (ALL_CFLAGS): Provide the proper value for + LIBRARY_PATH --- use $(pkgdatadir) instead of $(libdir). + + * Makefile.in (IMPLPATH): Deleted; never used. + + * Makefile.in (TCL_SRC_DIR, TK_SRC_DIR): Deleted; we don't depend + on the Tcl/Tk source any more. + (INCLUDE_CFLAGS): Remove references to the above. + + * Makefile.in (version.o): Corrected dependencies. + +Thu Aug 29 23:06:19 1996 Thomas Morgan <tmorgan@gnu.ai.mit.edu> + + * libguile.h: #include "version.h" + + * init.c (scm_boot_guile): Call scm_init_version. + * gscm.c (gscm_run_scm): Call scm_init_version. + + * configure.in (GUILE_MAJOR_VERSION, GUILE_MINOR_VERSION, + GUILE_VERSION): AC_DEFINE these. + (acconfig.h): #undef the above symbols. + + * Makefile.in (libobjs): Add version.o. + (installed_h_files): Add version.h. + (c_files): Add version.c. + (gen_c_files): Add version.x. + (version.o): New rule. + (alist.o, append.o, appinit.o, arbiters.o, async.o, boolean.o, + chars.o, continuations.o, dynwind.o, eq.o, error.o, eval.o, + fdsocket.o, feature.o, files.o, filesys.o, fports.o, gc.o, + genio.o, gsubr.o, hash.o, hashtab.o, init.o, kw.o, list.o, load.o, + mallocs.o, markers.o, marksweep.o, mbstrings.o, numbers.o, + objprop.o, pairs.o, ports.o, posix.o, print.o, procprop.o, + procs.o, ramap.o, read.o, root.o, scmsigs.o, sequences.o, + simpos.o, smob.o, socket.o, stackchk.o, stime.o, strings.o, + strop.o, strorder.o, strports.o, struct.o, symbols.o, tag.o, + throw.o, unif.o, variable.o, vectors.o, version.o, vports.o, + weaks.o): Add version.h to dependency lists. + (markers.o): Remove duplicate rule. + + * version.h: New file. + + * version.c: New file. + +Thu Aug 29 15:21:39 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * symbols.c (scm_strhash): scm_downcase is now a function, not an + array; use it appropriately. Since GCC is quite happy to + subscript functions, it never warned us about this; we should use + -Wpointer-arith in the future. I guess we never tested + case-insensitivity. + +Wed Aug 28 18:52:22 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * socket.c: Doc and copyright fixes. + +Sat Aug 24 05:29:19 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> + + * debug.c: Fixed and improved gdb support. + +Fri Aug 23 18:00:16 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> + + * socket.c: Added declaration of inet_aton to avoid compiler + warning. (Hope this solution is correct.) + + * stime.c: Added declaration of ftime. (This is missing in + Solaris 2 headers.) + +Fri Aug 23 02:03:32 1996 Gary Houston <ghouston@actrix.gen.nz> + + * configure, scmconfig.h.in: Updated, using autoconf and autoheader. + + * Makefile.in (c_files): add strerror.c. + + * strerror.c: new file from Emacs' sysdep.c. + maybe configure should also check for sys_errlist. + + * configure.in (AC_REPLACE_FUNCS): add strerror. + +Fri Aug 23 03:02:46 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> + + * debug.c (scm_init_debug): Added initialization for + scm_evaluator_traps. + + * debug.h, debug.c: Various name changes. + (Mostly prefixing with SCM_.) Renamed "debug-options" --> + "debug-options-interface". See commentary in options.c. + + * options.h, options.c: Options now have documentation strings. + Also added a long explanatory commentary. + + * eval.c, print.h, print.c, read.h, read.c: Modifications to + run-time options. + + * gscm.c, init.c, root.c, throw.c: Bug fixes: + last_debug_info_frame is now updated in all cases. + + * __scm.h, stackchk.h, stackchk.c: Guile now performs stack + checking. + +Thu Aug 22 17:34:17 1996 Mikael Djurfeldt <mdj@woody.nada.kth.se> + + * __scm.h: SCM_STACK_LIMIT removed (now a run-time option). + Added option STACK_CHECKING. + +Tue Aug 20 18:48:40 1996 Mikael Djurfeldt <djurfeldt@nada.kth.se> + + * Makefile.in: Added {debug,options,srcprop}.{h,c} + + * __scm.h: Removed symbols for debugging support. + + * acconfig.h: Added symbols for debugging support. + + * configure.in: Added user option for debugging support. + --enable-debug will include the debugging code into libguile.a. + + * continuations.c (scm_make_cont): Enlarged the #if 0 around + scm_relocate_chunk_to_heap. + + * debug.c: New file: low-level debugging support. It also + includes support for debugging with gdb. (The extensions to gdb + are written by Per Bothner at Cygnus.) + + * debug.h: New file: low-level debugging support. + + * eval.c: scm_m_set and SCM_IM_SET no longer supports multiple + argument pairs. Extensive modifications to the debugging + evaluator. Added "SECTION:" commentaries to clarify what happens + when, during double compilation. Renamed EVALIMP --> EVALIM. + Renamed EVAL --> XEVAL. Removed function evalcar. Defined + evalcar to scm_eval_car. Added explanation of "EVAL" symbols to + the beginning of the file. New procedure: scm_unmemocopy. + Added some global state variables needed by the debugging + evaluator: scm_ceval_ptr, last_debug_info_frame, debug_mode, + check_entry, check_apply, check_exit, debug_options and + evaluator_traps. New acro: undefine. + + * eval.h: Renamed EVAL --> XEVAL. + + * gc.c (scm_init_storage): Renamed scm_make_weak_hash_table + --> scm_make_weak_key_hash_table. + + * init.c (scm_restart_stack, scm_boot_guile): Added initialization + of SCM_DFRAME. Added calls to scm_init_{debug,options,srcprop}. + + * libguile.h: Conditionally include debug.h + + * objprop.c (scm_object_properties, scm_set_object_properties_x): + scm_object_properties shouldn't return handle. `handle' now gets + initialized in scm_set_object_properties_x. scm_object_properties + doesn't any longer create an entry in scm_object_whash. + + * options.c: New file: handling of run time options. + + * options.h: New file: handling of run time options. + + * posix.c (scm_getpgrp): Cast pointer to getpgrp. + + * print.c: New procedure: scm_print_options + + * print.h: Defines for print options. + + * read.c: New procedure: scm_read_options + + * read.h: Defines for reader options. + + * root.h: Added scm_source_whash among scm_sys_protects. + + * srcprop.c: New file: source properties. + + * srcprop.h: New file: source properties. + + * throw.c (jbsmob): Jump buffers are now correctly allocated. + (Bug found by A. Green.) + + * weak.c: Renamed scm_weak_hash_table --> scm_weak_key_hash_table. + + * weak.h: Renamed scm_weak_hash_table --> scm_weak_key_hash_table. + +Thu Aug 15 02:05:14 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * libguile.h: #include "objprop.h"; I guess this was forgotten. + + * init.c (scm_boot_guile): Don't call scm_init_rgx; it's a plugin, + and should be called by the final client. + +Wed Aug 14 21:41:37 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * gc.h: Use the PROTO macro when declaring functions. + * gc.c: Use the PROTO macro when declaring static functions. + Remove the CPP hair around function definitions. + + * gc.c (scm_init_storage): Initialize scm_asyncs. + + * libguile.h: #include "__scm.h" before testing the STDC_HEADERS + preprocessor symbol; "__scm.h" is where it might get #defined. + * __scm.h: Similar: #include <scmconfig.h> before testing + HAVE_LIMITS_H. + + * __scm.h: It's HAVE_LIMITS_H, not HAVE_LIMITSH. + +Fri Aug 9 11:09:28 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * init.c (scm_boot_guile): Add init_func argument; call + (*init_func) instead of calling scm_appinit; it's ucky to + hard-code names for the user's procedures. + * init.h (scm_boot_guile): Adjust declaration. + + * __scm.h (PROTO): New macro, for declaring functions with + prototypes. + + * init.h (scm_start_stack, scm_restart_stack): Use PROTO; + eliminate all the __STDC__ conditionals. + (scm_boot_guile): Add declaration. + * init.c (scm_start_stack, scm_restart_stack, scm_boot_guile): + Remove __STDC__ conditionals around function definitions; the + declarations in init.h will provide the same information, more + usefully. + + * __scm.h (SCM_SYSMISSING): When we don't have ENOSYS, don't + complain about it in the error message; the error message is + adequate without that note, and there's nothing the user can do + about it. + +Wed Aug 7 14:14:46 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * Makefile.in (ancillary): Drop def.sed. + + * posix.c (scm_init_posix): Use numeric values, rather than + CPP symbols, when defining the scheme values R_OK, W_OK, X_OK, and + F_OK. The symbols aren't available on some systems, and I'm + pretty sure their values are fixed by common widespread practice. + * ioext.c (scm_init_ioext): Code here defined them too; remove it. + + More functions unavailable on some systems. + * configure.in (AC_CHECK_FUNCS): Add ctermid, setpgid, setsid, + tcgetpgrp, tcsetpgrp, and waitpid to the list of functions to + check for. + * configure, scmconfig.h.in: Updated, using autoconf and autoheader. + * posix.c (scm_sys_ctermid, scm_sys_setpgid, scm_sys_setsid, + scm_sys_tcgetpgrp, scm_sys_tcsetpgrp, scm_sys_waitpid): Put the + bodies of these functions in "#ifdef HAVE_MUMBLE" clauses, with a + stub that signals an error as the #else. + + * Makefile.in (ancillary): Drop acconfig-1.5.h; add acconfig.h. + +Wed Aug 7 06:28:42 1996 Gary Houston <ghouston@actrix.gen.nz> + + * Fixes motivated by Petr Adamek <adamek@mit.edu>: + + * unif.c: include ramap.h. + + * read.c (endif): case_insensative_p renamed case_insensitive_p. + + * ramap.h: rename scm_array_copy prototypes to scm_array_copy_x. + + * ports.c: include sys/ioctl.h. + + * scmconfig.h.in: add HAVE_SYS_IOCTL_H. + + * configure.in: check for sys/ioctl.h. + + * ports.c: include <malloc.h> not "malloc.h". + + * mallocs.c: include <malloc.h> not "malloc.h", likewise for unistd.h. + + * fports.c: remove ttyname and tmpnam declarations. + + * posix.c: fewer ttyname declarations. + + * fports.c: include <string.h> not "string.h". + + * init.c, ioext.c: include string.h and unistd.h. + + * gc.c: include <malloc.h> not "malloc.h", likewise for unistd.h. + + * async.c, strings.h, strports.c, struct.c, symbols.c, feature.c, + genio.c, simpos.c, vports.c: include string.h. + + * socket.c, fdsocket.c: include string.h only if HAVE_STRING_H. + + * fdsocket.c (getsockopt, setsockopt): change type of optlen from + scm_sizet to int. + (scm_addr_buffer_size): change type from scm_sizet to int. + (accept, getsockname, getpeername, recvfrom): change type of tmp_size + from scm_sizet to int. + + * error.c: include unistd.h. + + * __scm.h: (SCM_SYSMISSING): another version in case ENOSYS isn't + defined. + + * Makefile.in: remove references to .hd, .cd suffix and __scm.hd. + + * __scm.hd, def.sed: deleted. + +Tue Aug 6 14:49:08 1996 Jim Blandy <jimb@totoro.cyclic.com> + + Changes for NeXT, suggested by Robert Brown. + * configure.in: Call AC_TYPE_MODE_T. + (AC_CHECK_HEADERS): Add libc.h, to get more prototypes on the + NeXT. Put header file list in alphabetical order. + * configure, scmconfig.h.in: Regenerated. + * filesys.c [HAVE_LIBC_H]: #include <libc.h>. + + * filesys.c [HAVE_STRING_H]: #include <string.h>, to get prototype + for strerror. + + * acconfig.h: New file, providing documentation for the CPP + symbols defined in configure.in + * acconfig-1.5.h: Removed; superceded by the above. + +Sat Aug 3 01:27:14 1996 Gary Houston <ghouston@actrix.gen.nz> + + * ioext.c (scm_sys_fdopen): fix the port-table assignment. + + * fports.c (scm_open_file): don't return #f, throw error. + + * ioext.c (fileno): renamed from %fileno. + (soft-fileno): deleted. + + * ports.c (scm_port_revealed): don't need to check for -1 from + scm_revealed_count. + (scm_set_port_revealed_x): return unspecified, not #f. + + * ioext.c (primitive-move->fdes): return #t or #f, not 1 or 0. + + * fdsocket.c: getsockopt, setsockopt: use HAVE_STRUCT_LINGER. + + * scmconfig.h.in: add HAVE_STRUCT_LINGER. + + * configure.in: check for struct linger, set HAVE_STRUCT_LINGER. + +Thu Aug 1 02:58:39 1996 Jim Blandy <jimb@totoro.cyclic.com> + + * filesys.c, posix.c: #include <sys/types.h> before <sys/stat.h>. + This is necessary on Ultrix, and doesn't hurt portability. + + * Makefile.in (dist-dir): New target, implementing a new dist system. + (installed_h_files): Put in alphabetical order. + Remove duplicate entries for markers.h and unif.h. + (c_files): Remove duplicate entries for markers.c. + (ancillary): Renamed from anillery; all uses changed. Remove + PLUGIN; it's a directory, and needs special treatment in dist-dir. + Remove all the ../doc/* files; doc/Makefile.in handles that. + + * Makefile.in (libobjs): Remove duplicate entry for markers.o. + + * Makefile.in (.c.x): Compensate for Ultrix's broken Bourne shell: + every if must have an else, or else the whole command has a + non-zero exit code whenever the if's condition is false. + +Thu Aug 1 08:22:24 1996 Gary Houston <ghouston@actrix.gen.nz> + + * posix.c: include string.h. + +Wed Jul 31 23:43:05 1996 Gary Houston <ghouston@actrix.gen.nz> + + * numbers.c: rename %expt -> $expt, %atan2 -> $atan2, as it must + have been once. + + * posix.c, ioext.c, socket.c, fdsocket.c, files.c, filesys.c, simpos.c: + Remove leading % from scheme names. + Do not return error values, call SCM_SYSERROR or similar. + + * __scm.h (SCM_SYSERROR, SCM_SYSMISSING): new macros. + +Wed Jun 12 00:28:31 1996 Tom Lord <lord@beehive> + + * struct.c (scm_init_struct): new file. + +Fri Jun 7 14:02:00 1996 Tom Lord <lord@beehive> + + * list.c (scm_list_tail): list-cdr-ref is the same as list-tail. + (scm_list_head): added list-head for rapidly chopping argument + lists off of longer lists (and similar). + +Tue Jun 4 09:40:33 1996 Tom Lord <lord@beehive> + + * objprop.c (scm_object_property): assq the cdr of the whash + handle for obj, not the handle itself. + +Mon Jun 3 17:19:30 1996 Tom Lord <lord@beehive> + + * gc.c (scm_mark_weak_vector_spines): Mark the spines (alists) of + weak hash tables last of all marking to avoid an obscure gc bug. + WARNING: circular lists stored in a weak hash table will hose us. + +Fri May 24 09:53:39 1996 Tom Lord <lord@beehive> + + * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x): + new functions similar to scm_substring_move_left_x and + scm_substring_move_right_x. + +Wed May 22 20:07:01 1996 Tom Lord <lord@beehive> + + * init.c (scm_boot_guile): prevent gc with scm_block_gc not + scm_gc_heap_lock! + +Wed May 15 16:13:29 1996 Tom Lord <lord@beehive> + + * ports.c (scm_unread_char): scm_gen_ungetc as a scheme procedure. + +Thu May 9 09:33:17 1996 Tom Lord <lord@beehive> + + * strports.c (scm_strprint_obj): convenience function. C for + (lambda (obj) (call-with-output-string (lambda (p) (write obj p)))) + + * guile-{tcl,tk}.[ch], events.[ch], keysyms.[ch], tcl-channels.[ch] + removed to a separate library + + * init.c (scm_boot_guile): copied from guile-tcl.c. + Initialization specific to tcl interpreters removed. + +Wed May 8 15:07:37 1996 Tom Lord <lord@beehive> + + * ports.c (scm_ports_prehistory): size malloced here doesn't + matter so long as it is non-0 (got rid of "* 4"). + +Tue May 7 11:43:37 1996 Tom Lord <lord@beehive> + + * gscm.h: gscm_mkarray eliminated (presumably was not being used + since its definition was bogus). + +Mon May 6 13:02:56 1996 Tom Lord <lord@beehive> + + * mallocs.[ch]: back again (for rx at least). + +Wed Apr 17 08:54:20 1996 Tom Lord <lord@beehive> + + * ports.c: removed functions relating to the mapping between ports + and descriptors. (That stuff is unix-specific and should be collected + in a separate library). + + * ramap.c (scm_array_copy): return #<unspecified> not #<undefined>. + (Tom Mckay@avanticorp.com) + +Mon Apr 15 14:16:55 1996 Tom Lord <lord@beehive> + + * gc.c (scm_gc_sweep): Immediates in weak vectors were not + handled correctly (SCM_FREEP was applied to them) -- test for + NIMP. Keys in weak hash tables were spuriously (though harmlessly) + being overwritten with #f. (brown@grettir.bibliotech.com) + +Tue Apr 2 22:25:00 1996 Tom Lord <lord@beehive> + + * gc.c (scm_unhash_name): new procedure, unhash-name, flushes glocs + for a specific symbol or for all symbols. + +Mon Apr 1 10:34:55 1996 Tom Lord <lord@beehive> + + * gc.c (scm_gc_mark): mark weak hash tables correctly (was getting weak + keys and weak values confused). + +Thu Mar 14 22:20:20 1996 Tom Lord <lord@beehive> + + * list.c (scm_last_pair): map '()=>'() + +Wed Mar 13 16:43:34 1996 Tom Lord <lord@beehive> + + * pairs.c, hashtab.c, list.c, alist.c append.c, sequences.c: + Generalized assoc and hash-table functions. + Factored pairs.c into multiple files. + +Fri Mar 8 14:44:39 1996 Tom Lord <lord@beehive> + + * gscm.c (gscm_run_scm): got rid of objprop. + +Fri Mar 1 10:39:52 1996 Tom Lord <lord@beehive> + + * genio.c (scm_getc): + NOTE: fgetc may not be interruptable. + + * procprop.c (scm_stand_in_scm_proc): + NOTE: don't use a alist here. + (scm_set_procedure_properties_x): fix type checking throughout this file. + + * gc.c (scm_gc_sweep): free heap segments with free, not must_free. + + * ports.c (scm_remove_from_port_table): adjust scm_mallocated + after freeing part of the port table. + +Thu Feb 29 16:21:17 1996 Tom Lord <lord@beehive> + + * strports.c (scm_mkstrport): + * vports.c (scm_make_soft_port): allocate a port table entry + (possibly triggering gc) before setting the tag of the corresponding + ports handle. + + * pairs.c (scm_delq_x): never throw an error. + + * vectors.c (scm_make_vector): made the default vector fill argument + into '() (much more useful than the previous value, "#unspecified") + +Mon Feb 26 17:19:09 1996 Tom Lord <lord@beehive> + + * ports.c (scm_add_to_port_table): Added fields + to port table entries: file_name, line_num, col. + Update these in open_file, gen_getc and gen_ungetc. + Added procedures to access those fields. + +Sun Feb 25 00:10:36 1996 Tom Lord <lord@beehive> + + * procs.c (scm_make_subr_opt): new entry point for making + anonymous subrs. + +Sat Feb 24 17:11:31 1996 Tom Lord <lord@beehive> + + * gc.h: SCM_STACK_GROWS_UP is now set by autoconf. + +Fri Feb 23 10:26:29 1996 Tom Lord <lord@beehive> + + * numbers.c (scm_exact_p): This function no longer + implements "integer?". + +Thu Feb 22 20:56:16 1996 Tom Lord <lord@beehive> + + * gc.c (scm_gc_end): simulate a signal at the end of each GC. + (scm_gc_stats): return an assoc of useful data. Replaces "room" + and the stats reporting formerlly built into repl. + + * repl.[ch]: removed. + GC statistics keeping moved to gc.c. + Other statistics keeping can be done from Scheme. + REPLS are now written in Scheme. + +Wed Feb 21 10:28:53 1996 Tom Lord <lord@beehive> + + * cnsvobj.c (gscm_is_gscm_obj): new file for old functions (icky + conservatively marked objects). + + * throw.c (scm_ithrow): Unwind up to the right catch during a throw! + + * error.c (scm_init_error): init system_error_sym here, not in repl.c. + + * feature.c (scm_compiled_library_path): moved here from repl.c. + This file is for stuff relating specifically to Scheme libraries + like slib. + + * eval.c (scm_m_define): don't give warning about redefinition, don't + check verbosity. + + NOTE: this should throw a resumable exception with parameters -- + the name, the top-level env, the variable, the definition, #t/#f: redefining builtin? + + * repl.c (scm_gc_begin/end): don't print a message, don't check verbosity. + + * error.c: scm_warn eliminated. + + * read.c (scm_lreadr): extra right paren gets an error, not a warning. + + * repl.c, marksweep.c, gc.c (various): + lose exit_report, growth_mon. + + * gscm.c: got rid of verbosity functions. + +Tue Feb 20 00:19:10 1996 Tom Lord <lord@beehive> + + * throw.c (scm_ithrow): guard against the bad-throw hook changing + between the call to procedurep and use. + + * error.c (scm_everr): + * gc.c (fixconfig): + * gsubr.c (scm_make_gsubr): use exit, not scm_quit. still wrong, + but less so. + + * strports.c: don't reveal the port's string to the caller + because it changes size. + + (stputc stwrite): check/change the strings length with interrupts + blocked. + + * objprop.c (scm_set_object_property_x &c): use the generic + hashing functions and be threadsafe. + + * eval.c (scm_unmemocar): do this operation in a thread-safe way. + (per suggestion jaffer@gnu.ai.mit.edu). + + * mbstrings.c (scm_multi_byte_string): guard against argument list + changing length. + + * strings.c (scm_make_string): loop cleanup + + * unif.c (scm_vector_set_length_x): scm_vector_set_length_x no longer + a scheme function. + + * weaks.c (scm_weak_vector): guard against argument list + changing length. + + * variable.c (scm_builtin_variable): check for/make a built-in + variable automicly. + + * vectors.c (scm_vector): while filling the new array, + guard against a list of fill elements that grows after + the vector is allocated. + + * hashtab.c -- new file: general hash table + functions. hash, hashq, hashv, hashx. + + * tags.h: made wvect an option bit of vector. + +Mon Feb 19 09:38:05 1996 Tom Lord <lord@beehive> + + * symbols.c: made the basic symbol table operations atomic. + + * root.c &c.: collected stack-specific global state. + linum/colnum etc *should* be port-specific state. + + * struct.c (scm_init_struct): init the first struct type during + initialization to fix a race condition. + + * continuations.c (scm_dynthrow): pass throwval in the 'regs' + object, not in a global. + (suggested by green@cygnus, jaffer@gnu.ai.mit.edu) + + * throw.c (_scm_throw): Pass throwval on the stack, not in a global + (suggested by green@cygnus, jaffer@gnu.ai.mit.edu) + + * *.[ch]: namespace cleanup. Changed all (nearly) exported CPP + and C symbols to begin with SCM_ or scm_. + +Sun Feb 18 15:55:38 1996 Tom Lord <lord@beehive> + + * gsubr.c (scm_gsubr_apply): statically allocate the + array of arguments (bothner@cygnus.com). + +Sat Feb 17 20:20:40 1996 Tom Lord <lord@beehive> + + * scmsigs.c: Simplified to use async rountines. + + * async.c: New support for interrupt handlers. + +Thu Feb 15 11:39:09 1996 Tom Lord <lord@beehive> + + * symbols.c (scm_string_to_symbol et al.): number of tweaky changes to + set the multi_byte flag correctly in symbols. This is wrong. + intern_obbary_soft and msymbolize should take an extra parameter. + Also, weird multibyte symbols don't print correctly. + The weird symbol syntax is also a bit bogus (emacs doesn't quite + cope). + +Tue Feb 13 11:39:37 1996 Tom Lord <lord@beehive> + + * symbols.c (scm_string_to_obarray_symbol): obarray == #f means + use the system symhash. == #t means create an uninterned symbol. + +Wed Feb 7 09:28:02 1996 Tom Lord <lord@beehive> + + * strings.c (scm_make_shared_substring): build'em. + It might better to keep a table of these and use one + less cons-pair per shared-substring. + +Tue Feb 6 17:45:21 1996 Tom Lord <lord@beehive> + + * strings.c (scm_string_shared_substring): create shared + substrings. (Doesn't handle mb strings yet). + + * mbstrings.c (scm_print_mb_string): handle RO strings. + + * print.c (scm_iprin1): print substrings as their non-substring + counterparts (dubious). + + * marksweep.c (scm_gc_mark scm_gc_sweep): handle RO and MB + strings. + + * hash.c (scm_hasher): hash RO and MB strings as bytestrings. + + * eval.c (SCM_CEVAL): self-evaluate RO and MB strings. + + * eq.c (scm_equal_p): handle RO and MB strings. + + * symbols.c (scm_string_to_symbol): + (scm_string_to_obarray_symbol): + * strop.c (scm_i_index): + (scm_i_rindex): + (scm_string_null_p): + (scm_string_to_list): + * strings.c (scm_string_length): + (scm_string_ref): + (scm_substring): + (scm_string_append): + * simpos.c (scm_system): + (scm_getenv): + * fports.c (scm_open_file): + * strorder.c (scm_string_equal_p): + (scm_string_ci_equal_p): + (scm_string_less_p): + (scm_string_ci_less_p): + * pairs.c (scm_obj_length): + * mbstrings.c (scm_multi_byte_string_length): + + Use RO string macros for RO strings. + +Tue Jan 30 09:19:08 1996 Tom Lord <lord@beehive> + + * Makefile.in (CFLAGS ALL_CFLAGS): be more standard. + + * strop.c (scm_i_rindex, scm_i_index): Don't use the BSD functions + index/rindex. Do handle embedded \000 characters. + +Sun Jan 28 13:16:18 1996 Tom Lord <lord@beehive> + + * error.c (def_err_response): (int)scm_err_pos => (long)scm_err_pos + Eliminate a (presumed) warning on some systems. + + * gscm.c (gscm_run_scm): SCM_INIT_PATH => GUILE_INIT_PATH + (Mikael Djurfeldt <mdj@nada.kth.se>) + +Sat Jan 27 12:36:55 1996 Tom Lord <lord@beehive> + + * eval.c (scm_map): added argument type checking. + (kawai@sail.t.u-tokyo.ac.jp) + + * gscm.c (gscm_set_procedure_properties_x): parameter "new" => "new_val" + for C++. (Seth Alves <alves@gryphon.com>) + + (gscm_cstr): uses an uninitialized local variable causing + segv. (kawai@sail.t.u-tokyo.ac.jp) + + + * lvectors.c (scm_get_lvector_hook): + In guile-ii, the lvector code was broken. It was fixed in guile-iii. + It seems to me like if it is broken again in guile-iv...Here is a patch. + "! || (LENGTH (keyvec) == 0))" + (From: Mikael Djurfeldt <mdj@nada.kth.se>) + + + * gscm.c (gscm_sys_default_verbosity): + incorrectly declared for non-__STDC__ + (Tom_Mckay@avanticorp.com) + + * ports.c (scm_setfileno): Tweak the macro a bit + to make it easier to port to systems that use + more than a single structure field to hold a descriptor. + + * debug.c (change_mode): Avoid GNUCism "int foo[n];" + Give a warning, not an error, for unrecognized modes. + + * eval.c (SCM_CEVAL): + static char scm_s_for_each[]; + static char scm_s_map[]; + not needed. + + * strings.c (scm_string_p): + static char s_string[]; + (see next entry) + + * struct.c (scm_sys_struct_set_x): + static char s_sys_make_struct[]; + static char s_sys_struct_ref[]; + static char s_sys_struct_set_x[]; + Rearrange code to eliminate those forward decls for the sake of + broken compilers. + + * variable.c (make_vcell_variable): static char s_make_variable[]; + isn't needed. + + * fports.c (scm_port_mode): + chars modes[3] = ""; + to + chars modes[3]; + modes[0] = '\0'; + (Tom_Mckay@avanticorp.com) + + + * pairs.c (scm_set_cdr_x): non-__STDC__ declaration of + scm_cons2(), scm_acons(), and scm_set_cdr_x() missing semicolon + (Tom_Mckay@avanticorp.com) + + * numbers.c (scm_num_eq_p): Non-__STDC__ declaration of + scm_num_eq_p() was scm_equal_p(). + (Tom_Mckay@avanticorp.com) + + * symbols.c (msymbolize): "CHARS(X) = " => "SETCHARS..." + (Tom_Mckay@avanticorp.com) + +Fri Jan 26 14:03:01 1996 Tom Lord <lord@beehive> + + * weaks.c (scm_make_weak_vector): "VELTS(X) =" => "SETVELTS..." + (Tom_Mckay@avanticorp.com) + + * strop.c (scm_substring_fill_x): + Non-__STDC__ declaration of scm_substring_fill_x() missing semicolon + (Tom_Mckay@avanticorp.com) + + * eval.c (SCM_APPLY): variables "debug_info" -> dbg_info. + Works around a compiler bug on some machines. (Tom_Mckay@avanticorp.com) + + * _scm.h (CxR functions): #define CxR SCM_CxR => #define CxR(X) SCM_CxR(X) + Works around a compiler bug on some machines. (Tom_Mckay@avanticorp.com) + + * lvectors.c (scm_lvector_set_x): avoid VELTS (VELTS (...)[..]) which + can turn into an obscure gc bug. + + * chars.c (scm_char_p): fixed PROC call. + + * gscm.h (gscm_vset): use scm_vector_set_x not (the missing) + scm_vector_set. + +Tue Jan 23 13:29:40 1996 Tom Lord <lord@beehive> + + * elisp.c (new file): dynamic scoping and other bits for + elisp. Don't use this yet unless you specificly want to + hack on elisp emulation. + + * dynwind.c (scm_dowinds): When entering or leaving a dynamic + scope created by scm_with_dynamic_bindings_operation_x, swap + the bindings of that scope with the corresponding globals. + + * continuations.c (scm_make_cont): when a continuation is captured, + relocate the continuation stack chunks registered on the wind chain + to the heap. + +Sun Jan 21 19:31:17 1996 Tom Lord <lord@beehive> + + * eval.c (SCM_CEVAL): if the function position evaluates + to a macro, process it accordingly. (Previously, macros were + handled only if the function position was a symbol naming a + variable bound to a macro). + +Sat Jan 20 23:21:37 1996 Tom Lord <lord@beehive> + + * eval.c (scm_m_set): allow multi-variable set! like + (set! x 1 y 2 z 3). + +Wed Dec 6 02:40:49 1995 Tom Lord <lord@beehive> + + * ports.h fports.c vports.c marksweep.c gc.c strports.c: moved the + STREAM of ports into the port table and replaced it with a + port-table index. + + * repl.c (iprin1): added tc7_mb_string -- same as tc7_string. + + * marksweep.c (scm_gc_mark): added tc7_mb_string -- same as tc7_string. + + * mbstrings.c (new file): functions on multi-byte strings. + + * tags.h (scm_typ7_string, scm_typ7_mb_string): added a tag + for multi-byte strings. Moved the string tag. + + * chars.h chars.c repl.c (many functions): made scm_upcase and + scm_downcase functions that are safe for extended character sets. + + Changed the range of integer->char. + + Changed the type of SCM_ICHR. + +Tue May 16 17:49:58 1995 Mikael Djurfeldt <mdj@sanscalc.nada.kth.se> + + * guile.c: Changed init file name from "SCM_INIT_PATH" to + "GUILE_INIT_PATH" + +Sun Aug 6 15:14:46 1995 Andrew McCallum <mccallum@vein.cs.rochester.edu> + + * guile.c (gscm_is_gscm_type): New function. (Without this how will we + know that it's safe to pass an object to gscm_get_type?) + (gscm_get_type): Fix tyop in error message. + + * variable.c (scm_variable_ref): fixed assertion test. + (Robert STRANDH <strandh@labri.u-bordeaux.fr>) + + * gscm.h: fixed several prototypes, notably gscm_vref. + Add gscm_is_eq and temporarily commented out gscm_eq (see + the note in gscm.h near gscm_eq if this change effects your + code). + (Reported by Mark Galassi <rosalia@sstcx1.lanl.gov>) + + * pairs.c (scm_obj_length): see next entry. + + * gscm.h (gscm_obj_length): A way to get an integer + length for lists, strings, symbols (treated as strings), + and vectors. Returns -1 on error. + + * eq.c (scm_equal_p): fixed smob case. + (William Gribble <grib@arlut.utexas.edu>) + + * Makefile.in (X_CFLAGS): defined. + (William Gribble <grib@arlut.utexas.edu>) + + * gscm.h (gscm_2_double): provided now + (reported by Mark Galassi <rosalia@sstcx1.lanl.gov>) + +Tue Jun 13 01:04:09 1995 gnu + * Vrooom! + + |