Опубліковано випуск 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.
- Прискорено та скорочено перевірки типів різних масивів.
Джерело: opennet.ru