Perl 7 vil problemfrit fortsætte udviklingen af ​​Perl 5 uden at bryde bagudkompatibiliteten

Styrelsesrådet for Perl-projektet skitserede planer for yderligere udvikling af Perl 5-grenen og oprettelsen af ​​en Perl 7-gren. Under drøftelserne blev Styrelsesrådet enige om, at det ikke er acceptabelt at bryde kompatibiliteten med kode, der allerede er skrevet til Perl 5, medmindre det brydes kompatibilitet er nødvendig for at løse sårbarheder. Rådet konkluderede også, at sproget bør udvikle sig, og nye funktioner bør fremmes mere intensivt, samtidig med at nye innovationer bliver nemmere at få adgang til og tilskynder til adoption.

I modsætning til de oprindelige intentioner om at tillade ændringer, der bryder bagudkompatibilitet, skal inkluderes som standard i Perl 7-grenen, er den nye plan gradvist at overføre Perl 5-grenen til Perl 7 uden at bryde bagudkompatibiliteten med eksisterende kode. Perl 7.0-udgivelsen vil konceptuelt ikke adskille sig fra den næste Perl 5.xx-gren.

Udviklingen af ​​nye udgivelser af Perl 5 vil fortsætte som før - nye funktioner tilføjet til grenen, som er inkompatible med den gamle kode, vil som før kun blive inkluderet, hvis "brug version" eller "brug funktion funktion" pragma er eksplicit specificeret i koden. For eksempel introducerede Perl 5.010 et nyt nøgleord "say", men da eksisterende kode kunne bruge funktioner kaldet "say", blev understøttelse af det nye nøgleord kun aktiveret ved eksplicit at specificere "brug funktionen 'say'" pragma.

Ny syntaks tilføjet til sproget, som når det blev behandlet i tidligere udgivelser førte til en fejl, bliver umiddelbart tilgængeligt uden behov for at specificere særlige pragmer. For eksempel vil Perl 5.36 introducere en forenklet syntaks til behandling af flere listeværdier på én gang ("foreach my ($key, $value) (%hash) {"), der vil være umiddelbart tilgængelig, selv i kode uden "brug v5.36” pragma.

I sin nuværende form bruger Perl 5.36 "brug v5.36"-pragmaen til at aktivere 13 interoperabilitetsbrydende funktioner ('say', 'state', 'current_sub', 'fc', 'lexical_subs', 'signatures', 'isa ', ' bareword_filehandles', 'bitwise', 'evalbytes', 'postderef_qq', 'unicode_eval' og 'unicode_strings'), aktiverer tilstandene "brug streng" og "brug advarsler" som standard og deaktiverer understøttelse af den ældre indirekte notation for kalder objekter (når der i stedet for "- >" bruges et mellemrum) og Perl 4-stil flerdimensionelle arrays og hashes ("$hash{1, 2}").

Når der er akkumuleret nok ændringer, vil der i stedet for den næste udgivelse af Perl 5.x blive genereret en version af Perl 7.0, som bliver en slags tilstandssnapshot, men forbliver fuldt bagudkompatibel med Perl 5. For at aktivere ændringer og indstillinger som bryder kompatibiliteten, skal du udtrykkeligt tilføje "brug v7"-pragmaen til koden. . De der. kode med "brug v7"-pragmaen kan behandles som "moderne Perl", hvor kompatibilitetsbrydende sprogændringer er tilgængelige, og uden - "konservativ Perl", som vil forblive fuldt bagudkompatibel med tidligere udgivelser.

Kilde: opennet.ru

Tilføj en kommentar