Die Version SBCL 2.4.1 (Steel Bank Common Lisp) wurde veröffentlicht, eine freie Implementierung der Programmiersprache Common Lisp. Der Projektcode ist in den Sprachen Common Lisp und C geschrieben und wird unter der BSD-Lizenz veröffentlicht.
In der neuen Version:
- Der parallele Garbage Collector, der den mark-region-Algorithmus verwendet, hat teilweise Unterstützung für Header von kompakten Instanzen hinzugefügt.
- Für Funktionen mit deklarierten Rückgabetyps wurde in Optimierungsmodi mit hohen SAFETY-Werten und im DEBUG-Modus 3 eine Typüberprüfung für Rückgabewerte sichergestellt.
- Auf der Plattform FreeBSD wurde das Linking mit libpthread implementiert und die Adressraum-Randomisierung (ASLR) deaktiviert.
- Der Build auf 64-Bit-Architekturen riscv und ppc wurde wiederhergestellt.
- Für alle Plattformen wurde die Unterstützung von fastrem-32 (für optimierte FLOOR-Berechnungen) implementiert.
- Ein Fehler wurde behoben, der zu einer mehrfachen Bereinigung von verschobenen Zeilen nach der Speicherverdichtung durch den parallelen Garbage Collector mark-region führte.
- Ein Problem mit dem Hängenbleiben des Compilers bei der Verarbeitung bestimmter Konstrukte mit SATISFIES-Typen wurde gelöst.
- Hash-Tabellen, die in verschiedenen Teilen des Systems (Pakete, Unicode-Tabellen) verwendet werden, sind für die Nutzung von Hash-Funktionen optimiert, die freie Kollisionen (perfekt) sind.
- Das Makro TYPECASE für Hierarchien von Klassenstrukturen wurde mit kollisionsfreien Hashes implementiert.
- Zur Leistungsoptimierung wurden die Grenzprüfungen für Indizes mit konstanten Offsets entfernt, wenn der Compiler weiß, dass der Index kleiner ist als die Differenz zwischen Größe und Offset.
- Im Compiler wurden zusätzliche Optimierungsdaten für DIGIT-CHAR berücksichtigt.
- Im Compiler wurde die Möglichkeit implementiert, intermediäre Werte in bestimmten Aufrufen von APPLY, CONCATENATE und MAKE-ARRAY für Argumente, die aus Sequenzen mit frischen cons-Änderungen bestehen, auszuschließen.
- Die Ausführung der Schleife „(LOOP FOR X IN (REVERSE LIST) …)“ wurde beschleunigt und nutzt jetzt weniger cons.
- Die Schleife „(LOOP … APPEND …)“ ist kompakter geworden und benötigt weniger Aufwand beim Hinzufügen von NIL.
- Die Typprüfungen verschiedener Arrays wurden optimiert und verkürzt.
Quelle: opennet.ru
