Udgivelsen af SBCL 2.4.1 (Steel Bank Common Lisp), en fri implementering af programmeringssproget Common Lisp, er offentliggjort. Projektets kode er skrevet i sprog som Common Lisp og C, og det distribueres under BSD-licensen.
I den nye version:
- Der er tilføjet delvis understøttelse af overskrifter til kompakte instanser i den parallelle affaldsamler, der bruger mark-region-algoritmen.
- For funktioner med erklærede returtyper i optimeringsindstillinger med høje SAFETY-værdier og i DEBUG 3-tilstand er der sikret typekontrol for returværdier.
- På FreeBSD-platformen er der implementeret en binding med libpthread, og randomisering af adresseområdet (ASLR) er deaktiveret.
- Bygningen på 64-bit arkitekturer riscv og ppc er genoprettet.
- For alle platforme er der implementeret understøttelse af fastrem-32 (til optimerede FLOOR-beregninger).
- Der er rettet en fejl, der tidligere resulterede i genoprydning af flyttede rækker efter hukommelsessamlet mark-region.
- Problemet med at kompileren gik i loop ved behandling af visse konstruktioner med SATISFIES-typer er løst.
- Hash-tabellerne, der bruges i forskellige dele af systemet (pakker, Unicode-tabeller), er konverteret til at bruge hash-funktioner uden kollisioner (perfect).
- MACRO TYPECASE til hierarkier af klasse-strukturer er implementeret ved hjælp af hash uden kollisioner.
- For at optimere ydeevnen er grænsekontroller for indekser med faste offsets fjernet, når kompileren ved, at indekset er mindre end forskellen mellem størrelse og offset.
- Yderligere optimeringsdata om DIGIT-CHAR er taget i betragtning i kompileren.
- Kompileren har implementeret muligheden for at udelukke mellemresultater i visse kald til APPLY, CONCATENATE og MAKE-ARRAY for argumenter dannet af sekvenser med friske cons-modifikationer.
- Ydelsen af løkken '(LOOP FOR X IN (REVERSE LIST) …)' er forbedret, så den nu bruger færre cons.
- Løkken '(LOOP … APPEND …)' er blevet mere kompakt og udfører mindre arbejde ved tilføjelse af NIL.
- Typekontroller for forskellige arrays er blevet accelereret og reduceret.
Kilde: opennet.ru
