* acinclude.m4: remove GUILE_DLSYM_USCORE, add libtool.m4
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index dee775f..e9abae5 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,36 @@ Please send Guile bug reports to bug-guile@gnu.org.
 \f
 Changes since Guile 1.3.4:
 
 \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.
 * Changes to the distribution
 
 ** Trees from nightly snapshots and CVS now require you to run autogen.sh.
@@ -34,6 +64,7 @@ appropriately.
 
 ** configure has new options to remove support for certain features:
 
 
 ** 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
 --disable-posix    omit posix interfaces
 --disable-net      omit networking interfaces
 --disable-regex    omit regular expression interfaces
@@ -58,6 +89,8 @@ turn on this extra processing only when necessary.
 
 * Changes to the stand-alone interpreter
 
 
 * 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
 ** Positions of erring expression in scripts
 
 With version 1.3.4, the location of the erring expression in Guile
@@ -84,6 +117,12 @@ at the top of the script.
 (The first options enables the debugging evaluator.
  The second enables backtraces.)
 
 (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
 * Changes to the scm_ interface
 
 ** Port internals: the rw_random variable in the scm_port structure
@@ -107,6 +146,57 @@ although to actually avoid resetting the buffers and discard unread
 chars requires further hacking that depends on the characteristics
 of the ptob.
 
 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:
 
 \f
 Changes since Guile 1.3.2: