Verze SBCL 2.3.11, implementace jazyka Common Lisp

Byla vydána verze SBCL 2.3.11 (Steel Bank Common Lisp), svobodná implementace programovacího jazyka Common Lisp. Kód projektu je napsán v jazycích Common Lisp a C a je distribuován pod licencí BSD. V nové verzi:

  • Malé nekompatibility:
    • Proudy s parametrem external-format, definovaným pomocí „:REPLACEMENT“, nyní použijí data pro nahrazení informací jednou v proudu, což může vést k chybám dekódování (na rozdíl od toho, jak tomu bylo v některých případech, jednou pro sekvenci bajtů, kde každý z nich není platnou počáteční pozicí znaku pro tento external-format).
    • Identifikátory external-format při používání nepodporovaných nebo nerozpoznaných variant nyní budou signalizovat chybu.
  • Vylepšení:
    • V procesu dispatchování obecné funkce, která používá standardní nebo zkrácenou metodu kombinování, pokud chybí hlavní aplikovatelné metody, systém vyvolá obecnou funkci SB-PCL:NO-PRIMARY-METHOD, jejíž standardní chování spočívá v signalizaci chyby. Uživatelé mohou definovat metody pro tuto obecnou funkci.
    • Externí formáty nyní podporují varianty nového řádku pro jednosegmentové a utf-8 kódování.
    • Chyby o kódování a dekódování znaků, signalizované funkcemi proudů nebo oktetů, nyní podporují USE-VALUE restart pro obsluhy, které poskytují substituce pro vstup nebo výstup.
    • READ-SEQUENCE a WRITE-SEQUENCE podporují sekvence definované uživateli; standardní implementace zpracovává prvek po prvku, čtením nebo zápisem jednoho bajtu nebo znaku z/do proudu.
  • Optimalizace:
    • Externí formáty s :REPLACEMENT již nezpřahují obsluhy pro chyby konverzních funkcí, což by mělo snížit počet operací cons a zvýšit výkon.
    • Pokud :EXTERNAL-FORMAT slouží jako argument pro STRING-TO-OCTETS nebo OCTETS-TO-STRING a je konstantou během kompilace, externí formát se vyřeší během načítání, a ne při každém volání.
    • Kompilátor může omezit typy argumentů pro některé funkce na základě vyvozeného nebo předpokládaného typu hodnoty, kterou tato funkce vrací.
    • Kompilátor snižuje počet nadbytečných kontrol typů ve funkcích, jako jsou ASSOC a GETF.
  • Opravy chyb:
    • OCTETS-TO-STRING nyní správně signalizuje nebo aplikuje náhrady při použití jednovalcových externích formátů pro méně běžné kódování (např. iso-8859-3), místo aby bral bity z adresy NIL a tyto bity převáděl na znaky.
    • FILE-STRING-LENGTH nyní vrací NIL, pokud vstupní hodnoty nejsou kódovány do externího formátu proudu.
    • Tabulkové vícebytové externí formáty (EUC-JP, Shift-JIS, GBK) nyní zohledňují náhradní znak (v externím formátu nebo prostřednictvím restartu) při kódování do oktetů.
    • Převod z oktetů pomocí externích formátů UCS-2, UCS-4 a UTF-32 již nečte konec pole oktetů s necelým číslem dvou- nebo čtyřbytových jednotek.
    • Převod z oktetů pomocí externích formátů UCS-2, UCS-4 a UTF-32 nyní vrací jednoduchý řetězec, jak vyžaduje definice typu OCTETS-TO-STRING.
    • Použití nesprávného externího formátu argumentu pro OPEN nebo WITH-OPEN-FILE (nebo interní MAKE-FD-STREAM) již nevede k úniku souborového popisovače.
    • SB-ROTATE-BYTE určuje specifikace BYTE mimo povolenou hodnotu před vykonáním cons velmi velkých celých čísel pro použití masek a posunů.
    • Opraven typ výstupu při kompilování SB-ROTATE-BYTE forem s neprázdným POSITION v definici bytu.
    • Opraveno několik chyb assembleru při kompilaci MAKE-ARRAY, MAKE-STRING a dalších s velkým pevným velikostním.
    • Opravená interní chyba při kompilaci (SETF-SBIT) s velkým pevným indexem.
    • Opravená interní chyba kompilátoru pro lambda funkci s nesprávným seznamem parametrů v LABELS.
    • Opravená interní chyba kompilátoru při kompilaci některých nekonečně rekurzivních forem LABELS.
    • Opravená interní chyba kompilátoru při pokusu o vložení skoku k již odstraněné značce.
    • FILL-POINTER by nikdy neměl být záporný.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster