Создание модулей для 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