La version 2.3.9 de SBCL (Steel Bank Common Lisp), une implémentation libre du langage de programmation Common Lisp, a été publiée. Le code du projet est écrit en Common Lisp et en C, et est distribué sous licence BSD.
Dans la nouvelle version :
- L'allocation de pile via DYNAMIC-EXTENT s'applique désormais non seulement à la liaison initiale, mais également à toutes les valeurs que la variable peut prendre (par exemple via SETQ). Cela permet, par exemple, de simplifier la construction de structures complexes ou récursives dans la pile par itérations.
- Certaines interfaces du module SB-POSIX ont été mises en conformité avec la spécification, et un résultat NULL de la bibliothèque C est considéré comme une erreur si et seulement si errno est modifié par l'appel. Dans ce cas, le signal SYSCALL-ERROR est généré.
- Amélioration du fonctionnement des macros DO-PASSWDS et DO-GROUPS dans le module SB-POSIX. Ces macros sont conçues pour un travail sécurisé avec la base de données des mots de passe et des groupes.
- Le support des plateformes Darwin x86 et PowerPC a été restauré (merci à Kirill A. Korinsky, Sergey Fedorov et barracuda156).
- Correction d'une compilation incorrecte survenue en raison d'une inférence de type erronée lors de la multiplication des valeurs fixnum par des valeurs fractionnaires.
- Correction d'une erreur de compilateur qui se produisait dans certains cas lors de la vérification des valeurs 64 bits signées et non signées.
- Correction d'une erreur de compilateur dans le cas où l'argument ":INITIAL-CONTENTS" de MAKE-ARRAY est une constante non séquentielle.
- Correction d'un bug avec la compilation des fonctions de pliage dans une constante d'une séquence donnée lors du retour d'une fausse valeur à partir des fonctions ":TEST" ou ":KEY".
- Correction d'un bug dans la compilation de fonctions de tableau ou de séquence avec des arguments qui impliquent des tailles de séquence très grandes.
- Correction d'une erreur de compilateur qui se produisait lorsque la valeur de retour de ADJUST-ARRAY n'était pas utilisée.
- L'inférence par le compilateur des types de fonctions qui peuvent être propagés vers l'arrière via la représentation intermédiaire a été optimisée.
- Inférence de type améliorée pour LDB, LOGBITP et RATIO.
- Des optimisations ont été apportées pour éliminer les vérifications de limites inutiles pour de nombreux cas de comparaison transitive.
Source: opennet.ru
