Die Veröffentlichung von SBCL 2.4.2 (Steel Bank Common Lisp), einer freien Implementierung der Programmiersprache Common Lisp, ist erfolgt. Der Code des Projekts ist in den Sprachen Common Lisp und C geschrieben und steht unter der BSD-Lizenz.
In der neuen Version:
- Die Kompilierung durch das System selbst auf x86-64 mit Linux erzeugt jetzt bitgenau identische, plattformübergreifend kompilierte fasl-Dateien, wenn die Build-Host cmucl, ccl, clisp oder sbcl selbst ist.
- Optimierungen:
- Eine große Anzahl interner Tabellen, insbesondere die, die die Unicode-Unterstützung betreffen, wurde auf die Verwendung von kollisionsfreien Hash-Funktionen (perfect) umgestellt, was die Geschwindigkeit verbessert und die Größe reduziert hat.
- FIND, POSITION, ASSOC und RASSOC mit Argumenten unveränderlicher Sequenzen, die Symbole als Schlüssel enthalten, werden nun zum Suchen mit kollisionsfreien Hashes kompiliert.
- In x86-64-Systemen wurde der Sprung von Jump zu Jump im Compiler behoben.
- Fehlerbehebungen:
- Die Möglichkeit, sowohl von SEQUENCE als auch von SB-MOP:FUNCALLABLE-STANDARD-OBJECT zu erben, wurde wiederhergestellt.
- COERCE konvertiert Lambda-Formen nicht in Funktionen, wenn der angegebene Typ ein Untertyp von FUNCTION ist.
- LOG mit double-float und rationalen Argumenten (in beliebiger Reihenfolge) verliert durch ein zwischenzeitliches single-float-Argument keine Präzision.
- LOG zur Basis 2 einer ganzzahligen Potenz von zwei gibt höchstwahrscheinlich eine mathematisch exakte Antwort.
- LOG auf rationalen Zahlen, die nahe bei Eins mit Zähler oder Nenner nahe einer Potenz von zwei sind, verwendet log1p und verliert somit weniger Präzision.
- Das externe Format utf-8 mit Unix-Zeilenenden aktualisiert die Informationen zu seinen Zeichengrößen, wenn der Schnellmodus für ASCII-Zeichenpuffer verwendet wird.
- Der Inhalt möglicherweise nicht mehr gültiger dynamisch existierender cons-Zellen wurde in der METHOD PRINT-OBJECT für THREAD-Objekte nicht ausgegeben.
- Ständige Platzierung externer Einstiegspunkte für Funktionen vor allen anderen lokalen Funktionen.
- Entfernung inaktiver Optimierungsbemerkungen für kommagetrennte Formulare und Einzelaufrufe von APPEND mit hoher Geschwindigkeit.
- Eine Endlosschleife in COPY-SEQ bei Arrays der Länge null mit dem Elementtyp NIL.
- Fehlerbehebung beim Kompilieren von Strukturkonstruktoren auf oberster Ebene.
- Fehlerbehebungen in SB-SIMD:
- Verbesserung der Grenzwertüberprüfung in SB-SIMD.
- Fehlerbehebung von SB-SIMD AVX f64.4-reverse.
- Fehlerbehebung beim Mischen in SB-SIMD auf AVX und SSE2.
- Fehlerbehebung der Lebensdauer in sse+xmm0 VOPs.
Quelle: opennet.ru
