Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo


Diff of /ANNOUNCEMENT [7b762a] .. [6e30d8] Maximize Restore

  Switch to side-by-side view

@@ -10,9 +10,10 @@
 programs. Furthermore, ECL can produce standalone executables from your lisp
-ECL supports the operating systems Linux, FreeBSD, NetBSD, Solaris, Microsoft
-Windows and OSX, running on top of the Intel, Sparc, Alpha and PowerPC
-processors. Porting to other architectures should be rather easy.
+ECL supports the operating systems Linux, FreeBSD, NetBSD, Solaris (at least
+v. 9), Microsoft Windows and OSX (including 10.4.2), running on top of the
+Intel, Sparc, Alpha and PowerPC processors. Porting to other architectures
+should be rather easy.
 ECL is currently hosted at SourceForge. The home page of the project is
 http://ecls.sourceforge.net, and in it you will find source code releases, a
@@ -21,214 +22,170 @@
 Notes for this release
-The highlights of these release are the two new contributed modules: a port of
-the ASDF system definition, and a port of SBCL's socket libraries, including
-TCP and unix sockets and, only on Windows, named pipes.
+This release includes many bug fixes, as well as performance improvements. A
+noticeable speed up happens at boot time, due to changes in the implementation
+of SUBTYPEP, which make type comparisons much faster.
-ECL 0.9f
+We have also introduced several bug fixes which seem to make ECL more friendly
+towards GCC 4.0 At least this means ECL now builds on my iBook without
+additional configuration flags. Please report if you experience any
+ECL 0.9g
 * Platforms:
- - Cygwin support has been fixed and it now supports DLLs (M. Goffioul).
+ - Fixed the broken port for MacOSX. It should work with any release >= 10.2
+ - Based on version 6.5 of Boehm-Weiser garbage collector, which fixes some
+   problems related to the OSX port.
+ - The latest version of Mingw32's GCC is broken. It silently ignores pathnames
+   which end in '/'.  The include options in ECL have been modified to take
+   this into account but this intrinsic bug of Mingw might influence ECL's
+   behavior in some other unexpected ways.
+ - The configuration in Solaris should now proceed with the flag
+   --enable-slow-conf.
+* Foreign function interface (FFI):
+ - Added nickname UFFI for FFI package; functions ALLOCATE-FOREIGN-STRING,
+   exported. (M. Pasternacki)
+ - Ecl now accepts :CSTRING UFFI primitive type. (M. Pasternacki)
+ - DEF-FOREIGN-VAR rewritten to make variables visible from other files and to
+   dereference also arrays and pointers. (M. Pasternacki)
+ - When creating a C-STRING, characters after the fill pointer are discarded,
+   according to people's expectations.
+* Compiler changes:
+ - Generated C functions now have readable names corresponding to appropriate
+   Lisp function names (M. Pasternacki)
+ - ECL now compiles with the free Microsoft Visual C++ Toolkit
+   2003. Instructions are provided on how to do it.
+ - Unless SI:*KEEP-DOCUMENTATION* = NIL, the documentation of functions is
+   stored in the compiled files.
+ - COMPILE-FILE now honors the value of :OUTPUT-FILE given by the user, even if
+   they do no have the usual extension (.fas). Furthermore, LOAD will now try
+   to load files with strange extensions (.fas, .fasl, etc) as binary files and
+   only if this fails, use the source-file loader.
+ - .LSP/.LISP are now recognized lisp source extensions.
+ - We now provide inline expansions for all logical operators.
+ - We have changed the syntax both for function proclamantions and for inline
+   expansions in sysfun.lsp Additionally, the checks for functions having side
+   effects have been improved and inline expansions are now stored with a
+   special-purpose structure INLINE-INFO.
 * Errors fixed:
- - The reader macros for lists, ##, #C, #P and #' did not behave as expected
-   when *read-suppress* = t.
+ - Now .o files compiled with :SYSTEM-P T with dash in filename load
+   correctly. (M. Pasternacki)
- - No comments were allowed between the last list element and the parenthesis
-   in a dotted lists. In other words, this:
-	(1 . 2 ;; just a comment
-	)
-   produced an error.
+ - Incorrectly loaded files are now unloaded without falling into infinite
+   loop.  (M. Pasternacki)
- - All strings in a pathname must be valid C strings, with a null terminating
-   character and no fill pointer.
+ - When ECASE or CTYPECASE signal a TYPE-EROR the TYPE-ERROR-DATUM is the value
+   that originated the error.
- - "+nan" is no longer parsed as a number.
+ - FDEFINITION did not signal a type error when passed things like '(SETF A B).
- - Where available, ECL now uses _setjmp/_longjmp for control structures. These
-   functions are faster, as they do not save signals.
+ - FUNCTION-LAMBDA-EXPRESSION does not fail, but does nothing useful, when
+   passed a generic function.
- - (EXPT 10.0l0 308) failed because the routine EXPT computed too many powers
-   of 10.0l0, some of which (in particular 10^512) were not required and
-   overflowed the machine accuracy.
+ - Trying to execute an instance object that is not a generic function does no
+   longer crashes ECL.
- - make_stream_from_fd() did not accept smm_io.
+ - When signalling a READER-ERROR, the field reader-error-stream was not bound.
- - Fixed the optimizer for slot access, which now only operates if the
-   variables have been declared of type STANDARD-OBJECT.
+ - The random number generator assumed 32-bit integers.
- - Pipes are now opened in character mode (M. Pasternacki)
+ - ext:run-program looks into *standard-input/output* and *error-output* for handle
+   duplication also under Win32.
- - (DOCUMENTATION 'F 'FUNCTION) did not work with generic functions.
+ - FEtype_error_index() had format arguments in wrong order (M. Goffioul).
- - ADJUST-ARRAY did not work with strings.
+ - In the LOOP macro, variables are initialized with values of their type, no
+   longer producing code like (LET ((C NIL)) (DECLARE (CHARACTER C)) ...)
- - DEFMACRO admits again lambda lists of the form (a . b).
+ - The compiler now advertises itself with PROVIDE so that issuing (REQUIRE
+   'CMP) twice does not cause the compiler to be loaded twice.
- - EXPT failed when the exponent was a complex number equal to zero.
+ - Fix error message of interpreted FFI:CLINES form (M. Goffioul).
- - Setting the property lists of the symbol NIL no longer breaks ECL.
+ - Remove obsolete C::BUILD-ECL documentation (M. Goffioul).
- - Fixed (documentation) and (setf documentation) behaviour. (M. Pasternacki)
+ - The conversion from ratio to float works now even if the numerator/denominator
+   are themselves too large to fit a float.
-* Compiler errors:
+ - Fixnums and short-floats were compared using the "float" C type. This led to
+   loss of precision and caused
+	 (= (1+ (ceiling (rational -3.781832e7))) -3.781832e7) => T
- - In compiled code, discarded (VALUES ...) forms did not trigger all the
-   required unwinding forms, so that (TAGBODY (CATCH 'FOO (VALUES 0))) produced
-   wrong code.
+ - Keyword arguments in a type defined with DEFTYPE, for which a default value
+   is not given, default to '*. Also the DEFTYPE form are enclosed in a block
+   with the name of the type.
- - In compiled code, the init-form for keyword and optional arguments could
-   reference the variable that it was going to initialize, as in
-	(LAMBDA (&OPTIONAL (FOO (1+ FOO))) ...)
+ - The syntax of #\: can now be changed.
- - Globals declared with DEFPARAMETER toplevel forms were not recognized by
-   the compiler as special variables.
+ - Adjusting displaced bit-vectors failed to take the displace-offset into
+   account.
- - The code for handling closure variables has been changed and now encloses
-   the whole of the function in a C block.
+ - Variable SI::*GC-VERBOSE* controls whether ECL emits messages when FASL
+   libraries are garbage colleced.
- - Values of MOST-POSTIVE-LONG-FLOAT, and similar constants, are now taken from
-   the float.h header, instead of referencing the lisp variables themselves.
+ - Values of EQL specializers are now evaluated in the lexical environment
+   in which the DEFMETHOD is enclosed. This makes it now possible to write
+	(defmethod foo (x) (defmethod bar ((f (eql x)))))
- - A typo made the check for proper tail recursion always succeed.
+ - Fixes in the C code to comply with gcc 4.0.
-* Foreign function interface (FFI):
+* ANSI compatibility:
- - ext:c-uint-max and ext:c-ulong-max did not have the right bignum value.
+ - Several functions that signaled type-errors did not set the right values
+   on the field TYPE-ERROR-EXPECTED-TYPE. We now use the following types:
+	* valid function names => (SATISFIES EXT:VALID-FUNCTION-NAME-P)
+	* proper list	       => PROPER-LIST = (OR (CONS T PROPER-LIST) NULL)
+	* positive fixnum      => (INTEGER 0 MOST-POSITIVE-FIXNUM)
+	* nonnegative integer  => (INTEGER 0 *)
+	* index in a seq       => (INTEGER 0 L) where L is (1- (length sequence))
- - C-INLINE forms now can output multiple values. For instance
-	> (compile nil '(lambda (x)
-			  (ffi::c-inline (x) (:int) (values :int :int)
-				 "@;@(return 0)=#0+2; @(return 1)=#0+3;")))
-	[...]
-	#<compiled-function 0815b318>
-	> (funcall * 2)
-	4
-	5
+ - (COMPLEX *) is now recognized as valid type identifier by subtypep.
- - C-INLINE forms are now understood by the walker in clos/walk.lsp
+ - TYPE-OF now returns more precise type names, so that if (TYPE-OF x) = t1 and
+   (TYPEP x t2) = T then (SUBTYPEP t1 t2) = T.
- - DEFENTRY, DEFCBODY and DEFLA have been reimplemented. The current status
-   of the FFI is now better described in the documentation, with a reference
-   to the UFFI package for further details.
+ - MAKE-PATHNAME now signals ordinary errors when the arguments do not have
+   the required type, but signals a file error when it finds something like
+   a wrong directory (i.e. '(:ABSOLUTE :UP)).
-* Visible changes:
+ - Pathnames which contain :BACK in the directory, now print as unreadable
+   objects, instead of signaling an error when printing.
- - Boehm-Weiser garbage collector v 6.4
+ - Declaration names cannot be used to define new type names and viceversa.
- - GNU MP library v 4.1.4
+ - #\Space has constituent trait "invalid".
- - Multithreaded ECL now in Windows, either with Microsoft VC++
-   or Mingw32 (M. Goffioul).
+ - DEFINE-SETF-EXPANDER encloses the form in an implicit block with the name of
+   the SETF function.
- - Improvements in the efficiency of macro readers for #a() and #()
+* New features:
- - When supplied an :INITIAL-CONTENTS, MAKE-ARRAY now uses a more efficient
-   algorithm.
+ - Added function si:rmdir (M. Pasternacki)
- - Optimized some routines that iterate over sequences: SOME, EVERY,
-   NOTANY, NOTEVERY (M. Goffioul)
- - A new global variable SI::*EXIT-HOOKS* is used to store closures that
-   will be invoked when exiting ECL by cl_shutdown().
- - Slight rewrite of configuration help.
- - Configure option --with-clos-streams now defaults to true.
- - When closing a composite stream, all references to its elements are now erased.
- - Backquote forms are now translated into lists containing the macros
-   At evaluation/compilation time, the macroexpander for QUASIQUOTE transforms
-   the tree into the appropiate lisp expression. Otherwise, the print
-   representation is preserved:
-	(format nil '`(foo ,@a)) => "`(foo ,@a)"
- - Our implementation of CLOS streams now builds on the Gray streams proposal
-   except for the generic functions CLOSE, STREAM-ELEMENT-TYPE, INPUT-STREAM-P,
-   OUTPUT-STREAM-P and OPEN-STREAM-P. We rather keep these as normal functions
-   that call the user extensible EXT:STREAM-{CLOSE, ELT-TYPE, INPUT-P,
-   OUTPUT-P, OPEN-P}. Care has been taken to ensure compatibility with previous
-   versions of ECL.
- - The configuration and build process have been cleaned, making it closer to
-   GNU guidelines and improving things like naming of variables. The flags
-   --with-system-{gmp,boehm} now take an optional argument which can be "auto",
-   for automatic detection of the libraries (M. Pasternacki).
- - By default, the size of binary streams is rounded to a multiple of 8. If you
-   want other behavior, pass :USE-HEADER-P T to the function OPEN.
- - ECL now accepts a double dash, '--', as a command line option. Anything
-   after the double dash is interpreted as a lisp command.
- - Bytecode functions can now be printed readably as #Y(...). The appropiate
-   reader macro has been also implemented (M. Pasternacki)
- - *ERROR-OUTPUT* is now properly set to the C error stream.
- - EXT:RUN-PROCESS can now duplicate the *STANDARD-OUTPUT* and *ERROR-OUTPUT*
-   even if they are not the files set at the beginning of the process
-	> (let ((*standard-output* (open "foo.txt" :direction :output
-					  :if-does-not-exist :create :if-exists :supersede)))
-	      (ext:run-program "echo" '("hola!") :output t))
-	#<two-way stream 0868a708>
-	> (si::system "cat foo.txt")
-	hola!
-	0
-* ANSI Compatibility:
- - DEFSETF forms are enclosed in a block with the name of the accessor.
- - When supplied a compiled function as second argument, COMPILE returns
-   this function. And also when the function is interpreted but we have
-   lost its original definition.
- - Now an error is signaled for unmatched parenthesis as in "(1 2 3))".
-   The only exception is in the toplevel, where only a warning is issued.
- - The stream argument for DESCRIBE-OBJECT is now a required one, instead of
-   an optional.
- - When *PRINT-READABLY*=T, vectors just print as arrays.
- - When used as macro characters, upper and lowercase letters share the same
-   dispatcher, so that if the user defines a dispatcher for #f, it is
-   automagically set for #F and viceversa.
-* MOP Compatibility:
- - We have implemented the *-SLOT-DEFINITION classes, as well as the protocol
-   for computing effective slot definitions from direct ones, and the methods
-   DIRECT/EFFECTIVE-SLOT-DEFINITION-CLASS. (Position field in slot-def. objects
-   still missing).
- - CLASS-PROTOTYPE is now only a reader.
-* Contributed modules:
- - MIT test unit rt.lisp is now available as #p"sys:rt"
- - SBCL sockets have been ported to unix (J. Stecklina) and to windows
-   (M. Goffioul) and are built when using the configuration option --with-tcp.
-   Both INET and Unix sockets are implemented. Under windows Unix sockets are
-   simulated the cygwin way (i.e. creating a file with the address and port
-   of a INET socket), and we also offer the possibility of creating named
-   pipes.
- - SBCL's implementation of PROVIDE/REQUIRE is now in ECL. By default, modules
-   are searched in the #P"SYS:" path, but you can add your own searching
-   functions to *module-provider-functions*. (J. Stecklina)
- - ASDF is now provided together with ECL. Hopefully, in a near future we will
-   be able to customize it to produce shared libraries out of definition files.
+ - There are now specialized arrays for 32 or 64 bits data, depending on the
+   size of words in the platform.
 ;;; Local Variables: ***
 ;;; mode:text ***