Die Veröffentlichung von SBCL 2.4.1 (Steel Bank Common Lisp), einer freien Implementierung der Programmiersprache Common Lisp, wurde bekannt gegeben. Der Projektcode ist in Common Lisp und C geschrieben und wird unter der BSD-Lizenz verbreitet.
In der neuen Version:
- Der parallele Müllsammler, der den mark-region-Algorithmus verwendet, hat teilweise Unterstützung für die Header komprimierter Instanzen erhalten.
- Für Funktionen mit deklarierten Rückgabetypen in Optimierungsmodi mit hohen SAFETY-Werten und im DEBUG 3-Modus wurde eine Typprüfung für Rückgabewerte sichergestellt.
- Auf der FreeBSD-Plattform wurde die Verlinkung mit libpthread implementiert und die Zufälligkeit des Adressraums (ASLR) deaktiviert.
- Der Bau für 64-bit Architekturen riscv und ppc wurde wiederhergestellt.
- Für alle Plattformen wurde die Unterstützung für fastrem-32 (für optimierte FLOOR-Berechnungen) implementiert.
- Ein Fehler wurde behoben, der zu einer wiederholten Bereinigung von verschobenen Zeilen nach der Komprimierung des Speichers durch den parallelen Müllsammler mark-region führte.
- Ein Problem mit der Endlosschleife des Compilers bei der Verarbeitung bestimmter Konstruktionen mit SATISFIES-Typen wurde gelöst.
- Die Hash-Tabellen, die in verschiedenen Teilen des Systems (Pakete, Unicode-Tabellen) verwendet werden, wurden umgestellt, um Hash-Funktionen ohne Kollisionen (perfect) zu verwenden.
- Das Makro TYPECASE für Hierarchien von Klassenstrukturen wurde mit einem kollisionfreien Hash implementiert.
- Zur Optimierung der Leistung wurden die Grenzenprüfungen für Indizes mit konstanten Offsets entfernt, wenn der Compiler weiß, dass der Index kleiner als die Differenz zwischen Größe und Offset ist.
- Im Compiler wurden zusätzliche Daten zur Optimierung DIGIT-CHAR berücksichtigt.
- Im Compiler wurde die Möglichkeit implementiert, Zwischenwerte in bestimmten Aufrufen von APPLY, CONCATENATE und MAKE-ARRAY für Argumente, die aus Sequenzen mit neuen cons-Modifikationen bestehen, auszuschließen.
- Die Ausführung des Zyklus „(LOOP FOR X IN (REVERSE LIST) …)“ wurde beschleunigt, da jetzt weniger cons benötigt werden.
- Der Zyklus „(LOOP … APPEND …)“ ist kompakter geworden und erfordert weniger Aufwand beim Hinzufügen von NIL.
- Die Typprüfungen verschiedener Arrays wurden beschleunigt und verkürzt.
Quelle: opennet.ru
