The compiler was coercing base strings to extended strings when encountering them as literal objects in compiled files. According to CLHS 3.2.4.2.2, we need to preserve the actual element type (after upgrading) of arrays during compilation. For ECL, the actual array element type of a base-string is base-char and therefore we can't change this to an extended string. Actually fixing this requires some work since we use the reader to store a printed representation of the string in the compiled file. The reader string syntax always returns an extended string (There is a comment in the code which claims that this is implied by CLHS 2.4.5. I am not quite sure if that is really true but for backwards compatibility I don't want to change this). We thus introduce a new syntax #"..." for base strings which is used when reading objects from compiled files. To prevent the new syntax from leaking outside of this context, we also introduce a new readtable. |
||
|---|---|---|
| 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.