Common Lisp программалоо тилинин акысыз ишке ашырылышы болгон SBCL 2.3.11 (Steel Bank Common Lisp) релиз жарыяланды. Долбоордун коду Common Lisp жана C тилдеринде жазылган жана BSD лицензиясы боюнча таратылат. Жаңы чыгарылышта:
- Кичинекей келишпестиктер:
- ":REPLACEMENT" менен белгиленген тышкы форматтагы агымдар маалыматты бир агымда бир жолу алмаштыруу үчүн колдонушат, натыйжада декоддоо каталары пайда болот (айрым учурларда, ар бири жарактуу эмес байт ырааттуулугу үчүн бир жолу эмес бул тышкы формат үчүн баштапкы позиция).
- Тышкы формат спецификаторлору эми колдоого алынбаган же таанылбаган варианттарды колдонууда ката жөнүндө сигнал берет.
- Жакшыртуулар:
- Стандарттык же кыска айкалыштыруу ыкмасын колдонгон жалпы функцияларды жөнөтүүдө, эгерде жеткиликтүү негизги методдор жок болсо, система SB-PCL:NO-PRIMARY-METHOD деген жалпы функцияны чакырат, анын демейки жүрүм-туруму ката сигналы болуп саналат. Колдонуучулар бул жалпы функциянын ыкмаларын аныктай алышат.
- Тышкы форматтар эми бир байт жана utf-8 коддоолору үчүн жаңы сап варианттарын колдойт.
- Агым же октет функциялары менен сигнализацияланган символдорду коддоо жана декоддоо каталары эми киргизүү же чыгаруу алмаштырууну камсыз кылган иштетүүчүлөр үчүн USE-VALUE кайра иштетүүнү колдойт.
- READ-SEQUENCE жана WRITE-SEQUENCE колдонуучу аныктаган ырааттуулуктарды колдойт; стандарттык ишке ашыруу элементти элементтер боюнча иштетет, тиешелүүлүгүнө жараша бир байт же символду агымга/агымдан окуйт же жазат.
- Оптимизациялар:
- :REPLACEMENT менен тышкы форматтар конверсия функциялары үчүн ката иштеткичтерин мындан ары байланыштырбайт, бул терс операциялардын санын азайтып, иштин майнаптуулугун жакшыртышы керек.
- Эгерде: EXTERNAL-FORMAT STRING-TO-OCTETS же OCTETS-TO-STRING аргументи болуп саналат жана компиляция убактысынын константасы болсо, анда тышкы формат ар бир чакырууда эмес, жүктөө убагында чечилет.
- Компилятор кээ бир функциялар үчүн аргументтердин түрлөрүн ошол функция тарабынан кайтарылган маанинин болжолдуу же болжолдонгон түрүнүн негизинде чектей алат.
- Компилятор ASSOC жана GETF сыяктуу функциялардагы ашыкча текшерүүлөрдүн санын азайтат.
- Мүчүлүштүктөрдү оңдоо:
- OCTETS-TO-STRING NIL дарегинен биттерди алып, ал биттерди символдорго айландыруунун ордуна, анча кеңири таралган коддоолорго (мисалы, iso-8859-3) бир байт тышкы форматтарды колдонууда туура сигнал берет же алмаштырууларды колдонот.
- FILE-STRING-LENGTH эми киргизүү маанилери тышкы агым форматына коддолбосо, NIL кайтарат.
- Таблицалуу көп байт тышкы форматтары (EUC-JP, Shift-JIS, GBK) эми октеттерге коддоодо алмаштыруу символун сыйлашат (тышкы форматта же кайра баштоо аркылуу).
- Тышкы UCS-2, UCS-4 жана UTF-32 форматтарын колдонуу менен октеттерден конвертациялоо мындан ары эки же төрт байт бирдиктердин бүтүн эмес саны менен октет массивинин аягы окубайт.
- Тышкы UCS-2, UCS-4 жана UTF-32 форматтарын колдонуп октеттерден конвертациялоо OCTETS-TO-STRING түрүнүн аныктамасы талап кылгандай, эми жөнөкөй сапты кайтарат.
- OPEN же WITH-OPEN-FILE (же ички MAKE-FD-STREAM) үчүн туура эмес тышкы аргумент форматын колдонуу мындан ары файлдын дескрипторунун агып кетишине алып келбейт.
- SB-ROTATE-BYTE маскаларды жана жылдырууларды колдонуу үчүн өтө чоң бүтүн сандардын терс жактарынан мурун BYTE спецификацияларын аныктайт.
- Байттын аныктамасында нөл эмес POSITION менен SB-ROTATE-BYTE формаларын компиляциялоодо типтин жыйынтыгын оңдоо.
- MAKE-ARRAY, MAKE-STRING жана башкалар чоң туруктуу өлчөмдөгү компиляциялоодо бир нече ассемблердин каталары оңдолду.
- Чоң туруктуу индекси менен (SETF-SBIT) түзүүдө ички катаны оңдоо.
- LABELS ичинде туура эмес параметр тизмеси менен ламбда функциясы үчүн ички компилятордун катасы оңдолду.
- LABELSтин кээ бир чексиз рекурсивдүү формаларын түзүүдө ички компилятордун катасын оңдоо.
- Буга чейин жок кылынган энбелгиге секирүү аракетинде ички компилятор катасы оңдолду.
- FILL-POINTER эч качан терс болбошу керек.
Source: opennet.ru
