Utgivelsen av SBCL 2.4.1 (Steel Bank Common Lisp), en gratis implementering av programmeringsspråket Common Lisp, har blitt publisert. Prosjektkoden er skrevet i Common Lisp og C, og distribueres under BSD-lisensen.
I den nye utgivelsen:
- Den parallelle søppelinnsamleren som bruker mark-region-algoritmen har fått delvis støtte for kompakte instansoverskrifter.
- For funksjoner med deklarerte returtyper, i optimaliseringsmoduser med store SAFETY-verdier og i DEBUG 3-modus, utføres nå typekontroll på returverdier.
- På FreeBSD-plattformen er kobling med libpthread implementert og adresseromsrandomisering (ASLR) er deaktivert.
- Samlingen på 64-bits riscv- og ppc-arkitekturer er gjenopprettet.
- Støtte for fastrem-32 (for optimaliserte FLOOR-beregninger) er implementert for alle plattformer.
- Fikset en feil som førte til at flyttede rader ble tømt igjen etter minnekomprimering av den parallelle søppelinnsamleren i mark-regionen.
- Fikset et problem med kompilatorløkken ved behandling av enkelte konstruksjoner med SATISFIES-typer.
- Hash-tabeller som brukes i ulike deler av systemet (pakker, Unicode-tabeller) har blitt konvertert til å bruke kollisjonsfrie (perfekte) hash-funksjoner.
- TYPECASE-makroen for klassestrukturhierarkier implementeres ved hjelp av en kollisjonsfri hash.
- For å optimalisere ytelsen er grensesjekking fjernet for indekser med konstante forskyvninger når kompilatoren vet at indeksen er mindre enn forskjellen mellom størrelsen og forskyvningen.
- Kompilatoren tar hensyn til tilleggsdata om DIGIT-CHAR-optimalisering.
- Kompilatoren har nå muligheten til å eliminere mellomverdier i noen APPLY-, CONCATENATE- og MAKE-ARRAY-kall for argumenter konstruert fra sekvenser med nye cons-modifikasjoner.
- Løkken «(LOOP FOR X IN (REVERSE LIST) ...)» har blitt raskere og bruker nå færre konstanter.
- Løkken «(LOOP … APPEND …)» har blitt mer kompakt og gjør mindre arbeid når man legger til NIL.
- Sjekker av typer av ulike arrayer har blitt fremskyndet og forkortet.
Kilde: opennet.ru
