This Fortnight on perl5-porters - 6-19 February 2006 Andy Lester continues his quest to const -- Jim Cromie refines his arena patch -- Module::Build causes a large increase in the use of Internet bandwidth
This summary uses a new, experimental organisation. The previous method was more-or-less chronological, with minor threads moved to the In Brief section. The new method is to First summarise *ad hoc* threads that spark off some sort of discussion. Then come the patches sent in by people (the idea being that no patch be left unnoticed, to offer a checklist for pumpkings), followed by discussions of bugs posted to RT. After that come the usual New Releases, Bug Summary and In Brief sections. Feedback on this new arrangement is welcome. Topics of Interest The Great Unicode Slowdown Back on February 1, Nicholas Clark started to work on the slowdown that occurred between the 5.8.6 and 5.8.7 releases when dealing with Unicode. http://xrl.us/j63g The problem is one of excessive shuffling of data behind the API, and Nicholas proposed an additional function to the API to minimise the amount of copying required. Sadahiro Tomoyuki came up with a better, more pragmatic solution that Nicholas came to like, and then found a couple optimisation possibilities that need to be thought about. He then wrote some code to implement one of the optimisations for "index", but sadly Phil Pennock replied that it only had a negligible effect on his code. Tomoyuki explained why this was so, and offered a couple of work-arounds. Phil penned a long reply, explaining what he was trying to do, basically, to "unobtrusively write Unicode-aware scripts for general deployment, with full diagnostic support, which don't require special setup, do deal with user locales, and will work on any moderately recent version of Perl without going tits-up". Nicholas noted that one of the problems was that "-C" (the semi-repurposed switch for diddling with Unicode) doesn't work on the shebang line (with a "too late" warning la taint), and wondered how difficult it would be to remove the restriction, which is mainly a minor implementation issue. Rafael Garcia-Suarez noted that there might be problems due to the fact that by the time the shebang line is process, "stdin", "stdout" and "stderr" are already open (and "-C" could have an influence on the way they are opened). Nicholas wasn't convinced, mainly because the tokeniser itself remains very primitive in its 8-bit/UTF-8 awareness and handling. Rafael point to bug #34087, where H.Merijn Brand reasoned that the only sensible course was to ban "-C" on the command line, much to Abigail's disappointment at the time. The thread ended with Nicholas. Tomoyuki and Dominic Dunlop discussing encoding pragmas, "Perl_sv_recode_from_utf8" and the old ISO 646 7-bit character sets. I want my cycles back http://xrl.us/j63h At the same time, "ags" filed bug #38595. showing how "use encoding 'cp1250'" cause regular expressions to run much more slowly than without. Slow Unicode regexps http://xrl.us/j63i Cleaner Arenas Jim Cromie continued to put in a lot of work on the arena code. (An arena is a section of memory from which blocks of a fixed size are allocated. Relying on this constraint simplifies the housekeeping significantly and can improve performance). Nicholas picked up a thread from last week asking where Jim was planning to go with the code, noting that a critical C structure ("struct body_details") exposes probably more implementation details than is wise. Jim punted the issue, citing pending patches to be delivered. Both Nicholas and Jim agreed that ideally nothing of the implementation details should leak out through an API (which would then allow internals to be revamped during stable releases), but that allowing a certain amount of inspection, such as for modules within the "Devel::" namespace, is a legitimate wish. Jim did let on that his Grand Scheme concerning "body_details" was to allow for a much simpler "sv_upgrade" (the means by which a lowly scalar "SV" gets converted into a float, a reference or more). For a while Nicholas and Jim wondered whether the microphone was switched on, since no-one else had commented, so Yitzchak Scott-Thoennes said that everyone was awed into silence. Repairing arenasets http://xrl.us/j63j Later on, Jim posted a patch that laid the groundwork for further work, which he hoisted out in order to facilitate peer review, the ability to tweak arenas independently, added two new arenas for datatypes that were previously allocated dynamically as a result of that, and reorganised how one looks up the size of an arena's type. Tels commented on the readability of the code, which Jim explained was a result of the use of macros throughout the code. And it got Jim thinking about whether some of the magic numbers used in the arena code should be upped during configuration time for 64 bit systems. Laying the groundwork http://xrl.us/j63k Reclaim an C<HE_SVSLOT>, save some bytes http://xrl.us/j63m No smoke here http://xrl.us/j63n Jim posted another patch to make arenas adjust their size to fit N bodies exactly, avoiding wastage for a certain number of data types. At this point he called for help, as he wasn't sure how to initialise "PL_arena_sizes[]" nor how to clone it (for threads). Looking for clues http://xrl.us/j63o And after all that effort, Jim generated a consolidated patch to tie all the loose ends up together and bring everything under one roof. Yves Orton tested the patch and gave it a clean bill of health on Win32. Unfortunately, Nicholas found that it came to grief on t/op/threads.t and he pondered how to fix it. After a few false starts he figured out how to proceed, and most of it went in as change #27215. Yay! What is needed now is for people to take blead for a spin with large datasets (something the test suite doesn't really do). The Full Monte http://xrl.us/j63p (Not) building XS modules with MS Visual Studio 2005 Yves "demerphq" Orton described the problems he had encountered with someone trying to build an XS module with MS Visual Studio 2005 and ActiveState build 815 (their most recent 5.8 distribution). For some modules, such as his own "Data::Dumper::Streamer" and the core "Data::Dumper", the source is compiled (albeit with a certain amount of warnings), a DLL is produced, but "Dynaloader" fails to load it. For other modules, such as "Scalar::Util", the linker fails with an error about an "unresolved external symbol "_Perl_seed"". Steve Hay suggested trying to invoke "nmake" as "nmake CCTYPE=MSVC70" which might be sufficient to pull things off, otherwise some work will be required to define a new "CCTYPE" of "MSVC80" in order to bring the code and compiler into agreement. Steve also pointed out that since ActiveState currently build their perl executable with VC6, one really should build XS extensions with VC6 as well. Using VC7 can be fraught with peril, and now with VS 2005 being equivalent to a VC8, the mismatch in C run-time libraries may be getting to the point where things just do not (and cannot) work any more. Jan Dubois analysed the points Yves raised in turn and explained why things were failing and what to do about them. Jan also provided a bit more information about which compiler versions and their attendant run-time libraries work with perl, and which ones don't (in brief: don't write XS in C++). Steve noted that he had had trouble most notably with file descriptors (perl thinking a file was open, XS thinking it was closed) when compiling XS with VC7 when perl was compiled with VC6. Oh no! not another DLL hell! http://xrl.us/j63q Unused "Perl_save_*" functions After running some coverage analysis, Nicholas discovered that a slew of functions "Perl_save_svref", "Perl_save_long", "Perl_save_I16" and the like were unused, and wondered whether they had to remain, in order to support legacy XS code. Depending on the answer they could either be deleted or moved to mathoms.c (the graveyard for ye olde retired functions). Rafael Garcia-Suarez ran a gonzui search and found nothing, but also reasoned that since they're part of the public API, there's nothing stopping an XS author from saving arbitrary data on the stack. So he thought it would be fine to move them over to mathoms. On the other hand, if they were removed, that would cascade a certain amount of "enum" cruft as well. Nick Ing-Simmons mentioned that "Tk" (naturally) uses "save_svref" for some nefarious (but quite legitimate) purposes, but was quite happy to see them move to mathoms.c. Save the mathoms http://xrl.us/j63r Making "U" magic available for hashes Anno Siegel sent in a long message, describing how he wanted to apply "PERL_MAGIC_uvar" or "U" magic work with hask keys. The aim was to provide some more support for inside-out objects. This would be a cleaner approach than using tied hashes. Instead, from the key one would be able to get to the reference in a more direct manner. And instead of just waving his arms and saying how good it would be, Anno supplied a patch against 5.9.3 showing some proof-of-concept code and asked for feedback. Yves noticed the parallel between this work and the work he did when putting the trie optimisation into the regexp engine, but also that using reference addresses are apparently not recommended in threaded environments. Rafael poked at the patch and asked for some example code, to allow him to weigh up the benefits. Anno delivered a couple, and then went back to work on refining the concept. Magic-U-Like http://xrl.us/j63s "pp_bit_and", "pp_bit_x?or" and "USE_LEFT" Nicholas found an interesting discrepancy between a trio of functions in pp.c. On the one hand "pp_bit_and" does one thing, whereas "pp_bit_or" and "pp_bit_xor" throw a ternary operator into the works for what is otherwise very similar code. It's been there a long time, is touched upon in bug #17809 and Nicholas wanted to know more. No-one appeared to remember anything about it at all. Lost in the mists of time http://xrl.us/j63t "DESTROY" never dies Stas Bekman noted that perl -le 'my($x,$y) = (1,0); my $z=$x/$y; print "done"' dies with "Illegal division by zero" but on the other hand package A; sub new {bless {},'A'}; sub DESTROY { my($x,$y) = (1,0); my $x = $x/$y } my $X=A->new; print "done" produces the output "done". The die has been eaten, and the person running the program has no idea that anything is amiss. Unfortunately, Stas was Warnocked on this issue. http://xrl.us/j63u Never one to let such a trifling matter bother him, Stas filed a bug report: http://xrl.us/j63w Benchmarking the effect of build options Linda Walsh wanted to know if there was a package that would let her benchmark the results of different build options, such as compiler optimisation levels, enabling threads and the like. Jim suggested using "Test::Smoke" as a starting point, and make it run "perlbench" instead of "make test". H.Merijn Brand added some of his own conclusions he'd made along these lines, and whipped up a small program to extract the times of the different runs in a smoke test, and produced some interesting figures as a starting point. http://xrl.us/j63x Why "ref(qr/foo/)" is "Regexp" John P. Linderman looked through all the POD he was able to, but was unable to find where it was explained that "qr/foo/" is of type "Regexp" and thought that it should be mentioned. Yves pointed out that code is free to bless a Regexp into another package, which means that its "ref()" will then return the name of the other package. In fact, when this happens, there is no way of determining that something that set out as a "Regexp" but has since been blessed as something else, was, at the outset, a "Regexp". There must be some way of making an obfu out of this behaviour http://xrl.us/j63y "Module::Build", "CPAN.pm", "ExtUtils::MakeMaker" and "UINST=1" Randal L. Schwartz wrote in to say that with recent versions of all of the above he was not able to install "Zoidberg" and wanted to know whether it was "Module::Build"'s fault. A massive thread resulted from this simple question, and happily it did not devolve into a flame war, at least not too much. There are two points of view, each with their merits. But since the two viewpoints are not diametrically opposed, at times the parties seem to be talking at cross purposes. Tels saved the day by summarising it nicely, so I shall point you to his summary: The thread http://xrl.us/j63z The thread, accord to Tels http://xrl.us/j632 Revisiting the saving of the regexp state Nicholas Clark had been looking for where code deals with $1 and found some code in mg.c and wondered if there was code elsewhere that diddled with these number variables directly. This week he understood why his proposed optimisation wouldn't fly. Which got him thinking about another approach. Which he also figured wouldn't work either. In related work, a patch that had been stuck in limbo was applied. Neither Nicholas nor Rafael nor Robin Houston were certain the patch was perfect, but reasoned that smoke tests should be sufficient to test it. That, and testing CPAN modules with "blead". Back in January http://xrl.us/j633 And fast-forward to now http://xrl.us/j634 More voodoo http://xrl.us/j635 Mac OS/Lamp port sources available Joshua Juran posted the address where people could download the Lamp port of perl 5.6.1, (I believe this is the result of reviving the old MacPerl port). Where to get it http://xrl.us/j636 System requirements http://xrl.us/j637 PERL_XSUB_OLDSTYLE Nicholas Clark wanted to know what old style XSUBs were. They appear to be so old as to be not used any more. Nick Ing-Simmons was quite convinced that this was the case. And he should know, having written "Tk" as one of the first 5.000 extensions, and it used the new calling conventions... Andy Dougherty agreed, saying that his only recollection was of Malcolm Beattie's own pre-5.000 "Tk" module used the original XSUB style, and "PERL_XSUB_OLDSTYLE" was an effort to continue to keep it working. Nicholas fired up the chain-saw. http://xrl.us/j638 Patches of Interest Patches from Debian for 5.8.8 Brendan O'Dea kindly posted the patches that Debian have been carrying along on that distribution's Perl package. The points are: a patch for insecure temporary files, a POD edit, a precedence fix, a patch for long lines in /etc/groups and a redundant compiler flag on the "sparc" platform. Gisle Aas noted that all but one patch were already in "blead", but punted on the "\x{2010}" POD/"groff" patch, soliciting the opinion of others. Brendan pointed out that the patch was for verbatim text, which is usually code, hence it should be left untouched, and that Russ Allbery had solved the problem in a different way in the current version of podlators. Nicholas Clark noted that the long lines bug merely requires a merge of reentr.pl which has drifted significantly between "maint" and "blead", which is apparently not for the faint of heart. This script is used to generate reentr.h and reentr.c which in turn allows the perl codebase to abstract away the differences in the thread-safe (re-entrant) versions of various system calls. Now that "podlators" had been fixed to allow the re-use of parser objects, Nicholas has less objections about merging it into maint, which would fix the POD problem, although Yitzchak pointed out that the code in the "SYNOPSIS" section of old "Pod::Man" doesn't yet work as advertised. And after a bit of prodding from Russ, Yitzchak coughed up an exhaustive list of all the niggly compatibility problems that need to be addressed. But pointed out that some of the issues may have been conscious design decisions to drop functionality deemed to be useless (but if so then it should be mentioned explicitly). Russ said that the goal was to emulate the old interface completely (so I expect we will see subsequent releases of podlators addressing these issues). De patches from Debian http://xrl.us/j639 Fixing broken "valgrind" targets in "make" Jim Cromie noticed that a number of targets, such as "test.valgrind", "check.valgrind" and the like did not all work correctly (that is, at all), and proposed a patch to make them work again. ("valgrind" is a tool to track down illegal memory accesses, usually caused by errant pointers). Patch applied by Steve Peters as change #27128. Grinding into emptiness http://xrl.us/j64a What Andy Lester has been doing Andy Lester delivered a number of patches during his quest to const. Marking unused arguments (applied as #27129) http://xrl.us/j64b Nick Ing-Simmons cautioned that the following patch might break Win32. Yves said that he'd happily smoke anything from people who needed to verify Win32 compliance. Nicholas wondered whether Steve Hay's and Abe Timmerman's smoke tests were sufficient to uncover problems. Jan explained what recipe was needed in general when doing XS work on Win32, confirming that Andy's patch did no harm. Jim Cromie sent in a snippet from his "Test::Smoke" configuration to show how he smokes these things. Not applied. Removing unused contexts http://xrl.us/j64c And then some more, still no takers http://xrl.us/j64d Andy took a fresh stab, this time removing "pTHX"s, redoing the "s/Nullop/NULL/" change and sundry "const"ing thrown in for good measure. This was applied as change #27136. http://xrl.us/j64e And then some stuff from perly.patch http://xrl.us/j64f Now that many "pTHX"s are no longer, some arguments need to be marked explicitly as unused in order to silence warnings for the Sun Studio compiler. Rafael realised that this patch would break non-threaded builds, so Andy went away to cook up a better batch. A first attempt at linting, not applied http://xrl.us/j64g In which perly.c is examined (not applied) http://xrl.us/j64h And some POD rewording (change #27174) http://xrl.us/j64i More lint removal (change #27177) http://xrl.us/j64j The end of the line of the Nullxx macros (change #27238) http://xrl.us/j64k Better long path name support for VMS John E. Malmberg supplied some patches against "blead" to make long path names work in "readdir" and the like for VMS: http://xrl.us/j64m http://xrl.us/j64n Better "xcopy" support for Win32 Yves Orton supplied a patch to suppress "xcopy" from prompting every two seconds when rebuilding on Win32. Which I can see would get you down over the long run. Applied as change #27195, with the proviso that it makes life more difficult for the Windows 9x platforms. So: Warning to all Windows Millenium and Windows 95 users: recompiling perl on your platform will now cause you grief and undue suffering. (But hey, you knew that already). http://xrl.us/j64o "Hash::Util" enhancement Yves also sent in a large patch to add some functionality to "Hash::Util". Applied as change #27180. http://xrl.us/j64p Patch for perl to compile/work on DragonFlyBSD Robert Sebastian Gerus sent in a patch to make perl compile correctly on the DragonFlyBSD platform. H.Merijn Brand applied it as change #27189. Whee! Another platform supported http://xrl.us/j64q More on DragonFly http://www.dragonflybsd.org/main/ "stat()" and trailing slashes on Win32 Jan Dubois noticed that "stat" behaves differently on windows when statting a directory, according to whether the directory to stat has a trailing slash or not. So he posted a patch to canonicalise the names to sane values. This was applied by Rafael, but it sparked off a long thread, where we learn that Windows allows hard links (although the method to achieve them is somewhat cumbersome) and there are problems in getting the timestamps up to date when "the other" link updates the file. Yves disliked the fact that statting a file required it to be opened and closed, in order to force the timestamps to be refreshed, as it incurs a significant performance penalty. Worse, as hard links are so rare, (since the means to create them are all but invisible to mere mortals), this high cost is paid every time for what is literally a *can't happen* event. He wanted to have some mechanism whereby the open and close timestamp refresh trick could be skipped by default, but that by flipping a bit the check could be re-enabled if needed. Jan Dubois came up with the best idea: using sitecustomize.pl, which was invented to solve exactly this sort of problem. http://xrl.us/j64s A test case for "Pod::Plainer" chromatic sent in a simple test case for "Pod::Plainer", with the desire to see Schwern poorer. Read the second link to understand what this is all about. The patch http://xrl.us/j64t Schwern throws down the gauntlet http://xrl.us/j64u t/op/stat can fail under Darwin There's a test in t/op/stat that can fail on Darwin. It tests that "ctime == mtime", except that it is possible to see 1 second differences on "HFS+" file systems. Anno Siegel patched the test to have Darwin skip it, and pointed out that ideally the test to see whether the test should be skipped should be based on the type of filesystem the test is being run on, not the type of operating system. Rafael applied the patch, but pointed out that such testing for the filesystem would be... difficult. http://xrl.us/j64v Patches: B, CGI, ExtUtils::MM_Unix http://xrl.us/j64w http://xrl.us/j64x [PATCH] Make SDBM_File work with -Duse64bitall on Darwin (Mac OS X) http://xrl.us/j64y [PATCH] Trouble with $ENV{CDPATH} after change #27236 http://xrl.us/j64z New and old bugs from RT Script misses EOF on Solaris (#1734) Steve Peters visited a venerable (seven year old) bug, and confirmed its potency on Solaris. The test script reads its own program as input (but I imagine any file open for read would do), and then forks off a child, and the child prints out its line and then exits. On a number of operating systems it works as expected (that is, it halts after having read the last line of input) but on Solaris (and Unixware) when it gets to the last line it starts over at the beginning. http://xrl.us/j642 Alan Burlison pointed to another discussion on the matter http://xrl.us/j643 where it transpires that a child should call POSIX::_exit instead of exit. Do that, and the problem goes away. "use locale" has no effect (#2200) Six years ago, "gomar" noted that the behaviour with "use locale" started to have no effect prior to 5.6, but that it worked in 5.005_03. Steve Peters observed that it now worked correctly in 5.8, so the fix was made somewhere between 5.5.650 and 5.8 (and the Changes file should reflect it). Yves Orton wondered whether Steve was seeing the same glyphs in his mail client that Yves was seeing in his, because what Yves saw of Steve's tests didn't look the same as the original poster's tests. The kind of thing that makes one pine for 7-bit ASCII. http://xrl.us/j644 "PAR", "autouse", and 64-bit Linux (#38441) Philippe Schaffnit reported the difficulty he was having when producing stand alone executables with PAR that use "autouse". The symptom he was encountering was Can't locate autouse.pm in @INC Nick Ing-Simmons described a couple of basic checks to carry out, which Philippe wondered how to do. Nick replied that his usual technique was to run the program in question under "strace" (or "struss" depending on your operating system) and then grep the resulting output, looking for the offending ".pm" file. http://xrl.us/j645 Coredump when starting "webmin" (#38449) "kamy" noted that "webmin" dumps core when run by 5.8.7. Steve Peters replied that the best option was to patch the current version with a series of patches and upgrade "Sys::Syslog", or perhaps more simply, upgrade to 5.8.8. Webmin itself should also be upgraded to 1.269. This resolves the issues surrounding the buffer overflows discovered in Webmin and Perl last year. And if you have a Webmin installation, you should do the same. http://xrl.us/j646 "chdir()" and filehandle parameters (#38457) Peter Dintelmann discovered that the new functionality for "chdir" when the argument is a filehandle, as in: open F, '/tmp' or die $!; chdir F or warn $!; doesn't work, although "chdir *F" and "chdir $fh" do. The problem is that perl considers "F" to be a bareword in this context, which leads to a "Bareword "F" not allowed" error. Rafael was pretty sure that a very minor edit to opcode.pl would declare it legal in "blead", but was worried about backwards compatibility issues if it were allowed in "maint". Gisle took a stab at making it work by mirroring how perl deals with the task of truncating a file handle, but discovered that things were trickier than they first appeared. Nicholas considered that the semantic change of "chdir foo" was to great to be allowed to go into "maint". Nick Ing-Simmons was sure it would cause trouble. Taking a crack at it http://xrl.us/j647 Peter replied via RT, arguing that "stat()" and "truncate()" already behave this way, and that this would provide more consistency. Gisle said that the patch was in blead, precisely on the basis of the argument of consistency. He also pointed out that "chown", "chmod" and "utime" do not currently accept filehandles, but they are documented as taking LISTs as arguments. Between changing the functions to allow globs as argument or pinning down the semantics more precisely with a documentation patch, Gisle voted for the latter course of action. Nicholas began to regret having merged the initial dirhandle/filehandle patches from "blead" that opened up this can or worms. Gisle was more optimistic, saying that bareword file handles are legacy and should not be used in new code anyway. (Note to self: do not let Gisle see my code). Inconsistent consistencies http://xrl.us/j648 "chdir()" and closed filehandle parameters (#38457) Peter also discovered that open $f, '/tmp' or die $!; close $f; chdir $f or warn $!; produced the warning "something's wrong", and attached a patch to change the warning to "chdir() on closed filehandle". Rafael liked the concept, and eventually applied it to "blead" as change #27130. http://xrl.us/j649 A puff of smoke is seen http://xrl.us/j65a On a roll, Peter also thought about the "Cwd" module, which offers a version of "chdir" that $ENV{PWD} synchronised with directory changes. As might be guessed, the following doesn't work: # assuming the script is run from /var/tmp (or elsewhere) open $f, "/tmp"; chdir $f; print $ENV{PWD}; # prints /tmp/GLOB(0x233b8) Apparently no fixes forthcoming at this time. http://xrl.us/j65b "@-" contains garbage after a failed match (#38461) Lukas Mai posted a bug report with an aptly-named wtf.pl that goes something like for my $re (qr/fo/, qr/a/) { 'foo' =~ /$re/; print scalar @-, "\n"; # prints some huge number print "@-\n"; # eats all available memory } Works okay the first time through the loops, comes to grief the second time. Yves Orton diplomatically suggested that while this was perhaps not a very desirable outcome, if one does not take the pains to check whether the match actually succeeds then one shouldn't expect "@-" to contain anything useful. Lukas replied that he would settle for "undef" or an empty list, rather than garbage. Nicholas tried to attack the bug, but whenever he looked at it with a debugged build the problem went away, which led Andreas to notice the similarity between this bug and another one (#38363) that he had been working with the same kinds of symptoms. After going through a bit of pain, Nicholas spotted what he hoped was the root of the problem, and committed a one line change (#27133) to fix it. http://xrl.us/j65c A curiously lethal regular expression problem (#38470) Nigel Sandever posted a short piece of code that uses "pos" and a moderately large string. It loops for a while (or not at all) and then dies with a core dump. Nigel and Nicholas identified the problem as runaway recursion in the regexp engine. For the time being the work-around is Don't Do That Then. Here's hoping that Dave Mitchell greps for his name in the summaries when he gets back on the net. http://xrl.us/j65d "Data::Dumper" only warns on unhandled reference types (#38484) Give "Data::Dumper" a weird reference type it doesn't know how to handle, and it will spit out a warning, but then goes on to emit some nonsensical Perl code that may not even compile. Nicholas thought that "Data::Dumper" should have the good grace to up and "die" if unable to do anything sensible. Yves thought it was a bug, since the pure-Perl "Data::Dumper" implementation correctly dies under the same circumstances. He also was interested in knowing what to do, since his own module, "Data::Dumper::Streamer", didn't cope with the construct either. (Which is *STDOUT{IO} in the bug report). Nicholas wasn't sure what to do either, noting that even perl itself has a fit when it tries to dereference such a beast, as in "$x = ${*STDOUT{IO}}". Yitzchak made a small fix to pp.c to make things die more gracefully. http://xrl.us/j65e "use integer; 0x80000000/-1" (#38485) Inspired by something he heard on "perl6-internals", Nicholas discovered that use integer; 0x80000000/-1; will dump core with a floating point exception, at least on x86 hardware running FreeBSD. He wanted to know whether it was worth trapping, and dying with a more useful error, akin to dividing by zero. Steve Peters discovered that a number of different platforms puked over the code in strange and entertaining ways, but reflected that it were best they all died the same way, so he committed change #27155 to do just that. Yitzchak Scott-Thoennes hated that, since it meant that now systems would die on the error, despite the fact that before the patch was added, they would have carried on just fine, and suggested it be reverted and a different proposed patch be applied instead. Rafael complied. http://xrl.us/j65f More background on the matter, courtesy Wikipedia http://en.wikipedia.org/wiki/SIGFPE -x allows -M on the shebang line (#38488) Nicholas pointed out that the following doesn't work #!perl -Mstrict print "foo\n"; but if you run the same script with "perl -x"... it does! And wondered why this was the case. Yitzchak and Rafael thought that the path of least resistance was to make "-M" legal on the command line. http://xrl.us/j65g New Core Modules "CPAN.pm" Andreas Koenig uploaded version 1.64 of "CPAN.pm" http://xrl.us/j65h "version.pm" John Peacock uploaded versions 0.54, 0.55 and 0.56_03 of "version.pm". Respectively: http://xrl.us/j65i http://xrl.us/j65j http://xrl.us/j65k "podlators" Russ Allbery released "podlators" 2.0.4 http://xrl.us/j65m In Brief Andreas Koenig noticed that "POE"'s test suite was issuing the dreaded "*** glibc detected *** double free or corruption" errors with "[EMAIL PROTECTED]". Nicholas ascribed the problem to a single missing tilde, which he fixed with change #27166. Andreas was pleased. http://xrl.us/j65n Enrico Sorcinelli wondered why stable is still version 5.8.7, according to "www.cpan.org" now that 5.8.8 has been released. As it turns out, it wasn't sloth on the part of the CPAN master librarian (ook!), but rather a policy decision to wait a certain amount of time, to see whether the early adopters after the public announcement uncover any show-stopping bugs, before declaring the release to be stable. As it turned out, at the time this summary was written, the 5.8.8 release had been officially declared the stable version. http://xrl.us/j65o Nicholas discovered a difference between 5.8.7 and 5.8.8. In the latter version, the following occurs: $[ = 2; # warns of "Useless use of a constant in void context" ... but he doubted that it was going to cause problems. http://xrl.us/j65p He also realised that a grand total of zero people tested the 5.8.8 release with 5.005 threads. Which may mean they are dead (either the threads or the people, take your pick). http://xrl.us/j65q When prowling around in mg.c, Nicholas came what he thought was an errant "break" that could never be reached, and asked if anyone could devise a snippet to reach it. No-one did. You can't get there from here http://xrl.us/j65r A smoke on windows blew up due to "PERL_IMPLICIT_SYS" choking on a "pTHX" that had been removed. Jan Dubois provided the voice of reason and got it all lined up again. http://xrl.us/j65t Going back to a thread from mid-January asking whether "SOFT_CAST" could be removed, Nicholas went ahead and got rid of it. http://xrl.us/j65v Robert Hicks would like to see a couple of new features in DProf: the ability to specify a path destination for the ".out" file, and to name the ".out" file based on the name of the script. Yes, these would be nice additions. Earn fame and glory by being the first person to send in a patch to do this. http://xrl.us/j65w Merijn Broeren discovered that compiling c++ code via SWIG no longer works with 5.8.8, spotted something that had changed somewhere between 5.8.4 and 5.8.8, and posted a patch to straighten it all out. Applied as change #27203 by Rafael. http://xrl.us/j65x Perl5 Bug Summary 1543 open tickets as of 2006-02-06. http://xrl.us/j65y and 6 more as of 2006-02-13. http://xrl.us/j65z All the bugs in the world http://rt.perl.org/rt3/NoAuth/perl5/Overview.html About this summary This summary was written by David Landgren. Compiling this last fortnight has consumed most of my evenings this week. And yet, try as I might, I cannot seem to find the way to summarise things more succinctly. My apologies for the length, and congratulations if you have managed to read as far as here. Now to start on this week's summary. Adriano Ferreira has had to step down for a while, due to constraints In Real Life. I hope we'll see him in the summariser's seat again in the future. In the meantime, if writing summaries is your definition of fun, drop me a note and we'll share the work. Information concerning bugs referenced in this summary (as #nnnnn) may be viewed at http://rt.perl.org/rt3/Ticket/Display.html?id=nnnnn Information concerning patches to maint or blead referenced in this summary (as #nnnnn) may be viewed at http://public.activestate.com/cgi-bin/perlbrowse?patch=nnnnn If you want a bookmarklet approach to viewing bugs and change reports, there are a couple of bookmarklets that you might find useful on my page of Perl stuff: http://www.landgren.net/perl/ 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. -- "It's overkill of course, but you can never have too much overkill."