=head1 This Week on perl5-porters - 6-12 April 2008 David Nicol: I have no idea what C is by the way; Google suggests it is a furniture store in Japan. Jarkko Hietaniemi: It's the strong, silent type of NaN. As opposed to the hysteric, screaming type of NaN (aka NaNS). -- David N. and Jarkko H., arcing tangents. =head1 Topics of Interest =head2 Make built-in list functions continuous David Nicol continued the "unroll map into pushy for loops" thread with a decent stab at an implementation using his C macro processing module. Aristotle Pagaltzis stressed the usefulness of having a map block producing n elements for each input element, where n could be a fixed number greater than 1, an arbitrary number greater than 1, sometimes 0, and anything in between. Some map blocks that use such behaviours lead to remarkably concise code that would be very cumbersome to write in any other way. http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00114.html =head2 Perl @ 33536 The perl 5.8.9-tobe thread continued to attract traffic this week. Jan Dubois reported back on the problems that the Vista platform was causing. It boils down to the tradeoff between keeping the binary interface stable while preventing people from outside the core build from reaching directly into the guts. All you have to do is define C and you can do whatever you want. Jan suggested that one way to do this would be to reorder the struct members, on purpose, on each maintenance release. That would quickly smoke out poorly-behaved modules and make them play by the rules. Not so unsurprisingly, this met with a certain amount of favour with the porters; at least, it wasn't dismissed out of hand. keep your mits off http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00143.html =head2 Saving a pointer in every COP? Nicholas Clark had a brainwave, realising that it should be feasible to shave off a whole pointer from each COP struct. Sixteen hours later, he delivered the patch to do just that. He did leave us something to do, though: prove or disprove that it made things go faster. something to do^W^Wdone http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00123.html Jerry D. Hedden managed to spot a minor compiler warning, which Nicholas promptly fixed. but no benchmarks http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00133.html =head2 using C<-Wall> in modules generate tons of warnings in core files Gábor Szabó set about trying to build C with the 5.10 Strawberry Perl distribution, and ran into grief over poorly nested comments (as in C). Andy Dougherty explained that this problem also arose with fussy compilers on Unix platforms, and there the issue was addressed by substituting C (with a space) for the inner opening comment marker. It was therefore a simple matter of inspection to figure out how F was generated by Strawberry. Jan Dubois took a look at F and found a substitution operator that looked like it was to blame. Andy showed how the C process used a C one-liner to work around the damage. http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00206.html =head1 TODO of the week Last week's TODO caught James Bence's attention, so much so that he outlined an approach he wanted to try and wondered if it would be acceptable. Rafael Garcia-Suarez explained why it wouldn't (as it would add to the burden of the pumpking). The primary design consideration is that it must be able to go about its business in a completely autonomous manner. That is, no sneaky command-line switches to spoon-feed it what needs to be done. figure out what it should do, then make it do it http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00238.html (I should also mention that this whole TODO idea of the week is not my own, bla^Wcredit must be given to Nicholas Clark). =head2 Compressed man pages Be able to install them. This would probably need a configure test to see how the system does compressed man pages (same directory/different directory? Same filename/different filename), as well as tweaking the installman script to compress as necessary. (I suspect even getting this working for two common platforms, such as Linux, *BSD or Solaris, would be a fine start. Other local experts on other platforms could piggy-back the work done to hit other targets). =head1 Patches of Interest =head2 Double magic with '\&$x' Rafael Garcia-Suarez applied Vincent Pit's patch. Vincent had also questioned the wisdom of allowing magic to be triggered merely by the gathering of information to produce an error message. Rafael commented that while in essence Vincent was correct, the unresolved problem about what to do about code in the wild that may depend of the precise text of an error message meant that it was probably wiser just to let sleeping dogs lie. so won't fix http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00220.html =head2 Make C and C static Nicholas Clark wrapped up the discussion explaining why these symbols that had leaked out accidentally in 5.10 had to stay: some linkers might blow up in their subsequent disappearance, even if the client code makes no reference to them. lazy lazy dynamic loading http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00112.html =head2 C correctly checks "ISA" Gerard Goossen, going through the code with a fine-toothed comb for his ongoing Kurila project, spotted a mistake due to incorrect aliasing of a C array. It could never have worked, but then again no-one ever had problems with it. In any event, Rafael applied the change since the test suite appears to remain satisfied. and it does the right thing http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00184.html =head2 changes to F and call for removal of quicksort John P. Lindeman offered a patch to clean some of the more glaring documentation errors regarding sort in C, and this was applied by Rafael. He also suggested that the sort subsystem based on the Quicksort algorithm be removed, since these days the default mergesort has much better worst-case characteristics for any pathological set of data you care to throw at it. Tom Horsley, who wrote the original implementation of quicksort for perl, made no impassioned claim to keep it in, admitting that in fact he thought the code had been axed years ago. out of sorts http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00185.html =head1 New and old bugs from RT =head2 regexp: unicode char causes a 'double free corruption' (#48156) Niko Tyni identified the changes which had fixed this bug, but noted that it is still present in the version of perl shipped with Debian stable (no sniggering up in the back row please). Don Armstrong, in the Debian bug report, believes that it may allow arbitrary code to be executed, which if true, would be very serious indeed. http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00146.html =head2 C<[[:print:]]> I C<\p{Print}> (#49302) David Landgren offered a couple of tweaks to Robin Barker's prose. Juerd Waalboer also identified a mistake. or at least, a counter-example http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00142.html =head2 C and C untaint data in 5.10.0 (#52552) Christopher E. Stith was surprised by the fact that in 5.10, the pack formats 'a' and 'A' strip tainting off untrusted input, whereas 5.8 leaves it tainted. Andreas König identified change #24010 as the cause for the change in behaviour. Alas, that particular change touched over a dozen files (although 4 were POD files, and, surprise F was touched)... the monks have a go http://www.perlmonks.org/?node_id=678463 I blame Unicode http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00148.html =head2 Unwanted warning from XS BOOT (#52572) reading the fine documentation leads to resolution http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00150.html =head2 C> (#52610) Chris Heath reported a variation on the bizarre copy theme, seen regularly with C. Nicholas Clark thanked him for the report, which contained a snippet of code that he was able to shrink down even farther. This led him to conclude that the heart of the matter is an unwanted interaction between Perl's internal stack and lexical pads, but had no insight as to what exactly was happening. http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00178.html =head2 Perl 5.10 regression bug in match and substitution evaluation in list context (#52658) Wolf-Dietrich Möller spotted a regression between 5.8 and 5.10 concerning the use of an C modifier on a C operator. Nicholas Clark was dismayed to discover that the bug is also in 5.8.9-tobe, definitely not good. Andreas König fired up his binary search bug finder, and discovered that not one, but two separate changes (#26332 and #26334) was at fault. The first patch dealt with accelerating C expressions by freeing intermediate temporaries, and the second dealt with C that die in the right hand side result in memory leaks. we got oursel's a show-stopper http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00196.html =head2 regexp failure: C<(?=)> turns into OPFAIL (#52672) L. Mai reported another failure due to the 5.10 regexp engine overhaul: the "match always" C<(?=)> idiom flipped over to mean "match never". Fortunately Ćvar Arnfjörđ Bjarmason came to the rescue with a short, sharp patch to engine to restore the previous behaviour. we do test for this now, right? http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00201.html =head2 Consistent localization between C and CfhE)> (#52702) Ed Avis wanted to have warnings issued when C<$_> was modified, due to differences in how C and C behave. Rafael Garcia-Suarez thought that using C in 5.10 was a much better idea. http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00210.html =head2 crash when localizing a symtab entry (#52740) Niko Tyni reported a failure smoking mod_perl2 2.0.4rc1 on 5.10, due to the new implementation of constant subroutines, going so far as to identify change #29544 as being the (ir)responsible party. No takers. http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00216.html =head2 Crash perl with C (#52786) Todd Olson that one can make perl crash and burn on a variety of platforms by giving it nothing more than a bogus I/O encoding name. http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00233.html =head2 Perl5 Bug Summary 1811 (+8 -4) http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00130.html http://rt.perl.org/rt3/NoAuth/perl5/Overview.html =head1 New Core Modules =over 4 =item Math::BigRat version 0.22 Tels synched blead with CPAN, applied by Rafael. http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00141.html =back =head1 In Brief Nicholas Clark committed B from C> after having tested it out on four different machines. Alas, it still managed to break the build for Jerry D. Hedden. Fortunately, Nicholas was able to commit the subsequent change #33659 that fixed up the breakage. http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00136.html Sérgio Durigan Júnior wondered about the B flag> that is planned for 5.12, which would allow a 32-bit perl to be built on a 64-bit platform. H.Merijn Brand said that for the moment it was a non-starter. imagine -Duse64bitall in reverse http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00169.html The B thread> kicked up far more than you would ever want to know about B. http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00175.html Kurt Starsinic fixed up a long-standing B typo>. http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00209.html Alberto Simőes took a shot at B and C>. take two http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00221.html How not to file a bug. (was: B doesn't fill C information in sockets>). http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00226.html Tels wanted to know if a delivery date for B had been fixed, as this would help him figure out what to do with warnings occurring in C. Yitzchak Scott-Thoennes suggested that it should warn at all during normal usage. http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00230.html Vincent Pit had some B tweaks> applied. memset, strtod and friends http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00235.html He also made emacs users the world over insanely jealous with a cool patch to B generate a Vim XS syntax file>. He admitted it was slightly frivolous and probably not worth taking, but Vim lovers should be happy to know it's out there. you also need to love XS http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00240.html Reini Urban offered an experimental work-in-progress patch for the B. oh the pain http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00243.html =head2 Last week's summary 30 March-5 April 2008 http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-04/msg00228.html =head2 About this summary This summary was written by David Landgren. I plan to be offline next week; there will be no summary for 13-19 April. The summary will return the following week, with a bumper fortnight issue. Weekly summaries are published on F and posted on a mailing list, (subscription: F). The archive is at F. 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.