Perl 7 плавно ще продължи развитието на Perl 5 без да нарушава обратната съвместимост

Управителният съвет на проекта Perl обобщи плановете за по-нататъшно развитие на клон Perl 5 и за създаването на клон Perl 7. По време на дискусиите съветът се съгласи, че е неприемливо да се нарушава съвместимостта с вече написан код за Perl 5, с изключение на случаите, когато нарушаването на съвместимостта е необходимо за отстраняване на уязвимости. Съветът също така стигна до заключението, че езикът трябва да се развива и е необходимо да се насърчават новите възможности, улеснявайки достъпа до нововъведенията и насърчавайки тяхното внедряване.

В противовес на първоначалните намерения, допускащи по подразбиране включване на несъвместими промени в клон Perl 7, новият план предвижда постепенно преобразуване на клона Perl 5 в Perl 7 без нарушаване на обратната съвместимост с вече съществуващия код. Версия Perl 7.0 концептуално няма да се различава от следващия клон Perl 5.xx.

Развитието на нови версии на Perl 5 ще продължи в предишния си формат — новите функции, несъвместими със стария код, както и преди ще бъдат включвани само при изрично указване в кода на прагмата „use version“ или „use feature 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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster