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-ийг хөгжүүлэх үйл явц бас эхэлсэн бөгөөд үүний үндсэн дээр Perl 2020-ийн тогтвортой хувилбар 5.32 оны XNUMX-р сард бий болно.

Түлхүүр өөрчлөлт:

  • "" үйлдлийн туршилтын дэмжлэгийг ердийн илэрхийлэлд нэмсэн.(?‹!загвар)"Мөн"(?‹=загвар)» өмнө нь боловсруулсан нэрлэсэн загваруудад хязгаарлагдмал хандах боломжтой. Загварын тодорхойлолт нь лавлагааны цэгээс 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) ашиглан бүтээх боломжтой;
  • Үндсэн багцад багтсан модулиудын шинэчилсэн хувилбарууд. Үндсэн найрлагаас модулиудыг хассан Б:: Дибаг хийх и Орон нутаг:: Код.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх