Ken Williams wrote:
I don't really get that - what does "reference implementation" give us? Does it just mean that if there's a bug in it, we can't fix it? Or that there's not a complete set of documentation describing its behavior?

I'm using "reference implementation" in the same sense that Sun's Java is the "reference implementation", as in it defined the public interface and the "default" implementation. The file vutil/vutil.c is *exactly* the same code as exists in the bleadperl/v5.10.0 util.c; indeed, when I fix something in vutil.c, I literally chop out the associated block in bleadperl/util.c and replace it with my code before generating the diff. This is not as easy as it sounds and some intervention was required to get ppport.h to support the same construct over all Perl releases from 5.005_04 to the latest 5.8.x.

The XS code in vutil/vxs.xs is more like the moral equivalent of the parallel code in universal.c (I can't cut/paste because h2xs does not produce comparable code with what exists in the core). Thankfully, the Perl-level interface (i.e. what the XS code implements) has changed very little over the last two years.

Now, for the purpose of providing version.pm everywhere, I ported the XS/C code to pure Perl, and provided both in the same package with what I thought was the best tool to do so in a painless way: Module::Build. Unfortunately, when M::B became dependent on version.pm, all hell broke loose.

I would prefer that the XS/C code be installed, by default, everywhere possible. It's always going to be faster and it has been around longer, so it is better tested. The pure Perl variant is a port, so it is inherently "second generation" code. There has already been an instance where a distro stupidly forced the pure Perl release, even though the XS was able to be compiled, in the misguided belief that the pure Perl release would be more portable. There are things that I do in the pure Perl release that are much less efficient than the XS/C release.

John

--
John Peacock
Director of Information Research and Technology
Rowman & Littlefield Publishing Group
4501 Forbes Boulevard
Suite H
Lanham, MD  20706
301-459-3366 x.5010
fax 301-429-5748

Reply via email to