Udgaven SBCL 2.4.2 (Steel Bank Common Lisp), en fri implementering af programmeringssproget Common Lisp, er offentliggjort. Projektets kode er skrevet på sprogene Common Lisp og C, og distribueres under BSD-licensen.
I den nye version:
- Kompilering af systemet selv på x86-64 med Linux producerer nu bit-for-bit identiske cross-kompilerede fasl'er, når build-værten er cmucl, ccl, clisp eller selve sbcl.
- Optimeringer:
- Et stort antal interne tabeller, især dem der relaterer sig til understøttelse af Unicode, er blevet oversat til at bruge kollisionsfrie hash-funktioner (perfekte), hvilket forbedrer hastigheden og reducerer størrelsen.
- FIND, POSITION, ASSOC og RASSOC med argumenter af uforanderlige sekvenser, der indeholder symboler som nøgler, kompilere nu til søgning ved hjælp af kollisionsfrie hashes.
- Compilerens håndtering af jump-to-jump overgange er blevet sikret på x86-64 systemer.
- Fejlrettelser:
- Muligheden for at arve fra både SEQUENCE og SB-MOP:FUNCALLABLE-STANDARD-OBJECT er genoprettet.
- COERCE vil ikke konvertere lambda-udtryk til funktioner, hvis den angivne type er en underklasse af FUNCTION.
- LOG med double-float og rationelle argumenter (i vilkårlig rækkefølge) mister ikke præcisionen gennem en midlertidig single-float-parameter.
- LOG med base 2 for heltals potens af to vil sandsynligvis give et mathematically nøjagtigt svar.
- LOG på rationelle tal tæt på enhed med nævner eller tæller tæt på en potens af to vil bruge log1p, og dermed miste mindre præcision.
- Eksternt format utf-8 med Unix-linjeafslutninger opdaterer informationen om dens tegnstørrelser, når der anvendes en hurtig vej til ASCII-tegnbufre.
- Indholdet af potentielt ikke længere gyldige dynamisk eksisterende cons'er blev ikke udskrevet i PRINT-OBJECT metoden for THREAD objekter.
- Fast positionering af eksterne indgangspunkt for funktioner før nogen andre lokale funktioner.
- Fjernelse af inaktive optimeringsbemærkninger for citerede former og enlige kald af APPEND ved høj hastighed.
- Uendelig løkke i COPY-SEQ på arrays med nul længde af elementtypen NIL.
- Retning af kompileringen af strukturkonstruktører, der ikke er øverste niveau.
- Retter i SB-SIMD:
- Forbedret grænsekontrol i SB-SIMD.
- Ret i SB-SIMD AVX f64.4-reverse.
- Ret i shuffling af SB-SIMD på AVX og SSE2.
- Ret tidsholdbarhed i sse+xmm0 VOP'er.
Kilde: opennet.ru
