mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-20 19:42:30 -08:00
215 lines
8.4 KiB
Text
Executable file
215 lines
8.4 KiB
Text
Executable file
ECL 11.1.1:
|
|
===========
|
|
|
|
* Bugs fixed:
|
|
|
|
- Several autoconf tests in src/aclocal.in did not work when cross compiling.
|
|
|
|
- ECL defines the feature LONG-LONG when this type is available in the
|
|
C compiler.
|
|
|
|
- When LIST, LIST*, and some other functions appeared as toplevel forms, the
|
|
interpreter compiled its arguments also as toplevel forms, causing their
|
|
execution in the wrong order.
|
|
|
|
- EXT:MAKE-FOREIGN-DATA-FROM-ARRAY now supports all unboxed types.
|
|
|
|
- ECL did not properly compute the alignment of foreign types in structures.
|
|
This is now done using standard C constructs in a portable and robust way.
|
|
|
|
- Even if a function was compiled with a given set of optimizations, a call
|
|
to PROCLAIM which appeared after the function could change the value of
|
|
those optimizations and influence what the emitted C code looked like.
|
|
|
|
- Solved a problem with type intersections between SIMPLE-ARRAY and ARRAY.
|
|
|
|
- Logical pathnames are now translated to uppercase and, when converted
|
|
into physical pathnames, translated back using case :common This means
|
|
that #P"sys:foo.fas" is parsed as
|
|
(make-pathname :host "SYS" :name "FOO" :type "FAS")
|
|
and then
|
|
(translate-logical-pathname #P"SYS:FOO.FAS")
|
|
=> "where/ecl/lives/foo.fas"
|
|
|
|
- RENAME-FILE was not able to rename directories.
|
|
|
|
- Detection of missing packages in the reader was accidentally deactivated.
|
|
|
|
- When entering the debugger the reader/printer environment is now reset
|
|
using with-standard-io-syntax. Formerly this was only done at a later
|
|
stage, causing the list of restarts to show garbage.
|
|
|
|
- We have removed the variable si::*break-enable* that was causing
|
|
INVOKE-DEBUGGER to return.
|
|
|
|
- ECL's support of :CASE has improved. Filenames preferred case is downcase,
|
|
as in every Unix, while logical pathname's case is uppercase. Conversion
|
|
between cases has also been fixed: formerly, MAKE-PATHNAME did not interpret
|
|
:CASE as the original path case, but as the destination.
|
|
|
|
- Out of the many pathname translations which are possible, ECL did not allow the
|
|
one in which missing components are replaced by the original ones, as in
|
|
'(("HM:HOME;*.*.*" "/home/user/")))
|
|
|
|
- Reduced the clutter generated by SETF expansions.
|
|
|
|
* Visible changes:
|
|
|
|
- "fasb" is now a valid FASL file type, accepted by ECL even in absence of
|
|
ASDF.
|
|
|
|
- EXT:GC ignores any argument passed to it.
|
|
|
|
- ECL's compiler now understands the unboxed type :long-long.
|
|
|
|
- A new special form, EXT:WITH-BACKEND allows us to select the code depending
|
|
on whether it is going to be processed by the interpreter or by the C
|
|
compiler.
|
|
(defun example ()
|
|
(ext:with-backend
|
|
:bytecodes (print 3)
|
|
:c/c++ (print 2)))
|
|
The two currently available backends are :bytecodes and :c/c++.
|
|
|
|
- Added accurate type proclamations for all functions in the ANSI CL
|
|
specification.
|
|
|
|
- The compiler is now shipped as a single FASL file, cmp.fas, without
|
|
extra files such as sysfun.lsp
|
|
|
|
- DECLAIM proclamation and toplevel DEFMACRO definitions do not propagate
|
|
beyond the compiled file.
|
|
|
|
- AREF/ASET can now be open-coded by the C compiler.
|
|
|
|
- Compilation policies (including optimization and safety checks) are now
|
|
defined as flags that are activated and deactivated by certain optimization
|
|
levels. In order for the flag to be active, all conditions have to be
|
|
matched. For instance
|
|
(define-policy inline-slot-access :on speed 1 :off debug 2 :off safety 2
|
|
"Inline access to structures and sealed classes")
|
|
slot inlining would be activated by a SPEED of 1, but only if DEBUG and
|
|
SAFETY are below 2.
|
|
|
|
- Important performance improvements in sequence functions, such as FIND,
|
|
SEARCH, REPLACE, POSITION, COUNT, REMOVE, DELETE, SUBSTITUTE, NSUBSTITUTE,
|
|
DELETE-DUPLICATES, REMOVE-DUPLICATES and their possible IF/IF-NOT
|
|
variants. Except COUNT, for efficiency, some of the previously mentioned
|
|
functions may run through the sequences in arbitrary orders one or more
|
|
times.
|
|
|
|
- LOOP is now capable of declaring an iteration variable to have a
|
|
more precise type (fixnum, single-float, etc), when the iteration limits
|
|
are known, as in (LOOP FOR I FROM 0 TO 1000 ....)
|
|
|
|
- ASSERT is now "cheaper", delegating the job on an auxiliary function and
|
|
not creating any nonlocal jump structures (TAGBODY, etc).
|
|
|
|
- ECL's dynamic foreign function interface, that is the FFI that works for
|
|
interpreted and evaluated code and that does not need a C compiler, now
|
|
depends on libffi -- without it, it will refuse to build.
|
|
|
|
- ECL exports a new feature, :C++, when it is built with a C++ compiler.
|
|
|
|
- Function proclamations and declarations are also used to deduce the type
|
|
of their arguments.
|
|
|
|
- (EXPT 2 -2.0d0) is now computed in double precision.
|
|
|
|
- When building programs with ASDF:MAKE-BUILD, "prebuilt-asdf" may be listed
|
|
in the dependencies, as the last one, so that ASDF is linked in. It is
|
|
required by some packages that do not distinguish between compilation and
|
|
distribution.
|
|
|
|
- ECL now captures SIGPIPE.
|
|
|
|
- In DEFMACRO forms, the &WHOLE argument may now be declared
|
|
ignorable. Formerly it was always referenced by the destructuring code of
|
|
the macro.
|
|
|
|
- ECL mistakenly allowed the rational denominator to carry a sign, as in 1/-2.
|
|
|
|
- When used with -debug and the command line options cause some error ECL
|
|
oferts an ABORT and a CONTINUE restarts.
|
|
|
|
- Loading binary files is no longer locking and can be done from several
|
|
threads simultaneously. Note, however, that this may have unexpected
|
|
consequences regarding things like creation of packages or class and
|
|
function definition.
|
|
|
|
- ECL will use long double whenever the type is avalailable AND the special
|
|
functions cosl, sinl and similar are defined.
|
|
|
|
- A new function, (EXT:DUMP-C-BACKTRACE suggested-depth) tries to print out
|
|
the sequence of compiled and C functions called up to the current point.
|
|
|
|
- --enable-rpath now defaults to YES.
|
|
|
|
- ECL now ships a Windows icon which is added to the executable at build time.
|
|
|
|
ECL 11.1.2
|
|
==========
|
|
|
|
* Bugs fixed:
|
|
|
|
- Fixed several dozens of typos.
|
|
|
|
- ENSURE-DIRECTORIES-EXIST did not work properly with logical pathnames.
|
|
|
|
- EXT:SET-LIMIT with option EXT:FRAME-STACK corrupted the frame stack.
|
|
|
|
- The array of boot-time symbols is fixed and independent of the features
|
|
that are compiled in. This is essential for cross-compilation and also
|
|
for sharing C code among different builds.
|
|
|
|
- Fixed externalization of bytecodes with literals that need MAKE-LOAD-FORM.
|
|
|
|
* Visible changes:
|
|
|
|
- When printing error messages, the condition type is shown (M. Mondor)
|
|
|
|
- SI:TOP-LEVEL, when invoked without arguments, does not process the
|
|
command line.
|
|
|
|
- The command line used by EXT:PROCESS-COMMAND-ARGS is now by default
|
|
the one stored in *COMMAND-ARGS*, and this may be "cleared" by the
|
|
user.
|
|
|
|
- SOCKET-MAKE-STREAM now accepts an :ELEMENT-TYPE argument.
|
|
|
|
- When --enable-rpath is used in combination with --with-gmp-prefix, then the
|
|
path of the GMP library is hardcoded into ECL. If the remaining libraries
|
|
(GC, libffi) are in a similar location this will make ECL work without
|
|
further flags, and without modifying LD_LIBRARY_PATH or DYLD_LIBRARY_PATH.
|
|
|
|
- All arguments after the '--' command line option are stored in a global
|
|
variable, ext:*unprocessed-ecl-command-args*.
|
|
|
|
- In the rules passed to ext:process-command-args, :stop now implies that all
|
|
remaining arguments including the current one are collected and passed to
|
|
the rule code. An example of use of this option
|
|
;; Collect all arguments _after_ the command line option --
|
|
("--" 1 (setf ext:*unprocessed-ecl-command-args* (rest 1)) :stop)
|
|
;; Collect all arguments including the first unknown one
|
|
("*DEFAULTS*" 1 (setf ext:*unprocessed-ecl-command-args* 1) :stop)
|
|
|
|
- ECL will always build, by default, with support for Unicode strings.
|
|
|
|
- EXT:GETENV coerces its input argument to type BASE-STRING.
|
|
|
|
- The garbage collector would reset the counters on every call to
|
|
SI:GC-STATS. This made nested TIME calls not to work, as the statistics of
|
|
the inner call would spoil those of the outer one. This has been fixed.
|
|
|
|
- ECL implements CDR 6 (ext:*inspector-hook*) as described in
|
|
http://cdr.eurolisp.org/document/6/index.html
|
|
|
|
- ECL ships libffi together with its source tree, much like GMP and GC.
|
|
|
|
- On POSIX platforms ECL traps SIGCHLD and uses it to update the status of
|
|
external processes.
|
|
|
|
;;; Local Variables: ***
|
|
;;; mode:text ***
|
|
;;; fill-column:79 ***
|
|
;;; End: ***
|