* environments.c: Don't use '==' to compare SCM objects.
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index 893e5df..60db8e2 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -8,8 +8,73 @@ Changes since Guile 1.4:
 
 * Changes to the distribution
 
+** New modules (oop goops) etc
+
+The new modules
+
+  (oop goops)
+  (oop goops describe)
+  (oop goops save)
+  (oop goops active-slot)
+  (oop goops composite-slot)
+
+plus some GOOPS utility modules have been added.
+
 * Changes to the stand-alone interpreter
 
+** GOOPS has been merged into Guile
+
+The Guile Object Oriented Programming System has been integrated into
+Guile.
+
+Type
+
+  (use-modules (oop goops))
+
+access GOOPS bindings.
+
+We're now ready to try some basic GOOPS functionality.
+
+Generic functions
+
+  (define-method (+ (x <string>) (y <string>))
+    (string-append x y))
+
+  (+ 1 2) --> 3
+  (+ "abc" "de") --> "abcde"
+
+User-defined types
+
+  (define-class <2D-vector> ()
+    (x #:init-value 0 #:accessor x-component #:init-keyword #:x)
+    (y #:init-value 0 #:accessor y-component #:init-keyword #:y))
+
+  (define-method write ((obj <2D-vector>) port)
+    (display (format #f "<~S, ~S>" (x-component obj) (y-component obj))
+            port))
+
+  (define v (make <2D-vector> #:x 3 #:y 4))
+  v --> <3, 4>
+
+  (define-method + ((x <2D-vector>) (y <2D-vector>))
+    (make <2D-vector>
+          #:x (+ (x-component x) (x-component y))
+          #:y (+ (y-component x) (y-component y))))
+
+  (+ v v) --> <6, 8>
+
+Asking for the type of an object
+
+  (class-of v) --> #<<class> <2D-vector> 40241ac0>
+  <2D-vector>  --> #<<class> <2D-vector> 40241ac0>
+  (class-of 1) --> #<<class> <integer> 401b2a98>
+  <integer>    --> #<<class> <integer> 401b2a98>
+
+  (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.
+
 ** It's now possible to create modules with controlled environments
 
 Example:
@@ -137,14 +202,42 @@ 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_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_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.
+
+** New macro:  SCM_BITVECTOR_P
+
+** New macro:  SCM_STRING_COERCE_0TERMINATION_X
+
+Use instead of SCM_COERCE_SUBSTR.
+
 ** Deprecated macros:  SCM_OUTOFRANGE, SCM_NALLOC, SCM_HUP_SIGNAL, 
 SCM_INT_SIGNAL, SCM_FPE_SIGNAL, SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, 
 SCM_ALRM_SIGNAL, SCM_GC_SIGNAL, SCM_TICK_SIGNAL, SCM_SIG_ORD, 
-SCM_ORD_SIG, SCM_NUM_SIGS, SCM_SYMBOL_SLOTS, SCM_SLOTS, SCM_SLOPPY_STRINGP
+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
 
 Use SCM_ASSERT_RANGE or SCM_VALIDATE_XXX_RANGE instead of SCM_OUTOFRANGE.
 Use scm_memory_error instead of SCM_NALLOC.
 Use SCM_STRINGP instead of SCM_SLOPPY_STRINGP.
+Use SCM_VALIDATE_STRING instead of SCM_VALIDATE_STRINGORSUBSTR.
+Use SCM_FREE_CELL_P instead of SCM_FREEP/SCM_NFREEP
+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.
 
 ** Removed function:  scm_struct_init
 
@@ -156,6 +249,10 @@ Use scm_catch or scm_lazy_catch from throw.[ch] instead.
 
 Use scm_string_hash instead.
 
+** Deprecated function:  scm_vector_set_length_x
+
+Instead, create a fresh vector of the desired size and copy the contents.
+
 ** scm_gensym has changed prototype
 
 scm_gensym now only takes one argument.