Анонсиран 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 ще бъде включването по подразбиране на режим "strict", предполагащ строга проверка на деклариране на променливи, използване на символни указатели и присвояване на подпрограми. Използването на "use strict" е добър тон и се прилага от мнозинството разработчици. По аналогия по подразбиране планират да включат обработка на предупреждения ("use warnings«).

В 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 са:

  • Косвена нотация за извикване на обекти (no feature qw(indirect)) — остарял начин за извикване на обекти, при който вместо «->» се използва интервал («method $object @param» вместо «$object->$method(@param)»). Например, вместо «my $cgi = new CGI» винаги трябва да се използва «my $cgi = CGI->new».
  • Голите файлови дескриптори без обявяване на променливи (no bareword::filehandle) — използването на конструкции като «open FH, $file» ще доведе до грешка, трябва да се използва «open my $fh, $file». Промяната няма да засегне стандартните файлови дескриптори STDIN, STDOUT, STDERR, ARGV, ARGVOUT и DATA.
  • Фиктивни многомерни масиви и хешове в стил Perl 4 (no multidimensional«).
    Например, указването на «$hash{1, 2}» ще доведе до грешка, трябва да се използва междинен масив, например «$hash{join($;, 1, 2)}».
  • Обявяване на прототипи в стил Perl 4 (трябва да се използва «use :prototype()»).

В по-отдалечени планове по подразбиране се предвижда включване на поддръжка на Unicode, което ще избави разработчиците от необходимостта да указват «use utf8» в кода. За модули и скриптове, в които ще възникнат проблеми с новите настройки по подразбиране, е предвидена възможност за възстановяване на поведението на Perl 5 чрез добавяне на реда «use compat::perl5» в кода. Отделни настройки също ще се запазят и ще могат да бъдат променяни индивидуално.

Източник: opennet.ru

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