È stato pubblicato il rilascio di SBCL 2.4.2 (Steel Bank Common Lisp), un’implementazione libera del linguaggio di programmazione Common Lisp. Il codice del progetto è scritto in Common Lisp e C, ed è distribuito sotto licenza BSD.
Nel nuovo rilascio:
- La compilazione del sistema su se stesso su sistemi x86-64 con Linux produce ora fasl incrociati identici a livello di bit lì dove l'host di assemblaggio è cmucl, ccl, clisp o lo stesso sbcl.
- Ottimizzazioni:
- Un gran numero di tabelle interne, in particolare quelle relative al supporto Unicode, è stato convertito per utilizzare funzioni hash prive di collisioni (perfect), migliorando la velocità e riducendo le dimensioni.
- FIND, POSITION, ASSOC e RASSOC con argomenti di sequenza immutabile contenenti simboli come chiavi, ora vengono compilati per la ricerca utilizzando hash privi di collisioni.
- Su sistemi x86-64, il compilatore garantisce l’eliminazione del passaggio jump-to-jump.
- Correzioni di errori:
- Ripristinata la possibilità di ereditare sia da SEQUENCE che da SB-MOP:FUNCALLABLE-STANDARD-OBJECT.
- COERCE non convertirà le forme lambda in funzioni se il nome del tipo specificato è una sottoclasse di FUNCTION.
- LOG con argomenti double-float e argomenti razionali (in qualsiasi ordine) non perde precisione tramite un argomento intermedio single-float.
- LOG in base 2 di una potenza a interi di due probabilmente darà una risposta matematicamente precisa.
- LOG su numeri razionali vicini all'unità con numeratore o denominatore vicino a una potenza di due utilizzerà log1p e, in questo modo, perderà meno precisione.
- Il formato esterno utf-8 con terminazioni di riga Unix aggiorna le informazioni sulle dimensioni dei suoi caratteri quando viene applicata una via veloce per i buffer di caratteri ASCII.
- Non è stato stampato il contenuto probabilmente non valido dei cons esistenti dinamicamente nel metodo PRINT-OBJECT per gli oggetti THREAD.
- Posizionamento costante dei punti di ingresso esterni per le funzioni prima di qualsiasi altra funzione locale.
- Rimozione delle segnalazioni di ottimizzazione inattive per forme racchiuse tra virgolette e chiamate singole a APPEND ad alta velocità.
- Ciclo infinito in COPY-SEQ su array di lunghezza zero con tipo di elementi NIL.
- Correzione della compilazione dei costruttori di strutture non di primo livello.
- Correzioni in SB-SIMD:
- Miglioramento del controllo dei limiti in SB-SIMD.
- Correzione di SB-SIMD AVX f64.4-reverse.
- Correzione della mescolanza in SB-SIMD su AVX e SSE2.
- Correzione della vita utile negli VOP sse+xmm0.
Fonte: opennet.ru
