Perl 5.11.0
🕛 05.10.2009, 23:55
После двух лет разработки объявлено о выходе первого релиза в новой экспериментальной ветке Perl 5.11, в рамках которой начата подготовка к стабильной серии Perl 5.12. В анонсе новой версии подчеркивается важность проверки работоспособности кода в экспериментальной ветке. Несмотря на то, что разработчики прилагают огромные усилия к полному обеспечению совместимости, большие изменение в коде при создании новой ветки могут привести к незапланированным нарушениям совместимости. Если такие несовместимости будут найдены после выпуска стабильного выпуска 5.12, то отменить их будет уже невозможно, именно по этому важно протестировать существующий код, выявить и сообщить о всех аномалиях еще на стадии разработки экспериментальной ветки.
Ветка 5.11 будет развиваться в рамках измененного процесса подготовки релизов - новый выпуск отныне будет выходить раз в месяц, при этом каждый из таких выпусков будет подготовлен разным релиз-инженером: 5.11.1 выйдет 20 октября под контролем Jesse Vincent, 5.11.2 - 20 ноября под контролем Yves Orton, 5.11.3 - 20 декабря под контролем Leon Brocard, 5.11.4 - 20 января под контролем Ricardo Signes. В рамках перехода с системы управления версиями Perforce на Git, разработка Perl 5.11 ведется только в Git репозитории.
Из новшеств Perl 5.11 можно отметить:
* Нарушения совместимости: o Изменена Unicode интерпретация спецсимволов \w, \d, \s, и символьных классов POSIX (alpha, upper, word и т.п.). Например, строго соответствуя требованию POSIX, \d более не охватывает все цифры, а \w все буквы, описанные в unicode-стандарте. o В служебном массиве @INC, элементы ARCHLIB и PRIVLIB теперь следуют после определения версий site_perl и vendor_perl; o Аргументы условных операторов given/when теперь интерпретируется в логическом контексте, если между аргументами используются связки ".." или "//". Например, вместо "when (1..10)" теперь нужно писать "when ([1..10])"; o Изменено поведение оператора "умного" сопоставления (smart match) "~~", который перестал быть коммутативным; o Метки, используемые в операторах goto, last, next или redo, теперь нельзя использовать в качестве ключевых слов (например, использоваться для именования функции); o Около 15 более мелких и узкоспециализированных нарушений совместимости; * Базовые изменения: o База Unicode-символов обновлена до версии 5.1; o В регулярных выражениях добавлена поддержка последовательности "\N", под которую подпадают все символы, кроме конца строки, независимо от присутствия или отсутствия "/s" ("/s" сводит выборку к одной первой строке); o Использование "use 5.11.0" автоматически включает режим "strict"; o Поддержка параллельного выполнения регрессивных тестов, выполняемых на этапе сборки модулей (вместо "make test", можно запустить "TEST_JOBS=3 make test_harness"); o Добавлен новый оператор "..." (Yada Yada), для определения кода который будет добавлен позднее; o Интегрирована поддержка системы динамической трассировки DTrace; o Функция "each" отныне может оперировать массивами; o Все функции и структуры связанные со временем защищены от проблемы 2038 года; o Переменная $ теперь тоже может быть переопределена через tie; o Вывод предупреждений (-W) теперь можно включить через определение в переменной окружения PERL5OPT; o "delete local" теперь можно использовать для удаления элементов хэшей; o Для платформы Linux добавлена поддержка абстрактного пространства имен сетевых сокетов (например, в качестве адреса может быть использован массив произвольных символов). * Изменения, связанные с модулями и "pragma": o Модули в базовой поставке разделены на две части: в директории dist/ теперь находятся модули, разработка которых ведется вместе с ядром языка Perl, а в директории cpan/ - модули развиваемые через CPAN; o Прагма autodie в качестве замены модулю Fatal; o Новые модули Compress::Raw::Bzip2 и Parse::CPAN::Meta; o Новые прагмы parent (устанавливает взаимосвязь между ISA и базовыми классами) и overloading (определяет включить или выключить возможность переопределения операторов); o Расширены возможности прагм overloading, attrs, charnames, feature, mro; * Улучшения производительности: o Новый внутренний кэш для ускорения выполнения isa(); o Линеризация для классов с единственным наследником выполняется на 40% быстрее; o Связанная с текущей локалью информация теперь кэшируется через специальных хэш; o Пустые DESTROY методы более не вызываются; o Увеличена скорость работы функции Perl_sv_utf8_upgrade(); o Увеличена скорость выполнения оператора "keys" для пустых хэшей.
Новые программы Теги: Perl
✆ Читать IT-новости в Telegram