mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-02 15:40:55 -08:00
88 lines
3 KiB
Text
88 lines
3 KiB
Text
Announcement of ECLS v0.4
|
|
=========================
|
|
|
|
ECLS stands for Embeddable Common-Lisp "Spain", and I usually read it
|
|
as "e-klos". It is a an implementation of the Common-Lisp language
|
|
which aims to comply to the ANSI X3J13 definition of the language.
|
|
|
|
ECLS 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 about ECLS 0.4
|
|
====================
|
|
|
|
This release represents a major improvement over previous ones in
|
|
the number of supported platforms:
|
|
|
|
- Debian Linux on Intel
|
|
- Debian Linux on PowerPC
|
|
- FreeBSD 4.x on Intel
|
|
- Cygwin on Microsoft Windows 2000
|
|
|
|
Besides, the code has been revised and porting should now be easier.
|
|
|
|
ECLS 0.4
|
|
=========
|
|
|
|
* Errors fixed:
|
|
|
|
- Fixnum product would overflow: (* 65536 32768) => negative number.
|
|
|
|
- Bit fiddling operations with negative fixnums now work (i.e.
|
|
LOGAND, LOGOR, LOGBITP, etc).
|
|
|
|
- When a PRINT-OBJECT method prints a circular structure which is itself
|
|
in another circular structure, the stack that keeps temporary data
|
|
may get deleted.
|
|
|
|
- Format clause "~<" now accepts any number of text segments.
|
|
|
|
- Format clause "~E" should not add spurious zeros past the decimal
|
|
dot. I.e. (format nil "~13,6,2,7E" 3.14159) should output "
|
|
3141590.E-06", not "3141590.0E-06". Similar problem happened to
|
|
"~F", which added a traling zero even when number of decimal
|
|
positions was specified as zero.
|
|
|
|
* System design and portability:
|
|
|
|
- Ported to Debian Linux PPC and Cygwin.
|
|
|
|
- Small changes allow a static build of the executable in platforms
|
|
where either dlopen() does not work, or ld does not allow
|
|
undefined symbols in libraries.
|
|
|
|
- Remove unportable code of the type "va_list d = cs".
|
|
|
|
- Simplify gathering of &rest and &key arguments in compiled code.
|
|
|
|
- Make the interpreter stack public, with variables and functions
|
|
prefixed with "cl_stack*".
|
|
|
|
- Remove the Invocation History Stack, and implement it as a "linked
|
|
list" of frame records on top of the interpreter stack. This
|
|
avoids previous size limitations.
|
|
|
|
- Compile code onto the interpreter stack instead of using a stack
|
|
of its own.
|
|
|
|
- Use the interpreter stack to simplify the implementations of the
|
|
printer and of the formater.
|
|
|
|
* Visible changes and ANSI compatibility:
|
|
|
|
- MAKE-PATHNAME now accepts all combinations denoted by ANSI. Namely,
|
|
(MAKE-PATHNAME :directory :wild), etc.
|
|
|
|
- :UNSPECIFIC is only allowed in pathname's version and in a logical
|
|
pathname's device.
|
|
|
|
- MSDOS style namestrings, such as "c:/my/path/to/this/file.txt" and
|
|
"//c/my/path/to/this/file.txt" finally work. Beware that these
|
|
paths are also allowed under Unix, even though they cause errors
|
|
when trying to access files. Besides (EQUALP #P"c:/foo/file.txt"
|
|
#P"//c/path/file.txt") => NIL
|
|
|
|
- (DECLARE (OPTIMIZE DEBUG)) is ignored, but no warning is printed.
|
|
|
|
- Implemented WITH-STANDARD-IO-SYNTAX.
|