Управителният съвет на проекта Perl обобщи плановете за по-нататъшно развитие на клоновете Perl 5 и създаване на клон Perl 7. По време на дискусиите управителният съвет се съгласи, че е недопустимо да се нарушава съвместимостта с вече написан код за Perl 5, освен в случаите, когато нарушаването на съвместимостта е необходимо за отстраняване на уязвимости. Съветът също така достигна до заключението, че езикът трябва да се развива и трябва да се насърчава по-интензивното представяне на новите възможности, като същевременно се улесни достъпът до нововъведенията и се стимулира тяхното внедряване.
В противоречие с първоначалните намерения, допускащи включване по подразбиране на промени, нарушаващи обратно съвместимостта в клона Perl 7, новият план предвижда постепенно преобразуване на клона Perl 5 в Perl 7 без нарушение на обратната съвместимост с вече съществуващия код. Издаването на Perl 7.0 концептуално няма да се различава от поредния клон Perl 5.xx.
Разработката на новите версии на Perl 5 ще продължи в досегашния си вид — новите възможности, добавяни в клона и несъвместими със стария код, както досега ще бъдат включвани само с явното указание в кода на прагмите «use версия» или «use feature възможност». Например, в версия Perl 5.010 беше представена нова ключова дума «say», но тъй като в съществуващия код могат да се използват функции с името «say», поддръжката на новата ключова дума се включваше само с явното указание на прагмата «use feature 'say'».
Новият синтаксис, добавян в езика, който при обработката в предишните издания е водел до грешка, става наличен веднага без нужда от указване на специални прагми. Например, в Perl 5.36 ще се появи опростен синтаксис за едновременна обработка на няколко стойности от списък («foreach my ($key, $value) (%hash) {«), който ще бъде достъпен веднага, дори и в код без прагмата «use v5.36».
В настоящия вид в Perl 5.36 при използването на прагмата „use v5.36“ се активират 13 функции, нарушаващи съвместимостта (‘say’, ‘state’, ‘current_sub’, ‘fc’, ‘lexical_subs’, ‘signatures’, ‘isa’, ‘bareword_filehandles’, ‘bitwise’, ‘evalbytes’, ‘postderef_qq’, ‘unicode_eval’ и ‘unicode_strings’), по подразбиране се включват режимите „use strict“ и „use warnings“ и се изключва поддръжката на остарялата косвена нотация за извикване на обекти (когато вместо „->“ се използва разстояние) и многомерните масиви и хешове в стил Perl 4 („$hash{1, 2}“).
Когато се натрупат достатъчно промени, вместо поредното издание на Perl 5.x ще бъде създадена версия Perl 7.0, която ще представлява своеобразен отрязък от състоянието, но ще остане напълно обратно съвместима с Perl 5. За да се включат промени и настройки, нарушаващи съвместимостта, ще е необходимо изрично добавяне в кода на прагмата „use v7“. Т.е. кодът с прагмата „use v7“ може да се разглежда като „модерен Perl“, в който са налични промените на езика, нарушаващи съвместимостта, а без — „консервативен Perl“, който ще остане напълно обратно съвместим с предишните издания.
Източник: opennet.ru
