Perl 5.30.0 программалоо тилинин чыгарылышы

11 айдан кийин иштеп чыгуу алып, Perl программалоо тилинин жаңы туруктуу бутагын чыгаруу - 5.30. Жаңы релизди даярдоодо 620 миңге жакын код саптары өзгөртүлгөн, өзгөртүүлөр 1300 файлга таасирин тийгизген жана иштеп чыгууга 58 иштеп чыгуучу катышкан.

5.30 филиалы алты жыл мурун бекитилген өнүгүүнүн белгиленген графигине ылайык чыгарылган, бул жылына бир жолу жаңы туруктуу бутактарды чыгарууну жана үч айда бир түзөтүүчү релиздерди билдирет. Болжол менен бир айдын ичинде Perl 5.30.1 программасын ишке ашырууда аныкталган эң олуттуу каталарды оңдой турган Perl 5.30.0 биринчи түзөтүүчү релизинин чыгышы пландаштырылууда. Perl 5.30 чыгаруу менен бирге 5.26 бутагына колдоо көрсөтүү токтотулган, ал үчүн жаңыртуулар коопсуздуктун олуттуу көйгөйлөрү аныкталган учурда гана чыгарыла алат. 5.31 эксперименталдык тармагын өнүктүрүү процесси да башталды, анын негизинде 2020-жылдын май айында Perl 5.32 туруктуу релиз түзүлөт.

Ачкыч өзгөрүүлөр:

  • Кадимки сөз айкаштарына "" операциялары үчүн эксперименталдык колдоо кошулду.(?‹!үлгү)"Ал эми"(?‹=үлгү)» мурда иштетилген аталган калыптарга чектелген мүмкүнчүлүк үчүн. Үлгү аныктамасы шилтеме чекитинин 255 символунун ичинде болушу керек;
  • “{m,n}” регулярдуу туюнтма блокторундагы өлчөм спецификаторунун (“n”) максималдуу мааниси 65534кө чейин көбөйтүлдү;
  • Кошулган чектелген колдоо ар кандай Юникод топтомдорун камтыган кадимки туюнтмалардагы белгилердин айрым категорияларын бөлүп көрсөтүү үчүн маскалар. Мисалы, «qr! \p{nv= /(?x) \A [0-5] \z / }!” 0дөн 5ке чейинки сандарды аныктаган бардык Юникод символдорун, анын ичинде сандардын тай же бенгалча жазылышын тандоого мүмкүндүк берет;
  • Кадимки сөз айкаштарында аталган символдорго колдоо кошулду
    жалгыз тырмакчалар менен бөлүнгөн ички үлгүлөр (qr'\N{name}');

  • Юникоддун спецификациясын колдоо версияга жаңыртылды 12.1. Эксперименттик өнүктүрүү желеги чалуулардан алынып салынды sv_utf8_downgrade жана sv_utf8_decode, Си тилинде кеңейтүүлөрдү иштеп чыгууда колдонулат;
  • Көп жиптүү операцияны колдогон локалдык тил менен операцияларды ишке ашыруу менен Perl куруу мүмкүнчүлүгү кошулду (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Мурда, мындай ишке ашыруу Perlдин көп жиптүү версиясын курууда гана колдонулчу, бирок азыр ар кандай куруу үчүн иштетилиши мүмкүн;
  • "-Dv" (жакшыртылган мүчүлүштүктөрдү оңдоо натыйжасы) жана "-Dr" (regex мүчүлүштүктөрдү оңдоо) желектерин айкалыштыруу азыр бардык мүмкүн болгон кадимки туюнтма мүчүлүштүктөрдү оңдоо режимдерин иштетүүгө алып келет;
  • Мурда жокко чыгарылган функциялар алынып салынды:
    • Эми сызык бөлгүч жана коймо белги катары жеткиликтүү уруксат гана колдонуу графемалар (курамдуу Юникод символдоруна жол берилбейт).
    • Токтотулган туруктуу сөз айкаштарында “{” белгисин андан качпай колдонуунун кээ бир эскирген формаларын колдоо.
    • Бул тыюу салынат sysread(), syswrite(), recv() жана send() функцияларын ":utf8" иштеткичтери менен колдонуу.
    • Туура эмес жалган шарттуу билдирүүлөрдөгү “менин” аныктамаларын колдонууга тыюу салынат (мисалы, “менин $x эгерде 0”).
    • “$*” жана “$#” өзгөчө өзгөрмөлөрдү колдоо алынып салынды.
      dump() функциясын кыйыр түрдө чакырууга колдоо көрсөтүү токтотулду (сиз эми CORE::dump() дегенди ачык көрсөтүшүңүз керек).

    • File::Glob::glob функциясы алынып салынды (сиз File::Glob::bsd_glob колдонушуңуз керек).
    • pack()га жараксыз Юникод ырааттуулугун кайтаруудан коргоо кошулду.
    • XS кодунда (C блоктору) UTF-8 менен операцияларды аткарган макросторду колдонууну колдоонун аяктоосу кийинки релизге чейин жылдырылды.
  • Ишти оптималдаштыруу:
    • UTF-8ден символдун түзүлүшүнө которуу операциялары тездетилди (код чекити), мисалы, ord(“\x7fff”) операциясын аткаруу үчүн азыр 12% азыраак нускама талап кылынат. UTF-8 символдорунун ырааттуулугун текшерүү операцияларын аткаруу да жогорулады;
    • finalize_op() функциясында рекурсивдүү чалуулар жок кылынды;
    • Бирдей символдорду жыйноо жана кадимки туюнтмалардагы символ класстарын аныктоо үчүн кодго кичине оптималдаштыруулар жасалган;
    • оптималдаштырылган кол коюлган типтеги аныктамаларды кол коюлбагандарга (IV - UV) которуу;
    • Бүтүн сандарды сапка айландыруу алгоритми бир эмес, бир эле учурда эки цифраны иштетүү менен тездетилген;
    • жакшыртуулар жасалды даярдалган LGTM тарабынан талдоонун негизинде;
    • regcomp.c, regcomp.h жана regexec.c файлдарындагы оптималдаштырылган код;
    • Регулярдуу туюнтмаларда ASCII символдору менен “qr/[^a]/” сыяктуу калыптарды иштетүү кыйла тездетилген.
  • Minix3 платформасын колдоо калыбына келтирилди. Microsoft Visual Studio 2019 компиляторунун жардамы менен курууга болот (Visual C++ 14.2);
  • Негизги пакетке киргизилген модулдардын жаңыланган версиялары. Негизги курамдан модулдар алынып салынды B :: Мүчүлүштүктөрдү оңдоо и Locale::Codes.

Source: opennet.ru

Комментарий кошуу