На виртуалната конференция на разработчиците на 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 също така има за цел да стабилизира и активира по подразбиране някои съществуващи експериментални функции, като например („използвайте функцията '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 (използвайте :prototype()).
В дългосрочен план се очаква поддръжката на Unicode да бъде активирана по подразбиране, което ще елиминира необходимостта разработчиците да указват „use utf8“ в кода си. За модули и скриптове, които срещат проблеми с новите настройки по подразбиране, е възможно да се върнат към поведението на Perl 5, като се добави редът „use compat::perl5“ към кода. Индивидуалните настройки също ще бъдат запазени и могат да се променят поотделно.
Източник: opennet.ru
