ECL (Embeddable Common-Lisp) 是一个嵌入式的 Common-Lisp 语言解析器。
ECL 16.0.0 发布,此版本改进了现有 CL 库生态系统的各种互操作性,遵从 ANSI,提升跨平台的便捷性。
最显著的改进是提升常规代码质量 – 移除了死锁和接口,重构了部分代码库。同时还重做了测试框架,改进和更新了文档。
In Windows, ECL comes with the bytecode compiler by default, because C compilers are normally not available. Unfortunately several libraries out there are not prepared for this. If you plan to use quicklisp and have a C compiler accessible to ECL, you may use (ext:install-c-compiler) to switch back to the Lisp-to-C compiler.
In order to test a package, programmer has to install ECL on a desired destination (specified with "–prefix" parameter given to the configure script).
There is no UFFI nickname for the FFI package - we piggyback on cffi-uffi-compat for UFFI dependent systems (our UFFI wasn't version 2.0 compatible and there were problems with ADSF dependencies on UFFI - it wasn't a system)
CLOS has the new nickname "MOP"
The new ext:run-program :error argument can automatically create a separate stream if provided with the :stream keyword. The external-process structure also has a new field to hold that stream.
ext:run-program accepts new arguments: :if-input-does-not-exist, :if-error-exists, :external-format
ext:system no longer binds standard-input and standard-output and now ignores input and output (use ext:run-program for more control)
methods can be specialized on both single-float and double-float (built-in classes were added for them)
LET/FLET/LABELS will signal an error if the parameter of the same name appears multiple times
lambda lists with repeated required parameters name are considered invalid
deprecated configure options "–with-system-boehm=x" and "–enable-slow-config" removed
Verification if manual is up-to-date, providing corrections for outdated parts
Documentation is now included in the main repository under the top-level directory `doc'
Update libffi to version 3.2.1
Update asdf to version 3.1.5.4
Update Boehm-Demers-Weiser garbage collector to version 7.4.2
Pathname string-parts internal representation is now character, not base-char
Dead code removal, tabulators were replaced by spaces
Better quality of generated code (explicit casting when necessary)
Various fixes of bogus declarations
Remove deprecated GC calls
ROTATEF, SHIFTF, PSETF reworked to conform to the ANSI standard. Places were handled improperly in regard of multiple values.
Improved Unicode support in character handling
Format handles floats and exponentials correctly (major format rework)
Stack limits refinements and cleanup, inconsistency and bug fixes
Duplicate large block deallocation with GMP 6.0.0a fixed
ECL builds on OpenBSD with threads enabled
Closures put in mapcar work as expected in both compiled and interpreted code
Improved readtable-case handling (:invert and character literals now conform)
Library initialization functions have unique names - no risk of clashing symbol names in object files
Format float bug fixed, when width and fdigits were not set, but k was
`logical-pathname-translations' now signals an error if logical pathname wasn't defined yet, to conform with ANSI (it used to return NIL)
Wildcards in logical pathname translations are replaced correctly
Regression testing framework and unit tests cleanup
deftype ANSI conformity fix (deftype accepts macro labda-lists)
ECL built with MSVC doesn't crash when Control-C is pressed
Other minor tweaks
更多改进请看 发行说明 。