mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-01 15:20:36 -08:00
193 lines
7.3 KiB
Text
193 lines
7.3 KiB
Text
Announcement of ECL v0.9f
|
|
=========================
|
|
|
|
ECL stands for Embeddable Common-Lisp. The ECL project aims to produce an
|
|
implementation of the Common-Lisp language which complies to the ANSI X3J13
|
|
definition of the language.
|
|
|
|
The term embeddable refers to the fact that ECL includes a lisp to C compiler,
|
|
which allows to produce libraries (static or dynamic) that can be called from C
|
|
programs. Furthermore, ECL can produce standalone executables from your lisp
|
|
code.
|
|
|
|
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
|
|
CVS tree and an up to date documentation.
|
|
|
|
Notes for this release
|
|
======================
|
|
|
|
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.
|
|
|
|
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
|
|
difficulties.
|
|
|
|
ECL 0.9g
|
|
========
|
|
|
|
* Platforms:
|
|
|
|
- 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,
|
|
WITH-FOREIGN-STRING, WITH-FOREIGN-STRINGS, and FOREIGN-STRING-LENGTH are now
|
|
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:
|
|
|
|
- Now .o files compiled with :SYSTEM-P T with dash in filename load
|
|
correctly. (M. Pasternacki)
|
|
|
|
- Incorrectly loaded files are now unloaded without falling into infinite
|
|
loop. (M. Pasternacki)
|
|
|
|
- When ECASE or CTYPECASE signal a TYPE-EROR the TYPE-ERROR-DATUM is the value
|
|
that originated the error.
|
|
|
|
- FDEFINITION did not signal a type error when passed things like '(SETF A B).
|
|
|
|
- FUNCTION-LAMBDA-EXPRESSION does not fail, but does nothing useful, when
|
|
passed a generic function.
|
|
|
|
- Trying to execute an instance object that is not a generic function does no
|
|
longer crashes ECL.
|
|
|
|
- When signalling a READER-ERROR, the field reader-error-stream was not bound.
|
|
|
|
- The random number generator assumed 32-bit integers.
|
|
|
|
- ext:run-program looks into *standard-input/output* and *error-output* for handle
|
|
duplication also under Win32.
|
|
|
|
- FEtype_error_index() had format arguments in wrong order (M. Goffioul).
|
|
|
|
- In the LOOP macro, variables are initialized with values of their type, no
|
|
longer producing code like (LET ((C NIL)) (DECLARE (CHARACTER C)) ...)
|
|
|
|
- The compiler now advertises itself with PROVIDE so that issuing (REQUIRE
|
|
'CMP) twice does not cause the compiler to be loaded twice.
|
|
|
|
- Fix error message of interpreted FFI:CLINES form (M. Goffioul).
|
|
|
|
- Remove obsolete C::BUILD-ECL documentation (M. Goffioul).
|
|
|
|
- The conversion from ratio to float works now even if the numerator/denominator
|
|
are themselves too large to fit a float.
|
|
|
|
- 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
|
|
|
|
- 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.
|
|
|
|
- The syntax of #\: can now be changed.
|
|
|
|
- Adjusting displaced bit-vectors failed to take the displace-offset into
|
|
account.
|
|
|
|
- Variable SI::*GC-VERBOSE* controls whether ECL emits messages when FASL
|
|
libraries are garbage colleced.
|
|
|
|
- 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)))))
|
|
|
|
- Fixes in the C code to comply with gcc 4.0.
|
|
|
|
* ANSI compatibility:
|
|
|
|
- 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))
|
|
|
|
- (COMPLEX *) is now recognized as valid type identifier by subtypep.
|
|
|
|
- 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.
|
|
|
|
- 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)).
|
|
|
|
- Pathnames which contain :BACK in the directory, now print as unreadable
|
|
objects, instead of signaling an error when printing.
|
|
|
|
- Declaration names cannot be used to define new type names and viceversa.
|
|
|
|
- #\Space has constituent trait "invalid".
|
|
|
|
- DEFINE-SETF-EXPANDER encloses the form in an implicit block with the name of
|
|
the SETF function.
|
|
|
|
* New features:
|
|
|
|
- Added function si:rmdir (M. Pasternacki)
|
|
|
|
- There are now specialized arrays for 32 or 64 bits data, depending on the
|
|
size of words in the platform.
|
|
|
|
;;; Local Variables: ***
|
|
;;; mode:text ***
|
|
;;; fill-column:79 ***
|
|
;;; End: ***
|