Конференция YAPC::Russia 2016 пройдёт 25 июня в Москве

Темы:

Анонсирована очередная ежегодная конференция YAPC::Russia. В этом году мероприятие пройдёт 25 июня в Москве в офисе Mail.Ru Group. Участие в конференции бесплатное, но необходимо зарегистрироваться.

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

Также, как и в прошлом году, организаторы обещают прямую видеотрансляцию докладов.

Комментарии

 

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 авторов.

Комментарии

Дальше →  

Coro в Perl 5.24

Темы:

В тот момент, когда перед выпуском Perl 5.24 остались считанные дни, в рассылке perl5-porters внезапно вспомнили, что в новом Perl по-прежнему остаётся сломанным модуль Coro Марка Леманна. Одна из проблем была связана с тем, что в Perl 5.22 структура MGVTBL (магическая виртуальная таблица), формирующаяся во время компиляции perl, стала константной. Coro делал переопределение в таблице, поэтому и не мог работать с новым Perl 5.22. Было предложено откатить это изменение до выхода Perl 5.24.

Вносить подобные изменения в последние дни перед выпуском слишком рискованно, поэтому произошёл спонтанный мозговой штурм проблемы, в результате которого удалось выяснить очень много интересных деталей. Оказалось, что переопределение MGVTBL требовалось Coro только для того, чтобы переопределить работу с хендлерами сигналов __DIE__ и __WARN__ для магического хеша %SIG, что в свою очередь было сделано из-за бага Perl, когда присутствует рассинхронизация в PL_warnhook и $SIG{__WARN__}. Теоретически оба должны ссылаться на хендлер обработки предупреждений, но некоторые кривые XS-программы, в том числе входящие в базовый Perl (например, find в PerlIO::Layer), могут изменить только PL_warnhook, забыв про $SIG{__WARN__}. То есть это был банальный костыль в Coro для обхода реальной проблемы в Perl. Эта проблема была зафиксирована в баге #125349,

Более того, оказалось, что Coro можно было приспособить для работы с константной MGVTBL, Dave Mitchell и Father Chrysostomos продемонстрировали патч, который позволяет Coro работать без проблем на Perl 5.22.

Очевидно, что если бы этот мозговой штурм прошёл год назад, проблема была бы решена раньше и не возникло бы таких явлений как stableperl. Вероятно штурм бы и не потребовался, если бы Марк сообщил о проблеме в Perl, когда столкнулся с ней впервые.

Комментарии

 

Sawyer X новый pumpking Perl

Темы:

Рикардо Сигнес сообщил, что новым добровольцем, вызвавшимся быть ответственным за релизы Perl, стал Sawyer X, известный в сообществе израильский Perl-программист.

Рикардо заметил, что предыдущий pumpking Джес Винсент сопровождал Perl два года, сам Рикардо — четыре (два в квадрате), следовательно Сойеру предстоит по меньшей мере 4² = 16 лет увлекательной работы.

В рассылке perl5 porters началось обсуждение новости. Уже предрекают появление Dancer в базовом Perl, вместо ушедшего оттуда модуля CGI.

Комментарии

 

Рикардо Сигнес получил серебряного верблюда

Темы:

silver camel

На проходящем Perl QA Хакатоне в английском городе Рагби Рикардо Сигнес получил довольно уникальную награду: серебряный верблюд. Это первое публичное Perl-мероприятие, которое посетил Рик после анонса, что Perl 5.24.0 станет его последним релизом. Награда стала данью признания выдающихся заслуг Рикардо Сигнеса в его работе над выпусками Perl на протяжении последних пяти лет.

Награда «серебряный верблюд» появилась в 2014 году, когда ею впервые был удостоен Марк Китинг за его вклад в развитие Perl-сообщества в Соединённом Королевстве. Дело в том, что Марк являлся членом маркетингового комитета фонда перл и никогда бы не смог получить награду «Белый верблюд», поскольку именно фонд перла выбирает лауреатов награды и по этой причине не может выбирать никого из жюри. «Серебряный верблюд» позволил изящно обойти это ограничение.

Комментарии

 

Последний релиз Рикардо Сигнеса

Темы:

Рикардо Сигнес, текущий релизер стабильных релизов Perl (pumpking), сообщил о том, что релиз v5.24.0 и одновременно выходящий релиз v5.25.0 для разработчиков, станут его последними релизами Perl.

Рикардо на протяжении последних почти 5 лет выпускал стабильные релизы Perl, начиная c 5.16.0. Он обещает по-прежнему активно участвовать в сообществе, но уже не в роли pumpking. Тема письма в perl5-porters «...and slide on the ice» является окончанием цитаты из эпизода MASH:

Ladies and gentlemen, take my advice. Pull down your pants, and slide on the ice

Maj. Sidney Freedman

что можно трактовать как, жизнь коротка, не следует всегда оставаться слишком серьёзным.

Комментарии

 

Выпущен 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 июня).

Комментарии

 

Враждебные форки

Темы:

В документации Mojolicious появилось предостережение от создания форков отдельных частей проекта Mojolicious, которые не были одобрены разработчиками Mojolicious. Форки не только ведут к истощению ресурсов проекта, бренда, но также лишают его возможных баг-репортов и патчей. В качестве примеров можно привести DOM::Tiny , который является форком Mojo::DOM, или JSON::Tiny, который является форком Mojo::JSON. Например, улучшение для JSON::Tiny никто не удосужился предложить портировать обратно в Mojo::JSON, а улучшения в Mojo::JSON не попадают в форк, таким образом складывается ситуация, когда оба проекта несут потери.

Себастьян Ридель настроен серьёзно и уже поместил негативный отзыв дистрибутиву DOM-Tiny на cpanratings.

Комментарии

 

Код ошибки Winsock теперь попадает в $^E

Темы:

Давняя история борьбы Perl с кодами ошибок Winsock внезапно получила продолжение. Как известно, традиционно в Perl на Windows коды ошибок Winsock сохранялись в errno и транслировались в переменную $! так, чтобы соответствовать POSIX-кодам ошибок. Возникающие проблемы при таком подходе уже подробно освещались в статье «AnyEvent сломан на Strawberry Perl 5.20»

И вот, в конце февраля было внесено новое предложение по работе с ошибками Winsock. Чтобы немного смягчить имеющееся рассогласование, начиная с грядущего выпуска Perl 5.24 значение кода ошибки Winsock будет попадать в переменную $^E, которая как раз и служит для хранения платформо-специфичных ошибок. Отказ от модификации $! пока не предусматривается, но если он будет выполнен для Winsock, то пройдёт через стандартную схему устаревания и, как минимум, через один стабильный релиз.

11 марта это изменение было отправлено в основную ветку.

Комментарии

 

Выпущен 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-докладов на FOSDEM 2016

Темы:

На сайте конференции FOSDEM 2016 выложены видеозаписи докладов, проходившие в зале Perl.

P.S. По всей видимости, видеофайлы выложены частично битые. Первая минута не проигрывается, но дальше воспроизводится нормально. Требуется полная загрузка видеофайла для начала воспроизведения.

P.P.S. Все видеофайлы, кроме «Perl 6», перегенерированы и доступны для просмотра.

Комментарии

 

Вышел Rakudo Star 2016.01

Темы:

Вышел официальный анонс «Rakudo Star» 2016.01 — дистрибутива Perl 6. Поскольку предыдущий релиз вышел в ноябре 2015, то этот релиз является первым стабильным выпуском Perl 6, соответствующим спецификации v6.c.

Этот релиз «Rakudo Star» был выпущен с поддержкой бэкенда MoarVM (все модули проходят тесты на всех поддерживаемых платформах). JVM бэкенд в данной версии не является полнофункциональным, поэтому рекомендуется использовать только бэкенд MoarVM. Загрузить архив с исходным кодом можно здесь.

В мире Perl 6 есть различие между языком «Perl 6» и конкретной реализацией языка, такой как «Rakudo Star». Данный релиз содержит компилятор Perl 6 Rakudo 2016.01.1 и бэкенд MoarVM 2016.01, а также различные модули, документацию и другие полезные ресурсы от сообщества.

P.S. Доступны для загрузки MSI-инсталляторы для платформ Windows: x86 (без JIT), x86_64 (c JIT).

Комментарии

 

Вышел Rakudo 2016.01

Темы:

Вышел первый в 2016 году релиз компилятора Perl 6 — Rakudo 2016.01. Это также первый пост-Рождественский релиз, построенный по-прежнему на основе спецификации v6.c. Выпуск задержался на две недели, что связано прежде всего с продолжительным периодом зимних праздников, да и просто разработчикам был необходим отдых после напряжённой работы над первым стабильным релизом.

Данный релиз не имеет новой функциональности и содержит только исправления ошибок и оптимизации. Загрузить архив с исходным кодом можно на сайте rakudo.

Разработчики отмечают в анонсе, что новые релизы Perl 6 в этом году могут содержать новую функциональность, которая не является частью спецификации v6.c. Данные возможности можно будет включать с помощью прагм, работающих в лексической области видимости. При этом будет гарантироваться, что всё, работающее согласно спецификации v6.c, будет продолжать работать. Кроме того ожидаются и инкрементальные изменения самой спецификации.

К сожалению, до сих пор не выпущен новый дистрибутив «Rakudo Star», содержащий стабильный Rakudo, наборы модулей и документацию, как и не выпущены msi-пакеты для установки в системе Windows. Никакого инсайда по этому поводу пока не поступало.

P.S. Для предварительного тестирования доступен первый релиз-кандидат «Rakudo Star» 2016.01-RC0.

P.P.S. Выпущен экстренный релиз Rakudo 2016.01.1, исправляющий проблему в процессе инсталляции модулей CORE. Проблема актуальна если при инсталляции используется параметр DESTDIR, указывающий путь к каталогу для установки (как правило, при сборке rpm/deb пакетов).

Комментарии

 

Встреча moscow.pm 4 февраля 2016 г.

Темы:

Анонсирована встреча Moscow.pm 4 февраля в 18.30 в офисе Mail.Ru Group.

Программа мероприятия:

  • «Технологии конкурентного программирования», Илья Чесноков (программист в UK2 Group)

  • «Учимся рисовать», Дмитрий Симонов (независимый программист)

  • «Index Condition Pushdown», Павел Щербинин (руководитель групп разработки Новости и Hi-Tech в Mail.Ru Group)

Не забудьте зарегистрироваться!

Комментарии

 

Вышел 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

Комментарии

 

34-й выпуск журнала Pragmatic Perl

Темы:

Вышел 34-й выпуск журнала о современном Perl на русском Pragmatic Perl.

Pragmatic Perl 34

В этом номере:

  • От редактора, Вячеслав Тихановский

  • Впечатления от воркшопа Saint Perl 2015, Владимир Леттиев
    Не изменяя традиции 19 декабря 2015 г. прошёл седьмой ежегодный воркшоп Saint Perl для всех любителей и профессионалов мира Perl в Санкт-Петербурге

  • Взгляд на 2015 г., Андрей Шитов
    Краткий обзор заметных событий в мире Perl за прошедший год

  • Управление модулями и прекомпиляция в Perl 6, Владимир Леттиев
    25 декабря 2015 г. вышел первый стабильный релиз Rakudo Perl 6, среди новшеств которого совершенно новая система управления модулями и прекомпиляция. Рассмотрим в деталях процесс загрузки, разрешения зависимостей и компиляции модулей

  • Perl 6-винегрет, Андрей Шитов
    Новогодний оливье — сборная солянка про разные интересные штуки в Perl 6

  • Использование Rust из Perl, Денис Федосеев
    Встраивание Rust в Perl с помощью FFI

  • Обзор CPAN за ноябрь 2015 г., Владимир Леттиев
    Рубрика с обзором интересных новинок CPAN за прошедший месяц.

  • Интервью с Дмитрием Шаматриным, Вячеслав Тихановский
    Дмитрий Шаматрин — программист, с недавнего времени организатор Perl-конференций

Комментарии

 

Вышел Perl 6.0

Темы:

Как и было обещано, на рождество вышел первый стабильный релиз Perl 6, который получил кодовое имя «Коледа» или по-русски Коляда, т.е. Сочельник — праздник кануна Рождества. Сообщество разработчиков Perl 6 в течении 15 лет шли к этому релизу. Данная версия компилятора соответствует официальной Perl 6 спецификации v6.c «Christmas» и проходит тесты roast.

Вот что пишут в анонсе о языке Perl 6:

  • Сохранил главные ценности Perl: выразительность и способность решать поставленные задачи, он отражает влияние естественного языка и расширяет границы дизайна языка.

  • Имеет чистый современный синтаксис, основанный на схожих конструкциях, но пересмотревший те вещи, которые требовали пересмотра.

  • По-настоящему мультипарадигменный, включающий элегантный объектно-ориентированный, функциональный, процедурный и параллельный подходы в программировании.

  • Служит как эффективный язык-клей: простота вызовов C/C++ (через NativeCall) и Perl5 (с помощью Inline::Perl5).

  • Значительно пересмотрен и создан новый стандарт для регулярных выражений, который расширяем до полноценных грамматик, достаточно мощных, чтобы разбирать синтаксис самого Perl 6.

  • Отличная поддержка Юникода со строками, работающих на уровне графем.

  • Лексические уровень и инкапсуляция, позволяющие легко проводить рефакторинг.

  • Расширяемое мета-программирование, определяемые пользователем операторы и роли.

Стабильный релиз не означает, что там нет багов или он работает безупречно. Безусловно будут выпускаться новые версии и стабильные релизы, но это релиз самый первый, который ознаменует начало новой эпохи. Спецификация языка и тест roast теперь надолго будет зафиксированы на версии v6.c, а это означает, что синтаксис и фичи языка уже не будут меняться. Будет дописываться документация и выпускаться книги по языку Perl 6, которые можно смело начинать изучать — изменений в обозримом будущем не будет. По крайне мере, не раньше, чем выйдет спецификация языка 6.d (Diwali).

Загрузить компилятор Perl 6 Rakudo 2015.12 можно из rakudo.org/downloads/rakudo/. Релиз дистрибутива Perl 6 «Rakudo Start» с компилятором Rakudo, документацией и модулями вскоре появится в rakudo.org/downloads/star/

Следующий релиз №95 Rakudo Perl 6 ожидается 16 января 2016.

Комментарии

 

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

Темы:

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

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

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

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

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

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

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

Комментарии