Opublikowano wydanie SBCL 2.4.2 (Steel Bank Common Lisp), wolnej implementacji języka programowania Common Lisp. Kod projektu został napisany w językach Common Lisp i C, a jego dystrybucja odbywa się na podstawie licencji BSD.
W nowym wydaniu:
- Kompilacja systemu samego siebie na systemach x86-64 z Linuxem teraz produkuje bitowo identyczne krzyżowe kompilowane fasl na tych systemach, gdzie gospodarzem kompilacji jest cmucl, ccl, clisp lub sam sbcl.
- Optymalizacje:
- Wielka liczba wewnętrznych tabel, w szczególności tych, które odnoszą się do wsparcia Unicode, została przetłumaczona na wykorzystanie funkcji haszujących pozbawionych kolizji (perfect), co poprawiło szybkość i zmniejszyło rozmiar.
- FIND, POSITION, ASSOC i RASSOC z argumentami niezmiennej sekwencji zawierającej symbole jako klucze teraz są kompilowane do poszukiwania z użyciem haszy pozbawionych kolizji.
- Na systemach x86-64 w kompilatorze zapewniono eliminację przejścia jump-to-jump.
- Poprawki błędów:
- Przywrócono możliwość dziedziczenia zarówno od SEQUENCE, jak i od SB-MOP:FUNCALLABLE-STANDARD-OBJECT.
- COERCE nie będzie konwertować form lambda na funkcje, jeśli zadana nazwa typu będzie podklasą FUNCTION.
- LOG z argumentami double-float i argumentami racjonalnymi (w dowolnej kolejności) nie traci precyzji przez pośredni argument typu single-float.
- LOG o podstawie 2 dla całkowitych potęg dwójki prawdopodobnie da matematycznie dokładną odpowiedź.
- LOG na liczbach racjonalnych bliskich jedności z liczniku lub mianowniku bliskim potędze dwójki będzie używał log1p i w ten sposób straci mniej precyzji.
- Zewnętrzny format utf-8 z zakończeniami linii Unix aktualizuje informacje o rozmiarach jego symboli przy użyciu szybkiej ścieżki dla buforów znaków ASCII.
- Nie drukowano zawartości prawdopodobnie już nieprawidłowych dynamicznie istniejących consów w metodzie PRINT-OBJECT dla obiektów THREAD.
- Stałe umiejscowienie zewnętrznych punktów wejścia dla funkcji przed jakimikolwiek innymi lokalnymi funkcjami.
- Usunięcie nieaktywnych uwag optymalizacyjnych dla zacytowanych form i pojedynczych wywołań APPEND przy wysokiej prędkości.
- Nieskończona pętla w COPY-SEQ na tablicach o zerowej długości z typem elementów NIL.
- Poprawa kompilacji konstruktorów struktur nie będących najwyższym poziomem.
- Poprawki w SB-SIMD:
- Udoskonalenie sprawdzania granic w SB-SIMD.
- Poprawka SB-SIMD AVX f64.4-reverse.
- Poprawka tasowania SB-SIMD na AVX i SSE2.
- Poprawka czasu życia w VOP-ach sse+xmm0.
Źródło: opennet.ru
