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-тен УК-ға);
    • Бүтін сандарды жолға түрлендіру алгоритмі бір цифрдың орнына бірден екі цифрды өңдеу арқылы жеделдетілді;
    • Жақсартулар жасалды дайындалған LGTM талдауына негізделген;
    • regcomp.c, regcomp.h және regexec.c файлдарындағы оңтайландырылған код;
    • Тұрақты өрнектерде ASCII таңбалары бар “qr/[^a]/” сияқты үлгілерді өңдеу айтарлықтай жеделдетілді.
  • Minix3 платформасын қолдау қалпына келтірілді. Microsoft Visual Studio 2019 компиляторы арқылы құрастыруға болады (Visual C++ 14.2);
  • Негізгі пакетке енгізілген модульдердің жаңартылған нұсқалары. Негізгі құрамнан модульдер жойылды B :: Түзету и Жергілікті::Кодтар.

Ақпарат көзі: opennet.ru

пікір қалдыру