Projektets Perl-styrelse sammanfattade planerna för vidareutveckling av Perl 5-grenen och skapandet av Perl 7-grenen. Under diskussionerna kom styrelsen överens om att det inte Àr acceptabelt att bryta kompatibiliteten med redan skriven kod för Perl 5, utom i fall dÀr det Àr nödvÀndigt för att ÄtgÀrda sÄrbarheter. Styrelsen kom ocksÄ fram till att sprÄket bör utvecklas och att man bör frÀmja nya möjligheter mer intensivt, samtidigt som man förenklar tillgÄngen till nya innovationer och uppmuntrar deras implementering.
Till skillnad frÄn de ursprungliga avsikterna, som inkluderade förÀndringar som bröt bakÄtkompatibiliteten som standard i Perl 7-grenen, innebÀr den nya planen en gradvis omvandling av Perl 5-grenen till Perl 7 utan att bryta bakÄtkompatibiliteten med befintlig kod. UtgÄvan av Perl 7.0 kommer konceptuellt inte att skilja sig frÄn nÀsta Perl 5.xx-gren.
Utvecklingen av nya Perl 5-versioner kommer att fortsĂ€tta pĂ„ samma sĂ€tt â nya möjligheter som lĂ€ggs till i grenen och som inte Ă€r kompatibla med gammal kod kommer, precis som tidigare, att införas endast nĂ€r det uttryckligen anges i koden med pragman "use version" eller "use feature feature_name". Till exempel introducerades det nya nyckelordet "say" i Perl 5.010, men eftersom funktioner med namnet "say" kunde anvĂ€ndas i befintlig kod, aktiverades stödet för det nya nyckelordet endast nĂ€r pragman "use feature 'say'" uttryckligen angavs.
Den nya syntaxen som införs i sprÄket, som tidigare orsakade felmeddelanden i tidigare versioner, görs nu tillgÀnglig omedelbart utan krav pÄ att ange speciella pragman. Till exempel kommer Perl 5.36 att ha en förenklad syntax för att hantera flera vÀrden i en lista vid ett tillfÀlle ("foreach my ($key, $value) (%hash) {"), vilket kommer att vara tillgÀngligt direkt, Àven i kod utan pragman "use v5.36".
I sin nuvarande form aktiverar Perl 5.36, vid anvĂ€ndning av pragman "use v5.36", 13 funktionsmöjligheter som bryter mot kompatibiliteten (âsayâ, âstateâ, âcurrent_subâ, âfcâ, âlexical_subsâ, âsignaturesâ, âisaâ, âbareword_filehandlesâ, âbitwiseâ, âevalbytesâ, âpostderef_qqâ, âunicode_evalâ och âunicode_stringsâ), inklusive standardlĂ€gena för "use strict" och "use warnings", och inaktiverar stödet för förĂ„ldrad indirekt anrop av objekt (nĂ€r man istĂ€llet för "->" anvĂ€nder ett mellanslag) samt flerdimensionella arrayer och hash med Perl 4-stil ("$hash{1, 2}").
NÀr tillrÀckligt mÄnga Àndringar har samlats kommer version 7.0 av Perl att skapas istÀllet för en ny utgÄva av Perl 5.x. Denna version kommer att representera ett tillstÄnd av sprÄket men förblir helt bakÄtkompatibel med Perl 5. För att inkludera bakÄtkompatibilitetsfrakturerande Àndringar och instÀllningar krÀvs uttryckligt tillÀgg av pragma "use v7" i koden. Det vill sÀga, kod med pragma "use v7" kan tolkas som "modern Perl", dÀr frakturerande sprÄkÀndringar Àr tillgÀngliga, medan kod utan den Àr "konservativ Perl", som förblir helt bakÄtkompatibel med tidigare utgÄvor.
KĂ€lla: opennet.ru
