Opublikowano wydanie SBCL 2.4.1 (Steel Bank Common Lisp), wolnej implementacji języka programowania Common Lisp. Kod projektu napisany jest w językach Common Lisp i C i jest rozpowszechniany na licencji BSD.
W nowym wydaniu:
- W równoległym zbieraczu śmieci, wykorzystującym algorytm mark-region, dodano częściowe wsparcie dla nagłówków kompaktowych instancji.
- Dla funkcji z zadeklarowanymi typami zwracanymi w trybach optymalizacji z dużymi wartościami SAFETY oraz w trybie DEBUG 3 zapewniono wykonywanie sprawdzenia typu dla wartości zwracanych.
- Na platformie FreeBSD zaimplementowano kompozycję z libpthread i wyłączono randomizację przestrzeni adresowej (ASLR).
- Przywrócono kompilację na 64-bitowych architekturach riscv i ppc.
- Dla wszystkich platform zaimplementowano wsparcie fastrem-32 (do zoptymalizowanych obliczeń FLOOR).
- Usunięto błąd, który prowadził do ponownego czyszczenia przeniesionych wierszy po kompresji pamięci przez równoległy zbieracz śmieci mark-region.
- Rozwiązano problem z zapętleniem kompilatora podczas przetwarzania niektórych konstrukcji z typami SATISFIES.
- Tablice haszujące, używane w różnych częściach systemu (pakiety, tabele Unicode), zostały przekształcone do użycia funkcji haszujących pozbawionych kolizji (perfect).
- Makar TYPECASE dla hierarchii struktur klas zaimplementowano z użyciem hasha bez kolizji.
- W celu optymalizacji wydajności usunięto sprawdzenia granic dla indeksów z stałymi przesunięciami, gdy kompilator wie, że indeks jest mniejszy od różnicy między rozmiarem a przesunięciem.
- W kompilatorze uwzględniono dodatkowe dane o optymalizacji DIGIT-CHAR.
- W kompilatorze zaimplementowano możliwość wykluczania wartości pośrednich w niektórych wywołaniach APPLY, CONCATENATE i MAKE-ARRAY dla argumentów bazujących na sekwencjach z nowymi modyfikacjami cons.
- Przyspieszono działanie pętli „(LOOP FOR X IN (REVERSE LIST) …)”, która teraz wykorzystuje mniej cons.
- Pętla „(LOOP … APPEND …)” stała się bardziej kompaktowa i wykonuje mniej pracy przy dodawaniu NIL.
- Przyspieszono i skrócono sprawdzenia typów różnych tablic.
Źródło: opennet.ru
