Perl 7 vil glide videre i udviklingen af Perl 5 uden at bryde bagudkompatibiliteten

Projektets Perl-styringsgruppe har opsummeret planerne for den videre udvikling af Perl 5-grenen og oprettelsen af Perl 7-grenen. Under diskussionerne blev bestyrelsen enige om, at det er uacceptabelt at bryde kompatibiliteten med allerede skrevet Perl 5-kode, undtagen når det er nødvendigt for at eliminere sårbarheder. Bestyrelsen konkluderede også, at sproget skal udvikle sig, og at der bør gøres mere for at fremme nye muligheder ved at forenkle adgangen til nye funktioner og stimulere deres implementering.

I modsætning til de oprindelige intentioner, der tillod inklusion af ændringer, der bryder bagudskompatibilitet med standard i Perl 7-grenen, indebærer den nye plan en gradvis omdannelse af Perl 5-grenen til Perl 7 uden at bryde bagudskompatibilitet med eksisterende kode. Udgivelsen af Perl 7.0 vil konceptuelt ikke adskille sig fra en ny Perl 5.xx-gren.

Udviklingen af nye Perl 5-udgivelser vil fortsætte som tidligere - nye funktioner, der ikke er kompatible med gammel kode, vil kun blive inkluderet, når det udtrykkeligt angives i koden med pragmatikken «use version» eller «use feature feature». For eksempel blev det nye nøgleord «say» introduceret i Perl 5.010, men fordi der muligvis blev brugt funktioner med navnet «say» i eksisterende kode, blev støtte til det nye nøgleord kun aktiveret ved udtrykkeligt at angive pragmatikken «use feature 'say'».

Den nye syntaks, der tilføjes til sproget, som tidligere ville have forårsaget en fejl under behandling i tidligere udgivelser, bliver straks tilgængelig uden behov for at angive specifikke pragmer. For eksempel vil den forenklede syntaks til samtidig behandling af flere værdier i en liste («foreach my ($key, $value) (%hash) {«) blive tilgængelig straks, selv i kode uden pragmatikken «use v5.36».

I sin nuværende form i Perl 5.36 aktiveres 13 inkompatible funktioner (‘say’, ‘state’, ‘current_sub’, ‘fc’, ‘lexical_subs’, ‘signatures’, ‘isa’, ‘bareword_filehandles’, ‘bitwise’, ‘evalbytes’, ‘postderef_qq’, ‘unicode_eval’ og ‘unicode_strings’) ved brug af pragmer «use v5.36». Der aktiveres også som standard tilstandene «use strict» og «use warnings», og støtten til den forældede indirekte notation af objektkald (hvor der bruges et mellemrum i stedet for «->») samt flerdimensionale arrays og hashes i Perl 4-stil («$hash{1, 2}») deaktiveres.

Når der er samlet tilstrækkeligt mange ændringer, vil der i stedet for endnu en Perl 5.x-udgivelse blive dannet en Perl 7.0-version, som vil være en slags snapshot af tilstanden, men som forbliver fuldstændig bagudkompatibel med Perl 5. For at inkludere ændringer og indstillinger, der bryder med kompatibiliteten, kræves der en eksplicit tilføjelse i koden med pragman "use v7". Det vil sige, at koden med pragman "use v7" kan forstås som "moderne Perl", hvor der er tilgængelige ændringer, der bryder med kompatibiliteten, mens den uden pragman vil være "konservativ Perl", som forbliver fuldstændig bagudkompatibel med tidligere udgivelser.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster