ĂshtĂ« publikuar versione SBCL 2.3.11 (Steel Bank Common Lisp), njĂ« implementim tĂ« lirĂ« tĂ« gjuhĂ«s sĂ« programimit Common Lisp. Kodi i projektit Ă«shtĂ« shkruar nĂ« gjuhĂ«t Common Lisp dhe C, dhe shpĂ«rndahet nĂ«n licencĂ«n BSD. NĂ« kĂ«tĂ« version tĂ« ri:
- Përputhje të vogla:
- Të dhënat nga një burim me parametrin external-format, i caktuar përmes «:REPLACEMENT», do të aplikojnë të dhënat për zëvendësimin e informacionit një herë në burim, çka shkakton gabime dekodimi (ndryshe nga disa raste, një herë për secilën sekuencë bytes, çdo njëra prej të cilave nuk është një pozicion fillestar i vlefshëm simboli për këtë external-format).
- Përcaktuesit external-format kur përdorin variante të papranuara ose të panjohura tani do të sinjalizojnë një gabim.
- Përmirësime:
- Në procesin e shpërndarjes së funksioneve të përgjithshme, duke përdorur metodën e standardit ose të shkurtër të kombinimit, në mungesë të metodave kryesore të aplikueshme, sistemi do të thërrasë funksionin e përgjithshëm SB-PCL:NO-PRIMARY-METHOD, i cili ka sjellje standarde për të sinjalizuar një gabim. Përdoruesit mund të përcaktojnë metoda për këtë funksion të përgjithshëm.
- Formatet e jashtme tani mbështesin variante të reja rreshtash për kodet një bajtësh dhe utf-8.
- Gabimet e kodimit dhe dekodimit të simboleve, të sinjalizuara nga funksionet e kanaleve ose bajtëve, tani mbështesin USE-VALUE për rindezje për trajtuesit që ofrojnë zëvendësime për hyrje ose dalje.
- READ-SEQUENCE dhe WRITE-SEQUENCE mbështesin sekuenca të përcaktuara nga përdoruesi; implementimi standard e përpunon element pas elementi, duke lexuar ose shkruar një bajt ose simbol në / nga kanalit përkatës.
- Optimizime:
- Formatet e jashtme me :REPLACEMENT nuk e lidhin më trajtuesit për gabimet e funksioneve të konvertimit, gjë që duhet të reduktojë numrin e operacioneve cons dhe të rrisë performancën.
- Nëse :EXTERNAL-FORMAT vepron si argument për STRING-TO-OCTETS ose OCTETS-TO-STRING dhe është një konstant gjatë kompilimit, atëherë formati i jashtëm zgjidhet gjatë ngarkimit, dhe jo për secilën thirrje.
- Kompilatori mund të kufizojë llojet e argumenteve për disa funksione duke u bazuar në llojin e nxjerrë ose të nënkuptuar të vlerës që kthehet nga kjo funksion.
- Kompilatori redukton numrin e verifikimeve të tepërta të llojeve në funksione si ASSOC dhe GETF.
- U zgjidhën rrjedhjet e memories në CMS_EncryptedData_encrypt() dhe nref_nos().
- OCTETS-TO-STRING sinjalizon ose aplikon zëvendësime siç duhet kur përdoren formate të jashtme njëbajtëshe për kodime të pakta (p.sh. iso-8859-3), dhe nuk merr bitet nga adresa NIL dhe nuk i konverton këto bite në simbole.
- FILE-STRING-LENGTH tani kthen NIL nëse vlerat hyrëse nuk kodohen në formatin e jashtëm të rrjedhës.
- Formatet e shumëbajtësheve të tabelave (EUC-JP, Shift-JIS, GBK) tani marrin parasysh simbolin zëvendësues (në formatin e jashtëm ose përmes rinisjes) kur kodojnë në oktete.
- Konvertimi nga oktetet duke përdorur formatet e jashtme UCS-2, UCS-4 dhe UTF-32 nuk lexon më fundin e vargut të okteteve me numra të pa tërë për njësi dy- ose katërbajtëshe.
- Konvertimi nga oktetet duke përdorur formatet e jashtme UCS-2, UCS-4 dhe UTF-32 tani kthen një varg të thjeshtë, siç kërkohet nga definicioni i tipit OCTETS-TO-STRING.
- Përdorimi i një formati të jashtëm të gabuar për OPEN ose WITH-OPEN-FILE (ose MAKE-FD-STREAM të brendshme) nuk çon më në rrjedhjen e deskriptorit të skedarit.
- SB-ROTATE-BYTE përcakton specifikimet e BYTE jashtë vlerës së lejuar përpara se të ekzekutojë cons të numrave të mëdhenj të tërë për përdorimin e maskave dhe zhvendosjeve.
- Korrigjimi i daljes së tipit gjatë kompaktimit të formave SB-ROTATE-BYTE me POSITION jo zero në definicionin e byte.
- Korrigjimi i disa gabimeve të assemblerit gjatë kompaktimit të MAKE-ARRAY, MAKE-STRING dhe të tjerave me dimension të madh të përhershëm.
- Korrigjimi i një gabimi të brendshëm gjatë kompaktimit (SETF-SBIT) me një indeks të madh të përhershëm.
- Korrigjimi i një gabimi të brendshëm të kompajlerit për një funksion lambda me një listë parametrash të papërshtatshme në LABELS.
- Korrigjimi i një gabimi të brendshëm të kompajlerit gjatë kompaktimit të disa formave LABELS me rekursione të pafund.
- Korrigjimi i një gabimi të brendshëm të kompajlerit gjatë përpjekjes për të përfshirë një kalim te një etiketë që është hequr tashmë.
- FILL-POINTER nuk duhet kurrë të jetë negativ.
Burimi: opennet.ru
