Итак rakudo теперь в структуре портов FreeBSD. Это кардинально сказалось на процессе установки.

Установка Perl6 в один шаг

Теперь достаточно одной команды:

   pkg_add -r rakudo

Perl6 установлен !

Так же можно произвести сборку из исходных текстов:

 cd /usr/ports/lang/rakudo
 make install clean

Ограничения по дистрибутивам

Каждый порт собирается на разных ветках FreeBSD прежде, чем попасть в хранилище портов. Для вышедшей пару дней назад версии rakudo ("Amsterdam") таблица доступных дистрибутивов выглядит следующим образом:

Сборка rakudo
branchamd64i386
9-currentpassgcc
8-stablegccpass
7-stablepasspass
6-stableicuicu

где:

    gcc - "cc1: internal compiler error: Segmentation fault: 11"
    icu  - dependency devel/icu is broken on 6.x
    pass - успешно

Как видно из таблицы - не все идеально, но зато предыдущая версия "Minneapolis" на 8-x вообще не работала.

Дальнейшая поддержка perl6 в FreeBSD

Меня пригласили в команду мантэйнеров perl@ и предложили дальше поддерживать lang/parrot и lang/rakudо (perl6 related). Здесь, как и везде, есть испытательный срок со своими условиями.

Написал письмо с новостью в проект rakudo, так же сообщил, что страницу проекта rakudoport планирую продолжать поддерживать.

На сегодня в FreeBSD наилучшая поддержка perl6! Для установки доступны самые последние версии parrot и rakudo, а обновления выходят с задержкой в пару дней после официального релиза!

Comments:0

Почти год длилась история с добавлением rakudo в дерево портов FreeBSD и закончилась она успешно.

В начале

Perl6 интересовал меня с момента прочтения книги "Perl6 и Parrot". Это было настолько давно, что я о нем успел забыть и вспомнил, когда услышал о проекте rakudo - реализации perl6 для виртуальной машины Parrot.

Тогда я сделал port для FreeBSD и рассказал о нем на конференции perl mova 2009. По результатам доклада появилась еще одна версия порта - с обновлением исходников из репозитариев rakudo и parrot.

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

Регулярно, после выхода очередной версии rakudo, я размещал обновления для портов как в системе PR FreeBSD, так и на сайте созданного проекта rakudoport.sourceforge.net. С сайта rakudo.org есть ссылка на него.

Так продолжалось год, пока мои регулярные обновления не были замечены остальной командой мантэйнеров портов FreeBSD. И теперь последние версии parrot и rakudo доступны для всех желающих.

Установка Perl6

Чтобы установить последнюю версию perl6 достаточно:

 cd /usr/ports/lang/rakudo
 make install

Вот результат, к которому я стремился.

Comments:2

Одна из особенностей формата Pod - его структура. На первый взгляд, есть некоторое внешнее сходство между документацией, написанной в формате Perl5 POD, и текстом в формате Perl6 Pod. Это потому, что различия лежат в основе синтаксической структуры обоих форматов.

Синтаксическая структура Pod

Основным элементом формата Pod (как и в perl5 POD) являются директивы, используемые для определения границ блоков Pod, описания конфигурационной информации (=config) и т.д. Каждая директива начинается с символа "равно" (=) в начале строки.

Примеры директив:

    =config head2  :like<head1> :formatted<I>
    =begin pod
    =end pod

Содержимое документа состоит из одного или нескольких блоков. Каждый блок Pod может быть определен в виде трех равнозначных формах:

  • Разграниченные блоки /Delimitedblocks
  • Блоки-параграфы/Paragraph blocks
  • Сокращенные блоки /Abbreviated blocks

Все три формы соответственно представлены на рисунке.

Подробнее о каждой будет рассказано немного ниже.

Каждая из форм имеет свои границы. Все содержимое документа, находящееся вне блоков Pod, определяется спецификацией как "молчаливый" материал. Этим материалом зачастую является исходный код программ, для документирования которого предназначен Pod.

В perl5 POD блок документации начинается с первой встреченной директивы и закачивается директивой =cut. Например:

   =head1 test head
   Some text
   =cut

Таким образом получается, что структура Perl5 POD состоит из одного типа блока с указанными правилами определения границ, где директива =cut является неотъемлемой частью и служит признаком завершения блока. После этой директивы, обработчик (parser) Perl5 POD переключается в "молчаливый" режим пока не встретит следующий символ = в начале строки.

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

Новые 3 формы определения блока Pod стали эволюционным развитием Perlpod Pod от POD (Plain Old Documentation).

Comments:0

Недавно вышла очередная версия rakudo #23 ("Lisbon"). Rakudo - реализация perl6 на ассемблере для Parrot ( подробнее). От версии к версии увеличивается число успешно пройденных тестов на соответствие спецификациям языка Perl6. Спецификации называются "Synopsis" и собраны здесь: perlcabal.org/syn/. Новая версия успешно проходит 85,5% тестов.

Порт rakudo для FreeBSD

Для того, чтобы облегчить процесс установки perl6, мной был создан и поддерживается в актуальном состоянии порт rakudo для FreeBSD. Пока он дожидается внесения в официальное дерево портов (ports/130629), последние версии появляются на странице проекта rakudoport.

Установка perl6

Так как rakudo использует виртуальный процессор parrot, понадобится предварительно установить и его. Если в системе установлен parrot из портов, то его нужно удалить. Текущий порт устарел. Мантэйнер порта lang/parrot в курсе требуемых изменений (ports/140832).

Итак, чтобы можно было писать и запускать программы на perl6, достаточно выполнить несколько простых действий:

Скачать порты в один каталог
parrot-1.8.0.tgz и rakudo-200911.tgz
Распаковать и установить каждый
Это можно сделать следующими командами:
    tar xzf parrot-1.8.0.tgz
    ( cd parrot && make install clean )
    tar xzf rakudo-200911.tgz
    ( cd rakudo && make install clean )

Теперь можно запустить команду:

perl6 -e 'say "Hello, world "'

Или выполнить:

man perl6

Архитектура и версии

Проверял работу perl6 на 7.2-CURRENT и 7.0-PRERELEASE amd64. Сведений о других версиях у меня нет, но уверен, что проблем не возникнет. Последние полгода сборки проходят без ошибок.

Comments:0

<<Раньше - Позже