Die Veröffentlichung von SBCL 2.4.0 (Steel Bank Common Lisp), einer freien Implementierung der Programmiersprache Common Lisp, ist erschienen. Der Code des Projekts ist in den Sprachen Common Lisp und C geschrieben und wird unter der BSD-Lizenz verbreitet.
In der neuen Version:
- Änderungen, die die Abwärtskompatibilität beeinträchtigen:
- *COMPILE-VERBOSE* und *LOAD-VERBOSE* sind beim Start des Systems mit dem Befehlszeilenargument „--script“ an NIL gebunden.
- Bei der Suche nach einer core-Datei überprüft das System die Gültigkeit des in /proc/self/exe angegebenen Pfades. Ist /proc/self/exe ungültig, wird argv[0] überprüft.
- Das System stellt keine Typnamen mehr für die Standard- (CL) Symbole ARRAY-RANK, ARRAY-TOTAL-SIZE, PATHNAME-HOST, PATHNAME-TYPE, PATHNAME-DIRECTORY, FLOAT-RADIX oder FLOAT-DIGITS zur Verfügung.
- Plattformunterstützung:
- Auf arm64-Systemen besteht die Möglichkeit, den parallelen Garbage Collector zu aktivieren, der den mark-region-Algorithmus verwendet.
- Probleme mit der Kompilierung in neuen Versionen von FreeBSD wurden behoben.
- Fehlerbehebungen:
- Die Korrektheit der Ausgabetypen des Compilers bei Aufrufen von REDUCE mit „:INITIAL-VALUE“ ohne „:FROM-END“ wurde wiederhergestellt.
- Ein Compilerfehler bei der Deklaration von „SB-EXT:MUFFLE-CONDITIONS“ für unbekannte Typen wurde behoben.
- In einigen Fällen lieferte der Disassembler unschön formatierte Ausgaben für Register.
- Die Wahrscheinlichkeit eines erneuten Stacküberlaufs des Systems bei der Ausgabe eines Fehlers wegen eines überlaufenden Kontrollstapels wurde leicht gesenkt;
- Optimierungen:
- In vielen Fällen wurden Schreibbarrieren im Garbage Collector beseitigt.
- Die Typausgabe für Iterationsvariablen mit gemischten Typen wurde verbessert.
- Nicht verwendete Initialisierungswerte für LET-Bindungen wurden entfernt, und die Typauswahl für Register wurde verbessert.
- EQUALP/EQUAL/EQL wurde bei FIND/MEMBER basierend auf den Eingabetypen auf EQL/EQ gesenkt.
- Die Typausgabe für DPB, LOGIOR wurde verbessert.
Quelle: opennet.ru
