Se ha publicado el lanzamiento de SBCL 2.3.9 (Steel Bank Common Lisp), una implementación libre del lenguaje de programación Common Lisp. El código del proyecto está escrito en Common Lisp y C, y se distribuye bajo licencia BSD.
En esta nueva versión:
- La asignación de la pila a través de DYNAMIC-EXTENT ahora se aplica no solo a la vinculación inicial, sino a todos los valores que puede tomar la variable (por ejemplo, a través de SETQ). Esto permite, por ejemplo, simplificar la construcción de estructuras complejas o recursivas en la pila mediante iteraciones.
- Algunas interfaces en el módulo SB-POSIX se han ajustado a la especificación y el resultado NULL de la biblioteca C se considera un error solo cuando errno ha sido modificado por una llamada. En este caso, se generará la señal SYSCALL-ERROR.
- Se ha mejorado el funcionamiento de los macros DO-PASSWDS y DO-GROUPS en el módulo SB-POSIX. Estos macros están diseñados para trabajar de manera segura con la base de datos de contraseñas y grupos.
- Se ha restaurado el soporte para las plataformas Darwin x86 y PowerPC (agradecemos a Kirill A. Korinsky, Sergey Fedorov y barracuda156).
- Se ha corregido una compilación incorrecta que ocurría debido a una salida de tipo errónea al multiplicar valores fixnum por valores de punto flotante.
- Se ha corregido un error en el compilador que ocurría en algunos casos al verificar valores de 64 bits con signo y sin signo.
- Se ha corregido un error en el compilador en el caso de que el argumento ':INITIAL-CONTENTS' para MAKE-ARRAY sea una constante que no es una secuencia.
- Se ha corregido un error de compilación de funciones que aplastaban (fold) a una constante de secuencia dada al retornar un valor falso de las funciones ':TEST' o ':KEY'.
- Se ha corregido un error de compilación de funciones de arreglos o secuencias con argumentos que implican tamaños de secuencia muy grandes.
- Se ha corregido un error en el compilador que ocurría cuando no se utilizaba el valor devuelto de ADJUST-ARRAY.
- Se ha optimizado la salida de tipos de funciones en el compilador, que pueden ser propagados hacia atrás a través de la representación intermedia.
- Se ha mejorado la salida de tipos para LDB, LOGBITP y RATIO.
- Se han realizado optimizaciones relacionadas con la eliminación de comprobaciones de límites innecesarias en muchos casos de comparaciones transitivas.
Fuente: opennet.ru
