This Week on perl5-porters (23-29 February 2004)

This Week on perl5-porters (23-29 February 2004)

This week's summary, a bit late, will tell about the approaching development release, the new bugs discovered and fixed, and the side-effects of the new warnings.

CPAN modules and bleadperl

Hoping to release perl 5.9.1 soon, Rafael asked to test CPAN modules against it. Bugs were found (and fixed) in PAR and in XML::Twig; he detected as well some problems with XML::Parser::PerlSAX, a module which apparently is no longer actively maintained, but which is still widely used.

Rafael noted also that the regression tests produce lots of warnings Deprecated use of my() in conditional, referring to the dubious and now deprecated construct

    my $foo = $bar if $quux;

So the warning is maybe too noisy (although it indicates a bug waiting to happen.) Rafael and Dave Mitchell proposed some alternatives, but the current form of the warning is likely to go into 5.9.1, even if it's made lighter afterwards.

Marcus Holland-Moritz also found that Convert::Binary::C was producing a most strange error with bleadperl, which was tracked down and fixed by Dave Mitchell, the cause being rooted in the internals of the new bison parser for perl.

Storable and ithreads

Beau E. Cox is courageously trying to get Storable work thread-safely, including under older perls. The further discussion is about ways of using the PERL_NO_GET_CONTEXT is XS code, and ways of advertising it in the perlxstut manpage.

Another proof that $[ is evil

Ton Hospel reported that the one-liner

    $[ = 1 while $x;

makes perl segfault. (bug #27024). This is due to the pragmatic (compile-time) nature of assignments to $[, and was fixed by Rafael.

Bugs in multiline regexps

Zefram reported that, contrary to the documentation, /^/m does not match after a newline that is at the end of the string (bug #27053), but it's not clear which one, of the documentation or the code, should be modified.

He also reported that qr/$/ misbehaves in /.../m regexps; Hugo van der Sanden explained that this was due to the global variable $* interfering with the /m flag. $* (which was deprecated) has been removed from bleadperl, but its internal counterpart should be suppressed as well. (Bug #27028.)

Other Bugs

John M. Dlugosz produces the error Attempt to free unreferenced scalar with the charnames module; Dave reduced it to a few lines in two files (bug #27040).

Ton Hospel finds a new way to leak memory, combining redo and continue (bug #27206).

Ton also found a bug regarding the interpolation of array subscripts involving $& in the right-hand side of substitutions. Tricky. (bug #26986).

In Brief

Tassilo von Parseval provided a patch to optimise map() used in scalar context. (It was already optimised in void context.)

Chia-liang Kao provided a patch to Benchmark to make cmpthese() and timestr() use time statistics for children instead of parent when the selected benchmark style is 'nop'.

Dave Mitchell fixed the recursive goto &f leak noticed last week.

Nicholas Clark released a snapshot of maintperl. He plans a code freeze for 5.8.4 at the end of March.

And now for a bit of advertisement

David Wheeler forwarded a message from the PostgreSQL community, saying that there's a fair bit of interest there in improving pl/Perl -- that is, the ability to write native database functions in Perl. Help welcomed.

About this summary

This summary was written by Rafael Garcia-Suarez. Weekly summaries are published on and posted on a mailing list, which subscription address is Corrections and comments are welcome.