Perl 5.36.0 proqramlaşdırma dili mövcuddur

Bir illik inkişafdan sonra Perl proqramlaşdırma dilinin yeni stabil qolunun - 5.36-nın buraxılışı nəşr olundu. Yeni buraxılış hazırlanarkən, təxminən 250 min sətir kod dəyişdirildi, dəyişikliklər 2000 fayla təsir etdi və inkişafda 82 tərtibatçı iştirak etdi.

5.36 filialı doqquz 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 ay ərzində Perl 5.36.1-ın tətbiqi zamanı aşkar edilmiş ən əhəmiyyətli səhvləri düzəldəcək Perl 5.36.0-in ilk düzəldici buraxılışının buraxılması planlaşdırılır. Perl 5.36-nın buraxılması ilə yanaşı, 5.32 filialına dəstək dayandırıldı, gələcək yeniləmələr yalnız kritik təhlükəsizlik problemləri aşkar edildikdə buraxıla bilər. 5.37 eksperimental filialının hazırlanması prosesi də başlayıb, bunun əsasında 2023.x nömrələnməsinə keçmək barədə qərar qəbul edilməsə, Perl 5.38-in stabil buraxılışı 7-cü ilin may və ya iyun aylarında formalaşacaq.

Əsas dəyişikliklər:

  • Funksiya imzaları üçün dəstək sabitləşdi və indi "istifadə v5.36" praqmasını təyin edərkən mövcuddur, bu funksiyada istifadə olunan dəyişənlərin siyahısını açıq şəkildə müəyyən etməyə və bir sıradan dəyərlərin yoxlanılması və təyin edilməsi əməliyyatlarını avtomatlaşdırmağa imkan verir. daxil olan parametrlər. Məsələn, əvvəllər istifadə edilmiş kod: sub foo { die "Alt proqram üçün çoxlu arqumentlər" əgər @_ >= 2; die "Alt proqram üçün çox az arqument" əgər @_ <= 2; my($sol, $sağ) = @_; $sol + $sağ qaytarın; }

    imzalardan istifadə edərkən aşağıdakılarla əvəz edilə bilər:

    sub foo ($sol, $sağ) { $sola + $sağa qayıt; }

    Əgər foo-nu ikidən çox arqumentlə çağırsanız, tərcüməçi xəta verəcək. Siyahı həmçinin bəzi arqumentlərə məhəl qoymamağa imkan verən xüsusi “$” dəyişənini dəstəkləyir, məsələn, “sub foo ($left, $, $right)” yalnız birinci və üçüncü arqumentləri dəyişənlərə köçürməyə imkan verəcək. , halbuki funksiya arqumentinə tam olaraq üç ötürülməlidir.

    İmza sintaksisi həmçinin isteğe bağlı arqumentləri göstərməyə və arqument çatışmırsa, standart dəyərləri təyin etməyə imkan verir. Məsələn, “sub foo ($left, $right = 0)” ifadəsini göstərməklə ikinci arqument isteğe bağlıdır və əgər yoxdursa, 0 dəyəri verilir.Təyinat əməliyyatında siz digər dəyişənlərdən istifadə etməklə ixtiyari ifadələr təyin edə bilərsiniz. siyahıdan və ya qlobal dəyişənlərdən. Dəyişən əvəzinə hash və ya massiv təyin etmək (məsələn, "sub foo ($left, @right)") bir və ya bir neçə arqumentin ötürülməsinə imkan verəcək.

  • İmzalardan istifadə etməklə elan edilən funksiyalarda "@_" massivindən əlavə parametr təyini dəstəyi eksperimental elan edilir və xəbərdarlıqla nəticələnəcək (xəbərdarlıq yalnız yeni sintaksisdən istifadə etməklə elan edilmiş funksiyalarda @_ istifadə edildikdə verilir). Məsələn, funksiya üçün xəbərdarlıq göstəriləcək: v5.36 istifadə edin; sub f ($x, $y = 123) { "Birinci arqument $_[0]" deyin; }
  • Sabitləşdirilmiş və "istifadə v5.36" praqmasını təyin edərkən əlçatandır, obyektin göstərilən sinfin nümunəsi və ya ondan əldə edilmiş sinif olduğunu yoxlamaq üçün "isa" infiks operatoru. Məsələn: if( $obj isa Paket::Ad ) { … }
  • “istifadə v5.36” praqmasını təyin edərkən, xəbərdarlıq emalı aktivləşdirilir (“istifadə xəbərdarlıqları” rejimi aktivləşdirilir).
  • “V5.36-dan istifadə” praqmasını təyin edərkən, obyektlərə zəng etmək üçün dolayı notasiya dəstəyi (“dolayı xüsusiyyət”) deaktiv edilir - “->” əvəzinə boşluq istifadə olunan obyektlərə zəng etməyin köhnəlmiş üsulu (“metod $” obyekt @param” əvəzinə “$object-> $method(@param)”). Məsələn, “my $cgi = new CGI” əvəzinə “my $cgi = CGI->new” istifadə etməlisiniz.
  • “V5.36 istifadə” praqmasını təyin edərkən, Perl 4 üslubunda çoxölçülü massivlərin və heşlərin təqlid edilməsi dəstəyi (“çoxölçülü xüsusiyyət”) söndürülür və bir neçə düymənin göstəricisinin ara massiləyə çevrilməsinə imkan verir (məsələn, “ $hash{1, 2}”) "$hash{join($;, 1, 2)}"-a çevrildi.
  • “istifadə v5.36” praqmasını təyin edərkən, keçid və vəziyyət ifadələrinə bənzər eksperimental budaqlama mexanizmi (“xüsusiyyət keçidi”) üçün dəstək deaktiv edilir (Perl verilmiş və nə zaman açar sözlərdən istifadə edir). Perl 5.36-dan başlayaraq bu funksiyadan istifadə etmək üçün siz açıq şəkildə 'istifadə funksiyası "keçid"'i göstərməlisiniz və "istifadə versiyasını" təyin etsəniz, o, artıq avtomatik olaraq aktivləşdirilməyəcək.
  • Normal ifadələr içərisində kvadrat mötərizədə əlavə simvol sinifləri üçün dəstək sabitləşdi və standart olaraq mövcuddur. Bu xüsusiyyət simvol dəstlərinin kəsişməsi, xaric edilməsi və birləşməsi üçün qabaqcıl qaydalardan istifadə edərək uyğunluqlar həyata keçirməyə imkan verir. Məsələn, '[AZ - W]' - W istisna olmaqla, A-dan Z-yə qədər simvollar.
  • "(?", "( )", "{ }" və "[ ]" əməliyyatları üçün dəstək qismən sabitləşib və defolt olaraq mövcuddur; siz "" "", "" "" və s. simvollardan istifadə edə bilərsiniz. Məsələn. , "qr"pat "".
  • Arqumentlər olmadan çeşidləmə funksiyasını çağırmaq qadağandır, bu, indi xəta ilə nəticələnəcək. @a = sırala @boş; # davam edəcək @a = sort; # xəta çap olunacaq @a = sort(); # xəta çap olunacaq
  • Bütün faylı sətir-sətir deyil, bütövlükdə yükləmə rejiminə imkan verən yeni “-g” əmr xətti bayrağı təklif edilmişdir. Bayrağın hərəkəti “-0777” işarəsinə bənzəyir.
  • Unicode spesifikasiyası üçün dəstək 14.0 versiyasına yeniləndi.
  • SIGSEGV kimi digər həyəcan siqnallarına bənzər üzən nöqtə istisnalarının (SIGFPE) ani işlənməsini təmin edir, $SIG{FPE} vasitəsilə SIGFPE üçün öz işləyicilərinizi bağlamağa, məsələn, problemin baş verdiyi sətir nömrəsini çıxarmağa imkan verir.
  • Əsas paketə daxil olan modulların yenilənmiş versiyaları.
  • Performans optimallaşdırmaları əlavə edildi. Paylaşılan sətir cədvəllərindən istifadə etmədən böyük hash açarlarını daha səmərəli saxlamaq imkanı təmin edilmişdir. Yeni skalyar dəyərlərin yaradılması performansı əhəmiyyətli dərəcədə yaxşılaşdırılıb, məsələn, aşağıdakı kod indi 30% daha sürətli işləyir: $str = "A" x 64; (0..1_000_000) üçün { @svs = bölün //, $str }
  • Tərcüməçi kodu C99 standartında müəyyən edilmiş bəzi konstruksiyalardan istifadə etməyə başladı. Perl qurmaq indi C99-u dəstəkləyən kompilyator tələb edir. MSVC++ köhnə versiyalarında (VC12-dən əvvəl) tikinti dəstəyi dayandırılıb. Microsoft Visual Studio 2022-də tikinti üçün əlavə dəstək (MSVC++ 14.3).
  • AT&T UWIN, DOS/DJGPP və Novell NetWare platformalarına dəstək dayandırılıb.

Mənbə: opennet.ru

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