Izdanje SBCL 2.3.11, implementacija programskog jezika Common Lisp

Objavljen je izdanak SBCL 2.3.11 (Steel Bank Common Lisp), slobodne implementacije programskog jezika Common Lisp. Kod projekta napisan je na jezicima Common Lisp i C, te se distribuira pod BSD licencom. U novom izdanju:

  • Mali nesuglasja:
    • Strujni tokovi s parametrima external-format, definiranim putem ':REPLACEMENT', primjenjuju podatke za zamjenu informacija jednom u toku, što dovodi do grešaka dekodiranja (umjesto kako bi to u nekim slučajevima bilo jednom za sekvencu bajtova, od kojih nijedan nije dopuštena početna pozicija simbola za taj external-format).
    • Definitori external-format pri korištenju nepodržanih ili neprepoznatih varijanti sada će signalizirati grešku.
  • Poboljšanja:
    • Tijekom usmjeravanja generičkih funkcija, koje koriste standardnu ili kratku metodu kombiniranja, kada nema glavnih primjenjivih metoda, sustav će pozvati generičku funkciju SB-PCL:NO-PRIMARY-METHOD, čije je standardno ponašanje signaliziranje greške. Korisnici mogu definirati metode za ovu generičku funkciju.
    • Vanjski formati sada podržavaju varijante nove linije za jedno-bajtne i utf-8 kodiranja.
    • Greške o kodiranju i dekodiranju simbola, koje signaliziraju funkcije tokova ili okteta, sada podržavaju USE-VALUE ponovno pokretanje za rukovatelje koji pružaju zamjene za unos ili izlaz.
    • READ-SEQUENCE i WRITE-SEQUENCE podržavaju sekvence koje definira korisnik; standardna implementacija obrađuje element po element, čitajući ili bilježeći jedan bajt ili simbol iz/u tok prema tome.
  • Optimizacije:
    • Vanjski formati s ':REPLACEMENT' više ne povezuju rukovatelje za greške funkcija konverzije, što bi trebalo smanjiti broj cons-operacija i povećati performanse.
    • Ako ':EXTERNAL-FORMAT' djeluje kao argument za STRING-TO-OCTETS ili OCTETS-TO-STRING i je konstanta tijekom kompajliranja, vanjski format se razrješava tijekom učitavanja, a ne prilikom svakog poziva.
    • Kompajler može ograničiti tipove argumenata za neke funkcije na temelju izvedenog ili podrazumijevanog tipa vrijednosti koju vraća ta funkcija.
    • Kompajler smanjuje broj suvišnih provjera tipova u funkcijama poput ASSOC i GETF.
  • Ispravke grešaka:
    • OCTETS-TO-STRING is correctly signaling or applying substitutions when using single-byte external formats for less common encodings (e.g., iso-8859-3), rather than taking bits from the NIL address and converting those bits into characters.
    • FILE-STRING-LENGTH now returns NIL if the input values are not encoded in the external stream format.
    • Table multi-byte external formats (EUC-JP, Shift-JIS, GBK) now account for the replacement character (in the external format or via restarts) when encoding to octets.
    • Converting from octets using external formats UCS-2, UCS-4, and UTF-32 no longer reads the end of the octet array with a non-integer number of two- or four-byte units.
    • Converting from octets using external formats UCS-2, UCS-4, and UTF-32 now returns a simple string as required by the definition of OCTETS-TO-STRING.
    • Applying an incorrect external format argument for OPEN or WITH-OPEN-FILE (or internal MAKE-FD-STREAM) no longer leads to a file descriptor leak.
    • SB-ROTATE-BYTE specifies BYTE specifications out of the allowed range before executing cons of very large integers for use in masks and shifts.
    • Fixing type output when compiling SB-ROTATE-BYTE forms with a non-zero POSITION in the byte definition.
    • Fixing several assembler bugs when compiling MAKE-ARRAY, MAKE-STRING, and others with a large constant size.
    • Fixing an internal error when compiling (SETF-SBIT) with a large constant index.
    • Fixing an internal compiler error for a lambda function with an incorrect parameter list in LABELS.
    • Fixing an internal compiler error when compiling some infinitely-recursive forms in LABELS.
    • Fixing an internal compiler error when attempting to embed a jump to an already deleted label.
    • FILL-POINTER should never be negative.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster