Wydanie SBCL 2.3.9, implementacji języka Common Lisp

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

Dodaj komentarz