Utgivningen av SBCL 2.4.1 (Steel Bank Common Lisp), en gratis implementering av programmeringsspråket Common Lisp, har publicerats. Projektkoden är skriven i Common Lisp och C, och distribueras under BSD-licensen.
I den nya utgåvan:
- Lade till partiellt stöd för kompakta instansrubriker till den parallella sopsamlaren med hjälp av mark-region-algoritmen.
- För funktioner med deklarerade returtyper säkerställer de stora optimeringslägena SAFETY och DEBUG 3 att typkontroll utförs på returvärden.
- På FreeBSD-plattformen implementeras länkning med libpthread och adressutrymmesrandomisering (ASLR) är inaktiverat.
- Sammansättningen på 64-bitars riscv- och ppc-arkitekturer har återställts.
- Fastrem-32-stöd har implementerats för alla plattformar (för optimerade FLOOR-beräkningar).
- Fixade en bugg som gjorde att flyttade linjer spolades igen efter minneskomprimering av den parallella sopsamlaren för markregionen.
- Problemet med kompilatorns looping vid bearbetning av vissa konstruktioner med SATISFIES-typer har lösts.
- Hashtabeller som används i olika delar av systemet (paket, Unicode-tabeller) konverteras till att använda hashfunktioner som är fria från kollisioner (perfekt).
- TYPECASE-makrot för klassstrukturhierarkier implementeras med hjälp av en kollisionsfri hash.
- För att optimera prestanda har gränskontroller tagits bort för index med konstanta offsets, där kompilatorn vet att indexet är mindre än skillnaden mellan storlek och offset.
- Kompilatorn tar hänsyn till ytterligare DIGIT-CHAR-optimeringsdata.
- Kompilatorn har implementerat möjligheten att utesluta mellanliggande värden i vissa APPLY-, CONCATENATE- och MAKE-ARRAY-anrop för argument konstruerade från sekvenser med färska nackdelar.
- Driften av slingan "(LOOP FOR X IN (REVERSE LIST) ...)" har accelererats, vilket nu använder färre nackdelar.
- "(LOOP... APPEND...)"-slingan är mer kompakt och gör mindre arbete när man lägger till NIL.
- Typkontroller för olika arrayer har påskyndats och förkortats.
Källa: opennet.ru