Wydanie SBCL 2.4.1, implementacji języka Common Lisp

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

Dodaj komentarz