Perl 5.24 стал быстрее

Темы:

Одним из улучшений в Perl 5.24 стало ускорение арифметических операций. Начиная с Perl 5.8.0, когда появилась поддержка 64-битных целых, скорость арифметических операций снизилась из-за необходимости проверки различных граничных условий. Теперь же проверяется общий случай, что снимает необходимость проверки всех частных случаев, что в целом оптимизирует производительность.

Синан Унур в своей статье продемонстрировал, что эта оптимизация даёт выигрыш в 30% по сравнению с Perl 5.20.2 в бенчмарке nbody, который использует большое число арифметических операций. Благодаря этому Perl 5.24 обогнал Python 3 в данном тесте.

Комментарии

 

Выпущен Perl 5.24.0

Темы:

9 мая 2016 года была выпущена новая стабильная версия языка программирования Perl 5.24.0. Разработка велась примерно 11 месяцев, начиная с Perl 5.22.0, и содержит примерно 360 000 изменённых строк среди 1800 файлов от 77 авторов.

Комментарии

Дальше →  

Выпущен Perl 5.24.0-RC1

Темы:

Не откладывая в долгий ящик, Рикардо Сигнес выпустил первый «настоящий» релиз-кандидат новой мажорной версии Perl 5.24.0-RC1. Список изменений по сравнению с Perl 5.22.0 доступен в perldelta. Среди основных изменений можно отметить:

  • Постфиксное разыменование больше не экспериментальное, соответственно удалена поддержка авторазыменования.

  • Поддержка стандарта Юникод 8.0.

  • Удалена поддержка лексической переменной my $_.

  • Оптимизирована процедура входа и выхода в/из область видимости, что ускоряет вызов функций, циклов и блоков кода.

  • Прирост в скорости в регулярных выражениях с фиксированной строкой поиска за счёт использования соответствующей аппаратной поддержки.

  • Множество исправлений ошибок.

Комментарии

 

Релиз-кандидаты Perl 5.22.2-RC1 и 5.24.0-RC0

Темы:

10 апреля вышел первый релиз-кандидат Perl 5.22.2-RC1. Новый минорный релиз текущей стабильной ветки Perl 5.22 содержит только исправления ошибок безопасности: CVE-2015-8607, CVE-2015-8608, CVE-2016-2381 (подробно о них уже рассказывалось в новости о релизе Strawberry Perl), а также ошибка #RT127322, когда при создании временных файлов перед вызовом mkstemp, в Perl предварительно устанавливались биты umask 0600 (вместо 0177), что на современных Linux системах приводило к результирующему значению бит прав 0000, что не является проблемой безопасности, но на древних системах с glibc ≤ 2.06 давало результирующее значение 0066, что уже является проблемой.

Также было объявлено о создании релиз-кандидата будущей стабильной версии Perl 5.24.0-RC0. Это не совсем «настоящий» релиз, так как тарбол не был отправлен на CPAN, и собрать новый релиз можно только из исходного кода в git-репозитории. Но Рикардо Сигнес обещает выпустить настоящий RC1 уже через пару недель. Таким образом, в этом году ожидается необычно ранний релиз Perl по сравнению с предыдущими (например, 5.22.0 вышел 1 июня).

Комментарии

 

Выпущен Strawberry Perl 5.22.1.3 и 5.20.3.3

Темы:

Выпущены два релиза дистрибутива Perl 5.22.1.3 и 5.20.3.3 для Windows Strawberry Perl. Оба релиза содержат исправление уязвимостей:

  • CVE-2015-8607 — функция canonpath модуля File::Spec не сохраняет taint-атрибут возвращаемого значения.

  • CVE-2015-8608 — обращение к памяти за пределами границ при обработке путей. Баг специфичен для Win32 платформы, возникает в случае если в пути в качестве буквы диска указан любой символ, отличный от а..z или A..Z.

  • CVE-2016-2381 — если в массиве переменных окружения оказывались дублирующиеся ключи, то в %ENV сохранялось последнее значение, в то время как getenv возвращал первое. В такой ситуации дочерний процесс мог получить неожиданное значение переменной окружения.

Кроме того, в дистрибутивах обновлена библиотека openssl. Загрузить новые релизы можно на сайте проекта strawberryperl.com.

Комментарии

 

Вышел Perl 5.23.7

Темы:

Выпущен Perl 5.23.7 — восьмой релиз ветки для разработчиков. В данном релизе исправлено три проблемы, связанные с безопасностью:

  • CVE-2015-8607: функция canonpath() модуля File::Spec не сохраняет taint-флаг для возвращаемого значения (RT#126862). Проблема присутствует в дистрибутиве PathTools, который входил в состав Perl 5.20 и Perl 5.22. Исправлено в PathTools 3.62.

  • CVE-2015-8608: обращение к памяти за пределами границ при обработке путей (RT#126765). Баг специфичен для Win32 платформы, возникает в случае если в пути в качестве буквы диска указан любой символ, отличный от а..z или A..Z. Проблема актуальна для Perl, начиная с версии 5.005_02

  • Доступ к неинициированной памяти в реализации функции crypt() на Win32 RT#126922. Может привести к криптографически слабому результату работы функции.

Присутствует несовместимое изменение в работе \b{wb} в регулярных выражениях, которое теперь больше соответствует ожиданиям и может заменить \b при обработке текста с использованием правил Юникода для символов разделителей слов.

Информацию о других изменениях можно прочитать в perldelta

Комментарии

 

Perl 5.23: эпизод VII «Пробуждение Фузза»

Темы:

Вышел седьмой релиз Perl 5.23 для разработчиков с необычным эпиграфом:

    Давным-давно в микросекундах в не очень далёкой галактике...

                            5.23 эпизод VII
                           ПРОБУЖДЕНИЕ ФУЗЗА

                            Период волнений.
                           Повстанцы угрожают
                          намерениями форкнуть
                        ПЕРЛ и вернуть галактике
                       скорость  и   стабильность.
                      Канцлер Рик Хулиган борется за
                    удержание остатков Республики против
                волны варварства и опустошения нового врага:
                           НАЛЁТЧИКОВ ФУЗЗА.

          Тем временем, после 15 лет подготовки и продолжительных
       ожиданий, Верховный Вождь Тим Подхалим готовит для удара новое
     разрушительное оружие ПЕРЛ ШЕСТЬТОЧКАНОЛЬ, которое навсегда расколет
    Республику и возвестит о создании новой  Империи частичной типизации...

Под фуззом (fuzz) имеется ввиду фаззер AFL, на который приходится внушительное число обнаруженных багов в разборе кода за последнее время. Имя Рик Хулиган намекает на текущего сопровождающего Perl 5 Рикардо Сигнеса, ну а Тим Подхалим (Tim Toady) наверно не нуждается в пояснении.

А и да, список изменений не особенно внушительный, но стоит обратить внимание на ускорение операций с регистром символов для языков, в которых отсутствует разделение на верхний и нижний регистр (например, китайский), а также внедрена проверка свойств юникода (\p{} и \P{}) в регулярных выражениях на этапе компиляции. Добавлена поддержка платформы OpenIndiana (преемник OpenSolaris). Исправлено несколько ошибок и регрессий.

Комментарии

 

Выпущен Perl 5.22.1

Темы:

После 6 месяцев разработки выпущен первый корректирующий релиз текущей стабильной версии Perl 5.22. Полный список изменений доступен в perldelta

Основные изменения:

  • Существенные исправления в работе \b{wb}, \b{sb}, \b{gcb}, в работе которых после релиза Perl 5.22.0 было обнаружено большое количество ошибок, включая падения при проверках границ.
  • Обновлены некоторые модули, включая Win32, где добавлена поддержка Windows 10.
  • Исправлено внушительное число ошибок с крахом Perl-процесса (в основном обнаруженные с помощью фаззера AFL).
  • Исправления в работе с шестнадцатиричными числами с плавающей запятой.

В новую версию не вошло исправление для PadlistNAME, таким образом, Coro по-прежнему не будет работать.

Комментарии

 

Очередной форк Perl: Piledriver

Темы:

Стало известно о появлении нового форка Perl 5.22: Piledriver (англ.копёр). Автором форка является Michael G. Schwern, который долгое время являлся одним из разработчиков Perl, автором модулей на CPAN таких, как Test::More, Class::DBI.

Комментарии

Дальше →  

Новые идеи для smart match

Темы:

После выхода Perl 5.18 оператор умного сравнения ~~, а также связанные с ним given и when были объявлены экспериментальными. Основная причина этого изменения — чрезвычайно сложная и запутанная таблица действий в зависимости от типа аргументов этих операторов. Умное сравнение требовало радикального пересмотра в сторону упрощения.

На днях в рассылке perl5-porters снова был поднят вопрос о том, каким должен стать обновлённый оператор умного сравнения. Рикардо Сигнес рассказал о своём новом видении работы оператора умного сравнения.

Комментарии

Дальше →  

Выпущен Strawberry Perl 5.20.3.1

Темы:

Выпущен релиз дистрибутива Perl для Windows Strawberry Perl 5.20.3.1, который базируется на последнем обновлении Perl предыдущей стабильной ветки 5.20.

Доступны msi-пакеты для установки: 32-битной и 64-битной версии.

Помимо Perl, обновлены сопутствующие версии CPAN-модулей, а также библиотека openssl до версии 1.0.2d. Полная информация о релизах соответственно: 32, 64.

Комментарии

 

Появился ещё один форк Perl: cperl 5.22.1

Темы:

Рейни Урбан анонсировал выпуск форка Perl: cperl 5.22.1.

Имя cperl означает Perl с классами (просматривается параллель с ранним именем C++ — C с классами), поддержкой компилятора или просто дружелюбный к компаниям perl. Но, к сожалению, выпуск cperl 5.22.1 оказался пока без поддержки классов, но, тем не менее, форк имеет множество других интересных особенностей.

Утверждается, что cperl по крайне мере в 1.5 раза быстрее, чем Perl 5.22, и в 2 раза быстрее, чем Perl 5.14. Потребление памяти даже ниже, чем в 5.6.2 и 5.10.

cperl по большей части совместим с Perl 5.22, подавляющая часть CPAN модулей будет работать с cperl.

Комментарии

Дальше →  

Perl blead портирован на AmigaOS 4.1

Темы:

Несколько часов назад в ветку для разработчиков blead перенесено порядка 60 коммитов, добавляющих поддержку платформы AmigaOS 4.1. Последняя версия Perl, которая работала на AmigaOS, была версия 5.7.2, вышедшая больше 14 лет назад. Основную работу по портированию на современную версию AmigaOS выполнил Andy Broad при помощи Jarkko Hietaniemi, перенёсшего патчи на текущую ветку Perl blead.

Комментарии

 

Booking.com пожертвовал $60 000 на развитие Perl 5

Темы:

По сообщению фонда Perl Booking.com пожертвовал $60 000 на поддержку развития Perl 5. Компания Booking.com уже на протяжение многих лет продолжает оказывать финансовую поддержку фонду Perl для продолжения разработки Perl 5. Язык Perl 5 остаётся основой инфраструктуры компании наряду с другими OSS-проектами, такими как Linux, MySQL, Nginx, Hadoop и Redis.

Комментарии

 

Camelcade — плагин для поддержки Perl 5 в IntelliJ IDEA

Темы:

Вышла бета-версия 0.34 плагина Camelcade для известной среды разработки IntelliJ IDEA, который обеспечивает поддержку Perl 5. Несмотря на бета-статус утверждается, что плагин обеспечивает более качественную поддержку Perl 5 проектов, чем редакторы Sublime или NotePad++.

Camelcade

На данный момент поддерживаются следующие возможности:

  • Анализ и разбор Perl 5 кода (не нативный, поэтому возможны баги).
  • Поддержка форматов Perl 5, POD, встроенный Perl 5 (например, шаблоны Mojolicious).
  • Выбор Perl 5 интерпретатора для проектов.
  • Подсветка синтаксиса (цветовая схема из NotePad++).
  • Поиск парных скобок, сворачивание кода.
  • Контекстные действия.
  • Автодополнение имён переменных, подпрограмм, пакетов. Навигация и рефакторинг.
  • Инспекция кода, поиск ошибок.
  • Интеграция с IntelliLang для поддержки других языков во встроенных документах внутри исходного кода.

Комментарии

 

Выпущен Perl 5.23.1

Темы:

20 июля выпущен второй релиз Perl ветки для разработчиков 5.23. Данный выпуск состоялся спустя месяц после релиза 5.23.0 и содержит изменения в 8 400 строках исходного кода.

Комментарии

Дальше →  

Постфиксное разыменование больше не экспериментальное

Темы:

Принят патч, который убирает статус экспериментальной у возможности постфиксного разыменования. Напомним, что постфиксное разыменование впервые появилось в Perl 5.20 и позволяет использовать новый синтаксис для разыменования:

$array_ref->@*; # вместо @{ $array_ref }
$hash_ref->%*;  # вместо %{ $hash_ref }
...

С выходом Perl 5.24, больше не потребуется использовать конструкцию

no warnings "experimental::postderef";

чтобы подавлять предупреждение, это выражение станет пустой операцией. Для активирования возможности можно по-прежнему использовать выражение

use feature "postderef", "postderef_qq";

или просто

use v5.24;

Комментарии

 

Выпущен Perl 5.23.0

Темы:

20 июня выпущен первый релиз Perl новой ветки для разработчиков 5.23. Данный выпуск состоялся спустя три недели после релиза 5.22.0 и содержит изменения в 86 000 строках исходного кода.

Основные изменения:

  • Поддержка стандарта Юникод 8.0.
  • Класс символов /\C/ в регулярных выражениях больше не поддерживается.
  • chdir('') или chdir(undef) больше не меняет текущий каталог на домашний каталог и приводит к фатальной ошибке. Используйте просто chdir().
  • Макрос PadlistNAMES теперь снова lvalue (решена одна из проблем для работы модуля Coro).
  • Обновлены некоторые базовые модули, в том числе POSIX, с экспериментальной поддержкой NaN payload API (из последнего черновика стандарта ISO C API).

Комментарии