UtgÄvan av SBCL 2.3.11 (Steel Bank Common Lisp), en fri implementation av programmeringssprÄket Common Lisp, har publicerats. Projektkoden Àr skriven i sprÄken Common Lisp och C, och distribueras under BSD-licens. I den nya versionen:
- SmÄ inkompatibiliteter:
- Strömmar med parametern external-format, definierad med ':REPLACEMENT', kommer att tillÀmpa data för att ersÀtta information en gÄng i strömmen, vilket leder till avkodningsfel (till skillnad frÄn i vissa fall, en gÄng för varje byte-sekvens som inte Àr en giltig startposition för symbolen för detta external-format).
- External-format specifikationer som anvÀnder stödja eller oidentifierade varianter kommer nu att signalera ett fel.
- FörbÀttringar:
- Vid dispatching av generiska funktioner, som anvÀnder standard- eller korta kombinationsmetoder, nÀr inga huvudmetoder Àr tillgÀngliga, kommer systemet att anropa den generiska funktionen SB-PCL:NO-PRIMARY-METHOD, vars standardbeteende Àr att signalera ett fel. AnvÀndare kan definiera metoder för denna generiska funktion.
- External-formats stödjer nu newline-varianter för en-bytars och utf-8 kodningar.
- Fel som signaleras av ström- eller oktettfunktioner angÄende encoding och decoding av symboler stöder nu USE-VALUE omstart för hanterare som tillhandahÄller ersÀttningar för in- eller utdata.
- READ-SEQUENCE och WRITE-SEQUENCE stödjer anvÀndardefinierade sekvenser; standardimplementeringen hanterar element för element, lÀsande eller skrivande en byte eller symbol i/frÄn strömmen respektive.
- Optimeringar:
- External-formats med :REPLACEMENT binder inte lÀngre hanterare för fel i konverteringsfunktioner, vilket bör minska antal cons-operationer och öka prestandan.
- Om :EXTERNAL-FORMAT fungerar som ett argument för STRING-TO-OCTETS eller OCTETS-TO-STRING och Àr en konstant under kompilering, sÄ kommer den externa formatet att lösas vid laddning istÀllet för vid varje anrop.
- Kompilatoren kan begrÀnsa typer av argument för vissa funktioner baserat pÄ den avledda eller underförstÄdda typen av vÀrdet som returneras av denna funktion.
- Kompilatoren minskar antalet överflödiga typkontroller i funktioner som ASSOC och GETF.
- Buggfixar:
- OCTETS-TO-STRING signalerar korrekt eller tillÀmpar ersÀttningar vid anvÀndning av ensamma byte externa format för mindre vanliga teckenkodningar (till exempel iso-8859-3), istÀllet för att ta bitar frÄn NIL-adressen och konvertera dessa bitar till tecken.
- FILE-STRING-LENGTH returnerar nu NIL om indata inte kan kodas till ett externt strömformat.
- Tabellformat med flera byte (EUC-JP, Shift-JIS, GBK) tar nu hÀnsyn till ersÀttningstecknet (i det externa formatet eller genom omstart) vid kodning till oktetter.
- Konvertering frÄn oktetter med hjÀlp av externa format UCS-2, UCS-4 och UTF-32 lÀser inte lÀngre slutet av oktettarrayen med ett icke heltal av tvÄ- eller fyrabyte enheter.
- Konvertering frÄn oktetter med hjÀlp av externa format UCS-2, UCS-4 och UTF-32 returnerar nu en enkel strÀng, som definierat av typen OCTETS-TO-STRING.
- AnvÀndning av ett ogiltigt externt format för argumentet i OPEN eller WITH-OPEN-FILE (eller interna MAKE-FD-STREAM) resulterar inte lÀngre i en lÀcka av filbeskrivare.
- SB-ROTATE-BYTE definierar specifikationerna för BYTE utanför tillÄtet vÀrde före utförandet av cons med mycket stora heltal för anvÀndning av maskor och skiftningar.
- Fixa typutmatningen vid kompilering av SB-ROTATE-BYTE-former med ett icke-noll POSITION i byte-definitionen.
- Fixa flera assemblerfel vid kompilering av MAKE-ARRAY, MAKE-STRING och andra med stort konstant storlek.
- Fixa ett internt fel vid kompilering (SETF-SBIT) med stort konstant index.
- Fixa ett internt fel i kompileraren för lambda-funktioner med en ogiltig parameterlista i LABELS.
- Fixa ett internt fel i kompileraren vid kompilering av vissa oÀndligt rekursiva former i LABELS.
- Fixa ett internt fel i kompileraren vid försök att inbygga ett hopp till en redan borttagen etikett.
- FILL-POINTER ska aldrig vara negativ.
KĂ€lla: opennet.ru
