ECL 16.1.3 release
Tagged as release
Written by Daniel Kochmański on 2016-12-19 11:30
Announcement
Dear Community,
After almost a year of development we are proud to present a new
release of ECL tagged with version 16.1.3
. All changes are backward
compatible fixing bugs and other issues, implementing new interfaces
and cleaning up the code base.
ECL manual has been updated in a few places. Work on a new documentation is still pending. New documentation is still incomplete, but you may see it here: https://common-lisp.net/project/ecl/static/ecldoc/.
Before this release we have performed extensive tests on many platforms (Linux, FreeBSD, OpenBSD, NetBSD, OSX, Windows MSVC, Windows MinGW, Windows Cygwin, Android and Haiku). For details please consult https://gitlab.com/embeddable-common-lisp/ecl/issues/307. Extra attention has been paid to Windows testing to improve that platform support.
This release is available for download in form of a source archive:
Best regards,
ECL Development Team
API changes
Added better interface for package-locks.
Introduced functions:
ext:package-locked-p package ext:lock-package package ext:unlock-package package ext:without-package-locks &body body ext:with-unlocked-packages (&rest packages) &body body
To use these functions user has to require the module
(require '#:package-locks)
defpackage
accepts new optionlock
to allow locking package on creation:(defpackage foo (:lock t))
mp:holding-lock-p
: introduce new function for multiprocessing. Function verifies if lock is hold by the thread which calls the function. Usage:(mp:holding-lock-p my-lock)
.make-random-state
: fix problem with simple-vectors. The correct initialization types formake-random-state
are:(OR RANDOM-STATE FIXNUM (MEMBER T NIL))
.Initializing a random state with an appropriate array (element type and arity dependent on platform) is also possible.
ext:random-state-array
: new extension for random-states. Usage:(ext:random-state-array random-state)
.ext:terminate-process
: new extension for external processes. Usage:(ext:terminate-process process)
with a second, optional boolean argument whenever termination should be forced or not.
Enhancements
Implemented
CDR-7
. https://common-lisp.net/project/cdr/document/7/index.htmlimplemented CDRs:
CDR-1
,CDR-5
,CDR-14
. BothCDR-1
andCDR-5
were already implemented, CDR-14 made us to list them in*features*
(https://common-lisp.net/project/cdr/document/14/index.html).if ECL is build with
--with-cxx
option,:CXX-CORE
is present in*features*
.deprecated configure option
--with-local-gmp
has been removed - use--enable-gmp
(defaults to auto).configure options has been revised.
ASDF has been upgraded to version 3.1.7.26 (with a few patches scheduled for 3.2.0).
bundled CLX has been purged. Lately I've fixed ECL support on portable CLX maintained by sharplispers on https://github.com/sharplispers/clx (available via QuickLisp).
initial port for the Haiku platform. The port is done by Kacper Kasper's work, one of Haiku developers. Threads are not supported yet.
refactored ECL internal tests framework. Tests in
src/tests
are now asdf-loadable (withload-source-op
) and divided into test suites.make check
target runs all regression and feature tests which aren't supposed to fail.removed 15000 lines of obsolete code. Files not included in the buildsystem but lingering in the codebase or options failing to build. All info is added in the new documentation in the section "Removed interfaces".
improved man page and help output. Man page now contains up-to-date list of flags, as well as explanation of flag's behavior.
deprecated long flags with one dash, added two-dash version. Flags that aren't one-character, but start with one dash (e.g.
-eval
) are now deprecated; long version--eval
was added instead.indented C/C++ code to follow emacs's gnu C style. This is a first step towards coding standards in the documentation. Additionally all in the src/c/ directory are listed in the appropraite documentation section (new-doc).
refactored
list_current_directory in unixfsys.d
. Function was obfuscated with ifdefs with non-even pairs of#\{
and#\}
.
Issues fixed
ECL signals floating point exceptions in top-level console.
mp:rwlock
is treated as built-in class (previously process crashed ifclass-of
was called on such object).ECL builds now succesfully with
--with-ieee-fp=no
option.ext:file-stream-fd
: doesn't cause an internal-error if called with something not being afile-stream
(signals aSIMPLE-TYPE-ERROR
condtition).stable-sort
: bugfix and improvement in speed. Adapted from SBCL by Diogo Franco.typep: accept
*
type specifier as abbreviation ofT
as described in2.4.3 Type Specifiers
of the specification.MOP: fix problemes when redefining non-standard and anonymous classes. Bugs identified and fixed by Pascal Costanza.
getcwd
: fix issue with too long pathname. This fixes the regression, which crashed ECL at start when pathname exceeded 128 characters limit.make-random-state
: fix a problem with simple-vectors. Until now#$
reader macro accepted simple vectors as an argument, what lead to bugs if vector didn't match specific requirements like the element type or the arity. Now we sanitize this.make-load-form
: provide implementation for random-state objects.thread fix on msvc: on windows importing thread was closing the thread handler so the thread wakeup wasn't working because the handler is not more valid.
import thread wasn't set upping a proper environment: on some case the thread was mistakenly thinking that the thread was already registered.
ECL_HANDLER_CASE
andECL_RESTART_CASE
didn't work as expected. Bug identified and fixed by Vadim Penzin.