Perl 7 perfekte daŭrigos la evoluon de Perl 5 sen rompo malantaŭen kongruo

La Reganta Konsilio de la Projekto Perl skizis planojn por pluevoluigo de la branĉo Perl 5 kaj la kreado de branĉo de Perl 7. Dum la diskutoj, la Reganta Konsilio konsentis, ke ne estas akcepteble rompi kongruecon kun kodo jam skribita por Perl 5, krom se rompiĝo. kongruo estas necesa por ripari vundeblecojn. La Konsilio ankaŭ konkludis ke la lingvo devus evolui kaj novaj funkcioj devus esti antaŭenigitaj pli intense, dum plifaciligante emerĝantajn novigojn kaj instigante al adopto.

Male al la originaj intencoj permesi ŝanĝojn kiuj rompas malantaŭen kongruecon esti inkluzivitaj defaŭlte en la Perl 7 branĉo, la nova plano estas iom post iom transiri la Perl 5 branĉo en Perl 7 sen rompi malantaŭen kongruo kun ekzistanta kodo. La eldono de Perl 7.0 koncipe ne diferencas de la sekva branĉo de Perl 5.xx.

La evoluo de novaj eldonoj de Perl 5 daŭros kiel antaŭe - novaj funkcioj aldonitaj al la branĉo, kiuj estas malkongruaj kun la malnova kodo, estos, kiel antaŭe, inkluzivitaj nur se la pragmaro "uzu version" aŭ "uzu funkcion" estas eksplicite specifita. en la kodo. Ekzemple, Perl 5.010 enkondukis novan ŝlosilvorton "diri", sed ĉar ekzistanta kodo povis uzi funkciojn nomitajn "diri", subteno por la nova ŝlosilvorto estis ebligita nur eksplicite specifante la pragmaron "uzi funkcion 'diri'".

Nova sintakso aldonita al la lingvo, kiu kiam prilaborita en antaŭaj eldonoj kaŭzis eraron, iĝas tuj havebla sen la bezono specifi specialajn pragmojn. Ekzemple, Perl 5.36 enkondukos simpligitan sintakson por prilabori plurajn listvalorojn samtempe ("foreach my ($key, $value) (%hash) {") kiu estos tuj havebla, eĉ en kodo sen la "uzo". v5.36" pragma.

En ĝia nuna formo, Perl 5.36 uzas la "uzu v5.36" pragmon por ebligi 13 kunfunkcieble-rompantajn funkciojn ("dir", "state", "current_sub", "fc", "lexical_subs", "signatures", "isa". ', 'bareword_filehandles', 'bittwise', 'evalbytes', 'postderef_qq', 'unicode_eval' kaj 'unicode_strings'), ebligas la "uzi striktan" kaj "uzu avertojn" defaŭlte kaj malŝaltas subtenon por la hereda nerekta notacio por voki objektojn (kiam anstataŭ "- >" uzas spacon) kaj plurdimensiajn tabelojn kaj hashojn en stilo Perl 4 ("$hash{1, 2}").

Kiam sufiĉe da ŝanĝoj amasiĝis, anstataŭ la sekva eldono de Perl 5.x, estos generita versio de Perl 7.0, kiu fariĝos speco de ŝtata momentfoto, sed restos plene malantaŭen kongrua kun Perl 5. Por ebligi ŝanĝojn kaj agordojn kiuj rompas kongruecon, vi devos eksplicite aldoni la pragmaron "uzu v7" al la kodo. . Tiuj. kodo kun la pragmaro "uzu v7" povas esti traktata kiel "moderna Perl", en kiu kongrueco-rompiĝantaj lingvoŝanĝoj estas disponeblaj, kaj sen - "konservativa Perl", kiu restos plene malantaŭen kongrua kun pasintaj eldonoj.

fonto: opennet.ru

Aldoni komenton