È stata pubblicata la release di SBCL 2.3.9 (Steel Bank Common Lisp), un'implementazione gratuita del linguaggio di programmazione Common Lisp. Il codice del progetto è scritto in Common Lisp e C ed è distribuito sotto la licenza BSD.
Nella nuova versione:
- L'allocazione dello stack tramite DYNAMIC-EXTENT ora si applica non solo all'associazione iniziale, ma anche a tutti i valori che la variabile può assumere (ad esempio tramite SETQ). Ciò consente, ad esempio, di semplificare la costruzione di strutture complesse o ricorsive in uno stack attraverso l'iterazione.
- Alcune interfacce nel modulo SB-POSIX sono conformi alle specifiche e un risultato NULL dalla libreria C è considerato un errore se e solo se errno viene modificato dalla chiamata. In questo caso verrà generato il segnale SYSCALL-ERROR.
- Migliorato il funzionamento delle macro DO-PASSWDS e DO-GROUPS nel modulo SB-POSIX. Queste macro sono progettate per funzionare in modo sicuro con la password e il database dei gruppi.
- Il supporto per le piattaforme Darwin x86 e PowerPC è stato ripristinato (grazie a Kirill A. Korinsky, Sergey Fedorov e barracuda156).
- Risolto il problema con la compilazione errata che si verificava a causa di un'errata inferenza del tipo durante la moltiplicazione dei valori fixnum per valori frazionari.
- Risolto un errore del compilatore che si verificava in alcuni casi durante il controllo dei valori a 64 bit con e senza segno.
- Risolto un errore del compilatore quando l'argomento ":INITIAL-CONTENTS" di MAKE-ARRAY è una costante non di sequenza.
- Risolto un errore nella compilazione delle funzioni di convoluzione in una determinata costante di sequenza quando si restituiva un valore falso dalle funzioni ":TEST" o ":KEY".
- Risolto un bug durante la compilazione di funzioni di array o sequenze con argomenti che implicano dimensioni di sequenza molto grandi.
- Risolto un errore del compilatore che si verificava quando il valore restituito da ADJUST-ARRAY non veniva utilizzato.
- Inferenza del compilatore ottimizzata di tipi di funzione che possono essere propagati all'indietro attraverso una rappresentazione intermedia.
- Inferenza del tipo migliorata per LDB, LOGBITP e RATIO.
- Sono state apportate ottimizzazioni per eliminare controlli dei limiti non necessari per molti casi di confronti transitivi.
Fonte: opennet.ru