Recientemente comencé a aprender XS usando perlxstut y el tutorial sugiere que creo mi módulo usando la herramienta h2xs anterior para crear un proyecto basado en ExtUtils::MakeMaker. Sin embargo, para los proyectos puros de Perl, h2xs/EUMM se ha desfavorecido durante mucho tiempo a favor de Module::Install, Module::Build o Dist::Zilla.¿Qué herramientas pueden ayudar a construir un proyecto XS?
¿Existe alguna forma más moderna de crear proyectos XS? ¿Puede Module::Starter crear proyectos XS? ¿Puede Module :: Build or Dist :: Zilla construir proyectos XS? Sus páginas de pod permanecen en silencio sobre el asunto.
Por otro lado, ¿la crítica que se aplicó a h2xs/EUMM se aplica a los proyectos de XS? Si necesita un compilador de C de todos modos, ¿es razonable exigir una herramienta de marca también?
EDIT: Veo this question responde a mi pregunta sobre la creación de un proyecto. Todavía me gustaría saber sobre la construcción: ¿EUMM es la única opción, o son Module :: Build y Dist :: Zilla también capaces de construir XS?
Como estaba pidiendo comentarios en un comentario: Esto se ve bien después de una inspección rápida. Nits: quizás agregue una dependencia en ExtUtils :: CBuilder (needs_compiler podría estar haciendo esto ya). ¿Estás seguro de que necesitas dynamic_config: 1? Apuesto a que no. Además, es posible que desee agregar Module :: Build para configurar_requires en lugar de require. Creo que agrega automáticamente una dependencia a la versión más reciente si no la encuentra. Intente eliminar esa línea, ejecute "./Build dist" e inspeccione el META.yml/META.json generado para mencionar Module :: Build. – tsee
@tsee: muchas gracias por su comentario. Lo hice wiki comunitario, así que puedes poner cualquier cambio que desees si quieres. –
Hmmm ... La página Module :: Build :: API dice que needs_compiler está disponible después de M :: B versión .36, y que se establece en true automáticamente si c_source existe o el código xs se encuentra en alguna parte. Si es verdadero, agrega ExtUtils :: CBuilder automáticamente como un elemento build_requires. –