LINUX.ORG.RU

Сообщения perl5_guy

 

Perl 5.32.0

Группа Разработка

Вышла новая версия интерпретатора языка программирования Perl 5.32.0.

Позади 13 месяцев разработки, 140 тысяч изменённых строк в 880 файлах.

Ключевые нововведения:

  • Новый экспериментальный оператор isa, проверяющий, является ли указанный объект экземпляром переданного класса или класса-наследника:

    if( $obj isa Package::Name ) { ... }
    

  • Поддержка Unicode 13.0!
  • Появилась возможность записывать операторы сравнения с одним приоритетом в виде цепочки:

    if ( $x < $y <= $z ) {...}
    

    Тоже самое что:

    if ( $x < $y && $y <= $z ) {...}
    

    Про данную особенность можно подробней почитать в perlop (раздел «Operator Precedence and Associativity»).
  • Буквенные обозначения утверждений в регулярных выражениях больше не являются экспериментальными. Пример: (*pla:pattern), подробнее в perlre.
  • Возможность ограничения проверяемого шаблона конкретной системой письма (подробнее «Script Runs» в perlre) больше не является экспериментальной.
  • Появилась возможность отключать непрямой вызов методов. Подробнее можно почитать в заметке Брайана Д Фоя.

Некоторые оптимизации:

  • Проверка подключения дополнительных возможностей (features) теперь происходит быстрее.
  • Существенно ускорены специальные случаи для сортировки (речь о {$a <=> $b} и {$b <=> $a} ).

Выбрал только некоторые вещи на свой вкус. Есть иные нововведения, несовместимые с прошлыми версиями изменения, обновления документации и закрытые проблемы безопасности. Предлагаю ознакомиться с полной perldelta по ссылке.

>>> Подробности

 

perl5_guy
()

Облачная конференция по Perl и Raku

Группа Разработка

COVID-19 разогнал всех по домам, но как бы то ни было, у сообщества накопилось много интересных мыслей по Perl и Raku, которыми хочется поделиться.

Присоединяйся к трёхдневному мероприятию насыщенному интересными выступлениями!

Конференция будет проходить с 24 по 26 июня. Купившие билет в 10$, смогут смотреть живые выступления и задавать вопросы докладчикам. Для всех остальных, видеоотчёт будет доступен на ютуб совершенно бесплатно.

Доклады традиционно читают волонтёры и желающие могут поддержать альтруистов рублём.

>>> Подробности

 , ,

perl5_guy
()

Cor - алтернативная ООП система для Perl

Группа Разработка

По ссылке сравнение Cor и Moose. Пример кода:

class Point {
    has ( $x, $y ) :reader :writer :new :isa(Int);

    method clear () {
        ( $x, $y ) = ( 0, 0 );
    }
}

class Point3D isa Point {
    has $z :reader :writer :new :isa(Int);

    method clear () {
        $self->next::method;
        $z = 0;
    }
}

>>> Подробности

 ,

perl5_guy
()

Новая книга Брайана Ди Фоя: «Mojolicious Web Clients»

Группа Разработка

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

В книге освещены:

  • основы HTTP;
  • разбор JSON;
  • разбор XML и HTML;
  • селекторы CSS;
  • непосредственное выполнение HTTP-запросов, аутентификация и работа с cookie;
  • выполнение неблокирующих запросов;
  • обещания.
  • Написание однострочников и модуль ojo. Некоторые примеры:

    % perl -Mojo -E 'g(shift)->save_to("test.html")' mojolicious.org
    % mojo get https://www.mojolicious.org a attr href
    

    Цена у книги более чем народная и я уже полистал ее. Мне очень понравилась. Материал излагается доступно и интересно. Много познавательных отступлений о том, почему то или иное средство реализовано именно так.

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

>>> Оглавление

 ,

perl5_guy
()

9 лет Mojolicious! Праздничный релиз 8.28 с async/await!

Группа Разработка

Mojolicious — современный веб-фреймворк на Perl. Mojo — дочерний проект по разработке набора инструментов для фреймворка. Модули семейства Mojo::* широко применяется и в сторонних проектах.

Пример кода:

use Mojo::Base -strict, -async;

async sub hello_p {
  return 'Hello Mojo!';
}

hello_p()->then(sub { say @_ })->wait;

Больше примеров в документации.

Ранее Perlfoundation выделяла грант на разработку модуля Future::AsyncAwait. Некоторое время спустя, основной разработчик Mojolicious (Себастьян Ридель) сообщал, что ведутся работы по реализации async/await.

Также добавлена экспериментальная поддержка метода all_settled для Mojo::Promise.

>>> Подробности

 ,

perl5_guy
()

Серия статей «По языку в день» от Андрея Шитова

Группа Разработка

Андрей Шитов, известый Perl-разработчик, решил в этом году попробовать как можно больше языков программирования и поделиться опытом с читателями.

Языки программирования восхитительны! Ты влюбляешься в какой-либо язык как только напишешь несколько тестовых программ. Чем больше изучаешь, тем лучше чувствуешь сам язык и идеи положенные в его фундамент.

В рождественском календаре этого года (с 1 по 24 декабря), я буду ежедневно публиковать статьи повествующие об основах различных языков программирования: один день - один язык. Чтобы сделать обзоры более полезными, я постараюсь придерживаться единого формата и разобрать аспекты языка, необходимые для написания следующих мини-проектов:

  • Hello, World!
  • Функция, вычисляющая факториал рекурсивно или в функциональном стиле
  • Программу, создающую массив объектов и выполняющую полиморфный вызов методов на них
  • Реализацию сонной сортировки (sleep sort). Данный алгоритм не применяется в боевых условиях, но замечательно демонстрирует возможности языка в разрезе конкурентности

Список языков:

  • День 1. TypeScript
  • День 2. Rust
  • День 3. Julia
  • День 4. Kotlin
  • День 5. Современный C++
  • День 6. Crystal
  • День 7. Scala
  • День 8. Dart
  • День 9. Hack
  • День 10. Lua
  • День 11. Raku
  • День 12. Elixir
  • День 13. OCaml
  • День 14. Clojure
  • День 15. Nim
  • День 16. V
  • День 17. Go
  • День 18. Hy
  • День 19. Red
  • День 20. Mercury
  • День 21. Elm

>>> Подробности

 ,

perl5_guy
()

Две бесплатные книги по Raku от Андрея Шитова

Группа Разработка

Raku One-Liners: В этой книге, вы найдёте множество скриптов, коротких настолько что они могут быть записаны в одну строку. Седьмая глава познакомит с синтаксическими конструкциями Raku, которые помогут создавать лаконичные, выразительные и при этом полезные программы! Подразумевается, что читатель знает основы Raku и имеет опыт программирования.

Using Raku: Книга содержит набор задач и решений к ним на Raku. Полезна как тем кто изучает данный ЯП, так и преподавателям. Ранее книга называлась «Using Perl6», но данная версия не простая замена s/Perl6/Raku/g, а новое издание с исправлениями и дополнениями.

P.S. Книга бесплатная, но Андрей будет рад пожертвованиям.

 

perl5_guy
()

Код интерпретатора Perl официально перенесён на GitHub

Группа Разработка

Ранее исходники находились по адресу perl5.git.perl.org.

>>> Подробности

 

perl5_guy
()

С днём программиста!

Группа Разработка

День программи́ста — праздник программистов, отмечаемый в 256-й день года. Число 256 (2⁸) выбрано потому, что это количество различных значений, которые можно выразить с помощью восьмиразрядного байта. Также это максимальная целая степень числа 2, которая не превышает количества дней в году (365 или 366).

>>> Подробней на википедии

 

perl5_guy
()

Видеоотчёты со Swiss Perl Workshop и PerlCon Riga

Группа Конференции и встречи

Swiss Perl Workshop:

Звук оставляет желать лучшего. Видео доступны здесь.

PerlCon Riga:

Изначально конференция анонсировалась здесь, но видео доступны на этом канале.

 ,

perl5_guy
()

Perl Weekly Challenge

Группа Разработка

Весёлые старты для любителей Perl'а и всех кто хочет попробовать силы в чёрной магии.

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

Упор сделан на TIMTOWTDI. Организатор просит избегать гольфа и JAPH, в остальном: «Пусть расцветают сто цветов».

По итогам пишут отчёт с наиболее интересными решениями.

Цель: популяризация Perl, обмен опытом и веселье!

>>> Подробности

 , , , ,

perl5_guy
()

Perl 5.28

Группа Разработка

Пока ты попивал смузи и катался на гироскутере, серьёзные пацаны подготовили к выпуску Perl 5.28

Что нового?

  • Поддержка Unicode 10.0 (появился символ биткоина).
  • delete можно использовать на срезах:
    my %sanitised_values = delete %input_values{@allowed_keys};
  • Проверка системы письменности на однородность (script runs):
    'Pеrl' =~ /^(*sr:\w+$)/
    Вернёт «ложь», т.к. буква «е» кириллическая. (подробнее о script runs)

Экспериментальные возможности:

Поддержка буквенных синонимов для некоторых утверждений (assertion) регулярных выражений (Осторожно! Может повысить читабельность!):

(?=...)        (*pla:...) or (*positive_lookahead:...)
(?!...)        (*nla:...) or (*negative_lookahead:...)
(?<=...)       (*plb:...) or (*positive_lookbehind:...)
(?<!...)       (*nlb:...) or (*negative_lookbehind:...)
(?>...)        (*atomic:...)

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

  • Серьёзно снижены накладные расходы связанные с использованием параметров юникод (\p{...}) в регулярных выражениях.
  • Существенно ускорена множественная конкатенация. Например, следующий код на x86_64 работает в 4 раза быстрее:

    my $s;
    my $a = "ab\x{100}cde";
    my $b = "fghij";
    my $c = "\x{101}klmn";
     
    for my $i (1..10_000_000) {
        $s = "\x{100}wxyz";
        $s .= "foo=$a bar=$b baz=$c";
    }
    

  • sprintf() с фиксированным набором аргументов и строкой формата содержащей только %s и %% работает быстрее.
  • ref() работает намного быстрей в булевом контексте, т.к. больше не создаётся временная строка вроде Foo=ARRAY(0x134af48).
  • Циклы for() и аналогичные конструкции в большинстве ситуаций будут работать быстрей
  • Появилась возможность хранить процедуры в пакетах без использования таблиц имён, что позволяет сэкономить крупные объёмы памяти.

Другие изменения:

  • Ядро почистили от «use vars». Многие продолжают использовать «use vars», что является плохой практикой с момента введения «our» в версии 5.6.0.
  • Новое предупреждение для случаев:

    my $name='Pistachio';
    print "In $name's house";
    

    Рекомендую посмотреть на видео. Возможно улыбнётесь.

Видео: Sawyer X рассказывает о нововведениях и фитчах предыдущих версий, которые ты пропустил.

>>> Подробности

 ,

perl5_guy
()

RSS подписка на новые темы