Lanzamento de SBCL 2.3.11, unha implementación da linguaxe Common Lisp

Publicouse a versión 2.3.11 de SBCL (Steel Bank Common Lisp), unha implementación libre da linguaxe de programación Common Lisp. O código do proxecto está escrito en Common Lisp e C e distribúese baixo a licenza BSD. Esta versión inclúe:

  • Incompatibilidades menores:
    • As transmisións con formato externo definido con ":REPLACEMENT" aplicarán os datos de substitución unha vez por transmisión, o que provocará erros de descodificación (en lugar de, como nalgúns casos, unha vez por secuencia de bytes, cada un dos cales non é unha posición inicial de carácter válida para ese formato externo).
    • Os especificadores de formato externo agora xerarán un erro ao usar variantes non compatibles ou non recoñecidas.
  • Melloras:
    • Ao enviar funcións xenéricas usando o método predeterminado ou de combinación curta, se non hai métodos primarios aplicables, o sistema chamará á función xenérica SB-PCL:NO-PRIMARY-METHOD, cuxo comportamento predeterminado é sinalar un erro. Os usuarios poden definir métodos para esta función xenérica.
    • Os formatos externos agora admiten variantes de salto de liña para codificacións dun só byte e UTF-8.
    • Os erros de codificación e descodificación de caracteres sinalados por funcións de fluxo ou octeto agora admiten o reinicio USE-VALUE para xestores que proporcionan substitucións para a entrada ou a saída.
    • READ-SEQUENCE e WRITE-SEQUENCE admiten secuencias definidas polo usuario; a implementación predeterminada procésaas elemento por elemento, lendo ou escribindo un byte ou carácter cara a ou desde o fluxo, respectivamente.
  • Optimizacións:
    • Os formatos externos con :REPLACEMENT xa non vinculan os xestores para erros de funcións de conversión, o que debería reducir o número de operacións de conversión e mellorar o rendemento.
    • Se :EXTERNAL-FORMAT é un argumento para STRING-TO-OCTETS ou OCTETS-TO-STRING e é unha constante en tempo de compilación, o formato externo resólvese no tempo de carga en lugar de en cada chamada.
    • O compilador pode restrinxir os tipos de argumentos para algunhas funcións baseándose no tipo inferido ou implícito do valor devolto pola función.
    • O compilador reduce o número de comprobacións de tipo redundantes en funcións como ASSOC e GETF.
  • Corrección de erros:
    • OCTETS-TO-STRING sinala ou aplica substitucións correctamente cando se usan formatos externos dun só byte para codificacións menos comúns (por exemplo, iso-8859-3), en lugar de tomar bits do enderezo NIL e convertelos en caracteres.
    • FILE-STRING-LENGTH agora devolve NIL se os valores de entrada non están codificados nun formato de fluxo externo.
    • Os formatos externos tabulares multibyte (EUC-JP, Shift-JIS, GBK) agora teñen en conta o carácter de substitución (no formato externo ou mediante reinicio) ao codificar en octetos.
    • A conversión de octetos mediante formatos externos UCS-2, UCS-4 e UTF-32 xa non le o final dunha matriz de octetos cun número non enteiro de unidades de dous ou catro bytes.
    • A conversión de octetos usando formatos externos UCS-2, UCS-4 e UTF-32 agora devolve unha cadea simple, como require a definición do tipo OCTETS-TO-STRING.
    • Empregar un formato de argumento externo non válido para OPEN ou WITH-OPEN-FILE (ou internamente MAKE-FD-STREAM) xa non produce unha fuga do descritor de ficheiro.
    • SB-ROTATE-BYTE especifica a especificación de BYTE fóra de límites antes de usar enteiros moi grandes para o uso de máscaras e desprazamentos.
    • Corrixiuse a inferencia de tipo ao compilar formularios SB-ROTATE-BYTE con POSITION distinto de cero na definición de bytes.
    • Corrixíronse varios erros do ensamblador ao compilar MAKE-ARRAY, MAKE-STRING e outras variables de tamaño constante grande.
    • Corrixiuse un erro de compilación interno (SETF-SBIT) cun índice constante grande.
    • Corrixiuse un erro interno do compilador para a función lambda cunha lista de parámetros non válida en LABELS.
    • Corrixiuse un erro interno do compilador ao compilar algunhas formas infinitamente recursivas de LABELS.
    • Corrixiuse un erro interno do compilador ao tentar incorporar un salto a unha etiqueta xa eliminada.
    • FILL-POINTER nunca debería ser negativo.

Fonte: opennet.ru

Compre hospedaxe fiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra aloxamento web fiable con protección DDoS, servidores VPS VDS | ProHoster