Module::Build progress and roadmap

From my recent posts, you may have noticed that I'm doing a lot of work on Module::Build these days. I got back into it to get it ready for 5.10.1 and once I had re-learned the code base it was easy to start adding some frequently requested features and cleaning up other bugs.

Here's a snapshot of new developments and current plans:

  • MYMETA.yml -- implemented in 0.35_01 as discussed previously
  • File::ShareDir support -- implemented in 0.35_02. Adding a 'share' directory to your distribution will automatically configure it to be installed for use with File::ShareDir (and will add File::ShareDir to your 'requires' list of prerequisites). The 'share_dir' property allows more custom control of shared directories if needed.
  • Build installdeps -- implemented in 0.35_02. This build action is a helper routine for authors and developers who check out a distribution from a repository and want an easy to way to install dependencies. It uses 'cpan' by default, but can be configured to use 'cpanp -i'.
  • needs_compiler property -- implemented in 0.35_02. Module::Build now auto-detects XS or C files and checks for the presence of a compiler. It also adds ExtUtils::CBuilder automatically to 'build_requires'.
  • bundling Module::Build in inc/ -- under development. Soon, it will be possible to automatically bundle Module::Build within the inc/ directory for use with perls that haven't been upgraded to support configure_requires in META.yml. This will probably be released in experimental form before 0.36
  • declarative interface -- under discussion. Some people seem to really like the declarative interface of Module::Install. Once bundling works, it's likely that a declarative interface for Module::Build will follow, perhaps for 0.37.
  • plugins -- conceived, but not discussed. Subclassing has limits and some people would like a way to create and combine plugins to customize the build process. This will take some rework of the Module::Build internals, so is probably unlikely to happen soon, but it's on the list of long-term goals.

As you can see, Module::Build is moving along at a good clip. The next stable release will have some significant new features to address deficiencies that were attracting people to Module::Install and should help make Module::Build more easily backwards compatible in ways it hasn't exactly been to date.

This entry was posted in cpan, perl programming, toolchain and tagged , . Bookmark the permalink. Both comments and trackbacks are currently closed.


  1. Posted September 9, 2009 at 7:06 am | Permalink

    That's great news!

    Any ETA when the new Module::Build will be out? And does that mean we need a 'use Module::Build 0.36;' in Build.PL to utilize share property?

  2. dagolden
    Posted September 9, 2009 at 4:44 pm | Permalink

    No ETA yet -- some other features will need to stabilize and there's a lengthy regression test before each release. (I build and test about 3200 Module::Build using distributions on CPAN with the release candidate and the previous major release and check any differences in build/test outcomes.)

    You'll need configure_requires => { 'Module::Build' => 0.36 } but that will be done for you automatically. If the inc/ bundling is finished, you'll probably just need to do something like "use inc::latest 'Module::Build'" and then it will all just work. At least, that's the plan.

    -- David

One Trackback

  • By Module::Build inc bundling is getting close | dagolden on September 15, 2009 at 7:51 pm

    [...] dagolden Whatever comes to mind Skip to content HomeAbout MeMy ProjectsMy TalksMy Code Home > cpan > Module::Build inc bundling is getting close « Module::Build progress and roadmap [...]