Анонсовано 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" є гарним тоном і застосовується більшістю розробників. Аналогічно за умовчанням планують увімкнути обробку попереджень («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

Додати коментар або відгук