Вышел релиз Perl 5.11.0
4 октября 2009 года
После двух лет разработки объявлено о выходе первого релиза в новой экспериментальной ветке 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 можно отметить:
- Нарушения совместимости:
- Изменена 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.1;
- В регулярных выражениях добавлена поддержка последовательности "\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 добавлена поддержка абстрактного пространства имен сетевых сокетов (например, в качестве адреса может быть использован массив произвольных символов).
- Изменения, связанные с модулями и "pragma":
- Модули в базовой поставке разделены на две части: в директории dist/ теперь находятся модули, разработка которых ведется вместе с ядром языка Perl, а в директории cpan/ - модули развиваемые через CPAN;
- Прагма autodie в качестве замены модулю Fatal;
- Новые модули Compress::Raw::Bzip2 и Parse::CPAN::Meta;
- Новые прагмы parent (устанавливает взаимосвязь между ISA и базовыми классами) и overloading (определяет включить или выключить возможность переопределения операторов);
- Расширены возможности прагм overloading, attrs, charnames, feature, mro;
- Улучшения производительности:
- Новый внутренний кэш для ускорения выполнения isa();
- Линеризация для классов с единственным наследником выполняется на 40% быстрее;
- Связанная с текущей локалью информация теперь кэшируется через специальных хэш;
- Пустые DESTROY методы более не вызываются;
- Увеличена скорость работы функции Perl_sv_utf8_upgrade();
- Увеличена скорость выполнения оператора "keys" для пустых хэшей.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.