Выпуск SBCL 2.3.9, реализации языка Common Lisp
Опубликован выпуск 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.
- Внесены оптимизации, связанные с исключением лишних проверок границ для многих случаев транзитивных сравнений.
Источник: http://www.opennet.ru/opennews/art.shtml? num=59850
© OpenNet