На провежданата днес виртуална конференция на разработчиците на езика Perl проектът Perl 7, който плавно ще продължи развитието на клона Perl 5 без радикални промени. Perl 7 ще бъде аналогичен на версията , с изключение на различни настройки по подразбиране, които по-добре съответстват на съвременната практика на разработка. В останалото Perl 7 ще остане същият Perl 5 и ще запази съвместимост с по-рано разработени приложения.
Значителната смяна на версията ще бъде своеобразен разделител в прехода към нова модел на разширение на функционалността на езика Perl без осезаеми нарушения на обратната съвместимост.
Предполага се, че създаването на Perl 7 ще помогне да се привлече нови разработчици към използването на Perl и да се организира процесът на добавяне на значителни нови възможности в езика, като в същото време се запази съвместимостта с кодовата база на съществуващите проекти. Номер 7 е избран, тъй като Perl 6 беше използван при разработването на езика, който сега до голяма степен под отделно име Raku. Първото издание на Perl 7 се очаква да бъде през следващата година. Клонът Perl 5.32 ще бъде последният в серията Perl 5 и планирано е да се поддържа от 5 до 10 години.
Найзначителната промяна в Perl 7 ще бъде включването по подразбиране на режима ««, който предполага строга проверка на декларирането на променливи, използването на символни указатели и присвояването на подпрограми. Използването на «use strict» е добър тон и се прилага от повечето разработчици. По аналогия планират да включат по подразбиране и обработка на предупреждения (««).
В Perl 7 също се очаква да се стабилизират и включат по подразбиране някои съществуващи експериментални възможности, като («use feature ‘signatures'»), позволяваща при определянето на функция да се зададат входящите аргументи и автоматизирана проверка на тяхното количество (ще може да се пише «sub foo ($left, $right) {» вместо «sub foo { my($left, $right) = @_;»). Планират по подразбиране да включат и поддръжка на оператора «isa» за проверка дали обектът е екземпляр на указан клас или производен клас («if( $obj isa Package::Name )», както и постфиксирани операции на разименуване (postderef) «$sref->$*» вместо «${ $sref }», «$aref->@*» вместо «@{ $aref }» и «$href->%{ … }» вместо «%$href{ … }».
Кандидатите за деактивиране по подразбиране в Perl 7 са:
- Непряката нотация за извикване на обекти (««) е остарял начин за извикване на обекти, при който вместо «->» се използва интервал («method $object @param» вместо «$object->$method(@param)»). Например, вместо «my $cgi = new CGI» винаги трябва да се използва «my $cgi = CGI->new».
- Голи файлови дескриптори без деклариране на променливи (««) — използването на конструкции от вида «open FH, $file» ще води до грешка, трябва да се използва «open my $fh, $file». Промяната няма да засегне стандартните файлови дескриптори STDIN, STDOUT, STDERR, ARGV, ARGVOUT и DATA.
- Фиктивни многомерни масиви и хешове в стил Perl 4 (««).
Например, указанието «$hash{1, 2}» ще води до грешка, трябва да се използва междинен масив, например «$hash{join($;, 1, 2)}». - Обявяването на прототипи в стил Perl 4 (трябва да се използва «use :prototype()»).
В по-далечни планове по подразбиране планират да включат поддръжка на Unicode, което ще освободи разработчиците от необходимостта да указват «use utf8» в кода. За модули и скриптове, в които ще възникнат проблеми с новите настройки по подразбиране, е предвидена възможността за възстановяване на поведението на Perl 5 чрез добавяне в кода на реда «use compat::perl5». Отделните настройки също ще се запазват и ще могат да бъдат променяни поотделно.
Източник: opennet.ru
