Выпуск 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