Foi lançado o SBCL 2.4.1 (Steel Bank Common Lisp), uma implementação livre da linguagem de programação Common Lisp. O código do projeto é escrito nas linguagens Common Lisp e C, e é distribuído sob a licença BSD.
No novo lançamento:
- O coletor de lixo paralelo, que utiliza o algoritmo mark-region, agora possui suporte parcial para cabeçalhos de instâncias compactas.
- Para funções com tipos de retorno declarados em modos de otimização com altos valores de SAFETY e no modo DEBUG 3, foi garantida a verificação de tipo para os valores de retorno.
- Na plataforma FreeBSD, foi implementada a ligação com libpthread e a randomização do espaço de endereçamento (ASLR) foi desativada.
- A compilação em arquiteturas de 64 bits riscv e ppc foi restaurada.
- Foi implementado suporte a fastrem-32 (para cálculos otimizados de FLOOR) em todas as plataformas.
- Foi corrigido um erro que causava a limpeza repetida de linhas movidas após a compactação de memória pelo coletor de lixo paralelo mark-region.
- Um problema de looping do compilador ao processar algumas construções com tipos SATISFIES foi solucionado.
- As tabelas hash utilizadas em várias partes do sistema (pacotes, tabelas Unicode) foram convertidas para usar funções hash isentas de colisões (perfect).
- O macro TYPECASE para hierarquias de estruturas de classes foi implementado utilizando uma hash isenta de colisões.
- Para otimizar o desempenho, foram removidas as verificações de limites para índices com deslocamentos constantes, quando o compilador sabe que o índice é menor que a diferença entre o tamanho e o deslocamento.
- O compilador agora leva em conta dados adicionais sobre a otimização DIGIT-CHAR.
- Foi implementada a possibilidade de excluir valores intermediários em algumas chamadas de APPLY, CONCATENATE e MAKE-ARRAY para argumentos construídos a partir de sequências com novas modificações cons.
- O desempenho do laço "(LOOP FOR X IN (REVERSE LIST) …)" foi acelerado, agora utilizando menos cons.
- O laço "(LOOP … APPEND …)" foi tornado mais compacto e executa menos trabalho ao adicionar NIL.
- As verificações de tipos de vários arrays foram aceleradas e reduzidas.
Fonte: opennet.ru
