On 04/25/2015 05:57 PM, bulk88 wrote:
Since Test::Stream::Context's core design uses weaken() everywhere, that
means new Test::Simple always requires XS building (for Scalar::Util),
which means it will never run on miniperl, and hence, new Test::Simple
will never be in Perl core, is my understanding correct?
I am asking this since if new Test::Simple is not PP clean and never
will be, there are couple places I would like to throw XS at (the
accessors in Test::Stream::HashBase::Meta in particular).
The use of functions defined in Scalar-List-Util and implemented via XS
inside the definitions of functions in other libraries which are
distributed with Perl 5 core happens not to be frequent but is not,
AFAIK, forbidden.
From the top of a checkout of the core distro (Linux syntax for xargs):
find cpan/ -type f -name '*.xs' | \
sort | \
cut -d '/' -f1,2 | \
xargs -I % find % -type f -name '*.pm' | \
xargs grep -n -E '(use|require)\s+(Scalar|List)::Util' | \
grep -v Scalar-List-Utils
This shows that Compress-Raw-Bzip2's test suite uses
Scalar::Util::dualvar. Scalar::Uti::dualvar is also used inside Socket
to formulate an error message in one situation.
Scalar-List-Utils's Changes file states that 'weaken()' was added at
some point before version 1.14. Scalar-List-Utils v1.14 was first
distributed with a *production* version of Perl 5 in v5.8.5. Hence,
there might be a limit to the backwards compatibility of a new
Test-Simple distribution.
Thank you very much.
Jim Keenan