Die Veröffentlichung von SBCL 2.4.2 (Steel Bank Common Lisp), einer freien Implementierung der Programmiersprache Common Lisp, wurde bekannt gegeben. Der Projektcode ist in den Sprachen Common Lisp und C geschrieben und unter der BSD-Lizenz verfügbar.
In der neuen Version:
- Die Selbstkompilierung auf x86-64-Systemen mit Linux erzeugt nun bitgenau identische, plattformübergreifende fasl-Dateien, wenn der Build-Host cmucl, ccl, clisp oder sbcl selbst ist.
- Optimierungen:
- Eine große Anzahl interner Tabellen, insbesondere die, die die Unterstützung von Unicode betreffen, wurden auf die Verwendung von kollisionsfreien Hash-Funktionen (perfect) umgestellt, was die Geschwindigkeit verbessert und die Größe verringert hat.
- FIND, POSITION, ASSOC und RASSOC, die unveränderliche Sequenzen mit Symbolen als Schlüssel enthalten, werden nun für die Suche unter Verwendung kollisionsfreier Hashes kompiliert.
- Auf x86-64-Systemen wurde im Compiler das Jump-to-Jump-Problem behoben.
- Fehlerbehebungen:
- Die Möglichkeit zur Vererbung sowohl von SEQUENCE als auch von SB-MOP:FUNCALLABLE-STANDARD-OBJECT wurde wiederhergestellt.
- COERCE wird Lambda-Formen nicht in Funktionen umwandeln, wenn der angegebene Typ ein Subtyp von FUNCTION ist.
- Die LOG-Funktion mit double-float- und rationalen Argumenten (in beliebiger Reihenfolge) verliert keine Genauigkeit durch ein zwischenliegendes single-float-Argument.
- LOG zur Basis 2 der ganzzahligen Potenz von 2 wird mit hoher Wahrscheinlichkeit mathematisch genaue Ergebnisse liefern.
- LOG für rationale Zahlen, die nahe bei eins liegen, mit Zähler oder Nenner, die nahe an einer Zweierpotenz liegen, nutzt log1p und verliert dadurch weniger Genauigkeit.
- Das externe Format utf-8 mit Unix-Zeilenenden aktualisiert die Informationen über die Darstellung der Zeichenlängen, wenn der Schnellzugriff für ASCII-Zeichenpuffer verwendet wird.
- Inhalte, die wahrscheinlich dynamisch nicht mehr gültige cons-Objekte sind, wurden im PRINT-OBJECT für THREAD-Objekte nicht ausgegeben.
- Ständige Bereitstellung externer Einstiegspunkte für Funktionen vor allen anderen lokalen Funktionen.
- Entfernung nicht aktiver Optimierungsanmerkungen für zitierten Formen und einzelne APPEND-Aufrufe mit hoher Geschwindigkeit.
- Ein unendlicher Zyklus in COPY-SEQ für Arrays der Länge Null mit NIL-Elementtyp.
- Korrekturen bei der Kompilierung von Konstruktoren für nicht hochgradige Strukturen.
- Korrekturen in SB-SIMD:
- Verbesserung der Grenzkontrollen in SB-SIMD.
- Korrektur von SB-SIMD AVX f64.4-reverse.
- Behebung der Shuffle-Probleme bei SB-SIMD auf AVX und SSE2.
- Behebung der Lebensdauer in SSE+xmm0 VOPs.
Quelle: opennet.ru
