Perl 5.36.0 programmeertaal beschikbaar

Na een jaar van ontwikkeling is de release van een nieuwe stabiele tak van de programmeertaal Perl - 5.36 - gepubliceerd. Bij het voorbereiden van de nieuwe release werden ongeveer 250 regels code gewijzigd, de wijzigingen hadden betrekking op 2000 bestanden en 82 ontwikkelaars namen deel aan de ontwikkeling.

Branch 5.36 werd uitgebracht in overeenstemming met het vaste ontwikkelingsschema dat negen jaar geleden werd goedgekeurd, wat inhoudt dat er één keer per jaar nieuwe stabiele branches worden uitgebracht en elke drie maanden corrigerende releases. Het is de bedoeling dat over ongeveer een maand de eerste corrigerende release van Perl 5.36.1 uitkomt, die de belangrijkste fouten zal corrigeren die zijn geïdentificeerd tijdens de implementatie van Perl 5.36.0. Samen met de release van Perl 5.36 werd de ondersteuning voor de 5.32-tak stopgezet, waarvoor toekomstige updates alleen kunnen worden uitgebracht als kritieke beveiligingsproblemen worden geïdentificeerd. Ook is het ontwikkelingsproces van de experimentele tak 5.37 begonnen, op basis waarvan in mei of juni 2023 een stabiele release van Perl 5.38 zal worden gevormd, tenzij wordt besloten om over te schakelen naar nummer 7.x.

Belangrijkste wijzigingen:

  • Ondersteuning voor functiehandtekeningen is gestabiliseerd en is nu beschikbaar bij het specificeren van het ‘gebruik v5.36’-pragma, waardoor u expliciet de lijst met variabelen kunt definiëren die in de functie worden gebruikt en de bewerkingen van het controleren en toewijzen van waarden uit een array van binnenkomende parameters. Eerder gebruikte code bijvoorbeeld: sub foo { die "Te veel argumenten voor subroutine" tenzij @_ >= 2; die "Te weinig argumenten voor subroutine" tenzij @_ <= 2; mijn($links, $rechts) = @_; retourneer $links + $rechts; }

    bij gebruik van handtekeningen kan deze worden vervangen door:

    sub foo ($left, $right) { return $left + $right; }

    Als je foo aanroept met meer dan twee argumenten, zal de tolk een foutmelding geven. De lijst ondersteunt ook een speciale variabele “$”, waarmee u enkele argumenten kunt negeren. Met “sub foo ($left, $, $right)” kunt u bijvoorbeeld alleen de eerste en derde argumenten naar variabelen kopiëren , terwijl er precies drie moeten worden doorgegeven aan het functieargument.

    Met de handtekeningsyntaxis kunt u ook optionele argumenten opgeven en standaardwaarden opgeven als een argument ontbreekt. Door bijvoorbeeld “sub foo ($left, $right = 0)” op te geven, wordt het tweede argument optioneel en als het ontbreekt, wordt de waarde 0 doorgegeven. Bij de toewijzingsbewerking kunt u willekeurige expressies opgeven, inclusief het gebruik van andere variabelen uit de lijst of globale variabelen. Als u een hash of array opgeeft in plaats van een variabele (bijvoorbeeld 'sub foo ($left, @right)'), kunnen een of meer argumenten worden doorgegeven.

  • In functies die zijn gedeclareerd met behulp van handtekeningen, wordt de ondersteuning voor optionele parametertoewijzing vanuit de array "@_" experimenteel verklaard en zal resulteren in een waarschuwing (de waarschuwing wordt alleen gegeven als @_ wordt gebruikt in functies die zijn gedeclareerd met de nieuwe syntaxis). Er wordt bijvoorbeeld een waarschuwing weergegeven voor de functie: gebruik v5.36; sub f ($x, $y = 123) { zeg "Het eerste argument is $_[0]"; }
  • Gestabiliseerd en beschikbaar bij het specificeren van het "use v5.36"-pragma, de infix-operator "isa" om te controleren of een object een exemplaar is van de opgegeven klasse of een klasse die daarvan is afgeleid. Bijvoorbeeld: if( $obj isa Pakket::Naam ) { … }
  • Wanneer u het pragma “gebruik v5.36” specificeert, wordt waarschuwingsverwerking ingeschakeld (de modus “gebruik waarschuwingen” is geactiveerd).
  • Bij het specificeren van het “use v5.36”-pragma is ondersteuning voor indirecte notatie voor het aanroepen van objecten (“feature indirect”) uitgeschakeld - een verouderde manier om objecten aan te roepen, waarbij een spatie wordt gebruikt in plaats van “->” (“methode $ object @param” in plaats van “$object-> $method(@param)"). In plaats van “mijn $cgi = nieuwe CGI” moet u bijvoorbeeld “mijn $cgi = CGI->nieuw” gebruiken.
  • Bij het specificeren van het pragma “gebruik v5.36”, wordt de ondersteuning voor het emuleren van multidimensionale arrays en hashes in de Perl 4-stijl (“functie multidimensionaal”) uitgeschakeld, waardoor de indicatie van verschillende sleutels kan worden vertaald naar een tussenliggende array (bijvoorbeeld “ $hash{1, 2}”) is geconverteerd naar "$hash{join($;, 1, 2)}").
  • Bij het specificeren van het “use v5.36”-pragma wordt de ondersteuning voor het experimentele vertakkingsmechanisme (“feature switch”), vergelijkbaar met de switch- en case-statements, uitgeschakeld (Perl gebruikt de trefwoorden gegeven en wanneer). Om deze functie te gebruiken, moet u vanaf Perl 5.36 expliciet ‘gebruik functie “switch” specificeren, en wanneer u “gebruik versie” specificeert, zal deze niet langer automatisch worden ingeschakeld.
  • Ondersteuning voor extra tekenklassen tussen vierkante haakjes binnen reguliere expressies is gestabiliseerd en is standaard beschikbaar. Met deze functie kunt u overeenkomsten uitvoeren met behulp van geavanceerde regels voor het kruisen, uitsluiten en samenvoegen van karaktersets. Bijvoorbeeld '[A-Z - W]': tekens van A tot Z, exclusief W.
  • Ondersteuning voor de bewerkingen "(?", "( )", "{ }" en "[ ]" is gedeeltelijk gestabiliseerd en standaard beschikbaar; u kunt de symbolen "" "", "" "", enz. gebruiken. Bijvoorbeeld , "qr"pat "".
  • Het aanroepen van de sorteerfunctie zonder argumenten is verboden, wat nu tot een fout zal leiden. @a = sorteer @leeg; # gaat verder @a = sorteren; # er wordt een fout afgedrukt @a = sort(); # er wordt een fout afgedrukt
  • Er is een nieuwe opdrachtregelvlag “-g” voorgesteld, waarmee het hele bestand als geheel kan worden geladen, in plaats van regel voor regel. De actie van de vlag is vergelijkbaar met de aanduiding “-0777”.
  • Ondersteuning voor de Unicode-specificatie is bijgewerkt naar versie 14.0.
  • Biedt directe afhandeling van floating point exceptions (SIGFPE), vergelijkbaar met andere alarmen zoals SIGSEGV, waardoor u uw eigen handlers voor SIGFPE kunt binden via $SIG{FPE}, bijvoorbeeld door het regelnummer uit te voeren waar het probleem zich voordeed.
  • Bijgewerkte versies van modules in het basispakket.
  • Prestatie-optimalisaties toegevoegd. Er is de mogelijkheid geboden om grote hash-sleutels efficiënter op te slaan zonder gebruik te maken van gedeelde tekenreekstabellen. De prestaties bij het maken van nieuwe scalaire waarden zijn aanzienlijk verbeterd, de volgende code werkt nu bijvoorbeeld 30% sneller: $str = "A" x 64; voor (0..1_000_000) { @svs = splitsen //, $str }
  • De tolkcode begon enkele van de constructies te gebruiken die in de C99-standaard waren gedefinieerd. Voor het bouwen van Perl is nu een compiler vereist die C99 ondersteunt. Ondersteuning voor het inbouwen van oudere versies van MSVC++ (vóór VC12) is stopgezet. Ondersteuning toegevoegd voor het inbouwen van Microsoft Visual Studio 2022 (MSVC++ 14.3).
  • Ondersteuning voor AT&T UWIN-, DOS/DJGPP- en Novell NetWare-platforms is stopgezet.

Bron: opennet.ru

Voeg een reactie