diff --git a/NEWS b/NEWS index c0c6bd0b3..6f8d092de 100644 --- a/NEWS +++ b/NEWS @@ -9,25 +9,6 @@ Changes in 2.0.12 (since 2.0.11): * Notable changes -** GOOPS - -Two major changes have been made: - -1- #:init-value on class-allocated slots: allocating an instance of a -class with a #:class or #:each-subclass slot allocation should not -re-initialize the class-allocated slot. - -2- accessor methods only apply to subclasses with their slot - -FIXME -(a) let users know that it will break Goops user code relying on -previsouly inherited getters, setters and accessors ... (b) why this: so -that Guile 2.x.x behave like guile-1.8 wrt Goops. But the full picture -is rather strange, and will be (re)fixed soon, see this discussion -http://thread.gmane.org/gmane.lisp.guile.user/11218/focus=11813 for some -details. -ENDFIXME - ** FFI: Add support for functions that set 'errno' When accessing POSIX functions from a system's libc via Guile's dynamic @@ -59,10 +40,50 @@ to avoid confusing Emacs' lisp modes. Previously "\(" was an error. ** 'string-hash', 'read-string', and 'write' have been optimized +** GOOPS bug fix for inherited accessor methods + +In the port of GOOPS to Guile 2.0, we introduced a bug related to +accessor methods. The bug resulted in GOOPS assuming that a slot S in +an object whose class is C would always be present in instances of all +subclasses C, and allocated to the same struct index. This is not the +case for multiple inheritance. This behavior has been fixed to be as it +was in 1.8. + +One aspect of this change may cause confusion among users. Previously +if you defined a class C: + + (use-modules (oop goops)) + (define-class C () + (a #:getter get-a)) + +And now you define a subclass, intending to provide an #:init-value for +the slot A: + + (define-class D () + (a #:init-value 42)) + +Really what you have done is define in D a new slot with the same name, +overriding the existing slot. The problem comes in that before fixing +this bug (but not in 1.8), the getter 'get-a' would succeed for +instances of D, even though 'get-a' should only work for the slot 'a' +that is defined on class C, not any other slot that happens to have the +same name and be in a class with C as a superclass. + +It would be possible to "merge" the slot definitions on C and D, but +that part of the meta-object protocol (`compute-slots' et al) is not +fully implemented. + +Somewhat relatedly, GOOPS also had a fix around #:init-value on +class-allocated slots. GOOPS was re-initializing the value of slots +with #:class or #:each-subclass allocation every time instances of that +class was allocated. This has been fixed. + * New interfaces ** New SRFI-28 string formatting implementation +See "SRFI-28" in the manual. + ** New (ice-9 unicode) module See "Characters" in the manual. @@ -74,9 +95,11 @@ and related procedures. Likewise, (web server http) exports 'http'. ** New procedures: 'string-utf8-length' and 'scm_c_string_utf8_length' +See "Bytevectors as Strings" in the manual, for more. + ** New 'EXIT_SUCCESS' and 'EXIT_FAILURE' Scheme variables -** New C macro 'SCM_VALIDATE_SIZE_COPY' +See "Processes" in the manual. ** New C functions to disable automatic SMOB finalization @@ -100,76 +123,69 @@ More ARM cross-compilation targets are supported: "arm.*eb", * Bugs fixed -*** detect too-old libunistring at configure time () -*** use source file permissions for compiled files - () +** Compiler *** 'call-with-prompt' does not truncate multiple-value returns () -*** sizeof (long) support for LLP64 data model () -*** fix 'fat_mutex_unlock' () -*** 'uri-decode' no longer decodes "+" to space -*** http: accept date strings with a leading space for hours - () -*** http: accept empty reason phrases () -*** http: 'Location' header can now contain URI references, not just - absolute URIs -*** http: do not buffer HTTP chunks () -*** http: 'open-socket-for-uri' now sets better OS buffering parameters - () -*** http: use 'close-port' for delimited input ports -*** texinfo: fix HTML output for @itemize and @acronym - () -*** {get,set}sockopt now expect type 'int' for SO_SNDBUF/SO_RCVBUF -*** fix port position handling on binary input ports +*** Use permissions of source file for compiled file + () +*** Fix bug when inlining some functions with optional arguments + () +*** Avoid quadratic expansion time in 'and' and 'or' macros + () +*** Fix expander bug introduced when adding support for tail patterns + (http://lists.gnu.org/archive/html/guile-user/2015-09/msg00017.html) +*** Handle ~p in 'format' warnings () + +** Threads +*** Fix data races leading to corruption () + +** Memory management +*** Fix race between SMOB marking and finalization + () + +** Ports +*** Fix port position handling on binary input ports () -*** match-each+, non-pair syntax object in a dotted tail -*** 'atan' procedure when applied to complex numbers -*** bytevector and custom binary ports to use ISO-8859-1 +*** Bytevector and custom binary ports to use ISO-8859-1 () -*** avoid test failure when 'setaffinity' returns ENOSYS - () -*** fix buffer overrun with unbuffered custom binary input ports +*** Fix buffer overrun with unbuffered custom binary input ports () -*** fix memory corruption that arose when using 'get-bytevector-n' +*** Fix memory corruption that arose when using 'get-bytevector-n' () -*** 'select' signal interruptions clarification () + +** System +*** {get,set}sockopt now expect type 'int' for SO_SNDBUF/SO_RCVBUF +*** 'system*' now available on MS-Windows +*** Better support for file names containing backslashes on Windows + +** Web +*** 'split-and-decode-uri-path' no longer decodes "+" to space +*** HTTP: Support date strings with a leading space for hours + () +*** HTTP: Accept empty reason phrases () +*** HTTP: 'Location' header can now contain URI references, not just + absolute URIs +*** HTTP: Improve chunked-mode support () +*** HTTP: 'open-socket-for-uri' now sets better OS buffering parameters + () + +** Miscellaneous +*** Fix 'atan' procedure when applied to complex numbers +*** Fix Texinfo to HTML conversion for @itemize and @acronym + () *** 'bytevector-fill!' accepts fill arguments greater than 127 () *** 'bytevector-copy' correctly copies SRFI-4 homogeneous vectors - () -*** avoid bash-specific '==' in guile.m4 () + () *** 'strerror' no longer hangs when passed a non-integer argument () *** 'scm_boot_guile' now gracefully handles argc == 0 () -*** optional arg inits that refer to previous args are now correctly handled - () -*** autogen.sh invokes 'libtoolize', not 'libtool' - () -*** fix 'SCM_SMOB_OBJECT_LOC' definition () -*** SRFI-43 vector-concatenate error message -*** handle ~p in 'format' warnings () -*** fix long-standing bug argument mismatch in 'bit-count*' -*** handle Windows file names that contain backslashes -*** CPU set size proper calculation for getaffinity -*** unconditionally build and test (ice-9 popen) -*** make 'system*' available on MS-Windows. -*** portability fixes for 'nl_langinfo' -*** test-suite, lack-of-/dev/null detection improved -*** test-suite, i18n tests adjusted for MS-Windows -*** test-suite, i18n, ignore LC_MESSAGES on MinGW -*** test-suite, Use NUL instead of /dev/null on MinGW -*** avoid quadratic expansion time in 'and' and 'or' macros - () +*** Fix 'SCM_SMOB_OBJECT_LOC' definition () +*** Fix bug where 'bit-count*' was not using its second argument *** SRFI-1 'length+' raises an error for non-lists and dotted lists () -*** system async functions marked as 'SCM_API' - () -*** fix race between SMOB marking and finalization - () -*** remove unused i18n functions () -*** fix 'mkstemp'-related build error on Windows () -*** document SXPath () +*** Add documentation for SXPath () Changes in 2.0.11 (since 2.0.10):