This Week on perl5-porters - 7-13 June 2008 This morning, clkao pinged me and mentioned that he couldn't get perlbug to set the From: header when sending a bug report. I promised him I'd take a look.
I opened up perlbug determined to add one line and send a patch. Somehow, I never got around to adding the line CL asked for... -- Jesse Vincent, getting a finger caught in the machine. Topics of Interest RT bugtrackers, note the changes in 5.10 H.Merijn Brand wished to draw attention to the main changes in the more complex structures derived from an SV, so that people who were going through tickets on RT would remember to keep an eye open for the types of problems this might cause on badly-written XS code. Nicholas Clark and Reini Urban pointed out a few more gotchas. do the right thing http://xrl.us/et7qo "autodie" 1.10 BETA released Paul Fenwick released a development version of "autodie", complete with Fatal, the unauthorised edition. testers welcome, needed http://xrl.us/et7qu "overload" segfaulting Ovid reported that a certain use of "overload" led to a segmentation fault. Various people reported that various platforms did more or less the same thing. Rick Delaney solved the matter with with some minor changes to the code, the test suite and the documentation. Rafael checked it in. he made it look easy, too http://xrl.us/et7q2 Enable "getgrgid" on VMS John E. Malmberg implemented the "getgrgid" call on VMS. Craig Berry suggested some minor housekeeping tweaks and committed it to blead. http://xrl.us/et7q8 "Cwd::abs_path" behaviour with non-existent paths John E. Malmberg wanted to get "realpath" working on VMS, and wondered what the cross-platform concensus was for dealing with path specifications that don't exist. Once he had that information, he would be able to decide what would be best for VMS. Early feedback showed that different platforms handled John's examples quite differently. Thus he felt free to go ahead and do what made the most sense on VMS. i did it my way http://xrl.us/et7re TODO of the week A task that need a little sysadmin-type knowledge Profile Perl - am I hot or not? The Perl source code is stable enough that it makes sense to profile it, identify and optimise the hotspots. It would be good to measure the performance of the Perl interpreter using free tools such as cachegrind, gprof, and dtrace, and work to reduce the bottlenecks they reveal. As part of this, the idea of pp_hot.c is that it contains the *hot* ops, the ops that are most commonly used. The idea is that by grouping them, their object code will be adjacent in the executable, so they have a greater chance of already being in the CPU cache (or swapped in) due to being near another op already in use. Except that it's not clear if these really are the most commonly used ops. So as part of exercising your skills with coverage and profiling tools you might want to determine what ops *really* are the most commonly used. And in turn suggest evictions and promotions to achieve a better pp_hot.c. One piece of Perl code that might make a good testbed is installman. Patches of Interest "perlbug" prose patch (and some evals, too) It all started out when clkao wondered why it wasn't possible to set the From: header on a perlbug report. Jesse Vincent thought "ho ho ho, a five-minute, one-line patch sent to perl5-porters coming up". One Saturday afternoon later, Jesse sent in a 740 line patch that did just about everything except just that, discovering that "perlbug" was in desperate need for some tender loving care. Ronald J. Kimball greeted the patch enthusiastically and went through it with a fine-toothed comb adjusting various changes to Jesse's prose. Jesse was still a bit doubtful as to how to write a patch for a PL file in the utils/ directory (since said files are used to generate the final program that gets installed). Craig A. Berry hinted darkly at how things were done in concrete bunkers at secret locations. now i have to kill you http://xrl.us/et7rk Jesse then set to work cleaning up the twisty maze of user prompt routines, all alike. Rafael tried to apply the patch but failed, since the target of Jesse's intentions was the post-generated file. Jesse pointed Rafaël to the previous patch that was to applied against perlbug.PL. perlbug prompting http://xrl.us/et7rp Jesse finished for the week by overhauling the code that does the mailing of the bug report. Reini Urban suggested using "readline", to get rid of those pesky ^H characters that sometimes appear in actual bug reports. Jesse was hesitant to entertain the concept of optional dependencies within "perlbug", but admitted that at least things were getting to the stage where such a change would not be the major surgery that it would have been before he started cleaning things in the first place. maybe next week http://xrl.us/et7rv "perlsyn": equivalent code for HASH ~~ ARRAY brian d foy asked for clarifications on smart matching behaviour just after 5.10.0 was released. He returned this week with a tweak to the documentation. http://xrl.us/et7r3 Readable assertion names Reini Urban went on a spring clean to strip out the metasyntactic variable names used in assertion errors and replaced them with names that conveyed useful information. Minor discussion followed as to whether the macro names that Reini used would mask or shadow real variable names, but Reini thought everything was safe. http://xrl.us/et7r9 He then carried on with the rest of the files and Rafaël applied all of it. http://xrl.us/et7sf testing $/ with in memory files Bram had worked out a patch some time ago that addressed this problem, but had used $ENV{_} as a sneaky shortcut for the current process. After it was pointed out that this was highly non-portable he had switched to a more robust technique. Rafaël applied the latter version, but in the meantime Bram had noticed that the patch ran into difficulties with "-Uuseperlio". But that was ok, because Bram had a patch for that as well. So Rafaël applied it too. http://xrl.us/et7sm More COW lvalues Reini Urban used "-DPERL_DEBUG_COW" and found a couple of macros that are used as lvalues. He was able to solve one issue easily, since an assigning macro existed, but he was stuck as to how to rewrite "SvIVX(sv_dat)++" in a safe manner. Nicholas Clark had a look, and noticed that the end result boiled down to "a = a + 1", and gcc's optimiser (at least) reduced that to the same assembly instructions as "a++" and concluded that it was safe to use an apparently long-hand macro assignment, since it would wind up as a simple post increment. http://xrl.us/et7sq .gitignore file Paul Fenwick develops with git, and thus is endlessly annoyed by git moaning about files it encounters but doesn't know what to do about them. So he wrote a crude .gitignore file to teach git to not pay attention to them. Rafaël had admitted planning doing such a thing, but was waiting until 5.8.9 was out the door. At the same time, he thought there existed a certain opportunity for factoring Paul's list through the judicious use of wildcards. Sam Vilain took Paul's list and laid some serious ignore-fu upon it. http://xrl.us/et7sw New and old bugs from RT attributes don't like ".=" (#3605) Bram made the distinction between "my $var : locked .= "test"" (a syntax error) and "my $var .= "test"" (legal, and does the Right Thing) and wondered whether the inconsistency should remain. http://xrl.us/et7s4 Subroutine doesn't create elements (#8910) Renée Bäcker had a look at one of Abigail's old bugs and added one more piece to the puzzle, but perhaps not enough to say it was resolved. http://xrl.us/et7ta "sub foo(@$) {}" should generate an error (#36673) Rafael Garcia-Suarez took Renée's patches for this bug report, reworked them slightly, and applied them to blead. http://xrl.us/et7te "bleadperl -Dm -e1" segfaults on win32 (#39806) Bram asked other people to check this old bug issued by Yves Orton, presumably because he could no longer reproduce the crash. Both Steve Hay an Niko Tyni reported that the test program ran without flaw. http://xrl.us/et7tk SIGTERM not terminating child process (#49073) Jerry D. Hedden reworked a test in "Time::HiRes" so that it would play nicely on Cygwin. Patch not applied (Time::HiRes is now maintained by Zefram). http://xrl.us/et7tr "length($@)">0 for empty $@ if utf8 is in use (#51370) Bram brewed up a fix for this bug, that Rafaël applied, albeit with the uppercasing of a utility macro. http://xrl.us/et7tx Trying to build perl5.8.3 under Maemo environment (#53328) Bram suggested a bette diagnostic for "Cwd" that would report where the program had looked for the "pwd" external binary, along with a short summary of what steps could be taken to fix the problem. http://xrl.us/et7t5 Perl 5.10 segmentation fault using "Net::SSH2::Channel" (#54908) Sebastien Rodriguez followed Ævar Arnfjörð Bjarmason's advice, which seemed to be essentially a diagnosis of the problem, and reported that things now worked. Hence his wish to contact the module author in order to push the change upstream. http://xrl.us/et7t9 'once' warnings from xs modules in perl 5.10.0 (#55550) This is the bug that Chia-liang Kao opened for the problem of XS modules producing "only used once" warnings in 5.10 and beyond. http://xrl.us/et7uf Recursive multithreading causes massive amounts of context switches (#55560) Rafaël Garcia-Suarez explained, until a Copy On Write scheme is implemented in Perl, large numbers of thread creations will remain expensive. go iterative, young man http://xrl.us/et7um "IPC::Open3" does not auto-create an error handle (#55570) "Fiji" wondered why a simple call to "IPC::Open3" never has the child's STDERR being connected to the lexical variable that is supposed to hold it. Looking at the code, it was clear why it didn't work, but the question was should the documentation be clearer, or should the code be changed. Bram thought that is was doubtful as to whether the behaviour could be changed, since there may be people that have written code that depends on how things work currently. Ben Morrow agreed that refining the POD was the only course of action, although Rafaël suggested that an API shift could be handled in a dual-life version. http://xrl.us/et7us Renée Bäcker supplied a patch to change the behaviour, and it was up to Eric Brine to explain that the crux of the matter was that the behaviour should not be changed. Instead, Eric showed how to solve the problem with a teeny amount of client make-work code. the correct use of gensym() http://xrl.us/et7uy Regexp optimization affected by threads (#55600) John Gardiner Myers showed that when the regular expression engine is passed a pattern containing character classes (e.g. "[a-e]+"), the performance becomes abysmal if the call is issued from within a thread. John traced the problem to the code path not ever hitting the "find_byclass" routine which causes it to rely much more heavily on the backtracking mechanism. http://xrl.us/et7u6 "free from wrong pool" on Fedora 6 (#55658) Jason Van Dias sent in a reasonably concise test program that showed how to generate a panic in perl 5.10.0. Nicholas Clark pointed him to the latest source of the 5.10 track (which will become 5.10.1). Jason took that for a spin, and the only result was that the coredump message changed slightly. He had to tweak the Perl source slightly to get it to work at all. He noted that everything was fine with 5.8.4 and 5.8.0 on other platforms. http://xrl.us/et7va "eval"ing a certain format string segfaults perl (#55668) Arthur Kantor showed how a poorly formatted format string kills perl. Alexandr Ciornii replied that the problem was fixed in 5.10. http://xrl.us/et7vg Synopsis documents (deprecated, fragile) indirect object syntax (#55708) Michael R. Wolf filed a bug report to change constructs like "new Dumpvalue" to "Dumpvalue->new". Ilya Zakharevich pointed out that both constructs are flawed, that the more robust "Dumpvalue::->new()" construct isn't understood by older perls, leaving only the slightly horrendous ""Dumpvalue"->new()". cpan RT #36694 http://xrl.us/et7vn Perl5 Bug Summary 265 new + 1276 open = 1541 (+5 -21) http://xrl.us/et7vt http://rt.perl.org/rt3/NoAuth/perl5/Overview.html New Core Modules "Pod::Perldoc" version 3.14_07 Adriano Ferreira had Rafaël synch blead with the latest goodies from CPAN. http://xrl.us/et7vx "threads" 1.71 Jerry D. Hedden needed a couple of iterations to get the latest POD and test tweaks sorted out, but it was applied in the end. http://xrl.us/et7v5 "threads::shared" 1.22 This module also received similar treatment. http://xrl.us/et7v9 "Thread::Semaphore" 2.09 ditto http://xrl.us/et7wb "Thread::Queue" 2.11 ditto http://xrl.us/et7wh "B::Debug" 1.06 Reini Urban asked if it would be possible to synch the CPAN version of "B::Debug" with blead, and Rafaël was happy to oblige. So now "B::Debug" is officially dual-lifed. http://xrl.us/et7wm In Brief Renée Bäcker announced that bugs #3176, #3495, #3534, #5246 and #6783 were either fixed or non-bugs. look them up on RT The problem with porting perl on Armel (bug #55038) inched one step forwards this week. http://xrl.us/et7ws I suspect that Panic in regex processing (unknown regstclass 0) (bug #55466) does not concern the porters directly. http://xrl.us/et7ww Craig A. Berry and Aaron Crane continued to delve into the subtleties of "File::Copy" and permission bits. generally impossible http://xrl.us/et7wy Steve Hay added some code to remove temporary files left over by test in "IO-Compress-Zlib", which Nicholas Clark applied. now to inform Paul Marquess http://xrl.us/et7w6 Steve also had some code added to fix run/switches test on Win32. blindly applied http://xrl.us/et7xa David Nicol thought about what it would take to write a state machine for parsing Perl; Ben Morrow pointed him at PPI. unreinventable wheels http://xrl.us/et7xg John E. Malmberg reported that VMS passes these t/io/open.t tests now so there is no longer any need to skip them. Unapplied, apparently. http://xrl.us/et7xn Andreas König wondered if he was the only person with a failing syslog test in current blead; Bram reported that he was in good company. http://xrl.us/et7xt Mattia Barbon encountered problems using wxPerl playing around with "setenv" and "putenv", and traced it down to an interaction between "DEBUGGING" and "PL_use_safe_putenv". A quick edit to wxPerl solved the immediate problem, but Mattia wanted to know if there was a better underlying solution waiting to be found. http://xrl.us/et7xz John Peacock had a self-referential "version.pm" question, wondering what was the best way of delivering a POD-only improvement release. Eric Wilhelm pointed out a possible gotcha. debian does it differently http://xrl.us/et7x7 Last week's summary This Week on perl5-porters - 1-6 June 2008 http://xrl.us/et7yb About this summary This summary is dedicated to the recent addition to Rafaël's family: http://flickr.com/photos/rgarciasuarez74/tags/fran%C3%A7ois/ This summary was written by David Landgren. 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, please consider contributing to the Perl Foundation or attending a YAPC to help support the development of Perl. -- stubborn tiny lights vs. clustering darkness forever ok?