La version SBCL 2.3.9 (Steel Bank Common Lisp) a été publiée, une implémentation libre du langage de programmation Common Lisp. Le code du projet est écrit en Common Lisp et en C, et est distribué sous licence BSD.
Dans cette nouvelle version :
- L'allocation de la pile par DYNAMIC-EXTENT s'applique désormais non seulement à la liaison initiale, mais aussi à toutes les valeurs que peut prendre une variable (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 le résultat NULL de la bibliothèque C est considéré comme une erreur uniquement si errno est modifié par l'appel. Dans ce cas, un signal SYSCALL-ERROR sera généré.
- Le fonctionnement des macros DO-PASSWDS et DO-GROUPS dans le module SB-POSIX a été amélioré. Ces macros sont destinées à un usage sécurisé avec la base de données de mots de passe et de groupes.
- Le support des plateformes Darwin x86 et PowerPC a été rétabli (merci à Kirill A. Korinsky, Sergey Fedorov et barracuda156).
- Une erreur de compilation causée par une sortie de type incorrect lors de la multiplication de valeurs fixnum par des valeurs fractionnaires a été corrigée.
- Une erreur du compilateur se produisant dans certains cas lors de la vérification des valeurs 64 bits signées et non signées a été corrigée.
- Une erreur du compilateur a été corrigée lorsque l'argument «:INITIAL-CONTENTS» pour MAKE-ARRAY est une constante non-séquence.
- Une erreur de compilation des fonctions de réduction en constante d'une séquence donnée a été corrigée lors du retour d'une valeur fausse par les fonctions «:TEST» ou «:KEY».
- Une erreur de compilation des fonctions de tableau ou de séquences avec des arguments impliquant des tailles de séquence très grandes a été corrigée.
- Une erreur du compilateur se produisant lorsque la valeur retournée par ADJUST-ARRAY n'est pas utilisée a été corrigée.
- La sortie des types des fonctions par le compilateur, qui peuvent être propagés en arrière à travers la représentation intermédiaire, a été optimisée.
- La sortie des types pour LDB, LOGBITP et RATIO a été améliorée.
- Des optimisations liées à l'élimination de vérifications de limites superflues dans de nombreux cas de comparaisons transitives ont été effectuées.
Source : opennet.ru
