Perl 5.12.0
После двух лет разработки объявлено о выходе новой стабильной ветки языка программирования Perl 5.12.
После двух лет разработки объявлено о выходе новой стабильной ветки языка программирования Perl 5.12.

В рамках подготовки релиза было изменено около 750 тыс. строк кода, в разработке приняли участие более 200 разработчиков. В будущем новые релизы будут выходить по фиксированному графику: стабильный релиз - раз в год, корректирующие релизы - ежеквартально.

Из ключевых новшеств Perl 5.12.0 можно отметить: значительное улучшение поддержки Unicode; добавление экспериментального API для разработки дополнений, расширяющих синтаксис и набор ключевых слов языка; решение в функциях работы со временем проблемы 2038 года; поддержку возможности указания номеров версий модулей прямо в операторе "package"; включение по умолчанию вывода уведомлений при использовании устаревших возможностей языка.

Основные новшества Perl 5.12.0:

Нарушения совместимости:

Изменена Unicode интерпретация спецсимволов \w, \d, \s, и символьных классов POSIX (alpha, upper, word и т.п.). Например, строго соответствуя требованию POSIX, \d более не охватывает все цифры, а \w все буквы, описанные в unicode-стандарте.
В служебном массиве @INC, элементы ARCHLIB и PRIVLIB теперь следуют после определения версий site_perl и vendor_perl;
Аргументы условных операторов given/when теперь интерпретируется в логическом контексте, если между аргументами используются связки ".." или "//". Например, вместо "when (1..10)" теперь нужно писать "when ([1..10])";
Изменено поведение оператора "умного" сопоставления (smart match) "~~", который перестал быть коммутативным;
Метки, используемые в операторах goto, last, next или redo, теперь нельзя использовать в качестве ключевых слов (например, использоваться для именования функции);
Около 15 более мелких и узкоспециализированных нарушений совместимости;

Базовые изменения:

База Unicode-символов обновлена до версии 5.2, что позволяет корректно обрабатывать в perl любые Unicode символы;
В регулярных выражениях добавлена поддержка последовательности "\N", под которую подпадают все символы, кроме конца строки, независимо от присутствия или отсутствия "/s" ("/s" сводит выборку к одной первой строке);
Использование "use 5.11.0" автоматически включает режим "strict";
Поддержка параллельного выполнения регрессивных тестов, выполняемых на этапе сборки модулей (вместо "make test", можно запустить "TEST_JOBS=3 make test_harness");
Добавлен новый оператор "..." (Yada Yada), для определения кода который будет добавлен позднее;
Интегрирована поддержка системы динамической трассировки DTrace;
Функция "each" отныне может оперировать массивами;
Все функции и структуры связанные со временем защищены от проблемы 2038 года;
Переменная $ теперь тоже может быть переопределена через tie;
Вывод предупреждений (-W) теперь можно включить через определение в переменной окружения PERL5OPT;
"delete local" теперь можно использовать для удаления элементов хэшей;
Для платформы Linux добавлена поддержка абстрактного пространства имен сетевых сокетов (например, в качестве адреса может быть использован массив произвольных символов).
Из комплекта исключен suidperl;
Официально прекращена поддержка платформ Windows 95, 98, ME и NT4;
Использование конструкции "C" в качестве пустого списка атрибутов объявлено устаревшим.
Возможность перегрузки реализованных на языке Си операторов, например "qr//";

Изменения, связанные с модулями и "pragma":

Модули в базовой поставке разделены на две части: в директории dist/ теперь находятся модули, разработка которых ведется вместе с ядром языка Perl, а в директории cpan/ - модули развиваемые через CPAN;
Прагма autodie в качестве замены модулю Fatal;
Новые модули Compress::Raw::Bzip2 и Parse::CPAN::Meta;
Новые прагмы parent (устанавливает взаимосвязь между ISA и базовыми классами) и overloading (определяет включить или выключить возможность переопределения операторов);
Расширены возможности прагм overloading, attrs, charnames, feature, mro;
Модули расширений теперь могут перехватывать обработку функций Perl парсера для обработки новых видов задаваемых через ключевые слова выражений и реализации сложных операторов;
Добавлен Си API для использования в XS расширениях низкоуровневых частей лексического анализатора и pad-системы;
При использовании устаревших конструкций и возможностей языка отныне по умолчанию выводится предупреждение (чтобы избавиться от таких предупреждений нужно указать "no warnings 'deprecated';");
Обновлены версии модулей: Test-Simple 0.94, Storable 2.21, Pod-Simple 3.08, Parse-CPAN-Meta 1.40, ExtUtils-Manifest 1.57, ExtUtils-CBuilder 0.260301, CGI.pm 3.48, threads::shared 1.32, ExtUtils:tongue.gifarseXS 2.21, File:tongue.gifath 2.08, Module::CoreList 2.20, Object::Accessor 0.36.

Улучшения производительности:

Новый внутренний кэш для ускорения выполнения isa();
Линеризация для классов с единственным наследником выполняется на 40% быстрее;
Связанная с текущей локалью информация теперь кэшируется через специальных хэш;
Пустые DESTROY методы более не вызываются;
Увеличена скорость работы функции Perl_sv_utf8_upgrade();
Увеличена скорость выполнения оператора "keys" для пустых хэшей.

Источник: www.perl.org
Источник: www.perl.org
Вы должны войти

loading