* Replaced a lot of calls to SCM_C[AD]R with more appropriate macros.
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index 6666ae5..5c5fae7 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,12 @@ Changes since Guile 1.4:
 
 * Changes to the distribution
 
+** New module (ice-9 stack-catch):
+
+stack-catch is like catch, but saves the current state of the stack in
+the the-last-stack fluid for the debugger to inspect or in able to
+re-throw an error.
+
 ** The module (ice-9 and-let*) has been renamed to (ice-9 and-let-star)
 
 This has been done to prevent problems on lesser operating systems
@@ -113,6 +119,11 @@ This module requires SLIB to be installed and available from Guile.
 
 * Changes to the stand-alone interpreter
 
+** Evaluation of "()", the empty list, is now an error.
+
+Previously, you could for example write (cons 1 ()); now you need to
+be more explicit and write (cons 1 '()).
+
 ** It's now possible to create modules with controlled environments
 
 Example:
@@ -125,6 +136,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
@@ -323,6 +365,10 @@ Instead, use scm_c_memq or scm_memq, scm_memv, scm_member.
         * return 0 if the request is for 0 bytes, with no end-of-file
           check
 
+** New function: object->string OBJ
+
+Return a Scheme string obtained by printing a given object.
+
 ** New function: port? X
 
 Returns a boolean indicating whether X is a port.  Equivalent to
@@ -354,6 +400,60 @@ close: Ports and File Descriptors.), the file descriptor will be
 closed even if a port is using it.  The return value is
 unspecified.
 
+** New function: crypt password salt
+
+Encrypts `password' using the standard unix password encryption
+algorithm.
+
+** New function: chroot path
+
+Change the root directory of the running process to `path'.
+
+** New functions: getlogin, cuserid
+
+Return the login name or the user name of the current effective user
+id, respectively.
+
+** New functions: getpriority which who, setpriority which who prio
+
+Get or set the priority of the running process.
+
+** New function: getpass prompt
+
+Read a password from the terminal, first displaying `prompt' and
+disabling echoing.
+
+** New function: flock file operation
+
+Set/remove an advisory shared or exclusive lock on `file'.
+
+** New functions: sethostname name, gethostname
+
+Set or get the hostname of the machine the current process is running
+on.
+
+** 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-input-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.
+
 ** 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.
@@ -368,6 +468,21 @@ There is no such concept as a weak binding any more.
 
 ** Removed constants:  bignum-radix, scm-line-incrementors
 
+** define-method: New syntax mandatory.
+
+The new method syntax is now mandatory:
+
+(define-method (NAME ARG-SPEC ...) BODY ...)
+(define-method (NAME ARG-SPEC ... . REST-ARG) BODY ...)
+
+  ARG-SPEC ::= ARG-NAME | (ARG-NAME TYPE)
+  REST-ARG ::= ARG-NAME
+
+If you have old code using the old syntax, import
+(oop goops old-define-method) before (oop goops) as in:
+
+  (use-modules (oop goops old-define-method) (oop goops))
+
 * Changes to the gh_ interface
 
 * Changes to the scm_ interface
@@ -436,6 +551,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
@@ -495,7 +618,9 @@ 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_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
 
 Use SCM_ASSERT_RANGE or SCM_VALIDATE_XXX_RANGE instead of SCM_OUTOFRANGE.
 Use scm_memory_error instead of SCM_NALLOC.
@@ -520,6 +645,10 @@ Use SCM_CLRGCMARK instead of SCM_CLRGC8MARK.
 Use SCM_TYP16 instead of SCM_GCTYP16.
 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.
 
 ** Removed function:  scm_struct_init
 
@@ -562,6 +691,15 @@ Use scm_make_smob_type and scm_set_smob_XXX instead.
 
 This can be used to set an apply function to a smob type.
 
+** Deprecated function:  scm_strprint_obj
+
+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:
 
@@ -652,6 +790,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