De release van SBCL 2.4.1 (Steel Bank Common Lisp), een vrije implementatie van de programmeertaal Common Lisp, is gepubliceerd. De code van het project is geschreven in Common Lisp en C, en wordt verspreid onder de BSD-licentie.
In de nieuwe release:
- Een parallelle garbage collector, die het mark-region algoritme gebruikt, heeft gedeeltelijke ondersteuning voor de headers van compacte instanties gekregen.
- Voor functies met verklaarde retourtypen is in de optimalisatiemodi met hoge SAFETY-waarden en in DEBUG 3 een typecontrole voor retourwaarden verzekerd.
- Op het FreeBSD-platform is er een link naar libpthread gerealiseerd en is de adresruimte-randomisatie (ASLR) uitgeschakeld.
- De compilatie op 64-bits architecturen riscv en ppc is hersteld.
- Voor alle platforms is ondersteuning voor fastrem-32 (voor geoptimaliseerde FLOOR-berekeningen) geïmplementeerd.
- Een fout die leidde tot herhaaldelijke opruiming van verplaatste regels na het samenvoegen van geheugen door de parallelle garbage collector mark-region is verholpen.
- Een probleem met de compiler die vastliep bij het verwerken van bepaalde constructies met types SATISFIES is opgelost.
- Hash-tabellen, gebruikt in verschillende delen van het systeem (pakketten, Unicode-tabellen), zijn omgezet voor gebruik met hash-functies zonder botsingen (perfect).
- De macro TYPECASE voor hiërarchieën van klasse-structuren is geïmplementeerd met behulp van een hash zonder botsingen.
- Om de prestaties te optimaliseren zijn de grenscontroles voor indexen met constante verschuivingen verwijderd, wanneer de compiler weet dat de index kleiner is dan het verschil tussen grootte en verschuiving.
- In de compiler zijn extra optimalisatiegegevens voor DIGIT-CHAR in aanmerking genomen.
- In de compiler is de mogelijkheid geïmplementeerd om tussenliggende waarden in sommige aanroepen van APPLY, CONCATENATE en MAKE-ARRAY uit te sluiten voor argumenten opgebouwd uit sequenties met recente cons-modificaties.
- De uitvoering van de lus '(LOOP FOR X IN (REVERSE LIST) …)' is versneld, waardoor er minder cons's worden gebruikt.
- De lus '(LOOP … APPEND …)' is compacter geworden en verricht minder werk bij het toevoegen van NIL.
- De typecontroles voor verschillende tabellen zijn versneld en ingekort.
Bron: opennet.ru
