This Week on perl5-porters (5-11 September 2005) The Return of the perl5-porters Summaries
Sébastien Aperghis-Tramoni, Adriano Ferreira and David Landgren have stepped up to the plate to bring you the weekly p5p summaries. We make no promises as to how long we can keep this up, but we'll give it a go for as long as we can. There has been a lot of action happening in Perl 5 land, and we hope that these messages will help people keep abreast of the latest developments. Onto last week's traffic: sub _ { ... } and -X _ Peter Dintelmann pondered over the meaning of "-X _" when "sub _ { ... }" defined, as it can lead to some surprising behaviour. Mark-Jason Dominus pointed to http://hop.perl.plover.com/errata/byid.cgi/131 and http://hop.perl.plover.com/~alias/list.cgi?2:mss:264 for more information on the matter. http://xrl.us/hkyk VMS Issues John E. Malmberg asked for advice on how to deal with File::Copy on VMS. The library test fails because the copied file ends up with a timestamp of 'now', which is consistent with the way things are done in the DCL command shell. Part of the problem was that the test suite failure message was misleading. John fixed things up as best he could. http://xrl.us/hkym He also landed a patch for ExtUtils::CBuilder. After a bit of work, he and Ken Williams got it working correctly. http://xrl.us/hkyn In other VMS news, the current bleadperl is testing fairly well. The main show-stopper being problems with Compress::Zlib. http://xrl.us/hkyo Eliminating arenaroots Internally, perl uses arenas of memory to allocate fixed-length objects quickly and efficiently. The current plan is the shrink the number of roots down to one. Jim Cromie supplied a patch. The test smokes produced a number of odd results that had people scratching their heads, until it was realised that the problem was a single statement "if" that lost its braces. http://xrl.us/hkyp Dying in a grep Chris Heath noted the following: $ perl -e 'for ("foo") { grep(die, "bar") }' Died at -e line 1. Attempt to free unreferenced scalar: SV 0x96c61dc, Perl interpreter: 0x96ae008. Normally, the third line shouldn't appear. And "map" will do the same thing. Salvador Fandiño noted that this had already been recorded as bug #24254. http://xrl.us/hkyq eg should be e.g. in the documentation David Landgren was peeved that *exempli gratia* is often abbreviated to "eg" in the documentation, rather than "e.g.". Mark-Jason Dominus wondered why it was not abbreviated to "for example". Michael Schwern brought the discussion to a close by performing a simple cost/benefit analysis. http://xrl.us/hkyr Math::Complex atan2 bug Steffen Müller observed the following [...] in the complex plane, we get: perl -MMath::Complex -e "print atan2(0,i)" i/0: Division by zero. Died at c:/perl/perl58/lib/Math/Complex.pm line 1284. This is not correct. Obviously, 0/i is the same as 0/1 which is 0. Thus atan2(0,i) == atan2(0,1) == atan(0) == 0 Jarkko Hietaniemi said that he'd cook up a patch, but that he had other outstanding things to do with Math::Complex and Math::Trig. http://xrl.us/hkys undefing *foo{CODE} Ben Tilly reported that undef'ing the CODE slot of a typeglob doesn't quite work well enough to be useful, and supplied a short snippet of code showing the problem. http://xrl.us/hkyt Dave Mitchell shed some light on what was going on under the covers "the thing continues to exist, but has no useful 'value'", and Rafael Garcia-Suarez noted that delete &mysub is on the TODO list, but getting it right in all cases is extremely tricky. tr// on EBCDIC platforms Sadahiro Tomoyuki found problems with transliterating Unicode characters. I can only offer my deepest sympathy. http://xrl.us/hkyu New core module releases Graham Barr released IO version 1.22. There was concern about what the impact would be on the 5.6 series. http://search.cpan.org/dist/IO/ Dan Kogai released Encode 2.12... http://search.cpan.org/dist/Encode/ ... and Ruslan U. Zakirov spotted a problem with an example in the documentation. The return value of SvUTF8() In December 2004, Ton Hospel raised bug #32884. The internal perl API defines SvUTF8() as taking a pointer to an SV, and returning a boolean value indicating whether the SV contains utf-8 encoded data. Compilers, casting between chars and ints, can arrive at the situation whereby... if (SvUTF8(sv)) { ... } ... and ... bool utf8 = SvUTF8(sv); if (utf8) { ... } ... don't behave in the same way. Steve Peters revived interest in the bug, by asking whether returning a U32 value instead of a bool would fix matters. http://xrl.us/hmtr In Brief Rajarshi Das found a problem with Encode on EBCDIC. Dan Kogai noted that the code is not well tested on EBCDIC. There was another thread on the matter: http://xrl.us/hkyv Robert Spier released the latest version of the Perl5 bug summary http://rt.perl.org/rt3/NoAuth/perl5/Overview.html Summary of the summary: there are 1500 open tickets. "brucer" filed a bug report for "my $var if 0". Michael Schwern demonstrated that this now produces a warning in bleadperl. $ bleadperl -wle 'my $v if 0;' Deprecated use of my() in false conditional at -e line 1. Ikegami reported bug #37076, a snippet involving threads and 'require IO'. Using 'use IO' makes the bug go away. Nicholas Clark suggested that this is caused by threads scribbling over memory that doesn't belong to them. "sgromoll" reported #37133, a crash related to threads and lock(). Nicholas thought this was could be a deadlock in the threads implementation. Michael Schwern noted that #7615 "if (local $a = 1){ ... }" is still a problem: $ bleadperl -wle '$a = 10; if( local $a = 1 ) {} print $a' Found = in conditional, should be == at -e line 1. 1 $ bleadperl -wle '$a = 10; if( my $a = 1 ) {} print $a' Found = in conditional, should be == at -e line 1. 10 Michael Schwern also followed up on the test suite of PathTools 3.10, which was released some time ago. http://xrl.us/hkyw In bug #36075, Nicholas Clark wants to get "malloc_size" and "malloc_good_size" into "Configure", because this would help perl on Darwin. Steve Peters and H.Merijn Brand discussed various schemes for doing this Garry reported a memory leak with threads in #37134. Dave Mitchell managed to come up with some remarkably concise code that demonstrates the bug: use threads; sub ThreadRoutine {} while (1) { $thread = threads->new(\&ThreadRoutine); $thread->join; } Brendan O'Dea supplied a few tweaks for "a2p", thereby closing a couple of Debian bugs, and wondered if anyone still uses it ("a2p", that is). About this summary This summary was written by David Landgren. Information concerning bugs referenced in this summary (as #nnnnn) may be viewed at http://rt.perl.org/rt3/Ticket/Display.html?id=nnnnn Weekly summaries are published on http://use.perl.org/ and posted on a mailing list, (subscription: [EMAIL PROTECTED]). The archive is at http://dev.perl.org/perl5/list-summaries/. Corrections and comments are welcome. If you found this summary useful or enjoyable, please consider contributing to the Perl Foundation to help support the development of Perl.