Opublikowano wersję SBCL 2.3.9 (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:
- Alokacja stosu poprzez DYNAMIC-EXTENT dotyczy teraz nie tylko początkowego powiązania, ale także wszystkich wartości, jakie może przyjąć zmienna (na przykład poprzez SETQ). Umożliwia to na przykład uproszczenie konstrukcji złożonych lub rekurencyjnych struktur w stosie poprzez iterację.
- Niektóre interfejsy w module SB-POSIX są dostosowane do specyfikacji, a wynik NULL z biblioteki C jest uważany za błąd wtedy i tylko wtedy, gdy wywołanie zmienia errno. W takim przypadku zostanie wygenerowany sygnał SYSCALL-ERROR.
- Poprawione działanie makr DO-PASSWDS i DO-GROUPS w module SB-POSIX. Te makra zaprojektowano tak, aby bezpiecznie współpracowały z bazą danych haseł i grup.
- Przywrócono obsługę platform Darwin x86 i PowerPC (dzięki Kirilla A. Korinsky'ego, Sergeya Fedorova i barracuda156).
- Naprawiono niepoprawną kompilację, która wystąpiła z powodu błędnego wnioskowania o typie podczas mnożenia wartości fixnum przez wartości ułamkowe.
- Naprawiono błąd kompilatora, który występował w niektórych przypadkach podczas sprawdzania podpisanych i niepodpisanych wartości 64-bitowych.
- Naprawiono błąd kompilatora, gdy argument „:INITIAL-CONTENTS” funkcji MAKE-ARRAY jest stałą niebędącą sekwencją.
- Naprawiono błąd w kompilacji funkcji splotu do danej stałej sekwencji podczas zwracania fałszywej wartości z funkcji „:TEST” lub „:KEY”.
- Naprawiono błąd podczas kompilowania funkcji tablicowych lub sekwencji z argumentami, które sugerują bardzo duże rozmiary sekwencji.
- Naprawiono błąd kompilatora występujący, gdy wartość zwrócona z ADJUST-ARRAY nie jest używana.
- Zoptymalizowane wnioskowanie kompilatora o typach funkcji, które można propagować wstecz poprzez reprezentację pośrednią.
- Ulepszone wnioskowanie o typie dla LDB, LOGBITP i RATIO.
- Wprowadzono optymalizacje, aby wyeliminować niepotrzebne sprawdzanie granic w wielu przypadkach porównań przechodnich.
Źródło: opennet.ru