Se ha publicado la versión SBCL 2.4.2 (Steel Bank Common Lisp), una implementación libre del lenguaje de programación Common Lisp. El código del proyecto está escrito en los lenguajes Common Lisp y C, y se distribuye bajo la licencia BSD.
En esta nueva versión:
- La compilación de la propia system en arquitecturas x86-64 con Linux ahora produce fasl que son idénticos a nivel de bits cuando el host de construcción es cmucl, ccl, clisp o el mismo sbcl.
- Optimizaciones:
- Un gran número de tablas internas, en particular aquellas relacionadas con el soporte de Unicode, se han convertido para usar funciones hash sin colisiones (perfectas), lo que ha mejorado la velocidad y reducido el tamaño.
- FIND, POSITION, ASSOC y RASSOC con argumentos de secuencia inmutable que contienen símbolos como claves ahora se compilan para búsqueda utilizando hashes sin colisiones.
- En sistemas x86-64, el compilador ha eliminado la transición de salto a salto.
- Correcciones de errores:
- Se ha restaurado la capacidad de heredar tanto de SEQUENCE como de SB-MOP:FUNCALLABLE-STANDARD-OBJECT.
- COERCE no convertirá las formas lambda en funciones si el tipo de nombre especificado es una subclase de FUNCTION.
- LOG con argumentos double-float y argumentos racionales (en cualquier orden) no pierde precisión a través de un argumento intermedio de tipo single-float.
- LOG en base 2 de una potencia entera de dos probablemente dará una respuesta matemáticamente precisa.
- LOG en números racionales cercanos a uno con numeradores o denominadores cercanos a potencias de dos utilizará log1p y, por lo tanto, perderá menos precisión.
- El formato externo utf-8 con terminaciones de línea Unix actualiza la información sobre el tamaño de sus caracteres al aplicar una ruta rápida para buffers de caracteres ASCII.
- No se imprimió el contenido de cons-dinámicos probablemente no válidos en el método PRINT-OBJECT para objetos THREAD.
- Ubicación constante de puntos de entrada externos para funciones antes de cualquier otra función local.
- Eliminación de notas de optimización inactivas para formas entre comillas y llamadas unitarias a APPEND a alta velocidad.
- Bucle infinito en COPY-SEQ en arreglos de longitud cero con tipo de elementos NIL.
- Corrección en la compilación de constructores de estructuras no de nivel superior.
- Correcciones en SB-SIMD:
- Mejora de la verificación de límites en SB-SIMD.
- Corrección de SB-SIMD AVX f64.4-reverse.
- Corrección en la barajadura de SB-SIMD en AVX y SSE2.
- Corrección de la duración de vida en VOPs sse+xmm0.
Fuente: opennet.ru
