A Perl 5.30.0 programozási nyelv kiadása

11 hónapos fejlesztés után került sor a Perl programozási nyelv új stabil ágának kiadása - 5.30. Az új kiadás előkészítése során mintegy 620 ezer kódsort változtattak meg, a változtatások 1300 fájlt érintettek, a fejlesztésben 58 fejlesztő vett részt.

A Branch 5.30 a hat éve jóváhagyott fix fejlesztési ütemtervnek megfelelően jelent meg, ami magában foglalja az új stabil ágak kiadását évente egyszer, illetve a korrekciós kiadásokat háromhavonta. Körülbelül egy hónap múlva a tervek szerint kiadják a Perl 5.30.1 első javító kiadását, amely kijavítja a Perl 5.30.0 implementációja során feltárt legjelentősebb hibákat. A Perl 5.30 kiadásával együtt megszűnt az 5.26-os ág támogatása, amelyhez a jövőben csak kritikus biztonsági problémák észlelése esetén kerülhet sor frissítés. Megkezdődött a kísérleti ág 5.31 fejlesztési folyamata is, amely alapján 2020 májusában kialakul a Perl 5.32 stabil kiadása.

Kulcs változások:

  • A "" műveletek kísérleti támogatása hozzáadásra került a reguláris kifejezésekhez.(?<!minta)"És"(?‹=minta)» korlátozott hozzáférést biztosít a korábban feldolgozott elnevezett sablonokhoz. A mintadefiníciónak 255 karakteren belül kell lennie a referenciaponttól;
  • A méretmeghatározó ("n") maximális értéke az "{m,n}" reguláris kifejezés blokkokban 65534-re nőtt;
  • Korlátozottan hozzáadva támogatás maszkok a karakterek bizonyos kategóriáinak kiemelésére a reguláris kifejezésekben, lefedve a különböző Unicode-készleteket. Például a „qr! \p{nv= /(?x) \A [0-5] \z / }!” lehetővé teszi az összes Unicode karakter kiválasztását, amely 0 és 5 között határozza meg a számokat, beleértve a thai vagy bengáli számok írásmódját is;
  • Támogatás hozzáadva a reguláris kifejezésekben elnevezett karakterekhez
    idézőjelekkel határolt belső minták (qr’\N{név}’);

  • A Unicode specifikáció támogatása frissítve a verzióra 12.1. A kísérleti fejlesztési jelző eltávolítva a hívásokból sv_utf8_downgrade és sv_utf8_decode, a C nyelv kiterjesztéseinek fejlesztésében használatos;
  • Hozzáadtuk a perl felépítésének lehetőségét olyan műveletek végrehajtásával, amelyek támogatják a többszálú műveletet (-Accflags=’-DUSE_THREAD_SAFE_LOCALE’). Korábban ezt a megvalósítást csak a Perl többszálas verziójának elkészítésekor használták, de mostanra minden összeállításhoz engedélyezhető;
  • A "-Dv" (bővített hibakereső kimenet) és a "-Dr" (regex hibakeresés) jelzők kombinálásával az összes lehetséges reguláris kifejezés hibakeresési mód engedélyezve lesz;
  • A korábban elavult funkciókat eltávolítottuk:
    • Mostantól sorelválasztóként és helyettesítő karakterként is elérhető megengedett Csak használatra grafémák (Az összetett Unicode karakterek nem megengedettek).
    • Megszakított a „{” karakter reguláris kifejezésekben való használatának néhány régen elavult formájának támogatása anélkül, hogy elkerülné azt.
    • Tilos a sysread(), syswrite(), recv() és send() függvények használatával ":utf8" kezelőkkel.
    • Tilos az „én” definícióinak használata eredendően hamis feltételes állításokban (például „az én $x, ha 0”).
    • A „$*” és „$#” speciális változók támogatása megszűnt.
      A dump() függvény implicit meghívásának támogatása megszűnt (most már kifejezetten meg kell adni a CORE::dump()-t).

    • A File::Glob::glob függvényt eltávolítottuk (használja a File::Glob::bsd_glob-ot).
    • Védelem a pack() számára a helytelen Unicode-szekvenciák visszaküldésével szemben.
    • Az UTF-8-cal műveleteket XS-kódban (C blokkok) végrehajtó makrók használatának támogatásának megszűnését a következő kiadásra halasztották.
  • Teljesítményoptimalizálás:
    • A fordítási műveletek UTF-8-ról karakterelrendezésre felgyorsultak (kódpont), például az ord(“\x7fff”) művelet végrehajtásához most 12%-kal kevesebb utasításra van szükség. Növelték az UTF-8 karaktersorozatok helyességét ellenőrző műveletek teljesítményét is;
    • A finalize_op() függvény rekurzív hívásait megszüntettük;
    • Kisebb optimalizálásokat hajtott végre a kódon az azonos karakterek összecsukására és a reguláris kifejezésekben szereplő karakterosztályok meghatározására;
    • Optimalizált előjeles típusdefiníciók átalakítása előjel nélküliekké (IV-ből UV-be);
    • Az egész számokat stringgé konvertáló algoritmus felgyorsult azáltal, hogy egyszerre két számjegyet dolgozott fel egy helyett;
    • Fejlesztések történtek előkészített az LGTM elemzése alapján;
    • Optimalizált kód a regcomp.c, regcomp.h és regexec.c fájlokban;
    • A reguláris kifejezésekben az olyan minták, mint például a „qr/[^a]/” ASCII karaktereket tartalmazó feldolgozása jelentősen felgyorsult.
  • A Minix3 platform támogatása helyreállt. Lehetőség van a Microsoft Visual Studio 2019 fordító (Visual C++ 14.2) használatával való összeállításra;
  • Az alapcsomagban található modulok frissített verziói. A modulokat eltávolítottuk a fő összetételből B::Debug и Nyelv::Kódok.

Forrás: opennet.ru

Hozzászólás