Perl 5.30.0 proqramlaşdırma dilinin buraxılışı

11 aylıq inkişafdan sonra reallaşdı Perl proqramlaşdırma dilinin yeni sabit qolunun buraxılışı - 5.30. Yeni buraxılışın hazırlanması zamanı təxminən 620 min sətir kod dəyişdirildi, dəyişikliklər 1300 fayla təsir etdi və inkişafda 58 tərtibatçı iştirak etdi.

Filial 5.30 altı il əvvəl təsdiq edilmiş sabit inkişaf cədvəlinə uyğun olaraq buraxılmışdır ki, bu da ildə bir dəfə yeni sabit filialların buraxılmasını və hər üç aydan bir düzəldici buraxılışları nəzərdə tutur. Təxminən bir aydan sonra Perl 5.30.1-ın tətbiqi zamanı aşkar edilmiş ən əhəmiyyətli səhvləri düzəldəcək Perl 5.30.0-in ilk düzəldici buraxılışının buraxılması planlaşdırılır. Perl 5.30-un buraxılması ilə yanaşı, 5.26 filialına dəstək dayandırıldı, bunun üçün yeniləmələr gələcəkdə yalnız kritik təhlükəsizlik problemləri aşkar edildikdə buraxıla bilər. 5.31 eksperimental filialının inkişaf prosesi də başladı, bunun əsasında 2020-ci ilin may ayında Perl 5.32-nin sabit buraxılışı formalaşacaq.

Açar dəyişikliklər:

  • Normal ifadələrə "" əməliyyatları üçün eksperimental dəstək əlavə edildi.(?‹!naxış)"Və"(?‹=naxış)» əvvəllər işlənmiş adlandırılmış şablonlara məhdud giriş üçün. Nümunənin tərifi istinad nöqtəsindən 255 simvol daxilində olmalıdır;
  • “{m,n}” normal ifadə bloklarında ölçü təyinedicisinin (“n”) maksimum dəyəri 65534-ə qədər artırıldı;
  • Məhdud əlavə edildi dəstək müxtəlif Unicode dəstlərini əhatə edən müntəzəm ifadələrdə simvolların müəyyən kateqoriyalarını vurğulamaq üçün maskalar. Məsələn, “qr! \p{nv= /(?x) \A [0-5] \z / }!” 0-dan 5-ə qədər rəqəmləri təyin edən bütün Unicode simvollarını, o cümlədən rəqəmlərin Tay və ya Benqal yazılışlarını seçməyə imkan verir;
  • Normal ifadələrdə adlandırılmış simvollar üçün əlavə dəstək
    tək dırnaqlarla ayrılmış daxili nümunələr (qr'\N{name}');

  • Unicode spesifikasiyası dəstəyi versiyaya yeniləndi 12.1. Eksperimental inkişaf bayrağı zənglərdən silindi sv_utf8_downgrade və sv_utf8_decode, C dilində uzantıların hazırlanmasında istifadə olunur;
  • Çox yivli əməliyyatı (-Accflags='-DUSE_THREAD_SAFE_LOCALE') dəstəkləyən yerli dil ilə əməliyyatların həyata keçirilməsi ilə Perl qurmaq imkanı əlavə edildi. Əvvəllər belə bir tətbiq yalnız Perl-in çox yivli versiyasını qurarkən istifadə olunurdu, lakin indi istənilən quruluş üçün aktivləşdirilə bilər;
  • "-Dv" (inkişaf etmiş sazlama çıxışı) və "-Dr" (regex sazlama) bayraqlarının birləşdirilməsi indi bütün mümkün müntəzəm ifadə sazlama rejimlərinin işə salınmasına səbəb olur;
  • Əvvəllər köhnəlmiş funksiyalar silindi:
    • İndi xətt ayırıcı və joker simvol kimi mövcuddur icazə verilir yalnız istifadə edin qrafemlər (kompozit Unicode simvollarına icazə verilmir).
    • Dayandırılıb müntəzəm ifadələrdə “{” simvolundan qaçmadan istifadə etməyin bəzi uzun müddət köhnəlmiş formalarına dəstək.
    • Bu qadağandır sysread(), syswrite(), recv() və send() funksiyalarından ":utf8" işləyiciləri ilə istifadə etməklə.
    • “Mənim” təriflərindən mahiyyət etibarilə yanlış şərti ifadələrdə istifadə etmək qadağandır (məsələn, “mənim $x əgər 0”).
    • “$*” və “$#” xüsusi dəyişənləri üçün dəstək silindi.
      dump() funksiyasının gizli çağırılması üçün dəstək dayandırıldı (indi açıq şəkildə CORE::dump() göstərməlisiniz).

    • File::Glob::glob funksiyası silindi (siz File::Glob::bsd_glob istifadə etməlisiniz).
    • Səhv Unicode ardıcıllığının qaytarılmasına qarşı pack() funksiyasına əlavə qorunma.
    • XS kodunda (C blokları) UTF-8 ilə əməliyyatlar həyata keçirən makroların istifadəsinə dəstəyin sonu növbəti buraxılışa qədər təxirə salınıb.
  • Performans optimallaşdırmaları:
    • UTF-8-dən simvol düzümünə tərcümə əməliyyatları sürətləndirildi (kod nöqtəsi), məsələn, ord(“\x7fff”) əməliyyatını yerinə yetirmək indi 12% daha az təlimat tələb edir. UTF-8 simvol ardıcıllığının düzgünlüyünü yoxlayan əməliyyatların performansı da artırılıb;
    • finalize_op() funksiyasında rekursiv çağırışlar aradan qaldırıldı;
    • Normal ifadələrdə eyni simvolları yığışdırmaq və simvol siniflərini təyin etmək üçün kodda kiçik optimallaşdırmalar edildi;
    • Optimallaşdırılmış imzalanmış tip təriflərinin imzasızlara çevrilməsi (IV-dən UV-yə);
    • Tam ədədlərin sətirə çevrilməsi alqoritmi bir əvəzinə iki rəqəmin eyni vaxtda işlənilməsi ilə sürətləndirilmişdir;
    • Təkmilləşdirmələr aparılıb hazırlanmışdır LGTM tərəfindən təhlil əsasında;
    • regcomp.c, regcomp.h və regexec.c fayllarında optimallaşdırılmış kod;
    • Normal ifadələrdə ASCII simvolları ilə “qr/[^a]/” kimi nümunələrin işlənməsi əhəmiyyətli dərəcədə sürətləndirilib.
  • Minix3 platformasına dəstək bərpa edildi. Microsoft Visual Studio 2019 kompilyatorundan istifadə etməklə qurmaq mümkündür (Visual C++ 14.2);
  • Əsas paketə daxil olan modulların yenilənmiş versiyaları. Modullar əsas tərkibdən çıxarılıb B :: Debug и Yerli::Kodlar.

Mənbə: opennet.ru

Добавить комментарий