Выпуск SBCL 2.4.1, реализации языка Common Lisp
Опубликован выпуск SBCL 2.4.1 (Steel Bank Common Lisp), свободной реализации языка программирования Common Lisp. Код проекта написан на языках Common Lisp и Си, и распространяется под лицензией BSD.
В новом выпуске:
- В параллельный сборщик мусора, использующий алгоритм mark-region, добавлена частичная поддержка заголовков компактных экземпляров.
- Для функций с объявленными возвращаемыми типами в режимах оптимизации с большими значениями SAFETY и в режиме DEBUG 3 обеспечено выполнение проверки типа для возвращаемых значений.
- На платформе FreeBSD реализована компоновка с libpthread и отключена рандомизация адресного пространства (ASLR).
- Восстановлена сборка на 64-х битных архитектурах riscv и ppc.
Для всех платформ реализована поддержка fastrem-32 (для оптимизированных вычислений FLOOR).
- Устранена ошибка, приводившая к повторной очистке перемещённых строк после уплотнения памяти параллельным сборщиком мусора mark-region.
Решена проблема с зацикливанием компилятора при обработке некоторых конструкций с типами SATISFIES.
Хеш-таблицы, используемые в различных частях системы (пакеты, таблицы Unicode), преобразованы для использования хеш функций, избавленных от коллизий (perfect).
- Макрос TYPECASE для иерархий структур классов реализован с применением хеша без коллизий.
- С целью оптимизации производительности убраны проверки границ для относительных смещений.
- В компиляторе учтены дополнительные данные об оптимизации DIGIT-CHAR.
В компиляторе реализована возможность исключения промежуточных значений в некоторых вызовах APPLY, CONCATENATE и MAKE-ARRAY для аргументов, построенных из последовательностей со свежими cons-модификациями.
- Ускорена работа цикла »(LOOP FOR X IN (REVERSE LIST) …)», который теперь использует меньше cons-ов.
- Цикл »(LOOP … APPEND …)» стал компактнее и выполняет меньше работы при добавлении NIL.
- Ускорены и сокращены проверки типов различных массивов.
Источник: http://www.opennet.ru/opennews/art.shtml? num=60554
© OpenNet