Megjelent a SBCL 2.3.11 (Steel Bank Common Lisp), a Common Lisp programozási nyelv szabad megvalósítása. A projekt kódja Common Lisp és C nyelveken íródott, és BSD licenc alatt terjesztik. Az új verzióban:
- Kis inkompatibilitások:
- Az external-format paraméterrel rendelkező szálak, amelyeket a ":REPLACEMENT" segítségével határoztak meg, egyszeri adattal helyettesítik az információt a szálban, ami dekódolási hibákhoz vezet (nem úgy, mint egyes esetekben, amikor egyszerre minden egyes bájt sorozat számára, amely nem érvényes kezdő pozíció karakter számára ezen external-format-hoz).
- Az unsupported vagy nem felismert alternatívákat használó external-format definíciók most hibajelzést adnak.
- Fejlesztések:
- A diszpécselési folyamatban, amely általános funkciókat használ, a szabványos vagy rövid kombinálási módszert alkalmazva, ha nincs fő alkalmazható módszer, a rendszer meghívja az SB-PCL:NO-PRIMARY-METHOD általános funkciót, amelynek alapértelmezett viselkedése hibajelzés. A felhasználók módszereket határozhatnak meg ehhez az általános funkcióhoz.
- A külső formátumok most támogatják az új vonalkód alternatívákat egybájtos és utf-8 kódolások esetén.
- A karakterek kódolásával és dekódolásával kapcsolatos hibákat jelző szálak vagy bájtok most támogatják a USE-VALUE újraindítást a kezelők számára, amelyek helyettesítéseket biztosítanak a be- vagy kimenethez.
- A READ-SEQUENCE és WRITE-SEQUENCE most támogatják a felhasználó által meghatározott sorozatokat; a szabványos megvalósítás elemről elemre dolgozik, olvasva vagy írva egy bájtot vagy karaktert a szálba/onnan.
- Optimalizálások:
- A :REPLACEMENT külső formátumok már nem társítanak kezelőket a konverziós függvények hibáihoz, ami csökkenteni fogja a cons-műveletek számát és növelni fogja a teljesítményt.
- Ha az :EXTERNAL-FORMAT érvet alkot a STRING-TO-OCTETS vagy OCTETS-TO-STRING számára, és a fordítás során állandónak tekinthető, akkor a külső formátum a betöltéskor oldódik meg, nem pedig minden egyes hívásnál.
- A fordító korlátozhatja egyes függvények argumentum-típusait a visszaadott érték kimeneti vagy implicit típusa alapján.
- A fordító csökkenti a felesleges típusellenőrzések számát olyan függvényekben, mint az ASSOC és GETF.
- Hibajavítások:
- Az OCTETS-TO-STRING helyesen jelzi vagy alkalmazza a cseréket, amikor egybájtos külső formátumokat használ ritkán előforduló kódolásokhoz (például iso-8859-3), és nem veszi a biteket a NIL címből és nem konvertálja ezeket a biteket karakterekké.
- A FILE-STRING-LENGTH most NIL-t ad vissza, ha a bemeneti értékek nem kódolódnak külső áramformátumba.
- A táblázatos többbájtos külső formátumok (EUC-JP, Shift-JIS, GBK) most figyelembe veszik a helyettesítő karaktert (a külső formátumban vagy újraindítás révén) oktetté kódoláskor.
- Az oktettek UCS-2, UCS-4 és UTF-32 külső formátumai közötti konverzió már nem olvassa a nem egész számú két- vagy négybájtos egységekből álló oktett tömb végét.
- Az oktettek UCS-2, UCS-4 és UTF-32 külső formátumai közötti konverzió most egyszerű sztringet ad vissza, amint azt az OCTETS-TO-STRING típusdefiníciója megköveteli.
- Hibás külső formátum argumentum használata az OPEN vagy a WITH-OPEN-FILE esetén (vagy a belső MAKE-FD-STREAM esetén) többé nem vezet fájl leíró szivárgáshoz.
- A SB-ROTATE-BYTE meghatározza a BYTE specifikációkat az érvényes értékeken kívül a nagyon nagy egész számok maszkok és eltolások használata előtt való végrehajtása előtt.
- A típuskimenet javítása a SB-ROTATE-BYTE formulák fordítása során nem nulla POSITION értékkel a byte meghatározásában.
- Több hibát javítottak az assemblerben a MAKE-ARRAY, MAKE-STRING és egyéb nagy állandó méretű formulák fordítása során.
- Javítva lett egy belső hiba a (SETF-SBIT) nagy állandó index fordításakor.
- Javítva lett egy belső fordító hiba a lambda függvény számára érvénytelen paraméterlistával a LABELS-nál.
- Javítva lett egy belső fordító hiba néhány végtelenségig rekurzív LABELS forma fordításakor.
- Javítva lett egy belső fordító hiba, amikor egy már törölt címkére való ugrás beágyazására tett kísérlet történt.
- A FILL-POINTER soha nem lehet negatív.
Forrás: opennet.ru
