Анонсирован Perl 7
24 июня 2020 года
На проходящей сегодня виртуальной конференции разработчиков языка 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». Отдельные настройки также сохраняться и их можно будет изменить по отдельности.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.