Perl 7 jatkaa saumattomasti Perl 5:n kehitystä rikkomatta taaksepäin yhteensopivuutta

Perl Project Governing Council hahmotteli suunnitelmia Perl 5 -haaran jatkokehittämiseksi ja Perl 7 -haaran luomiseksi. Keskustelujen aikana EKP:n neuvosto oli yhtä mieltä siitä, että yhteensopivuuden rikkominen Perl 5:lle jo kirjoitetun koodin kanssa ei ole hyväksyttävää, ellei sitä murreta. yhteensopivuus on tarpeen haavoittuvuuksien korjaamiseksi. Neuvosto totesi myös, että kieltä olisi kehitettävä ja uusia ominaisuuksia olisi edistettävä intensiivisemmin, samalla kun uusia innovaatioita on helpompi saada käyttöön ja ne rohkaistaan ​​omaksumaan.

Toisin kuin alkuperäisessä aikomuksessa sallia taaksepäin yhteensopivuutta rikkovien muutosten sisällyttäminen oletusarvoisesti Perl 7 -haaraan, uusi suunnitelma on siirtää Perl 5 -haara asteittain Perl 7:ään rikkomatta taaksepäin yhteensopivuutta olemassa olevan koodin kanssa. Perl 7.0 -julkaisu ei eroa käsitteellisesti seuraavasta Perl 5.xx -haarasta.

Perl 5:n uusien julkaisujen kehitys jatkuu entiseen tapaan - haaraan lisätyt uudet ominaisuudet, jotka eivät ole yhteensopivia vanhan koodin kanssa, sisällytetään entiseen tapaan vain, jos "käytä versiota" tai "käyttö ominaisuutta" on erikseen määritelty. koodissa. Esimerkiksi Perl 5.010 esitteli uuden avainsanan "say", mutta koska olemassa oleva koodi saattoi käyttää "say"-nimiä toimintoja, uuden avainsanan tuki otettiin käyttöön vain määrittämällä "use feature 'say'" -käytäntö.

Kieleen lisätty uusi syntaksi, joka aiemmissa julkaisuissa käsiteltynä johti virheeseen, tulee heti saataville ilman erityisiä käytäntöjä. Esimerkiksi Perl 5.36 ottaa käyttöön yksinkertaistetun syntaksin useiden lista-arvojen käsittelemiseksi kerralla ("foreach my ($key, $value) (%hash) {", joka on heti saatavilla, jopa koodissa ilman "use" v5.36" pragma.

Nykyisessä muodossaan Perl 5.36 käyttää "use v5.36" -käytäntöä mahdollistaakseen 13 yhteentoimivuutta rikkovaa ominaisuutta ('say', 'state', 'current_sub', 'fc', 'lexical_subs', 'signatures', 'isa ', ' bareword_filehandles', 'bitwise', 'evalbytes', 'postderef_qq', 'unicode_eval' ja 'unicode_strings'), ota oletusarvoisesti käyttöön "use range"- ja "use warnings" -tilat ja poista käytöstä vanhan epäsuoran merkinnän tuki objektien kutsuminen (kun "->":n sijaan käyttää välilyöntiä) ja Perl 4 -tyylisiä moniulotteisia taulukoita ja tiivisteitä ("$hash{1, 2}").

Kun muutoksia on kertynyt tarpeeksi, seuraavan Perl 5.x -julkaisun sijaan luodaan Perl 7.0 -versio, josta tulee eräänlainen tilavedos, mutta joka pysyy täysin taaksepäin yhteensopivana Perl 5:n kanssa. Muutosten ja asetusten mahdollistaminen jotka rikkovat yhteensopivuuden, sinun on lisättävä koodiin "use v7" -käytäntö. Nuo. koodia "use v7" -pragman kanssa voidaan käsitellä "modernina Perlinä", jossa on saatavilla yhteensopivuutta rikkovia kielimuutoksia, ja ilman - "konservatiivista Perliä", joka pysyy täysin taaksepäin yhteensopivana aiempien julkaisujen kanssa.

Lähde: opennet.ru

Lisää kommentti