Ilmus väljaanne SBCL 2.3.11 (Steel Bank Common Lisp), avatud rakenduse Common Lisp programmeerimiskeele teostus. Projekti kood on kirjutatud keeltes Common Lisp ja C ning levitatakse BSD litsentsi alusel. Uues väljaandes:
- Ebakõlad:
- Voodid, mille external-format-parameeter on määratud "REPLACEMENT" kaudu, rakendavad asendusteadet voos ainult korra, mis põhjustab dekodeerimisprobleeme (erinevalt mõnest muust juhust, kus see rakendatakse vaid üks kord iga byte jada jaoks, millest igaüht ei saa käsitada kehtiva sümboli alguspunktina selle external-format'i jaoks).
- Toetamata või tundmatute variantide kasutamisel annab external-format'i määramine nüüd tõrke.
- Parandused:
- Üldiste funktsioonide haldamise käigus, kui standardset ega lühendatud kombineerimismeetodit ei ole, kutsub süsteem välja üldise funktsiooni SB-PCL:NO-PRIMARY-METHOD, mille standardne käitumine on tõrke signaal. Kasutajad saavad määratleda meetodeid sellele üldisele funktsioonile.
- Välised formaadid toetavad nüüd uue rea variandid ühebaidiste ja utf-8 kodeeringute jaoks.
- Tõrked, mida signaalivad vood või oktetid, mis on seotud sümbolite kodeerimise ja dekodeerimisega, toetavad nüüd USE-VALUE taaskäivitamist töötlejate jaoks, kes pakuvad asendusi sisendiks või väljundiks.
- READ-SEQUENCE ja WRITE-SEQUENCE toetavad kasutaja määratletud jadasid; standardne teostus käsitleb elementi elementide kaupa, lugedes või kirjutades ühe byte või sümboli voost vastavalt.
- Optimeeritud:
- Välised formaadid, millel on :REPLACEMENT, ei seo enam töödeldavaid funktsioonide vigu konversioonide jaoks, mis peaks vähendama cons-operatsioonide arvu ja suurendama jõudlust.
- Kui :EXTERNAL-FORMAT on STRING-TO-OCTETS või OCTETS-TO-STRING argumendiks ja on konstant kompileerimise ajal, siis määratakse väline formaat laadimise ajal, mitte iga kord, kui seda kutsutakse.
- Kompilaator võib piirata argumentide tüüpe mõnede funktsioonide jaoks vastavalt sellele, mis väärtuse tüüp kodustab või mida see funktsioon tagastab.
- Kompilaator vähendab liigsete tüüpide kontrollide arvu funktsioonides, nagu ASSOC ja GETF.
- Veaparandused:
- OCTETS-TO-STRING signaalib õigesti või rakendab asendusi, kasutades ühebaidiseid välist formaate mittelevinud kodeeringute (nt iso-8859-3) jaoks, mitte ei võta bitte NIL aadressilt ja ei konverteeri neid bitte sümboliteks.
- FILE-STRING-LENGTH tagastab nüüd NIL, kui sisendväärtused ei kodeerita voolu välistesse formaatidesse.
- Tabelilised mitme baidi välised formaadid (EUC-JP, Shift-JIS, GBK) arvestavad nüüd asendussümbolit (kas välistes formaatides või taaskäivitamise kaudu) oktettide kodeerimisel.
- Oktetidest konverteerimine läbi UCS-2, UCS-4 ja UTF-32 välistes formaatides ei loe enam oktettide massi lõppu, kasutades mitteühtlast kahekohalist või neljakohalist ühikut.
- Oktetidest konverteerimine läbi UCS-2, UCS-4 ja UTF-32 välistes formaatides tagastab nüüd lihtsa stringi, nagu määratleb OCTETS-TO-STRING tüüp.
- Vale väline formaadi argumendi kasutamine OPEN või WITH-OPEN-FILE (või siseseke MAKE-FD-STREAM) puhul ei põhjusta enam failide deskriptorite leket.
- SB-ROTATE-BYTE määrab BYTE spetsiifikad välja lubatud väärtuste, kui kasutatakse väga suuri täisarve maskide ja nihkude jaoks.
- Parandatud tüübi väljund kompileerimise ajal SB-ROTATE-BYTE vormide korral, mille POSITION ei ole null nõudmine.
- Parandatud mitmed assembleri vead, kui kompileeriti MAKE-ARRAY, MAKE-STRING ja muid sarnase suurusega pideva mäluga elemente.
- Parandatud kompilaatori sisemine tõrge (SETF-SBIT) suure pideva indeksi korral.
- Parandatud kompilaatori sisemine tõrge lambda-funktsiooni puhul vale parameetrite loendiga LABELS'is.
- Parandatud kompilaatori sisemine tõrge, kui kompileeritakse mõnda lõpmatult rekursiivset LABELS'i vormi.
- Parandatud kompilaatori sisemine tõrge, kui üritatakse integreerida siiret juba eemaldatud etiketile.
- FILL-POINTER ei peaks kunagi olema negatiivne.
Allikas: opennet.ru
