Появился ещё один форк 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.

Основные возможности, вошедшие в cperl 5.22.1:

  • Базовые типы (Int, UInt, Num, Str)

    # Массив целых чисел @a.
    # Строгая проверка типа на этапе компиляции
    my Int @a = (0..9);
    
  • Типы в сигнатурах функций

    sub (int $i)   # синтаксис Perl 6
    sub ($i: int)  # синтаксис в других типизированных языках
    
  • Декларация возвращаемого функцией типа как атрибут

  • Множество встроенных атрибутов функций (например :const)

  • Фиксированные массивы с проверкой во время компиляции и оптимизациями

    # Массив размер, которого не может быть изменён
    my @a[20] :int;
    
  • Статические методы конвертируются в вызов подпрограммы на этапе компиляции

  • Модуль Config реализован в XS

  • strict, attributes, DynaLoader, XSLoader — встроенные пакеты, переписаны на C

  • Хэш-функция по умолчанию FNV1A (также, как и форке stableperl)

  • Исправлена работа лексической $_

  • Улучшена сборочная система

Подробное описание новшеств и грядущих изменений в cperl, доступно здесь. Загрузить исходный код cperl можно из репозитория проекта на github.