Выпуск SBCL 2.4.2, реализации языка Common Lisp
Опубликован выпуск SBCL 2.4.2 (Steel Bank Common Lisp), свободной реализации языка программирования Common Lisp. Код проекта написан на языках Common Lisp и Си, и распространяется под лицензией BSD.
В новом выпуске:
Компиляция системой самой-себя на системах x86–64 c Linux теперь производит побитово-идентичные кросс-компилированные fasl-ы там, где сборочным хостом является cmucl, ccl, clisp или сам sbcl.
- Оптимизации:
- Большое число внутренних таблиц, в частности те, которые относятся к поддержке Unicode были переведены на использование хеш функций, избавленных от коллизий (perfect), что улучшило скорость и сократило размер.
- FIND, POSITION, ASSOC и RASSOC с аргументами неизменной последовательности, содержащими символы в роли ключей, теперь компилируются для поиска с применением хешей, избавленных от коллизий.
- На системах x86–64 в компиляторе обеспечено устранение перехода jump-to-jump.
- Исправления ошибок:
- Восстановлена возможность наследования и от SEQUENCE и от SB-MOP: FUNCALLABLE-STANDARD-OBJECT.
- COERCE не будет конвертировать лямбда формы в функции если заданное название типа будет подклассом FUNCTION.
- LOG с аргументами double-float и рациональными аргументами (в любом порядке) не теряет точности через промежуточный single-float-аргумент.
- LOG по основанию 2 целочисленной степени двойки вероятнее всего даст математически точный ответ.
- LOG на рациональных числах близких к единице с числителем или знаменателем близким к степени двойки будут использовать log1p и, таким образом, будет терять меньше точности.
- Внешний формат utf-8 с Unix-окончаниями строки обновляет информацию его размеров символов при применении быстрого пути для буферов ASCII-символов.
- Не печаталось содержимое вероятно более не валидных динамически существующих cons-ов в методе PRINT-OBJECT для THREAD объектов.
- Постоянное размещение внешних точек входа для функций перед любыми другими локальными функциями.
- Удаление неактивных замечаний оптимизации для закавыченных форм и единичных вызовов APPEND на высокой скорости.
- Бесконечный цикл в COPY-SEQ на массивах нулевой длины с типом элементов NIL.
- Исправление компиляции конструкторов структур не верхнего уровня.
- Исправления в SB-SIMD:
- Улучшение проверки границ в SB-SIMD.
- Исправление SB-SIMD AVX f64.4-reverse.
- Исправление тасования SB-SIMD на AVX и SSE2.
- Исправление времени жизни в sse+xmm0 VOP-ах.
Источник: http://www.opennet.ru/opennews/art.shtml? num=60694
© OpenNet