После переименования Perl 6 в Raku, признав, что это действительно другой язык, Perl теперь может использовать номер 7 без страха. Он уже претендовал на недавно освобожденную территорию с объявлением о том, что Perl 5.32 с более современными и разумными значениями по умолчанию будет Perl 7.
То есть прагмы и функции, которые уже много лет рекомендуются программистам, пишущим на Perl, такие как включение строгих и предупреждений, использование 5.010 или импорт Modern::Perl, теперь будут установлены по умолчанию, когда вы начнете писать новую программу на Perl 7.
Тем не менее, внимание уделяется обратной совместимости с такими мелочами, которые становятся устаревшими, как запрет использования пустых слов для дескрипторов файлов или отключение косвенной нотации объектов. Как и Java, Perl имеет обратную совместимость, глубоко укоренившуюся в его философии, но, во-первых, некоторые вещи, которые больше не актуальны, должны уйти, а во-вторых, практики, которые уже используются в целом, должны найти свой путь в значения по умолчанию языка.Это с изюминкой, как мы узнаем позже.
Вскоре после официального объявления Perl 7 компанией pumpkin (то есть лицом, ответственным за конкретный выпуск Perl) Sawyer-X на конференции Perl Cloud появилась новая публикация d foy «Подготовка к Perl 7». В нем подробно описано, что «7» на самом деле приносит, включает или отключает, а также общие рекомендации по написанию эффективного кода Perl. Там вводный реферат проясняет историю и проясняет любое непонимание того, что такое 7, а что нет:
Это скорее административное обновление, поэтому Perl 7 может устанавливать современные значения по умолчанию и настройки, не заставляя их работать на Perl 5.Этот скачок-действительно маленький шаг к тому, что произойдет. Он устанавливает структуру и политику, необходимые разработчикам perl для развития языка.Большая часть шаблона современной программы Perl 5 должна исчезнуть.Даже если у вас нет планов использовать Perl 7, это все равно важный совет Perl 5. Все, что вам нужно сделать, чтобы подготовиться к Perl 7, — это то, что вы уже должны делать в Perl 5.
Поворот, упомянутый ранее, находится здесь; поскольку d foy признает крайнюю обратную совместимость Perl 5, он продолжает утверждать, что:
Но Perl 7 не обязательно совместим с Perl 5. Мы сможем настроить его на работу как v5.32, но в какой-то момент вам нужно будет купить новую основную версию и оставить Perl 5 позади. Мне немного грустно, когда я пишу это, потому что Perl 5 был моим дорогим другом в течение долгого времени.
Вчитываясь в это, когда-нибудь, когда условия созреют достаточно, чтобы позволить это, Perl 5 останется позади, полностью вытесненный его новейшим аналогом. Если это так, то основным препятствием будет обновление тысяч модулей CPAN Perl 5 до Perl 7. Поистине геркулесова задача. Но даже при таких условиях они будут:
«режимы совместимости, которые помогут вам при переходе с Perl 5 на 7 (но не с Perl 5 на 8)».
Поэтому, хотя нет непосредственной необходимости полностью переходить на Perl 7, вы должны планировать будущее, используя лучшие практики и советы, найденные в книге Д. Фоя. У него также есть шанс сделать это с помощью политики Perl::Critic, которая проверяет, готовы ли вы уже к обновлению Perl 7.Помимо Perl 7, это на самом деле хорошее чтение, независимо от того, так как оно проходит через анализ функций Perl 5, которые могут найти свой путь, поскольку по умолчанию Perl 7 осуждает их контрчасти.Которые используются сегодня, что они на самом деле делают, как они используются и в какой версии они были введены.
В этом списке мы находим, что по умолчанию «нет дескрипторов файлов без слов» включено; поэтому встречный случай наличия дескрипторов файлов без слов в коде не будет допускаться.Кроме того, наличие подписей по умолчанию приведет к устареванию прототипов, и причины, по которым «Косвенная объектная нотация», вероятно, будет устаревшей.»Вероятно» является ключевым словом здесь с момента официального объявления Perl 7, помимо изложения общего мировоззрения и философии, не просочилось никакой конкретной информации. Поэтому ди Фой использует свой обширный опыт, чтобы угадать, что может быть включено или отключено, оценивая каждый из них с определенной степенью уверенности. К счастью, книга опубликована на LeanPub, что означает, что, как только появятся новые подробности, они найдут свой путь в новое обновление книги.
Таким образом, похоже, что Perl 7 собирается сделать следующее: :
включить строгий по умолчанию
включить предупреждения по умолчанию
отключить дескрипторы файлов без слов
отключить эмуляцию многомерных массивов (трюк Perl 4)
включить подписи подпрограмм
измените прототипы, чтобы использовать атрибут :prototype
Важно понимать, что проблемы, возникающие в результате таких переходов, связаны не только с Perl, например, те же дилеммы и проблемы переносимости встречаются в основном переходе .NET framework на .NET Core.
Но с суматохой вокруг Perl 7 мы почти смели тот факт, что на самом деле вышла новая версия Perl 5.32, которая несет в себе некоторые новые навороты. Итак, в этой версии мы находим:
Оператор isa, новый экспериментальный оператор инфикса, который проверяет, является ли данный объект экземпляром данного класса или классом, производным от него.
Поддержка Unicode 13.0
Возможность цепных сравнений.Теперь вы можете написать if ( $x < $y <= $z ) {...} Свойство Unicode Name теперь доступно в шаблонах регулярных выражений в качестве альтернативы \N{...}. Использование vec в строках с кодовыми точками выше 0xFF запрещено Простая строка "0" теперь рассматривается как число для оператора диапазона \K теперь запрещено в утверждениях "вперед" и "назад" некоторые исправления безопасности : [CVE-2020-10543] Переполнение буфера, вызванное обработанным регулярным выражением [CVE-2020-10878] Переполнение целых чисел через искаженный байт-код, созданный с помощью созданного регулярного выражения [CVE-2020-12723] Переполнение буфера, вызванное обработанным регулярным выражением и некоторые внутренние улучшения производительности. Подробнее на странице Дельта-версии. В заключение, Perl 7-это знак, который означает довольно много вещей: Подготовьтесь к потенциальному нарушению обратной совместимости в будущем. Модернизируйте язык. Маркетинг, чтобы люди знали, что Perl все еще жив и работает. Оторвитесь от Perl 6 и Raku. На данный момент и по сути этот акт напоминает запуск новой модели автомобиля в серии, с новым блестящим кузовом и броским фирменным знаком, но под капотом все тот же старый двигатель v5, за исключением некоторых исправленных сбоев и нескольких современных дополнений, которые делают его более эффективным.Но это не продлится долго, пока не появится новый тип двигателя.Означает ли это, что легендарный талисман верблюда Perl 5 тоже будет изменен? Что касается последнего пункта, "Оторвитесь от Perl 6 и Raku", в прошлогодней статье "Perl и Raku оба предвкушают новообретенную славу", мы обнаружили, что Perl 6 хочет оставить багаж Perl 5 позади, и что Perl5 будет стремиться освободиться от оков блокировки выпуска следующей "основной версии" из-за того, что Perl 6 сидит на нем на корточках. Что ж, это время пришло.Переименование Perl 6 в Raku уже приносит дивиденды; и Raku, и Perl были освобождены от связанных с ними обязательств, и, судя по возросшему интересу к ним обоим, они действительно наслаждаются периодом новообретенной славы. Давайте сделаем это надолго.