Opublikowano wydanie SBCL 2.3.9 (Steel Bank Common Lisp), wolnej realizacji 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:
- Ustalanie stosu za pomocą DYNAMIC-EXTENT jest teraz stosowane nie tylko do pierwotnego powiązania, ale także do wszystkich wartości, które może przyjąć zmienna (na przykład przez SETQ). Umożliwia to na przykład uproszczenie budowy złożonych lub rekurencyjnych struktur na stosie poprzez iteracje.
- Niektóre interfejsy w module SB-POSIX zostały dostosowane do specyfikacji, a wynik NULL z biblioteki C uznawany jest za błąd wtedy i tylko wtedy, gdy errno zostanie zmienione przez wywołanie. W takim przypadku wygenerowany zostanie sygnał SYSCALL-ERROR.
- Udoskonalono działanie makr DO-PASSWDS i DO-GROUPS w module SB-POSIX. Te makra zostały zaprojektowane do bezpiecznej pracy z bazą danych haseł i grup.
- Przywrócono wsparcie dla platform Darwin x86 i PowerPC (dziękujemy Kirillowi A. Korinskiemu, Sergejowi Fiodorowowi i barracuda156).
- Naprawiono problem z nieprawidłowym kompilowaniem, który występował z powodu błędnego wypisywania typu podczas mnożenia wartości fixnum przez wartości zmiennoprzecinkowe.
- Naprawiono błąd kompilatora, który występował w niektórych przypadkach podczas sprawdzania wartości 64-bitowych ze znakiem i bez znaku.
- Naprawiono błąd kompilatora, gdy argument ":INITIAL-CONTENTS" dla MAKE-ARRAY jest stałą, która nie jest sekwencją.
- Naprawiono błąd podczas kompilowania funkcji redukcji do stałej zadanej sekwencji przy zwracaniu fałszywej wartości z funkcji ":TEST" lub ":KEY".
- Naprawiono błąd kompilacji funkcji tablic lub sekwencji z argumentami sugerującymi bardzo duże rozmiary sekwencji.
- Naprawiono błąd kompilatora, który występował, gdy nie używano wartości zwracanej przez ADJUST-ARRAY.
- Zoptymalizowano wypisywanie typów funkcji przez kompilator, które mogą być propagowane wstecz (propagated backwards) przez pośrednią reprezentację.
- Udoskonalono wypisywanie typów dla LDB, LOGBITP i RATIO.
- Wprowadzono optymalizacje związane z wyłączeniem zbędnych sprawdzeń granic dla wielu przypadków porównań tranzytywnych.
Źródło: opennet.ru
