Анонсиран 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