Објавување на SBCL 2.3.11, имплементација на јазикот Common Lisp

Објавено е објавувањето на SBCL 2.3.11 (Steel Bank Common Lisp), бесплатна имплементација на програмскиот јазик 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 правилно сигнализира или применува замени кога се користат надворешни формати од еден бајт за поретко шифрирање (како што е iso-8859-3), наместо да зема битови од NIL адресата и да ги конвертира тие битови во знаци.
    • FILE-STRING-LENGTH сега враќа NIL ако влезните вредности не се кодирани во форматот на надворешен пренос.
    • Табеларните повеќебајтни надворешни формати (EUC-JP, Shift-JIS, GBK) сега го почитуваат знакот за замена (во надворешен формат или преку рестартирање) кога се кодираат во октети.
    • Конвертирањето од октети со помош на надворешни формати UCS-2, UCS-4 и UTF-32 повеќе не го чита крајот на октетната низа со нецелоброен број од два или четири бајти единици.
    • Конвертирањето од октети користејќи надворешни формати UCS-2, UCS-4 и UTF-32 сега враќа едноставна низа, како што се бара од дефиницијата за типот OCTETS-TO-STRING.
    • Користењето неточен формат на надворешен аргумент за ОТВОРЕНО или СО ОТВОРЕНО-ДАТОЈКА (или внатрешен MAKE-FD-STREAM) повеќе не предизвикува протекување на дескрипторот на датотеката.
    • SB-ROTATE-BYTE ги дефинира BYTE спецификациите надвор од границите пред лошите страни на многу големи цели броеви за користење маски и смени.
    • Поправете ги заклучоците за типот при составување форми SB-ROTATE-BYTE со POSITION не-нулта во дефиницијата за бајти.
    • Поправени неколку асемблер грешки при компајлирање MAKE-ARRAY, MAKE-STRING и други со голема константна големина.
    • Поправете ја внатрешната грешка при компајлирање (SETF-SBIT) со голем константен индекс.
    • Поправена внатрешна грешка на компајлерот за функцијата ламбда со неточна листа на параметри во LABELS.
    • Поправете внатрешна грешка на компајлерот при составување на некои бесконечно рекурзивни форми на LABELS.
    • Поправена е внатрешна грешка на компајлерот кога се обидувате да внесете скок до веќе избришана етикета.
    • ПОПОИНТЕР ЗА ПОПОЛНУВАЊЕ никогаш не треба да биде негативен.

Извор: opennet.ru

Купете доверлив хостинг за сајтови со DDoS заштита, VPS VDS сервери 🔥 Купете сигурен веб-хостинг со DDoS заштита, VPS VDS сервери | ProHoster