* Fixed the last patch (which was uncomplete). Thanks to Dale P. Smith.
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index 60db8e2..d8e2f79 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -87,6 +87,9 @@ Example:
 
 * Changes to Scheme functions and syntax
 
+** Escape procedures created by call-with-current-continuation now
+accept any number of arguments, as required by R5RS.
+
 ** New function `make-object-property'
 
 This function returns a new `procedure with setter' P that can be used
@@ -167,7 +170,46 @@ Guile.
 
 ** Deprecated: scm_sloppy_memq, scm_sloppy_memv, scm_sloppy_member
 
-Instead, use scm_memq, scm_memv, scm_member.
+Instead, use scm_c_memq or scm_memq, scm_memv, scm_member.
+
+** New function: port? X
+
+Returns a boolean indicating whether X is a port.  Equivalent to
+`(or (input-port? X) (output-port? X))'.
+
+** New function: port-for-each proc
+
+Apply PROC to each port in the Guile port table in turn.  The
+return value is unspecified.
+
+** New function: dup2 oldfd newfd
+
+A simple wrapper for the `dup2' system call.  Copies the file
+descriptor OLDFD to descriptor number NEWFD, replacing the
+previous meaning of NEWFD.  Both OLDFD and NEWFD must be integers.
+Unlike for dup->fdes or primitive-move->fdes, no attempt is made
+to move away ports which are using NEWFD\n".  The return value is
+unspecified.
+
+** New function: close-fdes fd
+
+A simple wrapper for the `close' system call.  Close file
+descriptor FD, which must be an integer.  Unlike close (*note
+close: Ports and File Descriptors.), the file descriptor will be
+closed even if a port is using it.  The return value is
+unspecified.
+
+** 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
+current values of file descriptors 0, 1, and 2 in the parent process.
+
+** Removed function:  builtin-weak-bindings
+
+There is no such concept as a weak binding any more.
 
 * Changes to the gh_ interface
 
@@ -178,6 +220,13 @@ Instead, use scm_memq, scm_memv, scm_member.
 In contrast to scm_boot_guile, scm_init_guile will return normally
 after initializing Guile.  It is not available on all systems, tho.
 
+** New functions: scm_str2symbol, scm_mem2symbol
+
+The function scm_str2symbol takes a const char* pointing to a zero-terminated
+field of characters and creates a scheme symbol object from that C string.
+The function scm_mem2symbol takes a const char* and a number of characters and
+creates a symbol from the characters in that memory area.
+
 ** New functions: scm_primitive_make_property
                   scm_primitive_property_ref
                   scm_primitive_property_set_x
@@ -193,6 +242,16 @@ amount of smob memory you free.  The previous method, which involved
 calling scm_done_malloc with negative argument, was somewhat
 unintuitive (and is still available, of course).
 
+** New function: scm_c_memq (SCM obj, SCM list)
+
+This function provides a fast C level alternative for scm_memq for the case
+that the list parameter is known to be a proper list.  The function is a
+replacement for scm_sloppy_memq, but is stricter in its requirements on its
+list input parameter, since for anything else but a proper list the function's
+behaviour is undefined - it may even crash or loop endlessly.  Further, for
+the case that the object is not found in the list, scm_c_memq returns #f which
+is similar to scm_memq, but different from scm_sloppy_memq's behaviour.
+
 ** New global variable scm_gc_running_p introduced.
 
 Use this variable to find out if garbage collection is being executed.  Up to
@@ -202,17 +261,34 @@ collector has set this variable.  But, this is an implementation detail that
 may change.  Further, scm_gc_heap_lock is not set throughout gc, thus the use
 of this variable is (and has been) not fully safe anyway.
 
+** New macros:  SCM_BITVECTOR_MAX_LENGTH, SCM_UVECTOR_MAX_LENGTH
+
+Use these instead of SCM_LENGTH_MAX.
+
 ** New macros:  SCM_CONTINUATION_LENGTH, SCM_CCLO_LENGTH, SCM_STACK_LENGTH, 
 SCM_STRING_LENGTH, SCM_SYMBOL_LENGTH, SCM_UVECTOR_LENGTH,
 SCM_BITVECTOR_LENGTH, SCM_VECTOR_LENGTH.
 
 Use these instead of SCM_LENGTH.
 
+** New macros:  SCM_SET_CONTINUATION_LENGTH, SCM_SET_STRING_LENGTH, 
+SCM_SET_SYMBOL_LENGTH, SCM_SET_VECTOR_LENGTH, SCM_SET_UVECTOR_LENGTH,
+SCM_SET_BITVECTOR_LENGTH
+
+Use these instead of SCM_SETLENGTH
+
 ** New macros:  SCM_STRING_CHARS, SCM_SYMBOL_CHARS, SCM_CCLO_BASE, 
 SCM_VECTOR_BASE, SCM_UVECTOR_BASE, SCM_BITVECTOR_BASE, SCM_COMPLEX_MEM,
 SCM_ARRAY_MEM
 
-Use these instead of SCM_CHARS or SCM_VELTS.
+Use these instead of SCM_CHARS, SCM_UCHARS, SCM_ROCHARS, SCM_ROUCHARS or
+SCM_VELTS.
+
+** New macros:  SCM_SET_BIGNUM_BASE, SCM_SET_STRING_CHARS, 
+SCM_SET_SYMBOL_CHARS, SCM_SET_UVECTOR_BASE, SCM_SET_BITVECTOR_BASE,
+SCM_SET_VECTOR_BASE
+
+Use these instead of SCM_SETCHARS.
 
 ** New macro:  SCM_BITVECTOR_P
 
@@ -227,7 +303,10 @@ SCM_ORD_SIG, SCM_NUM_SIGS, SCM_SYMBOL_SLOTS, SCM_SLOTS, SCM_SLOPPY_STRINGP,
 SCM_VALIDATE_STRINGORSUBSTR, SCM_FREEP, SCM_NFREEP, SCM_CHARS, SCM_UCHARS,
 SCM_VALIDATE_ROSTRING, SCM_VALIDATE_ROSTRING_COPY,
 SCM_VALIDATE_NULLORROSTRING_COPY, SCM_ROLENGTH, SCM_LENGTH, SCM_HUGE_LENGTH,
-SCM_SUBSTRP, SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_COERCE_SUBSTR
+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
 
 Use SCM_ASSERT_RANGE or SCM_VALIDATE_XXX_RANGE instead of SCM_OUTOFRANGE.
 Use scm_memory_error instead of SCM_NALLOC.
@@ -238,9 +317,27 @@ Use a type specific accessor macro instead of SCM_CHARS/SCM_UCHARS.
 Use a type specific accessor instead of SCM(_|_RO|_HUGE_)LENGTH. 
 Use SCM_VALIDATE_(SYMBOL|STRING) instead of SCM_VALIDATE_ROSTRING.
 Use SCM_STRING_COERCE_0TERMINATION_X instead of SCM_COERCE_SUBSTR.
+Use SCM_STRINGP or SCM_SYMBOLP instead of SCM_ROSTRINGP.
+Use SCM_STRINGP instead of SCM_RWSTRINGP.
+Use SCM_VALIDATE_STRING instead of SCM_VALIDATE_RWSTRING.
+Use SCM_STRING_CHARS instead of SCM_ROCHARS.
+Use SCM_STRING_UCHARS instead of SCM_ROUCHARS.
+Use a type specific setter macro instead of SCM_SETLENGTH.
+Use a type specific setter macro instead of SCM_SETCHARS.
+Use a type specific length macro instead of SCM_LENGTH_MAX.
+Use SCM_GCMARKP instead of SCM_GC8MARKP.
+Use SCM_SETGCMARK instead of SCM_SETGC8MARK.
+Use SCM_CLRGCMARK instead of SCM_CLRGC8MARK.
+Use SCM_TYP16 instead of SCM_GCTYP16.
+Use SCM_CDR instead of SCM_GCCDR.
 
 ** Removed function:  scm_struct_init
 
+** Removed variable:  scm_symhash_dim
+
+** Renamed function: scm_make_cont has been replaced by
+scm_make_continuation, which has a different interface.
+
 ** Deprecated function:  scm_call_catching_errors
 
 Use scm_catch or scm_lazy_catch from throw.[ch] instead.
@@ -267,6 +364,14 @@ scm_tc7_lvector
 There is now only a single symbol type scm_tc7_symbol.
 The tag scm_tc7_lvector was not used anyway.
 
+** Deprecated function:  scm_make_smob_type_mfpe, scm_set_smob_mfpe.
+
+Use scm_make_smob_type and scm_set_smob_XXX instead.
+
+** New function scm_set_smob_apply.
+
+This can be used to set an apply function to a smob type.
+
 \f
 Changes since Guile 1.3.4: