*** empty log message ***
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index cc61900..4b5e76b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -20,7 +20,7 @@ This has been done to prevent problems on lesser operating systems
 that can't tolerate `*'s in file names.  The exported macro continues
 to be named `and-let*', of course.
 
-On systems that support it, there is also a compatability module named
+On systems that support it, there is also a compatibility module named
 (ice-9 and-let*).  It will go away in the next release.
    
 ** New modules (oop goops) etc.:
@@ -79,8 +79,8 @@ Asking for the type of an object
 
   (is-a? v <2D-vector>) --> #t
 
-See further in the GOOPS tutorial available in the guile-doc
-distribution in info (goops.info) and texinfo formats.
+See further in the GOOPS manual and tutorial in the `doc' directory,
+in info (goops.info) and texinfo formats.
 
 ** New module (ice-9 rdelim).
 
@@ -117,6 +117,38 @@ http://www.star-lab.com/wright/code.html for complete documentation.
 
 This module requires SLIB to be installed and available from Guile.
 
+** New module (ice-9 buffered-input)
+
+This module provides procedures to construct an input port from an
+underlying source of input that reads and returns its input in chunks.
+The underlying input source is a Scheme procedure, specified by the
+caller, which the port invokes whenever it needs more input.
+
+This is useful when building an input port whose back end is Readline
+or a UI element such as the GtkEntry widget.
+
+** Documentation
+
+The reference and tutorial documentation that was previously
+distributed separately, as `guile-doc', is now included in the core
+Guile distribution.  The documentation consists of the following
+manuals.
+
+- The Guile Tutorial (guile-tut.texi) contains a tutorial introduction
+  to using Guile.
+
+- The Guile Reference Manual (guile.texi) contains (or is intended to
+  contain) reference documentation on all aspects of Guile.
+
+- The GOOPS Manual (goops.texi) contains both tutorial-style and
+  reference documentation for using GOOPS, Guile's Object Oriented
+  Programming System.
+
+- The Revised^4 and Revised^5 Reports on the Algorithmic Language
+  Scheme (r4rs.texi and r5rs.texi).
+
+See the README file in the `doc' directory for more details.
+
 * Changes to the stand-alone interpreter
 
 ** Evaluation of "()", the empty list, is now an error.
@@ -136,6 +168,37 @@ Example:
 
 * Changes to Scheme functions and syntax
 
+** The empty combination is no longer valid syntax.
+
+Previously, the expression "()" evaluated to the empty list.  This has
+been changed to signal a "missing expression" error.  The correct way
+to write the empty list as a literal constant is to use quote: "'()".
+
+** Auto-loading of compiled-code modules is deprecated.
+
+Guile used to be able to automatically find and link a shared
+libraries to satisfy requests for a module.  For example, the module
+`(foo bar)' could be implemented by placing a shared library named
+"foo/libbar.so" (or with a different extension) in a directory on the
+load path of Guile.
+
+This has been found to be too tricky, and is no longer supported.
+What you should do instead now is to write a small Scheme file that
+explicitly calls `dynamic-link' to load the shared library and
+`dynamic-call' to initialize it.
+
+The shared libraries themselves should be installed in the usual
+places for shared libraries, with names like "libguile-foo-bar".
+
+For example, place this into a file "foo/bar.scm"
+
+    (define-module (foo bar))
+
+    (dynamic-call "foobar_init" (dynamic-link "libguile-foo-bar"))
+
+The file name passed to `dynamic-link' should not contain an
+extension.  It will be provided automatically.
+
 ** The module system has been made more disciplined.
 
 The function `eval' will now save and restore the current module
@@ -168,15 +231,6 @@ work on the top level.  The forms `define-public' and
 behave just like `define' and `defmacro', respectively, when they are
 used in a lexical environment.
 
-** `port-for-each' makes an additional guarantee.
-
-From the docstring: @var{proc} is applied exactly once to every port
-that exists in the system at the time @var{port-for-each} is invoked.
-Changes to the port table while @var{port-for-each} is running have no
-effect as far as @var{port-for-each} is concerned.
-
-This guarantee is important to make (ice-9 popen) work reliable.
-
 ** The semantics of guardians have changed.
 
 The changes are for the most part compatible.  An important criterion
@@ -225,6 +279,21 @@ objects are usually permanent.
 ** Escape procedures created by call-with-current-continuation now
 accept any number of arguments, as required by R5RS.
 
+** New function `call-with-deprecation'
+
+Call a thunk, displaying a deprecation message at the first call:
+
+  (define (id x)
+    (call-with-deprecation "`id' is deprecated.  Use `identity' instead."
+      (lambda ()
+       (identity x))))
+
+  guile> (id 1)
+  ;; `id' is deprecated.  Use `identity' instead.
+  1
+  guile> (id 1)
+  1
+
 ** New function `make-object-property'
 
 This function returns a new `procedure with setter' P that can be used
@@ -349,8 +418,12 @@ Determines whether a given object is a port that is related to a file.
 
 ** New function: port-for-each proc
 
-Apply PROC to each port in the Guile port table in turn.  The
-return value is unspecified.
+     Apply PROC to each port in the Guile port table in turn.  The
+     return value is unspecified.  More specifically, PROC is applied
+     exactly once to every port that exists in the system at the time
+     PORT-FOR-EACH is invoked.  Changes to the port table while
+     PORT-FOR-EACH is running have no effect as far as PORT-FOR-EACH is
+     concerned.
 
 ** New function: dup2 oldfd newfd
 
@@ -401,9 +474,64 @@ Set/remove an advisory shared or exclusive lock on `file'.
 Set or get the hostname of the machine the current process is running
 on.
 
-** Deprecated: close-all-ports-except.  This was intended for closing
-ports in a child process after a fork, but it has the undesirable side
-effect of flushing buffers.  port-for-each is more flexible.
+** New function: mkstemp! tmpl
+
+mkstemp creates a new unique file in the file system and returns a
+new buffered port open for reading and writing to the file.  TMPL
+is a string specifying where the file should be created: it must
+end with `XXXXXX' and will be changed in place to return the name
+of the temporary file.
+
+** New function: open-input-string string
+
+Return an input string port which delivers the characters from
+`string'.  This procedure, together with `open-output-string' and
+`get-output-string' implements SRFI-6.
+
+** New function: open-output-string
+
+Return an output string port which collects all data written to it.
+The data can then be retrieved by `get-output-string'.
+
+** New function: get-output-string
+
+Return the contents of an output string port.
+
+** New function: identity
+
+Return the argument.
+
+** socket, connect, accept etc., now have support for IPv6.  IPv6 addresses
+   are represented in Scheme as integers with normal host byte ordering.
+
+** New function: inet-pton family address
+
+     Convert a printable string network address into an integer.  Note
+     that unlike the C version of this function, the result is an
+     integer with normal host byte ordering.  FAMILY can be `AF_INET'
+     or `AF_INET6'.  e.g.,
+          (inet-pton AF_INET "127.0.0.1") => 2130706433
+          (inet-pton AF_INET6 "::1") => 1
+
+** New function: inet-ntop family address
+
+     Convert an integer network address into a printable string.  Note
+     that unlike the C version of this function, the input is an
+     integer with normal host byte ordering.  FAMILY can be `AF_INET'
+     or `AF_INET6'.  e.g.,
+          (inet-ntop AF_INET 2130706433) => "127.0.0.1"
+          (inet-ntop AF_INET6 (- (expt 2 128) 1)) =>
+          ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
+
+** Deprecated: id
+
+Use `identity' instead.
+
+** Deprecated: close-all-ports-except.
+
+This was intended for closing ports in a child process after a fork,
+but it has the undesirable side effect of flushing buffers.
+port-for-each is more flexible.
 
 ** The (ice-9 popen) module now attempts to set up file descriptors in
 the child process from the current Scheme ports, instead of using the
@@ -498,6 +626,14 @@ These functions replace the function scm_remember.
 Use one of the new functions scm_remember_upto_here_1,
 scm_remember_upto_here_2 or scm_remember_upto_here instead.
 
+** New function: scm_allocate_string
+
+This function replaces the function scm_makstr.
+
+** Deprecated function:  scm_makstr
+
+Use the new function scm_allocate_string instead.
+
 ** New global variable scm_gc_running_p introduced.
 
 Use this variable to find out if garbage collection is being executed.  Up to
@@ -557,7 +693,10 @@ SCM_SUBSTRP, SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_COERCE_SUBSTR,
 SCM_ROSTRINGP, SCM_RWSTRINGP, SCM_VALIDATE_RWSTRING, SCM_ROCHARS,
 SCM_ROUCHARS, SCM_SETLENGTH, SCM_SETCHARS, SCM_LENGTH_MAX, SCM_GC8MARKP,
 SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16, SCM_GCCDR, SCM_SUBR_DOC,
-SCM_OPDIRP, SCM_VALIDATE_OPDIR, SCM_WTA, RETURN_SCM_WTA
+SCM_OPDIRP, SCM_VALIDATE_OPDIR, SCM_WTA, RETURN_SCM_WTA, SCM_CONST_LONG,
+SCM_WNA, SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
+SCM_VALIDATE_NUMBER_DEF_COPY, SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP,
+SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_SETAND_CAR, SCM_SETOR_CAR
 
 Use SCM_ASSERT_RANGE or SCM_VALIDATE_XXX_RANGE instead of SCM_OUTOFRANGE.
 Use scm_memory_error instead of SCM_NALLOC.
@@ -584,6 +723,10 @@ Use SCM_CDR instead of SCM_GCCDR.
 Use SCM_DIR_OPEN_P instead of SCM_OPDIRP.
 Use SCM_MISC_ERROR or SCM_WRONG_TYPE_ARG instead of SCM_WTA.
 Use SCM_MISC_ERROR or SCM_WRONG_TYPE_ARG instead of RETURN_SCM_WTA.
+Use SCM_VCELL_INIT instead of SCM_CONST_LONG.
+Use SCM_WRONG_NUM_ARGS instead of SCM_WNA.
+Use SCM_CONSP instead of SCM_SLOPPY_CONSP.
+Use !SCM_CONSP instead of SCM_SLOPPY_NCONSP.
 
 ** Removed function:  scm_struct_init
 
@@ -630,6 +773,11 @@ This can be used to set an apply function to a smob type.
 
 Use scm_object_to_string instead.
 
+** Deprecated function:  scm_wta
+
+Use scm_wrong_type_arg, or another appropriate error signalling function
+instead.
+
 \f
 Changes since Guile 1.3.4:
 
@@ -720,6 +868,14 @@ space" for Guile headers.  This means that the compiler only is given
 Implements the interface to documentation strings associated with
 objects.
 
+** New module (ice-9 time)
+
+Provides a macro `time', which displays execution time of a given form.
+
+** New module (ice-9 history)
+
+Loading this module enables value history in the repl.
+
 * Changes to the stand-alone interpreter
 
 ** New command line option --debug