The release of SBCL 2.3.9 (Steel Bank Common Lisp), a free implementation of the Common Lisp programming language, has been published. The project code is written in Common Lisp and C, and is distributed under the BSD license.
In the new release:
- Dynamic extent stack allocation now applies not only to the initial binding but also to all values that a variable can take (for example, via SETQ). This allows for simplifying the construction of complex or recursive structures in the stack through iterations.
- Some interfaces in the SB-POSIX module have been aligned with the specification, and a NULL result from the C library is considered an error only when errno has been changed by the call. In this case, a SYSCALL-ERROR signal will be generated.
- The performance of the DO-PASSWDS and DO-GROUPS macros in the SB-POSIX module has been improved. These macros are designed for safe interaction with the password and group database.
- Support for Darwin x86 and PowerPC platforms has been restored (thanks to Kirill A. Korinsky, Sergey Fedorov, and barracuda156).
- Fixed incorrect compilation occurring due to erroneous type output when multiplying fixnum values by floating-point values.
- Corrected a compiler error that occurred in some cases when checking signed and unsigned 64-bit values.
- Fixed a compiler error when the ':INITIAL-CONTENTS' argument for MAKE-ARRAY is a non-sequence constant.
- Corrected a compilation error for function folds into a constant specified sequence when returning a false value from the ':TEST' or ':KEY' functions.
- Fixed a compilation error for array or sequence functions with arguments implying very large sequence sizes.
- Corrected a compiler error that occurred when the value returned from ADJUST-ARRAY is not used.
- Optimized the type output of functions by the compiler that can be propagated backwards through intermediate representation.
- Improved type output for LDB, LOGBITP, and RATIO.
- Optimizations related to eliminating unnecessary boundary checks for many cases of transitive comparisons have been implemented.
Source: opennet.ru
