\f
Changes since Guile 1.3.4:
+* Massive software engineering face-lift by Greg J. Badros <gjb@cs.washington.edu>
+
+Now Guile primitives are defined using the GUILE_PROC/GUILE_PROC1 macros
+and must contain a docstring that is extracted into foo.doc using a new
+guile-doc-snarf script (that uses guile-doc-snarf.awk).
+
+Also, many SCM_VALIDATE_* macros are defined to ease the redundancy and
+improve the readability of argument checking.
+
+All (nearly?) K&R prototypes for functions replaced with ANSI C equivalents.
+
+* Dynamic linking now uses libltdl from the libtool package.
+
+The old system dependent code for doing dynamic linking has been
+replaced with calls to the libltdl functions which do all the hairy
+details for us.
+
+The major improvement is that you can now directly pass libtool
+library names like "libfoo.la" to `dynamic-link' and `dynamic-link'
+will be able to do the best shared library job you can get, via
+libltdl.
+
+The way dynamic libraries are found has changed and is not really
+portable across platforms, probably. It is therefore recommended to
+use absolute filenames when possible.
+
+If you pass a filename without an extension to `dynamic-link', it will
+try a few appropriate ones. Thus, the most platform ignorant way is
+specify a name like "libfoo", without any directories and extensions.
+
* Changes to the distribution
** Trees from nightly snapshots and CVS now require you to run autogen.sh.
** configure has new options to remove support for certain features:
+--disable-arrays omit array and uniform array support
--disable-posix omit posix interfaces
--disable-net omit networking interfaces
--disable-regex omit regular expression interfaces
* Changes to the stand-alone interpreter
+** New primitives: `pkgdata-dir', `site-dir', `library-dir'
+
** Positions of erring expression in scripts
With version 1.3.4, the location of the erring expression in Guile
(The first options enables the debugging evaluator.
The second enables backtraces.)
+** New procedure: port-closed? PORT
+Returns #t if PORT is closed or #f if it is open.
+
+** Attempting to get the value of an unbound variable now produces
+an exception with a key of 'unbound-variable instead of 'misc-error.
+
* Changes to the scm_ interface
** Port internals: the rw_random variable in the scm_port structure
chars requires further hacking that depends on the characteristics
of the ptob.
+** The scm_sysmissing procedure is no longer used in libguile.
+Unless it turns out to be unexpectedly useful to somebody, it will be
+removed in a future version.
+
+* Changes to system call interfaces:
+
+** If a facility is not available on the system when Guile is
+compiled, the corresponding primitive procedure will not be defined.
+Previously it would have been defined but would throw a system-error
+exception if called. Exception handlers which catch this case may
+need minor modification: an error will be thrown with key
+'unbound-variable instead of 'system-error. Alternatively it's
+now possible to use `defined?' to check whether the facility is
+available.
+
+** Procedures which depend on the timezone should now give the correct
+result on systems which cache the TZ environment variable, even if TZ
+is changed without calling tzset.
+
+* Changes to the networking interfaces:
+
+** New functions: htons, ntohs, htonl, ntohl: for converting short and
+long integers between network and host format. For now, it's not
+particularly convenient to do this kind of thing, but consider:
+
+(define write-network-long
+ (lambda (value port)
+ (let ((v (make-uniform-vector 1 1 0)))
+ (uniform-vector-set! v 0 (htonl value))
+ (uniform-vector-write v port))))
+
+(define read-network-long
+ (lambda (port)
+ (let ((v (make-uniform-vector 1 1 0)))
+ (uniform-vector-read! v port)
+ (ntohl (uniform-vector-ref v 0)))))
+
+** If inet-aton fails, it now throws an error with key 'misc-error
+instead of 'system-error, since errno is not relevant.
+
+** Certain gethostbyname/gethostbyaddr failures now throw errors with
+specific keys instead of 'system-error. The latter is inappropriate
+since errno will not have been set. The keys are:
+'host-not-found, 'try-again, 'no-recovery and 'no-data.
+
+** sethostent, setnetent, setprotoent, setservent: now take an
+optional argument STAYOPEN, which specifies whether the database
+remains open after a database entry is accessed randomly (e.g., using
+gethostbyname for the hosts database.) The default is #f. Previously
+#t was always used.
+
\f
Changes since Guile 1.3.2: