È stato pubblicato il rilascio di SBCL 2.4.2 (Steel Bank Common Lisp), un'implementazione open source 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 ora produce fasl bitwise-identici cross-compilati quando l'host di compilazione è cmucl, ccl, clisp o lo stesso sbcl.
- Ottimizzazioni:
- Un gran numero di tabelle interne, in particolare quelle relative al supporto Unicode, sono state convertite per utilizzare funzioni hash prive di collisioni (perfect), migliorando la velocità e riducendo le dimensioni.
- FIND, POSITION, ASSOC e RASSOC con argomenti di una sequenza invariata contenente simboli come chiavi, ora vengono compilati per la ricerca utilizzando hash privi di collisioni.
- Nei sistemi x86-64, il compilatore assicura l'eliminazione del salto jump-to-jump.
- Correzioni di bug:
- 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 tipo di nome specificato è un sottoclasse di FUNCTION.
- Il LOG con argomenti double-float e argomenti razionali (in qualsiasi ordine) non perde precisione passando per un argomento intermedio single-float.
- Il LOG in base 2 con potenze intere di due darà con molta probabilità una risposta matematicamente esatta.
- Il LOG su numeri razionali vicini a uno, con numeratore o denominatore vicino a una potenza di due, utilizzerà log1p e, quindi, perderà meno precisione.
- Il formato esterno utf-8 con terminazioni di riga Unix aggiorna le informazioni sulle dimensioni dei caratteri quando si applica una scorciatoia per i buffer di caratteri ASCII.
- Il contenuto probabilmente non stampato di cons dinamicamente esistenti non validi nel metodo PRINT-OBJECT per oggetti THREAD.
- Posizionamento costante di punti di ingresso esterni per funzioni prima di qualsiasi altra funzione locale.
- Rimozione di commenti inattivi di ottimizzazione per forme racchiuse e chiamate singole ad APPEND ad alta velocità.
- Ciclo infinito in COPY-SEQ su array di lunghezza zero con tipo di elemento NIL.
- Correzione della compilazione di costruttori di strutture non di primo livello.
- Correzioni in SB-SIMD:
- Miglioramento della verifica dei limiti in SB-SIMD.
- Correzione di SB-SIMD AVX f64.4-reverse.
- Correzione dell'ordinamento SB-SIMD su AVX e SSE2.
- Correzione del tempo di vita negli VOP sse+xmm0.
Fonte: opennet.ru
