La version SBCL 2.4.1 (Steel Bank Common Lisp), une implémentation gratuite du langage de programmation Common Lisp, a été publiée. Le code du projet est écrit en Common Lisp et C, et est distribué sous licence BSD.
Dans la nouvelle version :
- Ajout d'une prise en charge partielle des en-têtes d'instance compacts au garbage collector parallèle à l'aide de l'algorithme de marquage de région.
- Pour les fonctions avec des types de retour déclarés, les grands modes d'optimisation SAFETY et DEBUG 3 garantissent que la vérification de type est effectuée sur les valeurs de retour.
- Sur la plateforme FreeBSD, la liaison avec libpthread est implémentée et la randomisation de l'espace d'adressage (ASLR) est désactivée.
- L'assembly sur les architectures riscv et ppc 64 bits a été restauré.
- La prise en charge de Fastrem-32 a été implémentée pour toutes les plates-formes (pour des calculs optimisés FLOOR).
- Correction d'un bug qui entraînait le vidage des lignes déplacées après le compactage de la mémoire par le garbage collector parallèle de région de marquage.
- Le problème de bouclage du compilateur lors du traitement de certaines constructions avec des types SATISFIES a été résolu.
- Les tables de hachage utilisées dans diverses parties du système (packages, tables Unicode) sont converties pour utiliser des fonctions de hachage exemptes de collisions (parfaites).
- La macro TYPECASE pour les hiérarchies de structure de classe est implémentée à l'aide d'un hachage sans collision.
- Pour optimiser les performances, les contrôles de limites ont été supprimés pour les index avec des décalages constants, où le compilateur sait que l'index est inférieur à la différence entre la taille et le décalage.
- Le compilateur prend en compte des données d'optimisation DIGIT-CHAR supplémentaires.
- Le compilateur a implémenté la possibilité d'exclure les valeurs intermédiaires dans certains appels APPLY, CONCATENATE et MAKE-ARRAY pour des arguments construits à partir de séquences avec de nouvelles contre-modifications.
- Le fonctionnement de la boucle « (LOOP FOR X IN (REVERSE LIST)...) » a été accéléré, ce qui utilise désormais moins de contre.
- La boucle "(LOOP... APPEND...)" est plus compacte et fait moins de travail lors de l'ajout de NIL.
- Les vérifications de type pour divers tableaux ont été accélérées et raccourcies.
Source: opennet.ru