Мне нужно написать модуль XS для Perl. Насколько я понимаю, h2xs сегодня довольно устарел, каков предпочтительный метод для запуска XS-модуля сегодня? Я посмотрел на Module :: Starter, но он обрабатывает только чистые модули Perl.Каков современный способ создания модуля XS с нуля?
ответ
Нет, h2xs не устарел. Модуль :: Стартер, безусловно, более удобен, если вы создаете много чистых модулей Perl, но нет причин избегать h2xs. Тем не менее, я бы порекомендовал прочесть все его док-код, прежде чем использовать его, чтобы вы знали, что все, что вы захотите, сделать или не делать.
Лично я просто использую Module :: Starter и сам добавляю файл .xs. Это зависит от вашей цели: если вы создаете сопоставление «один на один» для C api, тогда h2xs может сделать для вас много шаблонов, но если вы создаете совершенно новый интерфейс или когда вы используете, re только делает вещи с самим perl (а не какой-то внешней библиотекой), это не добавляет многого, но проблемы IMHO.
Полезно знать. Я никогда не обращал внимания на волшебство, которое происходит в файле pm, но похоже, что вам просто нужно добавить две строки, для чего требуется XSLoader; XSLoader :: load ('Pax :: PerlHash', $ VERSION); Правильно ли это, и вы просто копируете ppport.h из другого модуля, или это не нужно? –
ppport.h предназначен для переносимости в более старые версии Perl. Обычно я делаю это невозможным (большинство моих модулей XS требуют 5,8 в любом случае, даже требуется 5.10), но в вашем случае это может быть иначе. Правильный способ создания ppport.h - использовать Devel :: PPPort. –
Вы также должны смотреть на использование Inline::C
Ну, так как я переписываю что-то, чтобы не использовать/использовать Inline :: C, это было бы глупо (усмешка). Inline :: C отлично подходит для быстрого прототипирования, но отстой для развертывания на производстве (некоторые пользователи не имеют домашних каталогов, поэтому объектные файлы заканчиваются в/_Inline и другие проблемы). –
Лично всякий раз, когда я начинаю делать новый модуль, я просто сделать это с помощью cp
щих и редактирования файлов из другого модуля шахты, которая похожа на него, и редактирование в зависимости от обстоятельств. Конечно, ничто в этом подходе не говорит, что оно должно быть моим. В CPAN есть много кода, на котором вы можете копировать и вдохновляться ...
Я использовал его несколько лет назад, я просто подумал, что он был заменен. –
Его заменяют только люди, которые не занимаются XS (это большинство авторов). –