Recentemente ho iniziato a studiare XS utilizzando perlxstut e il tutorial suggerisce di creare il mio modulo utilizzando il vecchio strumento per creare un progetto basato su ExtUtils::MakeMaker. Tuttavia, per i progetti Perl puri, h2xs/EUMM è stato a lungo sfavorito a favore di Module::Install, Module::Build o Dist::Zilla.Quali strumenti possono aiutare a costruire un progetto XS?
Esiste un modo più moderno di creare progetti XS? Module::Starter può creare progetti XS? Modulo: Build o Dist :: Zilla può generare progetti XS? Le loro pagine pod sono silenziose sull'argomento.
Il rovescio della medaglia, la critica che è stata livellata a h2xs/EUMM si applica ai progetti XS? Se hai comunque bisogno di un compilatore C, è ragionevole richiedere anche uno strumento di creazione?
MODIFICA: Vedo this question risponde alla mia domanda sulla creazione di un progetto. Mi piacerebbe sapere ancora qualcosa sulla costruzione: l'EUMM è l'unica opzione, oppure Module :: Build e Dist :: Zilla è anche in grado di costruire XS?
Dato che stavi chiedendo un feedback in un commento: questo sembra buono dopo una rapida ispezione. Nits: Forse aggiungere una dipendenza su ExtUtils :: CBuilder (needs_compiler potrebbe farlo già). Sei sicuro di aver bisogno di dynamic_config: 1? Scommetto che non lo fai. Inoltre, potresti voler aggiungere Module :: Build a configure_requires invece di require. Credo che aggiunga automaticamente una dipendenza alla versione più recente se non la trova affatto. Prova a rimuovere quella linea, eseguendo "./Build dist" e ispezionando il file META.yml/META.json generato per menzionare Module :: Build. – tsee
@tsee: grazie mille per la tua recensione. L'ho creato come wiki della comunità, quindi puoi inserire tutte le modifiche che vuoi, se lo desideri. –
Hmmm ... La pagina Module :: Build :: API dice che needs_compiler è disponibile dopo M: B versione .36, e che è impostato su true automaticamente se c_source esiste o il codice xs viene trovato da qualche parte. Se true, aggiunge automaticamente ExtUtils :: CBuilder come elemento build_requires. –