Inline Grant Weekly Report #8

This was another big week for Inline::Module and friends. This is the week that modules using Inline::Module start getting out to CPAN. This even includes the first one written by someone, not working directly on the project! Read on.

So Many Modules!

This report will be organized by the modules created and updated this week.

R.pm

The hacker known as sivoais on IRC #inline, started a project to embed the "R" language in Perl. It uses PDL and Inline::C. This week he got the whole thing to work using Inline::Module and Dist::Zilla::Plugin::InlineModule. It's not yet shipped to CPAN, but the repo is here.

I suspect it will be on CPAN soon. The dzil build command produces a working dist that has Inline::Module and Inline::C support to do all the XS work easily. That's what this grant is all about. Thanks sivoais! (aka ZMUGHAL on CPAN)

Alt::Math::Prime::FastSieve::Inline

David wrote Math::Prime::FastSieve a few years ago, to show off using Inline::CPP for a CPAN module. He was able to do it, but it had an Inline requirement. (Ditching that requirement is a primary goal of this project).

This week we released it as Alt::Math::Prime::FastSieve::Inline using the latest Inline::Module. This required some refactoring of Inline::CPP. See below.

Inline::CPP

We needed to bring Inline::CPP into closer parity with Inline::C (in the parser department). Basically we moved Inline::CPP::Grammar to Inline::CPP::Parser::RecDescent. This also makes Inline::CPP work with Inline's using directive.

This let us do the right thing from Inline::Module and after that C++ Just Worked™. Note that even though Inline::CPP uses both Inline and Inline::C, no changes were required to those two modules. (No change, is good change).

Dist::Zilla::Plugin::InlineModule

In order for sivoais to use Inline::Module, we needed to update the Dist::Zilla plugin to work with the latest code. Ironically, sivoais himself did most of the work. Ingy pulled him into a realtime PairUp™ session and soon it was done. Dist::Zilla superstar ether++ helped us find a couple of the deep magic requirements that were needed to make it all work.

The Dist::Zilla::Plugin::InlineModule module ends up being extremely simple though. It just glues Inline::Module and Dist::Zilla together with no real special casing for either. The same code that does the right things to an EUMM (or other) dist, does it for Dist::Zilla. This should lead to maintenance happiness down the road.

Alt::Acme::Math::XS::*

Our test module Acme::Math::XS got released in it's various forms:

Next Steps

Our estimate for the grant work was 2 months. Next week will complete 2 full months since we started. We are very close to done, and will try to wrap things up if possible. The things that come to mind are:

  • Module::Build support module for Inline::Module
  • More tests
  • More Alt modules

Stay tuned!