Sortie de SBCL 2.3.11, une implémentation du langage Common Lisp.

Publication de la version SBCL 2.3.11 (Steel Bank Common Lisp), 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 la licence BSD. Dans cette nouvelle version :

  • Petites incompatibilités :
    • Les flux avec le paramètre external-format défini à l'aide de « :REPLACEMENT » appliqueront les données de remplacement une seule fois dans le flux, ce qui entraîne des erreurs de décodage (et non pas, comme dans certains cas, une fois pour chaque séquence d'octets qui n'est pas une position de départ valide pour ce external-format).
    • Les spécificateurs external-format utilisant des variantes non prises en charge ou non reconnues signaleront désormais une erreur.
  • Améliorations :
    • Lors de l'appel des fonctions généralisées utilisant une méthode de combinaison standard ou courte, en l'absence de méthodes principales applicables, le système appellera la fonction généralisée SB-PCL:NO-PRIMARY-METHOD, dont le comportement standard consiste à signaler une erreur. Les utilisateurs peuvent définir des méthodes pour cette fonction généralisée.
    • Les formats externes prennent désormais en charge les variantes de nouvelle ligne pour les encodages à un octet et utf-8.
    • Les erreurs de codage et de décodage des symboles signalées par les fonctions de flux ou d'octets prennent désormais en charge le redémarrage USE-VALUE pour les gestionnaires fournissant des remplacements pour l'entrée ou la sortie.
    • READ-SEQUENCE et WRITE-SEQUENCE prennent en charge les séquences définies par l'utilisateur ; l'implémentation standard traite les éléments un par un, lisant ou écrivant un octet ou un symbole dans/le flux respectivement.
  • Optimisations :
    • Les formats externes avec :REPLACEMENT ne lient plus les gestionnaires pour les erreurs des fonctions de conversion, ce qui devrait réduire le nombre d'opérations cons et améliorer les performances.
    • Si :EXTERNAL-FORMAT est utilisé comme argument pour STRING-TO-OCTETS ou OCTETS-TO-STRING et est une constante au moment de la compilation, alors le format externe est résolu au moment du chargement, et non à chaque appel.
    • Le compilateur peut restreindre les types d'arguments pour certaines fonctions en fonction du type de valeur déduit ou implicite retourné par cette fonction.
    • Le compilateur réduit le nombre de vérifications de type redondantes dans des fonctions telles que ASSOC et GETF.
  • Corrections de bogues :
    • OCTETS-TO-STRING signale correctement ou applique des remplacements lorsqu'il utilise des formats externes à un octet pour des encodages peu répandus (par exemple, iso-8859-3), au lieu de prendre des bits à l'adresse NIL et de convertir ces bits en caractères.
    • FILE-STRING-LENGTH renvoie désormais NIL si les valeurs d'entrée ne sont pas encodées dans un format de flux externe.
    • Les formats externes multioctets de tableau (EUC-JP, Shift-JIS, GBK) prennent maintenant en compte le caractère de substitution (dans le format externe ou par redémarrage) lors de l'encodage en octets.
    • La conversion à partir d'octets en utilisant les formats externes UCS-2, UCS-4 et UTF-32 ne lit plus la fin du tableau d'octets avec un nombre non entier d'unités de deux ou quatre octets.
    • La conversion à partir d'octets en utilisant les formats externes UCS-2, UCS-4 et UTF-32 renvoie maintenant une chaîne simple, comme l'exige la définition du type OCTETS-TO-STRING.
    • L'application d'un format externe incorrect pour OPEN ou WITH-OPEN-FILE (ou MAKE-FD-STREAM interne) ne conduit plus à une fuite de descripteur de fichier.
    • SB-ROTATE-BYTE définit les spécifications BYTE en dehors de la valeur autorisée avant d'exécuter cons très grands entiers pour utiliser des masques et des décalages.
    • Correction de la sortie de type lors de la compilation des formes SB-ROTATE-BYTE avec une POSITION non nulle dans la définition de byte.
    • Correction de plusieurs erreurs d'assembleur lors de la compilation de MAKE-ARRAY, MAKE-STRING et d'autres avec une taille constante importante.
    • Correction d'une erreur interne lors de la compilation (SETF-SBIT) avec un index constant important.
    • Correction d'une erreur interne du compilateur pour une fonction lambda avec une liste de paramètres incorrecte dans LABELS.
    • Correction d'une erreur interne du compilateur lors de la compilation de certaines formes LABELS récursives infinies.
    • Correction d'une erreur interne du compilateur lorsqu'il tente d'incorporer un saut vers une étiquette déjà supprimée.
    • FILL-POINTER ne doit jamais être négatif.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster