Випуск 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.
  • Прискорено та скорочено перевірки типів різних масивів.

Джерело: opennet.ru

Додати коментар або відгук