Perl 7 обявен

На виртуалната конференция на разработчиците на Perl, която се провежда днес обявено Проектът Perl 7, който ще продължи плавно развитието на клона Perl 5, без да въвежда радикални промени. Perl 7 ще бъде подобен на изданието Perl 5.32.0, с изключение на различни настройки по подразбиране, които по-добре съответстват на съвременните практики за разработка. В противен случай 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 включват:

  • Нотация за непряко извикване на обекти (без функция qw (индиректно)") е остарял начин за извикване на обекти, който използва интервал вместо "->" ("method $object @param" вместо "$object->$method(@param)"). Например, вместо "my $cgi = new CGI" винаги трябва да използвате "my $cgi = CGI->new".
  • Голи файлови дескриптори без декларации на променливи (без bareword::filehandle") — използването на конструкции като „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

Добавяне на нов коментар