Создание модулей для Perl 6

В том время как для Perl 5 имеется CPAN, для Perl 6 подобного архива нет. На сайте CPAN6 [1] по поводу сроков имеется следующая фраза:

"The first release of the CPAN6/Pause6 modules is planned for April 2010."

В планах CPAN6 хостить не только код для Perl 6, а также библиотеки для всех языков [2], использующих VM Parrot. На предлагаемом логотипе схематически изображены люди, которые держаться за руки, что символизирует общность части личного пространства.

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

Тем не менее, есть некоторая попытка в формализации правил и процесса установки модулей для Perl 6 в виде пакетного менеджера Panda [3] (а ранее Proto https://github.com/masak/proto). Соответствующие нескольким простым требованиям модули размещаются на http://modules.perl6.org/.

Основные шаги по созданию модуля Perl 6

  • Структура модуля

Структура каталогов похожа на структуру обычного модуля для CPAN.

    plosurin
    ├── bin
    │   └── plosurin
    ├── lib
    │   └── Plosurin.pm
    ├── t
    │   ├── t01.t
    │   └── t02.t
    ├── Changes
    ├── LICENSE
    ├── META.info
    └── README

Для тех, кто привык использовать Makefile, есть небольшой скрипт masak/ufo. После запуска он создаст в текущем каталоге шаблонный Makefile. Станут доступными команды make test, make install и т.д.

  • META.info содержит информацию о модуле

Я просто приведу содержимое этого файла для моего модуля:

 {
    "name"        : "Plosurin",
    "version"     : "0.02",
    "description" : "Perl 6 implementation of Closure Templates",
    "depends"     : [ ],
    "repo-type"   : "git",
    "repo-url"    : "git://github.com/zag/plosurin.git"
 }

Названия полей говорят сами за себя.

  • Разместить данный модуль на github.

Рекомендуется. Но, я думаю, что в repo-url файла META.info можно указать отличный от github репозиторий: например, gitorious.

  • Добавить ссылку на свой проект в perl6/ecosystem

Список проектов находится в файле:

https://github.com/perl6/ecosystem/blob/master/META.list

Как добавить адрес своего репозитория? Так:

fork->clone->edit->commit->push->PullRequest. 

В случае, если проект хостится на другом сервисе (например, на упомянутом gitosis), сообщите мне адрес вашего репозитория: я добавлю его непосредственно в perl6/ecosystem.

Modules.perl6.org - CPAN6

Пару лет назад все работающие модули для Perl 6 несложно было запомнить [4], но даже сегодня их по прежнему очень мало. Все они размещены на странице http://modules.perl6.org/, который является отличным источником работающих примеров кода на Perl 6.

Всем, кто интересуется Perl 6 советую посмотреть на страничку наиболее востребованных на данный момент модулей [5]. Возможно, вы встретите повод попробовать Perl 6!

[1]Проект по созданию CPAN6. http://cpan6.org

[2]Реализации языков программирования на виртуальной машине Parrot. Parrot-Based Implementations of Programming Languages

[3] Пакетный менеджер для Perl 6. https://github.com/tadzik/panda/

[4] Статья devel/p6-perl6-toys. devel/p6-perl6-toys

[5] Perl 6 Most-Wanted-Modules. https://github.com/perl6/ecosystem/wiki/Most-Wanted-Modules