We've reinitialized the class even when it was already finalized and none of its parents has changed with the recomputed information. That leads to replacing the class slots with a result of COMPUTE-SLOTS and in effect changing the INSTANCE-SIG (see src/clos/change.lsp). Next time when ENSURE-UP-TO-DATE-INSTANCE is called (i.e from the STANDARD-INSTANCE-ACCESS), then the instance is reinitalized. Behavior was the most notable when we had tried to re-finalize the STANDARD-EFFECTIVE-SLOT-DEFINITION class, because then /its new/ slots were by definition obsolete after calling setf on this class and unbound, what leads to an infinite recursion when we try to signal unbound-slot condition. Fixes #568. |
||
|---|---|---|
| contrib | ||
| examples | ||
| msvc | ||
| src | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| appveyor.yml | ||
| CHANGELOG | ||
| configure | ||
| COPYING | ||
| INSTALL | ||
| LICENSE | ||
| Makefile.in | ||
| README.md | ||
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 produces libraries (static or dynamic) that can be called from C programs. Furthermore, ECL can produce standalone executables from Lisp code and can itself be linked to your programs as a shared library. It also features an interpreter for situations when a C compiler isn't available.
ECL supports the operating systems Linux, FreeBSD, NetBSD, DragonFly BSD, OpenBSD, Solaris (at least v. 9), Microsoft Windows (MSVC, MinGW and Cygwin) and OSX, running on top of the Intel, Sparc, Alpha, ARM and PowerPC processors. Porting to other architectures should be rather easy.