Опубликован выпуск SBCL 2.3.9 (Steel Bank Common Lisp), свободной реализации языка программирования Common Lisp. Код проекта написан на языках Common Lisp и Си, и распространяется под лицензией BSD.
В новом выпуске:
- Выделение стека через DYNAMIC-EXTENT теперь применяется не только к начальной привязке, но и ко всем значениям, которые может принимать переменная (например, через SETQ). Это позволяет, например, упростить построение сложных или рекурсивных структур в стеке через итерации.
- Некоторые интерфейсы в модуле SB-POSIX приведены к соответствию спецификации и результат NULL от Си-библиотеки считается ошибкой тогда и только тогда, когда errno будет изменён вызовом. В этом случае будет порождён сигнал SYSCALL-ERROR.
- Улучшена работа макросов DO-PASSWDS и DO-GROUPS в модуле SB-POSIX. Эти макросы предназначены для безопасной работы с базой данных паролей и групп.
- Восстановлена поддержка платформ Darwin x86 и PowerPC (благодарим Кирилла А. Коринского, Сергея Фёдорова и barracuda156).
- Исправлена неправильная компиляция, происходившая вследствие ошибочного вывода типа при умножении значений fixnum на дробные значения.
- Исправлена ошибка компилятора, возникающая в некоторых случаях при проверке знаковых и беззнаковых 64-битных значений.
- Исправлена ошибка компилятора в случае, когда аргумент “:INITIAL-CONTENTS” для MAKE-ARRAY является константой-не-последовательностью.
- Исправлена ошибка компилирования функций свёртки в константу заданной последовательности при возврате ложного значения от функций “:TEST” или “:KEY”.
- Исправлена ошибка компиляции функций массива или последовательностей с аргументами, подразумевающих очень большие размеры последовательности.
- Исправлена ошибка компилятора, возникающая в случае, когда не используется значение, возвращаемое от ADJUST-ARRAY.
- Оптимизирован вывод типов функций компилятором, которые могут распространяться назад (propagated backwards) через промежуточное представление.
- Улучшен вывод типов для LDB, LOGBITP и RATIO.
- Внесены оптимизации, связанные с исключением лишних проверок границ для многих случаев транзитивных сравнений.
Release.
Ссылка here.