Opublikowano wersję SBCL 2.4.1 (Steel Bank Common Lisp), bezpłatną implementację języka programowania Common Lisp. Kod projektu napisany jest w Common Lisp i C i jest rozpowszechniany na licencji BSD.
W nowym wydaniu:
- Dodano częściową obsługę nagłówków instancji kompaktowych do równoległego modułu zbierającego elementy bezużyteczne przy użyciu algorytmu mark-region.
- W przypadku funkcji z zadeklarowanymi typami zwracanymi, duże tryby optymalizacji SAFETY i DEBUG 3 zapewniają, że sprawdzanie typu jest przeprowadzane na zwracanych wartościach.
- Na platformie FreeBSD zaimplementowano łączenie z biblioteką libpthread i wyłączono randomizację przestrzeni adresowej (ASLR).
- Przywrócono montaż na 64-bitowych architekturach riscv i ppc.
- Na wszystkich platformach zaimplementowano obsługę Fastrem-32 (dla zoptymalizowanych obliczeń FLOOR).
- Naprawiono błąd, który powodował ponowne opróżnianie przeniesionych linii po zagęszczeniu pamięci przez równoległy moduł wyrzucania elementów bezużytecznych w regionie znacznika.
- Rozwiązano problem z zapętlaniem kompilatora podczas przetwarzania niektórych konstrukcji z typami SATISFIES.
- Tabele mieszające używane w różnych częściach systemu (pakiety, tabele Unicode) są konwertowane tak, aby korzystały z funkcji skrótu pozbawionych kolizji (idealnie).
- Makro TYPECASE dla hierarchii struktury klas jest implementowane przy użyciu bezkolizyjnego skrótu.
- Aby zoptymalizować wydajność, usunięto sprawdzanie granic dla indeksów ze stałymi przesunięciami, w przypadku których kompilator wie, że indeks jest mniejszy niż różnica między rozmiarem a przesunięciem.
- Kompilator uwzględnia dodatkowe dane optymalizacyjne DIGIT-CHAR.
- Kompilator zaimplementował możliwość wykluczania wartości pośrednich w niektórych wywołaniach APPLY, CONCATENATE i MAKE-ARRAY dla argumentów zbudowanych z sekwencji ze świeżymi modyfikacjami cons.
- Przyspieszono działanie pętli „(LOOP FOR X IN (REVERSE LIST) ...)”, która wykorzystuje teraz mniej wad.
- Pętla „(LOOP... DOŁĄCZ...)” jest bardziej zwarta i wykonuje mniej pracy podczas dodawania NIL.
- Sprawdzanie typu dla różnych tablic zostało przyspieszone i skrócone.
Źródło: opennet.ru