On Saturday, August 17, 2002, at 08:23 AM, Nicholas Clark wrote:
> Inline only uses MakeMaker to compile 1 XS file into 1 C file 
> into 1 shared
> object, doesn't it? It's not using most of MakeMaker's functionality.

This is the same subset of MakeMaker's functionality that is 
currently supported by Module::Build, too.

The main reason Module::Build hasn't gone further is that I 
don't yet understand the other scenarios that need to be 
supported.  I can see basically what MakeMaker is capable of 
from its documentation, but I don't yet know how it's used in 
practice in CPAN modules.

> Invoking the compiler in a more direct fashion would also avoid make.
> So it would allow much better error diagnostics.

Yeah, this is the approach Module::Build takes.  There's a 
compile_c() method and a link_c() method, which invoke C 
compilers by calling the do_system() method, which just calls 
CORE::system().  The compilation commands are just pieced 
together from pieces of the %Config hash.  I've been surprised 
at how successful that's been, actually.


Then, on Saturday, August 17, 2002, at 04:29 PM, Brian Ingerson wrote:
> I've removed the dependency of Parse::RecDescent thanks to a 
> great patch from
> Mitchell Charity that does the job with regexps. It'd be a 
> shame to add a new
> dependency.

If you don't want another dependency for Inline itself, you 
could certainly copy the compile_c() and link_c() methods from 
Module::Build.  They're fairly simple.  It would be nice to 
share some code, though, for the reasons Nick outlined.

> It would be cool to distribute M::B within Inline and also within
> the modules that require Inline.

This doesn't really help, I think.  It's not that people are too 
lazy to download the prerequisites, it's that they don't want 
the conceptual complexity of a larger (and seemingly 
unnecessary - see below) web of installed prerequisites on their 
system.

> The ultimate goal being that you want
> authors to be able to use Inline instead of XS without it imposing any
> dependencies on their work. I think this is one thing that 
> keeps people from
> writing serious modules with Inline.

I think that if Inline were truly a build-time-only dependency 
for modules (without even the small run-time stub you've been 
thinking of), that would help quite a bit.  I don't think people 
care so much about startup performance as they do keeping track 
of prerequisites.  Module::Build introduces the concept of 
build_requires vs. requires, maybe this would help.

If Inline weren't a run-time dependency, then, you could feel 
free to have Inline depend on whatever you wanted.  You wouldn't 
be saddling people's modules with more dependencies.

  -Ken

Reply via email to