Вышел Perl 5.38

Вышел Perl 5.38

В начале июля 2023 года состоялся релиз стабильной ветки Perl 5.38 с поддержкой классов. Примерно через месяц планируется выпустить первый корректирующий релиз Perl 5.38.1. Одновременно с выходом Perl 5.38 разработчиками прекращена поддержка ветки 5.34, для которой в будущем могут быть выпущены обновления только в случае выявления критических проблем с безопасностью. Также начался процесс разработки экспериментальной ветки 5.39, на базе которой в начале лета 2024 года будет сформирован стабильный релиз Perl 5.40, если сообществом не будет принято решение перейти к нумерации 7.x.

Согласно информации OpenNET, при подготовке выпуска Perl 5.38 было изменено около 290 тыс. строк кода, корректировки затронули 1500 файлов. В создании новой версии приняли участие 100 разработчиков в течение 13 месяцев с релиза Perl 5.37.

Основные изменения и дополнения в Perl 5.38:

  • новый экспериментальный синтаксис создания классов, в которых могут определяться поля и методы, привязанные к каждому экземпляру класса. Классы расширяют возможности работы с объектами в Perl и позволяют использовать более близкий к другим языкам программирования синтаксис (ранее подобие объектной модели в Perl 5 основывалось на применении иерархии, привязанной к именам пакетов);

  • в предупреждения, выводимые при использовании в коде устаревших возможностей, добавлена привязка к подкатегориями, которые могут отключаться по отдельности. Например, для отключения вывода предупреждения об использовании конструкции goto, но сохранении остальных предупреждений, можно указать «no warnings ‘deprecated::goto_construct’;

  • предложен новый служебный хэш «%{^HOOK}», позволяющий создавать функции-обёртки для ключевых слов. В текущем виде доступны для определения две обёртки: «require__before» и «require__after», позволяющие привязать обработчики, вызываемые на разных стадиях обработки ключевого слова «require»;

  • добавлена новая переменная окружения PERL_RAND_SEED, через которую можно выставить свою затравку для генератора псевдослучайных чисел (например, для достижения повторяемого поведения во время тестирования);

  • добавлена поддержка операторов «//=» и «||=» для определения значений по умолчанию аргументов функций. Выставленное через оператор «//=» значение применяется, если аргумент не определён (undef), а оператор «||=» применяется, если аргумент содержит логическое значение «false» или отсутствует);

  • поддержка спецификации Unicode обновлена до версии 15.0;

  • в некоторых случаях внутри блоков «defer» (отложенные блоки, выполняемые в самом конце) и «finally» (блок с кодом, выполняемый в самом конце конструкции try/catch) разрешено использование оператора «goto». Применение goto допускается только при использовании постоянных меток перехода, которые не выходят за пределы блока;

  • добавлены новые функции optimize_optree и finalize_optree для работы с фрагментами внутренней структуры optree;

  • добавлена поддержка категории локали LC_NAME, которую можно указывать при вызове «setlocale»;

  • изменения, нарушающие совместимость: В функции readline() и операторе «<>» после ошибки при обработке потока прекращена очистка флагов, сигнализирующих конец файла или ошибки. Прекращено выполнение блоков INIT после вызова exit() в секции BEGIN;

  • объявлено устаревшим использование символа » ‘ » в качестве разделителя имён пакетов.

Источник: habr.com

Next Post

Blackmagic представила профессиональную камеру для записи иммерсивных видео Vision Pro

Компания Blackmagic показала фотографии профессиональной камеры, предназначенной для записи иммерисивных видео для Vision Pro. Устройство появится в продаже в конце 2024 года, а разрабатывают его совместно с Apple. Камера Blackmagic URSA Cine Immersive пока ещё не готова, но компания поделилась некоторыми техническими характеристиками. Видео будут записываться с разрешением 8160×7200 пикселей […]