Lançamento do SBCL 2.3.9, uma implementação da linguagem Common Lisp

Foi publicado o lançamento do SBCL 2.3.9 (Steel Bank Common Lisp), uma implementação gratuita da linguagem de programação Common Lisp. O código do projeto é escrito em Common Lisp e C e é distribuído sob a licença BSD.

Na nova versão:

  • A alocação de pilha via DYNAMIC-EXTENT agora se aplica não apenas à ligação inicial, mas também a todos os valores que a variável pode assumir (por exemplo, via SETQ). Isto permite, por exemplo, simplificar a construção de estruturas complexas ou recursivas numa pilha através de iteração.
  • Algumas interfaces no módulo SB-POSIX são feitas em conformidade com a especificação, e um resultado NULL da biblioteca C é considerado um erro se e somente se errno for alterado pela chamada. Neste caso será gerado o sinal SYSCALL-ERROR.
  • Melhor funcionamento das macros DO-PASSWDS e DO-GROUPS no módulo SB-POSIX. Essas macros foram projetadas para funcionar de forma segura com o banco de dados de senhas e grupos.
  • O suporte para as plataformas Darwin x86 e PowerPC foi restaurado (graças a Kirill A. Korinsky, Sergey Fedorov e barracuda156).
  • Corrigida a compilação incorreta que ocorria devido à inferência de tipo incorreta ao multiplicar valores fixnum por valores fracionários.
  • Corrigido um erro do compilador que ocorria em alguns casos ao verificar valores de 64 bits assinados e não assinados.
  • Corrigido um erro do compilador quando o argumento ":INITIAL-CONTENTS" para MAKE-ARRAY é uma constante sem sequência.
  • Corrigido um erro na compilação de funções de convolução em uma determinada constante de sequência ao retornar um valor falso das funções “:TEST” ou “:KEY”.
  • Corrigido um bug ao compilar funções de array ou sequências com argumentos que implicam tamanhos de sequência muito grandes.
  • Corrigido um erro do compilador que ocorre quando o valor retornado de ADJUST-ARRAY não é usado.
  • Inferência otimizada do compilador de tipos de função que podem ser propagados para trás por meio de uma representação intermediária.
  • Inferência de tipo aprimorada para LDB, LOGBITP e RATIO.
  • Otimizações foram feitas para eliminar verificações desnecessárias de limites para muitos casos de comparações transitivas.

Fonte: opennet.ru

Adicionar um comentário