Udgivelsen af SBCL 2.3.11, implementeringen af sproget Common Lisp

Udgivet version SBCL 2.3.11 (Steel Bank Common Lisp), en fri implementering af programmeringssprog Common Lisp. Projektkoden er skrevet i Common Lisp og C, og distribueres under BSD-licensen. I den nye version:

  • Små inkompatibiliteter:
    • Strømme med parameteren external-format, defineret med ":REPLACEMENT", vil anvende erstatningsdata én gang i strømmen, hvilket fører til dekodningsfejl (i modsætning til i nogle tilfælde, hvor det er én gang for byte-sekvensen, hvor hver enkelt hverken er en gyldig startposition for et symbol for dette external-format).
    • External-format definitorer ved brug af ikke-understøttede eller ikke-genkendte varianter vil nu signalere en fejl.
  • Forbedringer:
    • I dispatchering af generiske funktioner, der bruger en standard eller kort kombinationsmetode, vil systemet kalde den generiske funktion SB-PCL:NO-PRIMARY-METHOD, hvis ingen primære relevante metoder er tilgængelige; dens standard adfærd er at signalere en fejl. Brugere kan definere metoder til denne generiske funktion.
    • External-formater understøtter nu nye linjevarianter for én-byte og utf-8 kodninger.
    • Fejl signaleret af strømme eller oktetter om kodning og dekodning af symboler understøtter nu USE-VALUE genstart for håndterere, der leverer erstatninger til input eller output.
    • READ-SEQUENCE og WRITE-SEQUENCE understøtter brugerdefinerede sekvenser; den standardimplementering behandler element for element ved at læse eller skrive én byte eller et symbol til/fra strømmen henholdsvis.
  • Optimeringer:
    • External-formater med :REPLACEMENT binder ikke længere håndteringer til fejl i konverteringsfunktioner, hvilket bør reducere antallet af cons-operationer og øge ydelsen.
    • Hvis :EXTERNAL-FORMAT fungerer som et argument for STRING-TO-OCTETS eller OCTETS-TO-STRING og er en konstant under kompilering, så accepteres det eksterne format under indlæsning, og ikke ved hver opkald.
    • Kompilatoren kan begrænse typerne af argumenter for nogle funktioner baseret på den udledte eller underforståede type værdi, som denne funktion returnerer.
    • Kompilatoren reducerer antallet af overflødige typekontroller i funktioner såsom ASSOC og GETF.
  • Fejlrettelser:
    • OCTETS-TO-STRING signalerer eller anvender korrekt erstatninger ved brug af en-byte eksterne formater til sjældent anvendte kodninger (f.eks. iso-8859-3) og trækker ikke bits fra NIL-adressen for at konvertere disse bits til tegn.
    • FILE-STRING-LENGTH returnerer nu NIL, hvis indgangsværdierne ikke koders i et eksternt strømningsformat.
    • Tabelmultibyte eksterne formater (EUC-JP, Shift-JIS, GBK) tager nu højde for erstatningstegnet (i det eksterne format eller ved genstart) ved kodning til oktetter.
    • Konvertering fra oktetter ved hjælp af eksterne formater UCS-2, UCS-4 og UTF-32 læser ikke længere slutningen af oktetarrayet med et ikke-helt antal to- eller fire-byte enheder.
    • Konvertering fra oktetter ved hjælp af eksterne formater UCS-2, UCS-4 og UTF-32 returnerer nu en simpel streng, som krævet af definitionen af typen OCTETS-TO-STRING.
    • Anvendelse af et ugyldigt eksternt formatargument til OPEN eller WITH-OPEN-FILE (eller intern MAKE-FD-STREAM) medfører ikke længere en lækage af filbeskriver.
    • SB-ROTATE-BYTE definerer BYTE-specifikationer uden for det tilladte område før udførelse af kons til meget store heltal til brug i masker og skift.
    • Returtypekorrektion ved kompilering af SB-ROTATE-BYTE-former med en ikke-nul POSITION i byte-definitionen.
    • Retter flere assemblerfejl ved kompilering af MAKE-ARRAY, MAKE-STRING og andre med stor konstant størrelse.
    • Retter en intern fejl ved kompilering (SETF-SBIT) med en stor konstant indeks.
    • Retter en intern fejl i compilatoren for lambda-funktioner med en forkert parameterliste i LABELS.
    • Retter en intern fejl i compilatoren ved kompilering af visse uendeligt rekursive LABELS-former.
    • Retter en intern fejl i compilatoren ved forsøg på at indbygge et spring til en allerede slettet etiket.
    • FILL-POINTER bør aldrig være negativ.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster