Se ha publicado el lanzamiento de SBCL 2.3.9 (Steel Bank Common Lisp), una implementación gratuita del lenguaje de programación Common Lisp. El código del proyecto está escrito en Common Lisp y C, y se distribuye bajo la licencia BSD.
En el nuevo lanzamiento:
- La asignación de pila a través de DYNAMIC-EXTENT ahora se aplica no solo al enlace inicial, sino también a todos los valores que la variable puede tomar (por ejemplo, a través de SETQ). Esto permite, por ejemplo, simplificar la construcción de estructuras complejas o recursivas en una pila mediante iteración.
- Algunas interfaces en el módulo SB-POSIX están diseñadas para cumplir con la especificación, y un resultado NULL de la biblioteca C se considera un error si y solo si la llamada cambia errno. En este caso, se generará la señal SYSCALL-ERROR.
- Funcionamiento mejorado de las macros DO-PASSWDS y DO-GROUPS en el módulo SB-POSIX. Estas macros están diseñadas para funcionar de forma segura con la contraseña y la base de datos del grupo.
- Se ha restablecido el soporte para las plataformas Darwin x86 y PowerPC (gracias a Kirill A. Korinsky, Sergey Fedorov y barracuda156).
- Se corrigió la compilación incorrecta que ocurría debido a una inferencia de tipos errónea al multiplicar valores de fixnum por valores fraccionarios.
- Se corrigió un error del compilador que ocurría en algunos casos al verificar valores de 64 bits con y sin signo.
- Se corrigió un error del compilador cuando el argumento ":INITIAL-CONTENTS" de MAKE-ARRAY es una constante que no es de secuencia.
- Se corrigió un error al compilar funciones de convolución en una constante de secuencia determinada al devolver un valor falso de las funciones “:TEST” o “:KEY”.
- Se corrigió un error al compilar funciones de matriz o secuencias con argumentos que implican tamaños de secuencia muy grandes.
- Se corrigió un error del compilador que ocurre cuando no se usa el valor devuelto por ADJUST-ARRAY.
- Inferencia optimizada del compilador de tipos de funciones que se pueden propagar hacia atrás a través de una representación intermedia.
- Inferencia de tipos mejorada para LDB, LOGBITP y RATIO.
- Se han realizado optimizaciones para eliminar comprobaciones de límites innecesarias en muchos casos de comparaciones transitivas.
Fuente: opennet.ru