A Perl 7 zökkenőmentesen folytatja a Perl 5 fejlesztését anélkül, hogy megszakítaná a visszafelé kompatibilitást

A Perl Projekt Kormányzótanácsa felvázolta a Perl 5 ág további fejlesztésére és egy Perl 7 ág létrehozására vonatkozó terveket.A megbeszélések során a Kormányzótanács egyetértett abban, hogy nem fogadható el a kompatibilitás megszakítása a Perl 5-höz már írt kóddal, hacsak nem törik kompatibilitás szükséges a sérülékenységek kijavításához. A Tanács arra a következtetésre jutott, hogy a nyelvet fejleszteni kell, és az új funkciókat intenzívebben kell népszerűsíteni, miközben könnyebben hozzáférhetővé kell tenni a felmerülő innovációkat, és ösztönözni kell az elfogadást.

Ellentétben az eredeti szándékkal, amely szerint a visszafelé kompatibilitást megsértő változtatások alapértelmezés szerint bekerülhetnek a Perl 7 ágba, az új terv az, hogy a Perl 5 ágat fokozatosan átállítják a Perl 7-re, anélkül, hogy megszakítanák a visszafelé kompatibilitást a meglévő kóddal. A Perl 7.0 kiadás elvileg nem fog különbözni a következő Perl 5.xx ágtól.

A Perl 5 új kiadásainak fejlesztése a korábbiak szerint folytatódik – az ághoz hozzáadott, a régi kóddal nem kompatibilis új funkciók a korábbiakhoz hasonlóan csak akkor kerülnek bele, ha a „verzió használata” vagy a „szolgáltatás funkció használata” gyakorlat kifejezetten meg van adva. a kódban. Például a Perl 5.010 bevezetett egy új "say" kulcsszót, de mivel a meglévő kód használhatja a "say" nevű függvényeket, az új kulcsszó támogatása csak a "say szolgáltatás használata" pragma kifejezett megadásával volt engedélyezve.

A nyelvhez hozzáadott új szintaxis, amely a korábbi kiadásokban hibához vezetett, azonnal elérhetővé válik anélkül, hogy speciális gyakorlatokat kellene megadni. Például a Perl 5.36 egy egyszerűsített szintaxist vezet be több listaérték egyszerre történő feldolgozásához („foreach my ($key, $value) (%hash) {”), amely azonnal elérhető lesz, még a „use” nélküli kódban is. v5.36” pragma.

Jelenlegi formájában a Perl 5.36 a "use v5.36" pragmát használja, hogy 13 interoperabilitást megsértő szolgáltatást tesz lehetővé ("mondjuk", "state", "current_sub", "fc", "lexical_subs", "signatures", "isa" ', 'bareword_filehandles', 'bitwise', 'evalbytes', 'postderef_qq', 'unicode_eval' és 'unicode_strings'), alapértelmezés szerint engedélyezi a "szigorú használat" és a "figyelmeztetések használata" módokat, és letiltja az örökölt közvetett jelölések támogatását objektumok meghívása (amikor a „- >” helyett szóközt használ) és Perl 4 stílusú többdimenziós tömbök és hash-ek ("$hash{1, 2}").

Ha elegendő változás halmozódott fel, a Perl 5.x következő kiadása helyett a Perl 7.0 verziója jön létre, amely egyfajta állapot-pillanatkép lesz, de visszafelé teljesen kompatibilis marad a Perl 5-tel. A változtatások és beállítások engedélyezése amelyek megszakítják a kompatibilitást, akkor kifejezetten hozzá kell adni a „use v7” pragmát a kódhoz. Azok. a "use v7" pragmával rendelkező kód "modern Perl"-ként kezelhető, amelyben kompatibilitást megsértő nyelvi változtatások érhetők el, és - "konzervatív Perl" nélkül, amely visszafelé teljesen kompatibilis marad a korábbi kiadásokkal.

Forrás: opennet.ru

Hozzászólás