Perl 5.36.0 ohjelmointikieli saatavilla

Vuoden kehitystyön jälkeen Perl-ohjelmointikielen uusi vakaa haara - 5.36 - on julkaistu. Uutta julkaisua valmisteltaessa muutettiin noin 250 tuhatta koodiriviä, muutokset koskivat 2000 tiedostoa ja kehitystyössä oli mukana 82 kehittäjää.

Branch 5.36 julkaistiin yhdeksän vuotta sitten vahvistetun kiinteän kehitysaikataulun mukaisesti, mikä tarkoittaa uusien vakaajen sivujen julkaisemista kerran vuodessa ja korjaavia julkaisuja kolmen kuukauden välein. Noin kuukauden kuluttua on tarkoitus julkaista ensimmäinen korjaava julkaisu Perl 5.36.1:stä, joka korjaa merkittävimmät Perl 5.36.0:n toteutuksen aikana havaitut virheet. Perl 5.36:n julkaisun myötä tuki 5.32-haaralle lopetettiin, jolle tulevat päivitykset voidaan julkaista vain, jos kriittisiä tietoturvaongelmia havaitaan. Myös kokeellisen haaran 5.37 kehitysprosessi on alkanut, jonka pohjalta Perl 2023:sta muodostetaan vakaa julkaisu touko-kesäkuussa 5.38, ellei numerointiin 7.x päätetä siirtyä.

Tärkeimmät muutokset:

  • Toimintojen allekirjoitusten tuki on vakiintunut, ja se on nyt saatavilla määritettäessä "käytä v5.36"-käytäntöä, jolloin voit määrittää funktiossa käytettyjen muuttujien luettelon ja automatisoida arvojen tarkistus- ja määritystoiminnot joukosta saapuvat parametrit. Esimerkiksi aiemmin käytetty koodi: sub foo { die "Liian monta argumenttia aliohjelmalle" ellei @_ >= 2; die "Liian vähän argumentteja aliohjelmalle" ellei @_ <= 2; my($vasen, $oikea) = @_; paluu $vasen + $oikea; }

    allekirjoituksia käytettäessä se voidaan korvata seuraavalla:

    sub foo ($vasen, $oikea) { return $vasen + $oikea; }

    Jos kutsut foo:ta useammalla kuin kahdella argumentilla, tulkki antaa virheilmoituksen. Lista tukee myös erikoismuuttujaa "$", jonka avulla voit jättää huomiotta jotkin argumentit, esimerkiksi "sub foo ($left, $, $right)" mahdollistaa vain ensimmäisen ja kolmannen argumentin kopioimisen muuttujiin. , kun taas täsmälleen kolme on välitettävä funktion argumenttiin.

    Allekirjoitussyntaksin avulla voit myös määrittää valinnaisia ​​argumentteja ja määrittää oletusarvot, jos argumentti puuttuu. Esimerkiksi määrittämällä "sub foo ($vasen, $oikea = 0)" toisesta argumentista tulee valinnainen, ja jos se puuttuu, välitetään arvo 0. Osoitustoiminnossa voit määrittää mielivaltaisia ​​lausekkeita, mukaan lukien muiden muuttujien käyttö luettelosta tai globaaleista muuttujista. Hajautusarvon tai taulukon määrittäminen muuttujan sijaan (esimerkiksi "sub foo ($left, @right)") sallii yhden tai useamman argumentin välittämisen.

  • Allekirjoituksilla ilmoitetuissa funktioissa lisäparametrimäärityksen tuki "@_"-taulukosta on julistettu kokeelliseksi ja johtaa varoitukseen (varoitus annetaan vain, jos @_ käytetään funktioissa, jotka on ilmoitettu uudella syntaksilla). Esimerkiksi toiminnolle näytetään varoitus: use v5.36; sub f ($x, $y = 123) { sano "Ensimmäinen argumentti on $_[0]"; }
  • Vakautettu ja käytettävissä määritettäessä "use v5.36" -pragma, infix-operaattori "isa" tarkistaa, onko objekti määritetyn luokan esiintymä vai siitä johdettu luokka. Esimerkiksi: if( $obj isa Paketti::Nimi ) { … }
  • Kun määritetään "use v5.36" -käytäntö, varoituskäsittely on käytössä ("käytä varoituksia" -tila on aktivoitu).
  • Kun määritetään "use v5.36" -käytäntö, tuki epäsuoralle merkintätavalle objektien kutsumiselle ("feature indirect") poistetaan käytöstä - vanhentunut tapa kutsua objekteja, jossa käytetään välilyöntiä "->" sijaan ("method $" objekti @param" sijaan "$object-> $method(@param)"). Esimerkiksi "my $cgi = uusi CGI" sijaan sinun on käytettävä "my $cgi = CGI->uusi".
  • Kun määritetään "use v5.36" -käytäntö, tuki moniulotteisten taulukoiden ja tiivisteiden emulointiin Perl 4 -tyylillä ("ominaisuus moniulotteinen") on poistettu käytöstä, jolloin useiden avainten osoitus voidaan kääntää välitaulukoksi (esimerkiksi " $hash{1, 2}”) muutettiin muotoon $hash{join($;, 1, 2)}).
  • Määritettäessä "use v5.36" -käytäntöä, tuki kokeelliselle haarautumismekanismille ("ominaisuuskytkin"), joka on samanlainen kuin kytkin- ja tapauslausekkeet, on poistettu käytöstä (Perl käyttää annettuja ja milloin avainsanoja). Jos haluat käyttää tätä ominaisuutta, Perl 5.36:sta alkaen sinun on määritettävä nimenomaisesti 'use feature "switch"', ja kun määrität "use version", se ei enää ole automaattisesti käytössä.
  • Hakasulkeissa olevien lisämerkkiluokkien tuki säännöllisten lausekkeiden sisällä on vakiintunut, ja se on oletuksena käytettävissä. Ominaisuuden avulla voit suorittaa otteluita käyttämällä edistyneitä sääntöjä merkkijoukkojen leikkaus-, poissulkemis- ja liitossäännöille. Esimerkiksi "[A-Z - W]" - merkit A:sta Z:hen, pois lukien W.
  • Tuki operaatioille "(?", "( )", "{ }" ja "[ ]" on osittain vakiintunut ja käytettävissä oletuksena; voit käyttää symboleja "" "", "" "" jne. Esimerkiksi , "qr"pat ".
  • Lajittelufunktion kutsuminen ilman argumentteja on kielletty, mikä nyt johtaa virheeseen. @a = lajittele @tyhjä; # jatkaa @a = lajittele; # tulostetaan virhe @a = sort(); # tulostetaan virhe
  • Uusi komentorivin lippu "-g" on ehdotettu, mikä mahdollistaa tilan ladata koko tiedosto kokonaisuutena, eikä rivi riviltä. Lipun toiminta on samanlainen kuin ilmaisu "-0777".
  • Unicode-määrityksen tuki on päivitetty versioon 14.0.
  • Tarjoaa liukulukupoikkeuksien (SIGFPE) välittömän käsittelyn, kuten muut hälytykset, kuten SIGSEGV, jolloin voit sitoa omat käsittelijät SIGFPE:lle $SIG{FPE}:n kautta, esimerkiksi tulostamalla rivinumeron, jossa ongelma esiintyi.
  • Päivitetyt versiot peruspakettiin kuuluvista moduuleista.
  • Lisätty suorituskyvyn optimointi. Mahdollisuus tallentaa suuria hash-avaimia tehokkaammin ilman jaettuja merkkijonotaulukoita. Uusien skalaariarvojen luomisen suorituskykyä on parannettu merkittävästi, esimerkiksi seuraava koodi toimii nyt 30 % nopeammin: $str = "A" x 64; for (0..1_000_000) { @svs = split //, $str }
  • Tulkkikoodi alkoi käyttää joitakin C99-standardissa määriteltyjä rakenteita. Perlin rakentaminen vaatii nyt kääntäjän, joka tukee C99:ää. MSVC++:n vanhempien versioiden (pre-VC12) rakentamisen tuki on lopetettu. Lisätty tuki rakentamiseen Microsoft Visual Studio 2022:ssa (MSVC++ 14.3).
  • AT&T UWIN-, DOS/DJGPP- ja Novell NetWare -alustojen tuki on lopetettu.

Lähde: opennet.ru

Lisää kommentti