Uitgave van de programmeertaal Perl 5.30.0

Na 11 maanden ontwikkeling vond plaats release van een nieuwe stabiele tak van de programmeertaal Perl - 5.30. Bij het voorbereiden van de nieuwe release werden ongeveer 620 regels code gewijzigd, de wijzigingen hadden betrekking op 1300 bestanden en 58 ontwikkelaars namen deel aan de ontwikkeling.

Branch 5.30 werd uitgebracht in overeenstemming met het vaste ontwikkelingsschema dat zes jaar geleden werd goedgekeurd, wat inhoudt dat er één keer per jaar nieuwe stabiele branches worden uitgebracht en elke drie maanden corrigerende releases. Over ongeveer een maand is het de bedoeling om de eerste corrigerende release van Perl 5.30.1 uit te brengen, die de belangrijkste fouten zal corrigeren die zijn geïdentificeerd tijdens de implementatie van Perl 5.30.0. Samen met de release van Perl 5.30 werd de ondersteuning voor de 5.26-tak stopgezet, waarvoor in de toekomst alleen updates kunnen worden uitgebracht als kritieke beveiligingsproblemen worden geïdentificeerd. Het ontwikkelingsproces van de experimentele tak 5.31 is ook begonnen, op basis waarvan in mei 2020 een stabiele release van Perl 5.32 zal worden gevormd.

Toets veranderingen:

  • Experimentele ondersteuning voor ""-bewerkingen is toegevoegd aan reguliere expressies.(?<!patroon)"En"(?‹=patroon)» voor beperkte toegang tot eerder verwerkte benoemde sjablonen. De patroondefinitie moet binnen 255 tekens van het referentiepunt liggen;
  • De maximale waarde van de groottespecificatie (“n”) in reguliere expressieblokken “{m,n}” is verhoogd naar 65534;
  • Beperkt toegevoegd ondersteunen maskers om bepaalde categorieën tekens in reguliere expressies te markeren, die verschillende Unicode-sets bestrijken. De uitdrukking “qr! \p{nv= /(?x) \A [0-5] \z / }!” stelt u in staat alle Unicode-tekens te selecteren die de cijfers van 0 tot 5 definiëren, inclusief de Thaise of Bengaalse spelling van cijfers;
  • Ondersteuning toegevoegd voor benoemde tekens in reguliere expressies
    binnenpatronen gescheiden door enkele aanhalingstekens (qr'\N{name}');

  • Ondersteuning voor Unicode-specificatie bijgewerkt naar versie 12.1. De experimentele ontwikkelingsvlag is verwijderd uit oproepen sv_utf8_downgrade en sv_utf8_decode, gebruikt bij de ontwikkeling van extensies in de C-taal;
  • De mogelijkheid toegevoegd om perl te bouwen met implementatie van bewerkingen met een landinstelling die multi-threaded bewerkingen ondersteunt (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Voorheen werd een dergelijke implementatie alleen gebruikt bij het bouwen van een multi-threaded versie van Perl, maar kan nu voor elke build worden ingeschakeld;
  • Door de vlaggen "-Dv" (verbeterde debugging-uitvoer) en "-Dr" (regex debugging) te combineren, worden nu alle mogelijke debugging-modi voor reguliere expressies ingeschakeld;
  • Functies die voorheen verouderd waren, zijn verwijderd:
    • Nu beschikbaar als regelscheidingsteken en jokertekens toegestaan gebruik alleen grafemen (samengestelde Unicode-tekens zijn niet toegestaan).
    • Stopgezet ondersteuning voor enkele lang verouderde vormen van het gebruik van het teken “{” in reguliere expressies zonder eraan te ontsnappen.
    • Het is verboden met behulp van de functies sysread(), syswrite(), recv() en send() met ":utf8" handlers.
    • Het is verboden om definities van “mijn” te gebruiken in inherent valse voorwaardelijke uitspraken (bijvoorbeeld “mijn $x indien 0”).
    • Ondersteuning voor speciale variabelen “$*” en “$#” is verwijderd.
      Ondersteuning voor het impliciet aanroepen van de functie dump() is stopgezet (je moet nu expliciet CORE::dump() opgeven).

    • De functie File::Glob::glob is verwijderd (u moet File::Glob::bsd_glob gebruiken).
    • Bescherming toegevoegd aan pack() tegen het retourneren van onjuiste Unicode-reeksen.
    • Het einde van de ondersteuning voor het gebruik van macro's die bewerkingen uitvoeren met UTF-8 in XS-code (C-blokken) is uitgesteld tot de volgende release.
  • Prestatieoptimalisaties:
    • Vertaalbewerkingen van UTF-8 naar karakterlay-out zijn versneld (code punt), vereist het uitvoeren van de bewerking ord(“\x7fff”) nu bijvoorbeeld 12% minder instructies. De prestaties van bewerkingen die de juistheid van UTF-8-tekenreeksen controleren, zijn ook verbeterd;
    • Recursieve aanroepen in de functie finalize_op() zijn geëlimineerd;
    • Kleine optimalisaties doorgevoerd in de code voor het samenvouwen van identieke karakters en het definiëren van karakterklassen in reguliere expressies;
    • Geoptimaliseerd het omzetten van ondertekende typedefinities naar niet-ondertekende definities (IV naar UV);
    • Het algoritme voor het omzetten van gehele getallen in een string is versneld door twee cijfers tegelijk te verwerken in plaats van één;
    • Er zijn verbeteringen aangebracht getraind gebaseerd op analyse door LGTM;
    • Geoptimaliseerde code in de bestanden regcomp.c, regcomp.h en regexec.c;
    • In reguliere expressies is de verwerking van patronen zoals “qr/[^a]/” met ASCII-tekens aanzienlijk versneld.
  • Ondersteuning voor het Minix3-platform is hersteld. Het is mogelijk om te bouwen met de Microsoft Visual Studio 2019 compiler (Visual C++ 14.2);
  • Bijgewerkte versies van modules in het basispakket. Modules zijn verwijderd uit de hoofdcompositie B::Debuggen и Landinstelling::Codes.

Bron: opennet.ru

Voeg een reactie