Perl 5.30.0 dasturlash tilining chiqarilishi

11 oylik rivojlanishdan keyin amalga oshirildi Perl dasturlash tilining yangi barqaror filialini chiqarish - 5.30. Yangi nashrni tayyorlashda taxminan 620 ming satr kod o'zgartirildi, o'zgarishlar 1300 ta faylga ta'sir ko'rsatdi va ishlab chiqishda 58 ishlab chiquvchi ishtirok etdi.

5.30 filiali olti yil oldin tasdiqlangan rivojlanish jadvaliga muvofiq chiqarildi, bu yiliga bir marta yangi barqaror filiallarni va har uch oyda tuzatuvchi relizlarni chiqarishni nazarda tutadi. Taxminan bir oy ichida Perl 5.30.1 ning birinchi tuzatuvchi versiyasini chiqarish rejalashtirilgan, bu Perl 5.30.0 ni amalga oshirish jarayonida aniqlangan eng muhim xatolarni tuzatadi. Perl 5.30 versiyasini chiqarish bilan bir qatorda, 5.26 filialini qo'llab-quvvatlash to'xtatildi, kelajakda yangilanishlar faqat muhim xavfsizlik muammolari aniqlangan taqdirda chiqarilishi mumkin. 5.31 eksperimental filialini ishlab chiqish jarayoni ham boshlandi, uning asosida 2020 yil may oyida Perl 5.32 ning barqaror versiyasi shakllantiriladi.

Kalit o'zgartirish:

  • Oddiy iboralarga "" operatsiyalari uchun eksperimental yordam qo'shildi.(?‹!naqsh)"Va"(?‹=naqsh)» ilgari qayta ishlangan shablonlarga cheklangan kirish uchun. Shakl ta'rifi mos yozuvlar nuqtasidan 255 belgi ichida bo'lishi kerak;
  • “{m,n}” oddiy ifoda bloklaridagi o‘lcham spetsifikatsiyasining (“n”) maksimal qiymati 65534 ga oshirildi;
  • Cheklangan qo'llab-quvvatlash turli Unicode to'plamlarini qamrab olgan muntazam ifodalardagi belgilarning ayrim toifalarini ajratib ko'rsatish uchun niqoblar. Masalan, “qr! \p{nv= /(?x) \A [0-5] \z / }!” 0 dan 5 gacha raqamlarni belgilaydigan barcha Unicode belgilarini, shu jumladan raqamlarning Tailand yoki Bengal imlolarini tanlash imkonini beradi;
  • Muntazam iboralarda nomlangan belgilar uchun qo'shimcha yordam
    bitta tirnoq bilan chegaralangan ichki naqshlar (qr'\N{name}');

  • Unicode spetsifikatsiyasini qo'llab-quvvatlash versiyaga yangilandi 12.1. Eksperimental rivojlanish bayrog‘i qo‘ng‘iroqlardan olib tashlandi sv_utf8_downgrade va sv_utf8_decode, C tilida kengaytmalarni ishlab chiqishda foydalaniladi;
  • Ko'p oqimli operatsiyani qo'llab-quvvatlaydigan mahalliy til bilan operatsiyalarni amalga oshirish bilan Perl yaratish qobiliyati qo'shildi (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Ilgari bunday tatbiq faqat Perl ning ko'p tarmoqli versiyasini yaratishda qo'llanilgan, ammo endi har qanday qurilish uchun yoqilishi mumkin;
  • "-Dv" (kengaytirilgan disk raskadrovka chiqishi) va "-Dr" (regex disk raskadrovka) bayroqlarini birlashtirish endi barcha mumkin bo'lgan muntazam ifodalarni tuzatish rejimlarini yoqishga olib keladi;
  • Oldindan eskirgan funksiyalar olib tashlandi:
    • Endi chiziq ajratuvchi va joker belgilar sifatida mavjud ruxsat berilgan faqat foydalaning grafemalar (kompozit Unicode belgilarga ruxsat berilmaydi).
    • To'xtatilgan muntazam iboralarda “{” belgisidan qochmasdan foydalanishning uzoq vaqtdan beri eskirgan ba’zi shakllarini qo‘llab-quvvatlash.
    • Bu taqiqlanadi ":utf8" ishlov beruvchilari bilan sysread(), syswrite(), recv() va send() funksiyalaridan foydalanish.
    • O'z-o'zidan noto'g'ri shartli bayonotlarda "mening" ta'riflarini ishlatish taqiqlanadi (masalan, "mening $x agar 0").
    • “$*” va “$#” maxsus oʻzgaruvchilarni qoʻllab-quvvatlash olib tashlandi.
      dump() funksiyasining yashirin chaqiruvini qoʻllab-quvvatlash toʻxtatildi (endi CORE::dump() ni aniq belgilashingiz kerak).

    • File::Glob::glob funksiyasi olib tashlandi (siz File::Glob::bsd_glob dan foydalanishingiz kerak).
    • pack() ga noto'g'ri Unicode ketma-ketliklarini qaytarishdan himoya qo'shildi.
    • XS kodida (C bloklari) UTF-8 bilan operatsiyalarni bajaradigan makroslardan foydalanishni qo'llab-quvvatlashning tugashi keyingi nashrga qoldirildi.
  • Ishlash optimallashtirishlari:
    • UTF-8 dan belgilar tartibiga tarjima operatsiyalari tezlashtirildi (kod nuqtasi), masalan, ord("\x7fff") operatsiyasini bajarish uchun endi 12% kamroq ko'rsatmalar talab qilinadi. UTF-8 belgilar ketma-ketligining to'g'riligini tekshirish operatsiyalari samaradorligi ham oshirildi;
    • finalize_op() funksiyasidagi rekursiv chaqiruvlar bekor qilindi;
    • Oddiy iboralarda bir xil belgilarni yig'ish va belgilar sinflarini aniqlash uchun kodga kichik optimallashtirishlar kiritildi;
    • Optimallashtirilgan imzolangan turdagi ta'riflarni imzosizlarga aylantirish (IV dan UV ga);
    • Butun sonlarni satrga aylantirish algoritmi birdaniga bir emas, ikkita raqamni qayta ishlash orqali tezlashtirildi;
    • Yaxshilashlar amalga oshirildi tayyorlangan LGTM tahlili asosida;
    • regcomp.c, regcomp.h va regexec.c fayllaridagi optimallashtirilgan kod;
    • Muntazam iboralarda ASCII belgilar bilan "qr/[^a]/" kabi naqshlarni qayta ishlash sezilarli darajada tezlashdi.
  • Minix3 platformasini qo'llab-quvvatlash tiklandi. Microsoft Visual Studio 2019 kompilyatori (Visual C++ 14.2) yordamida qurish mumkin;
  • Asosiy paketga kiritilgan modullarning yangilangan versiyalari. Modullar asosiy tarkibdan olib tashlandi B :: disk raskadrovka и Mahalliy:: Kodlar.

Manba: opennet.ru

a Izoh qo'shish