Нашри забони барномасозии 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 аломати нуқтаи истинод бошад;
  • Қимати максималии мушаххаскунандаи андоза (“n”) дар блокҳои ифодаи муқаррарии “{m,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" (debuging Regex) акнун боиси фаъол шудани ҳама усулҳои имконпазири ислоҳи ифодаи муқаррарӣ мегардад;
  • Хусусиятҳои қаблан бекоршуда хориҷ карда шуданд:
    • Ҳоло ҳамчун ҷудокунандаи сатр ва аломатҳои ваҳшӣ дастрас аст иҷозат дода шудааст танҳо истифода баред графемахо (аломатҳои таркибии Юникод иҷозат дода намешаванд).
    • Қатъ карда шудааст дастгирии баъзе шаклҳои кӯҳнашудаи истифодаи аломати "{" дар ибораҳои муқаррарӣ бидуни фирор аз он.
    • Манъ аст бо истифода аз функсияҳои sysread(), syswrite(), recv() ва send() бо коркардкунандагони ":utf8".
    • Истифодаи таърифҳои "ман" дар изҳороти шартии бардурӯғ манъ аст (масалан, "ман $x агар 0 бошад").
    • Дастгирии тағирёбандаҳои махсуси "$*" ва "$#" хориҷ карда шудааст.
      Дастгирии занги номуайяни функсияи dump() қатъ карда шуд (шумо ҳоло бояд CORE::dump()-ро ба таври возеҳ муайян кунед).

    • Функсияи File::Glob::glob хориҷ карда шуд (шумо бояд File::Glob::bsd_glob-ро истифода баред).
    • Муҳофизати иловашуда ба pack() аз баргардонидани пайдарпаии беэътибори Юникод.
    • Анҷоми дастгирии истифодаи макросҳо, ки амалиётро бо UTF-8 дар коди XS (блокҳои C) иҷро мекунанд, то нашри навбатӣ мавқуф гузошта шуд.
  • Оптимизатсияи иҷроиш:
    • Амалиётҳои тарҷума аз UTF-8 ба тарҳбандии аломатҳо суръат бахшида шуданд (нуқтаи код), масалан, иҷрои амалиёти ord(“\x7fff”) ҳоло 12% камтар дастурҳоро талаб мекунад. Иҷрои амалиёти тафтиши дурустии пайдарпайии аломатҳои UTF-8 низ зиёд шуд;
    • Зангҳои рекурсивӣ дар функсияи finalize_op() бартараф карда шуданд;
    • Ба код барои шикастани аломатҳои якхела ва муайян кардани синфҳои аломатҳо дар ифодаҳои муқаррарӣ оптимизатсияҳои ночиз анҷом дод;
    • Optimized табдил додани таърифҳои навъи имзошуда ба таърифҳои беимзо (IV ба ултрабунафш);
    • Алгоритми ба сатр табдил додани ададҳои бутун бо роҳи коркарди ду рақам якбора ба ҷои як рақам суръат гирифт;
    • Такмил дода шуд тайёр карда шудааст дар асоси таҳлили LGTM;
    • Рамзи оптимизатсияшуда дар файлҳои regcomp.c, regcomp.h ва regexec.c;
    • Дар ибораҳои муқаррарӣ коркарди намунаҳо ба монанди “qr/[^a]/” бо аломатҳои ASCII ба таври назаррас суръат гирифтааст.
  • Дастгирии платформаи Minix3 барқарор карда шуд. Бо истифода аз компилятори Microsoft Visual Studio 2019 сохтан мумкин аст (Visual C++ 14.2);
  • Версияҳои навшудаи модулҳо, ки ба бастаи асосӣ дохил карда шудаанд. Модулҳо аз таркиби асосӣ хориҷ карда шуданд B:: Debug и Маҳалли:: Рамзҳо.

Манбаъ: opennet.ru

Илова Эзоҳ