perl.perl5.summary ... Copyright 1998-2014 Sat, 25 Oct 2014 02:25:21 +0000 This Week on perl5-porters - 18-25 January 2009 by David Landgren This Week on perl5-porters - 18-25 January 2009<br/><br/> A summary of last week&#39;s activity on perl5-porters, by David Landgren.<br/><br/> &quot;Are these names considered to be a public non-changeable interface<br/> by virtue of having been placed in these directories for a while, even<br/> though they were never documented as far as I can tell? Or are these<br/> files considered to be an internal implementation detail of Perl, not<br/> for external use, and hence subject to change or deletion?&quot; -- Karl<br/> Williamson, waging war on two fronts simultaneously, Perl and Unicode.<br/><br/>Topics of Interest<br/><br/>Interesting git-based changelog workflow<br/><br/> Aristotle Pagaltzis mentioned a workflow he had heard about regarding<br/> git. The aim was to ease the burden of producing the Changelog and<br/> perldelta files, which are huge timesinks as it involves sifting<br/> through thousands of commit messages to look for the big-ticket items.<br/> The solution is to create a more incremental effort.<br/><br/> Dave Mitchell said he hoped to produce a one line summary for<br/> perldelta for each day of reviewing and merging patches from blead to<br/> maint.<br/><br/> A number of porters highlighted the difficulty of being able to know<br/> precisely when a bug was fixed, since smokers of CPAN on blead tended<br/> to uncover problems a long time after the &quot;final&quot; patch had landed.<br/> David Golden suggested that a &quot;add-perldelta&quot; tool might be a step in<br/> the right direction to keep track of the changes at an appropriately<br/> high meta-level of changes.<br/><br/> navigating the delta<br/><br/><br/>disabling &quot;suidperl&quot; in Configure<br/><br/> Nicholas Clark put forward a patch to prevent &quot;suidperl&quot; being<br/> configured in 5.11 and beyond and wondered if there was a better<br/> approach. Andy Dougherty suggested another way, but it had the<br/> disadvantage of increasing the workload for H.Merijn Brand, the<br/> &quot;Configure&quot; pumpking, and would also not produce a useful error<br/> message if someone attempted to try and build &quot;suidperl&quot; in 5.12<br/> anyway.<br/><br/> As it was, H.Merijn applied Nicholas&#39;s patch.<br/><br/> it&#39;s dead jim<br/><br/><br/> Later on, Nicholas axed it altogether, reasoning that if there was<br/> some brave maintainer who wanted to resurrect it, all they had to do<br/> was to reverse out one change from their local git repository.<br/><br/> let sleeping dogs<br/><br/><br/>&quot;mingw libperl&quot; broken<br/><br/> Reini Urban reported a discrepancy between mingw and cygwin as to what<br/> public functions were exported to the world at large. Nicholas Clark<br/> thought that mingw (not exporting three particular functions) was<br/> correct, and it was cygwin that was being lax. And further, modules<br/> outside the core had no business in defining &quot;PERL_CORE&quot; in order to<br/> call functions to which it had no right.<br/><br/> This problem is not limited to the Windows platform. AIX also has a<br/> strict policy on what is and isn&#39;t exported.<br/><br/> Dmitry Karasik noted that the problem had been found a long time ago<br/> and a patch had been produced, and wondered why it had never been<br/> applied. This allowed Nicholas Clark to recycle his standard remark<br/> about volunteer workers and companies using Perl not making resources<br/> or money forward in order to improve the situation.<br/><br/> plus &ccedil;a change<br/><br/><br/> Reini revived cpan bug #28912 to fix &quot;B::Generate&quot; and deal with its<br/> breakage. He said that three functions, &quot;Perl_pad_alloc&quot;,<br/> &quot;Perl_cv_clone&quot; and &quot;Perl_fold_constants&quot; are exported anyway, and so<br/> should be published in the API as such. Nicholas Clark was a lot more<br/> reticent, saying that while it may indeed be useful for them to be<br/> exported, were they documented, testable, stable and supportable.<br/><br/> a gentleman&#39;s agreement<br/><br/><br/>LSB testing issue with &quot;Test::Harness&quot;<br/><br/> Stew Benedict reported a problem with the LSB project&#39;s handling of<br/> perl&#39;s test infrastructure. They currently use &quot;Test::Harness&quot; version<br/> N-1, and run into problems when that is upgraded to the current<br/> version N.<br/><br/> Yves Orton thought that the best way forward was to deal with the pain<br/> now and upgrade to the current version, even if there were backward<br/> compatible shims available for those who wished to keep working with<br/> N-1.<br/><br/> duty now for the future<br/><br/><br/> Later on, Stew gave a status report on the second round of Perl<br/> modules included in the LSB. He made a list of modules that had been<br/> pulled out of their core distribution, a list of modules that might<br/> yet be pulled, and a list of those modules that remain, along with<br/> their counts as pre-requisites. Stew explained that it was easier to<br/> pull things out now, possibly to put them in later, rather than the<br/> other way around. Thus, it would pay to be as aggressive as possible.<br/><br/> Yves Orton thought that removing parts of the testing infrastructure<br/> was definitely a bad idea. Nicholas Clark pointed out that while &quot;CGI&quot;<br/> has been in core for a long time, FreeBSD removed it in a recent<br/> release, apparently without much ill effect. He also responded with a<br/> large list of modules that have achieved ubiquity (and thus must be<br/> present) as well as other modules that also must be present even<br/> though we all wish they would curl up in a corner and die.<br/><br/> freebsd decoring++<br/><br/><br/>Need advice on gotchas on upgrading unicode db to 5.1<br/><br/> Karl Williamson is currently working on bring the Unicode database in<br/> Perl up to date with the latest and greatest, version 5.1.<br/><br/> The first problem he encountered was that the previous update didn&#39;t<br/> upgrade the Property Value Aliases, which is a hassle, because<br/> upgrading it now may introduce curious backward compatible bugs.<br/><br/> H.Merijn Brand thought that the problems Karl was raising were<br/> sufficiently far down in the basement that the general public<br/> shouldn&#39;t be aware of them, let alone rely on them, and that anything<br/> that allowed Perl to track Unicode with a minimum of intermediate<br/> layers and mappings was a worthy goal. He also put forward his idea of<br/> the list of files in the distribution that the general public was<br/> likely to be aware of, and using.<br/><br/> Karl went ahead after receiving additional clearance from Nicholas,<br/> and CYAed himself with a &quot;these files are subject to change without<br/> notice&quot; header.<br/><br/> &quot;just change it&quot; works for me<br/><br/><br/> As part of this work, Karl added the Unicode file NameAliases.txt,<br/> which fixes up some of the problems that have arisen over time.<br/><br/><br/><br/>&quot;use bytes&quot; and regular expressions<br/><br/> Karl is also continuing to wade through the crocodile-infested swamp<br/> of bytes, characters and regular expressions and was wondering what<br/> exactly should be happening when a regular expression was being<br/> compiled when &quot;use bytes&quot; was effect. The main problem being a<br/> complete lack of guidance insofar as the test suite makes no attempt<br/> to specify what should be happening one way or another.<br/><br/><br/><br/>&quot;glob()&quot; on VMS totally different to Unix<br/><br/> John Malmberg was stunned to learn that &quot;glob(&#39;foo&#39;)&quot; on VMS is the<br/> equivalent to &quot;glob(&#39;foo.*&#39;)&quot;, as it can lead to some pretty nasty<br/> cross-platform side effects. And even more curiously, there was<br/> explicit code to make things behave differently on VMS if &#39;foo&#39; were<br/> in fact a directory. He wondered what the appropriate fix would be.<br/> The goal was to get &quot;Module::Build&quot; working correctly on VMS.<br/><br/> Craig Berry wasn&#39;t too sure either, since the observed &quot;glob&quot;<br/> behaviour had been like that since time immemorial, and it also<br/> happened to reflect the native behaviour in VMS anyway.<br/><br/> John countered that in actual fact it was the utilities that were<br/> doing the expansion, not the shell.<br/><br/> Peter Prymmer voiced the opinion that things are working according to<br/> spec already, and pointed out that &quot;unlink&quot; only removes the current<br/> version of the file (since the RMS filesystem on VMS allows multiple<br/> versions of the same file to exist simultaneously -- a concept quite<br/> alien to Unix where Perl was initially developed).<br/><br/> Peter also thought that &quot;Module::Build&quot; really ought to be doing the<br/> &quot;opendir&quot;/&quot;readdir&quot;/&quot;closedir&quot; dance, since differences in &quot;glob&quot;<br/> behaviour had been observed in the past among different Unices.<br/><br/> After some more work, John produced a final patch that cleared up the<br/> remaining &quot;Module::Build&quot; test errors. He then spotted a different<br/> error, that Craig Berry identified as being fallout from the Y2038+<br/> code that entered blead recently. Craig promised to get it sorted out<br/> if no-one else wanted to.<br/><br/> it&#39;s a bird... it&#39;s a plane... it&#39;s a directory!<br/><br/><br/> John forwarded some patches to start clearing this up.<br/><br/><br/><br/><br/>&quot;lock()&quot; on a code ref?<br/><br/> Jerry D. Hedden wondered why we check for code references when locking<br/> scalars, since it is meaningless to do so. He wanted to remove it<br/> since he felt it was superfluous. Dave Mitchell suggested putting an<br/> assertion in its place.<br/><br/> next up, signed coderefs<br/><br/><br/> And thus it came to pass.<br/><br/> let my code free<br/><br/><br/>A plan for ext/<br/><br/> Nicholas Clark would like to clean up ext/ by hoisting anything that<br/> pertains to the build process *per se*, such as so that<br/> all that is left are the extensions themselves.<br/><br/> He also wants to flatten the directory structure so that all module<br/> build directories can be globbed with &quot;ext/*&quot;.<br/><br/> The Windows and VMS platforms in particular need some refactoring done<br/> so that everything can be driven off a generic &quot;make_ext&quot; build<br/> process. Some modules will need to have a Makefile.PL synthesised as<br/> well. Another problem to address is the dependency chain: ensuring a<br/> modules&#39;s prerequisites are built before it is.<br/><br/> Craig A. Berry remembered his classes and noted that ext/ used to<br/> represent modules that contained XS components, and lib/ those that<br/> didn&#39;t. While he didn&#39;t have a problem with Nicholas&#39;s idea, he<br/> pointed out it would be a good idea to look for cruft in %Config and<br/> &quot;installperl&quot; that such a change would create.<br/><br/> And then dual-life modules can migrate from ./lib to ./ext.<br/><br/> Stay tuned next week.<br/><br/> sounds like a... oh wait<br/><br/><br/>A plan for pod/<br/><br/> Nicholas also had some good ideas about POD. For instance,<br/> pod/perlapi.pod, pod/perlintern.pod and pod/perltoc.pod are currently<br/> maintained under revision control, but could just as easily be<br/> generated dynamically by &quot;./miniperl&quot; during the build. Similarly, the<br/> &quot;man&quot; pages could be built before the install phase, thus avoiding<br/> another step that currently performed in a task run with super-user<br/> privileges.<br/><br/> One benefit is that it reduces the amount of data shipped in an perl<br/> tarball, and helps reduce the speed at which the generated<br/> documentation drifts out of date.<br/><br/> generate the pod bay doors please<br/><br/><br/>TODO of the week<br/><br/>Make cope with differences between built and installed perl<br/><br/> Quite often vendors ship a perl binary compiled with their (pay-for)<br/> compilers. People install a free compiler, such as gcc. To work out<br/> how to build extensions, Perl interrogates %Config, so in this<br/> situation %Config describes compilers that aren&#39;t there, and extension<br/> building fails. This forces people into choosing between re-compiling<br/> perl themselves using the compiler they have, or only using modules<br/> that the vendor ships.<br/><br/> It would be good to find a way teach &quot;; about the<br/> installation setup, possibly involving probing at install time or<br/> later, so that the %Config in a binary distribution better describes<br/> the installed machine, when the installed machine differs from the<br/> build machine in some significant way.<br/><br/>Patches of Interest<br/><br/>Avoid confusing gcc with -2147483648<br/><br/> Robin Barker wanted to play by gcc&#39;s rules in relation to<br/> &quot;LOCALTIME_MIN&quot; but there appears to be problems with having things<br/> work correctly with C89-compliant compilers.<br/><br/> time is not on my side<br/><br/><br/>Run before configpm<br/><br/> Jerry D. Hedden wanted to ensure that ib/ was available<br/> before &quot;configpm&quot; was right, but this turned out to be surprisingly<br/> difficult in the light of parallel make environments and stamping out<br/> the possibility of race conditions that could arise therein.<br/><br/> first things first<br/><br/><br/>Fix &quot;mktables&quot; time stamp test<br/><br/> Karl Williamson tried to cut through sedimentary layers of code checks<br/> designed to prevent &quot;mktables&quot; from being run repeatedly during the<br/> build process. Just when he thought he had things solved he ran into<br/> another problem. Rafa&euml;l suggested that the remaining problem was also<br/> some sort of bogus optimisation and so maybe it too should be brute<br/> forced.<br/><br/> one thing at a time<br/><br/><br/>&quot;File::Copy&quot; and permission bits<br/><br/> Charles Bailey stumbled across a pot of tuits and spent them on<br/> learning git and cleaning up &quot;File::Copy&quot;, specifically, the<br/> management of permission bits. The result was to make &quot;cp&quot; more POSIXy<br/> and &quot;copy&quot; more native.<br/><br/> Abigail added a few more tests to look at how the copy dealt with<br/> setuid and sticky bits, and pointed out that there was now a potential<br/> world visibility race condition in the code for anyone in a Unix<br/> session with a 022 umask (all too common). Charles thought that<br/> &quot;File::Copy&quot;&#39;s security mandate didn&#39;t stretch that far (the paranoid<br/> are invited to look at a hand-rolled solution involving &quot;sysopen&quot;).<br/><br/> do you copy<br/><br/><br/>New and old bugs from RT<br/><br/>updated reproducible perlmodlib.PL with bugfix for &quot;Test::Tutorial&quot;&#39;s <br/>entry (#53000)<br/><br/> Richard Soderberg tossed out some code to attack a TODO, but Rafa&euml;l<br/> Garcia-Suarez wasn&#39;t able to make use of it, and it prodded Nicholas<br/> Clark to wonder whether our git-configure-fu was sufficiently strong.<br/> Richard said he&#39;d try again some day.<br/><br/> to do later<br/><br/><br/>&quot;sqrt&quot; without EXPR and &quot;Math::Complex&quot; always 0 (#62412)<br/><br/> Frank Wiegand found a problem with &quot;sqrt&quot; failing to operate on $_ if<br/> &quot;Math::Complex&quot; was loaded. Abigail found a way to use &quot;use<br/> Scalar::Util &#39;set_prototype&#39;&quot; (suggested by Rafa&euml;l and have things<br/> work correctly before and after 5.10.<br/><br/> the root of complexity<br/><br/><br/>Dies in recursion on some regexes (#62444)<br/><br/> Vany wondered why &quot;(1 x $_) !~ /^(1{2,}?){2,}$/&quot; blew up with a<br/> segfault when $_ became large. Abigail had a look and replied that<br/> &quot;This is to be expected given the regexp.&quot;<br/><br/> EWONTFIX<br/><br/><br/>Fcntl exported constants become tainted under 5.8.9 (#62502)<br/><br/> Mark Martinec discovered that under perl 5.8.9, some O_* and other<br/> constants as exported by module &quot;Fcntl&quot; (or &quot;IO::File&quot;) become tainted<br/> under certain circumstances. Both Nicholas Clark and Ben Morrow were<br/> able to confirm seeing the same behaviour but were none the wiser as<br/> to why it was happening.<br/><br/> and you don&#39;t make no sense<br/><br/><br/>Insecure dependency error in sprintf under -T (#62512)<br/><br/> Eric Promislow reported another easy bug to track down: problems with<br/> a &quot;sprintf&quot; format string being tainted... when run inside the Komodo<br/> debugger. Rafa&euml;l thought that if it couldn&#39;t be reproduced in a stock<br/> perl there wasn&#39;t much chance of it being fixable.<br/><br/> heisentaint<br/><br/><br/>&quot;warnings::register&quot; regressions introduced in 5.10 (#62522)<br/><br/> Peter Rabbitson filed a report about a regression in 5.10 and backed<br/> it up with comprehensive set of tests to circumscribe the problem.<br/> Alas, it attracted no attention.<br/><br/><br/><br/>Perl 5.8.8 (Tainting) vulnerable to CWE-732 attacks (#62526)<br/><br/> The attack in question is due to the fact that perl will happily allow<br/> a program to &quot;require&quot; a file (and thus, run code) even if said file<br/> happens to be world writable. There was some talk of making taint deal<br/> with this (refuse to load the file, &agrave; la openssh) but Abigail asked<br/> how one would go about untainting it.<br/><br/> Yves Orton thought that a new paranoia mode, activated by a new<br/> command-line switch, would be a better alternative.<br/><br/> oh I give up, can I trust you?<br/><br/><br/>Method interpretation in &quot;A::B-&gt;C&quot; (#62584)<br/><br/> Peter Scott noted that what is called by &quot;A::B-&gt;C&quot; depends on whether<br/> or &quot;A::B&quot; and/or &quot;A::B::C&quot; are defined. This then leads to program<br/> behaviour that can be difficult to predict.<br/><br/> Eric Brine pointed out that &quot;A::B::-&gt;C&quot; is the preferred way of<br/> disambiguating the situation, and Ben Morrow explained why it is<br/> unlikely that a favourable resolution will made of the matter.<br/><br/> there&#39;s one right way to do it<br/><br/><br/>Maximum string length with &quot;substr&quot; (#62646)<br/><br/> skylar reported running into grief with &quot;substr&quot; being asked to chop<br/> away at a string larger than 2147483648 bytes (give or take a byte).<br/> Nicholas Clark explained that the 1998-vintage implementation uses a<br/> 32-bit quantity which is clearly starting to become a limit in the<br/> 21st century.<br/><br/> sign of the times<br/><br/><br/>Override documentation (#62648)<br/><br/> Jerrad Pierce would love to see &quot;override&quot; have its own documentation,<br/> or at least be able to get to it easily from &quot;overload&quot;, which does<br/> have its own documentation.<br/><br/> overboard<br/><br/><br/>UTF8 failure with &quot;sprintf ()&quot; (#62666)<br/><br/> H.Merijn Brand has managed to get the UTF-8 cache confused and panic<br/> with nothing more than a &quot;sprintf&quot;.<br/><br/> doctor it hurts<br/><br/><br/>Perl5 Bug Summary<br/><br/><br/><br/><br/>New Core Modules<br/><br/> podlators 2.2.2<br/> Russ Allbery pushed out a new version, the main improvement being<br/> the ability to deal correctly with verbatim paragraphs that<br/> contain lines with only whitespace.<br/><br/><br/><br/> Encode 2.27<br/> Dan Kogai released a new version of &quot;Encode&quot; that clears up a<br/> number of reported bugs.<br/><br/><br/><br/> Module::Load 0.14<br/> Jos Boumans synced the latest version of &quot;Module::Load&quot; that<br/> corrects a reported bug and streamlines the test suite.<br/> &quot;Module::Load::Conditional&quot; was also upgraded to clear up some<br/> bugs in the test suite itself, smoked out by Win32 and VMS.<br/><br/> sweet<br/><br/><br/> Archive::Tar 1.44<br/> Jos also released a bug fix for &quot;Archive::Tar&quot;.<br/><br/><br/><br/>In Brief<br/><br/> Some consting goodness for time64 was applied.<br/><br/><br/><br/> Ren&eacute;e B&auml;cker thought it would be great to show -E in error message<br/> when called with -E, and on the surface it is. Except it breaks tests<br/> like &quot;$0 eq &#39;-e&#39;&quot; and to Do The Right Thing in light of that was so<br/> hard that all hope was abandoned.<br/><br/><br/><br/> Slaven Rezic improved the warnings if forks fail in &quot;Perl_my_popen&quot;.<br/><br/><br/><br/> Karl Williamson is getting close to landing code to solve the problem<br/> of the Unicode ordinal range 128-255 and so he delivered a skeleton<br/> to bring lay the way for genuine Unicode goodness.<br/><br/><br/><br/> Ben Morrow spotted some curious behaviour when calling &quot;-t&quot;, &quot;-T&quot; on<br/> IO refs and a variation on the theme that tripped an assertion<br/> failure. He promised to write a patch after he had audited the rest of<br/> the codebase for uses of &quot;isGV()&quot;.<br/><br/><br/><br/> Ricardo Signes wrote a rough patch to remove indirect method calls<br/> from documentation. This was applied, but he admitted that other<br/> examples no doubt lie around in obscure corners of the<br/> documentation.(I thought chromatic wrote an exhaustive patch for this<br/> a couple of years ago --ed).<br/><br/><br/><br/> Reini Urban pulled off a gnarly trick to use MSVC6 Project files to<br/> build perl.exe, which reduces the edit-compile-debug cycle on windows<br/> down to keypresses &quot;F7&quot;-&quot;F5&quot;.<br/><br/> faster debugging<br/><br/><br/>Last week&#39;s summary<br/><br/> There was none. I needed a break. As much as I enjoy doing these<br/> summaries, it&#39;s a huge chunk of tuits each week.<br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/>-- <br/>it&#39;s an anthem in a vacuum on a hyperstation, day dreaming days in a <br/>daydream nation<br/> Sun, 01 Feb 2009 12:29:38 +0000 This Week on perl5-porters - 3-9 November 2008 by David Landgren This Week on perl5-porters - 3-9 November 2008<br/><br/> &quot;PS: Hi, guys. Been a while. How you been?&quot; -- Chip Salzenberg, back<br/> on the chain gang.<br/><br/>Topics of Interest<br/><br/> synopsis thoughts and an additional affordance<br/><br/> David Golden made good on his promise to write a better synopsis for<br/> to help steer people out of trouble when dealing with<br/> version numbers and their comparisons.<br/><br/> Michael G. Schwern pointed out a couple of places where things weren&#39;t<br/> locked down, but said that he thought David&#39;s take was much clearer.<br/> But as usual in matters of versioning, counter examples popped up to<br/> muddy the waters.<br/><br/><br/><br/>Should &quot;[:upper:]&quot; match title case?<br/><br/> Karl Williamson read the documentation and saw that &quot;[:upper:]&quot; should<br/> match title case, except that it doesn&#39;t, and an undocumented<br/> &quot;\p{IsTitle}&quot; does. What to do?<br/><br/> Tom Christiansen noted that there is still a lot of POSIXy stuff that<br/> Perl doesn&#39;t do, but that part of the reason for that is that it&#39;s<br/> full of subtlety and traps for the unwary. He would really like to see<br/> a decent collation infrastructure in Perl, but Jarkko Hietaniemi said<br/> that the issues are insanely difficult to resolve.<br/><br/><br/><br/>Perl 5.8.8 34711 on AIX 5.3<br/><br/> Rainer Tammer sent in the information he had gleaned from building<br/> what will be 5.8.9 on AIX 5.3. He wondered whether it was worth the<br/> effort to continue to deal with 5.1 since it is no longer supported.<br/> H.Merijn Brand explained that the porters have a long traditional of<br/> continuing to support Perl on orphaned architectures; all that&#39;s<br/> really needed is shell access.<br/><br/> H.Merijn and Andy Dougherty offered some suggestions and insights to<br/> help Rainer move forward.<br/><br/><br/><br/> In a 64-bit build, Rainer had exactly one failure in<br/> lib/ExtUtils/t/Embed.t.<br/><br/><br/><br/>$Config{archname} on AMD64 Windows<br/><br/> Sisyphus had trouble keeping track of the differences between 32-bit<br/> and 64-bit builds on his Vista box. Jan Dubois and Steve Hay provided<br/> the vital clues to help him figure out what he should be doing.<br/><br/><br/><br/>Future maintenance plans for 5.8.x<br/><br/> Nicholas Clark added a paragraph to perl589delta explaining that this<br/> release (perl 5.8.9) was likely to be the last of the 5.8 series.<br/><br/> Jan Dubois pointed out that 5.10.0 has a &quot;testing&quot; feel to it, to<br/> which Dave Mitchell stated that his plan was to have 5.10.1 out by the<br/> end of the year as well.<br/><br/> Matt S. Trout mentioned that he had found that users of &quot;DBIx::Class&quot;<br/> do pay attention to EXPERIMENTAL labels, and don&#39;t mind as much when<br/> things break. But he&#39;d love to figure out how to get them to take<br/> development snapshots for a spin on a regular basis.<br/><br/> this is the end my friend<br/><br/><br/>Change &quot;PREFIX&quot; to &quot;INSTALL_BASE&quot; in perlfaq8 and perlmodinstall<br/><br/> Michael G. Schwern noticed a dead meme still doing the round, on<br/> So went through the documentation and excised<br/> &quot;PREFIX&quot; and replaced it with &quot;INSTALL_BASE&quot;, which is the officially<br/> anointed new way of installing modules.<br/><br/><br/><br/> That reminded John Siracusa about the problem of sequestered perl<br/> installs.<br/><br/><br/><br/>Syntax for macros / function composition at compile time<br/><br/> Erwan Lemonnier asked for some general syntax advice on implementing<br/> Python-style function decorators to Perl. Michael G. Schwern pointed<br/> him at &quot;Method::Signatures&quot; and subroutine attributes.<br/><br/> Matt S. Trout mentioned a secret IRC channel and mailing list where<br/> meddling with syntax takes place.<br/><br/><br/><br/>Perl 5.10.x + Tk-804.028-501-12048<br/><br/> The recent tweaks to constant/mutable SV pointers caused Tk to fail<br/> (Tk being the poster child for unexpected consequences from low-level<br/> changes). Marcus Holland-Moritz tweaked thing around to get Tk passing<br/> again.<br/><br/><br/><br/>Questions about regcomp.c<br/><br/> Karl Williamson had some very detailed, precise questions to ask<br/> regarding regcomp.c, from which we can conclude that Karl already<br/> knows more about the regular expression than 94% of all Perl 5<br/> Porters. Yves Orton provided the answers and saw that there was a bug<br/> that he needed to fix.<br/><br/><br/><br/>#34775 causes run/cloexec.t to hang<br/><br/> Marcus Holland-Moritz uncovered a smoke failure regarding the recent<br/> bug fixes for leaks in PerlIO layers.<br/><br/> Steve Peters confirmed the failure and reverted the change. For Goro,<br/> it&#39;s back to the drawing board.<br/><br/><br/><br/>&quot;Perl_newSVpvf(&quot;%lld&quot;)&quot; is broken<br/><br/> Hugo van der Sanden picked up the gauntlet thrown down by Michael G.<br/> Schwern regarding the weird results with printf formats, traced it<br/> down through a dense thicket of #ifdefs, and proposed a patch to tidy<br/> it up.<br/><br/> A long discussion about printf format specifiers and error messages<br/> ensued.<br/><br/><br/><br/>Regular expression character classes and unicode.<br/><br/> Yves Orton kicked of a request for comments regarding the<br/> rewrite/revamp of character classes and the breakage that has crept in<br/> since Unicode. He received many comments.<br/><br/><br/><br/>Add UPSTREAM flag to<br/><br/> Dave Mitchell wanted to gauge the interest in adding some metadata for<br/> dual-lifed modules, to track whether changes to blead should be pushed<br/> upstream to the maintainer first, or whether they were happy to fold<br/> changes back at their own speed. Those who replied were in favour.<br/><br/> Steffen M&uuml;ller patched all that was necessary in order to implement<br/> the idea.<br/><br/><br/><br/>Clone fails to build with blead@34780<br/><br/> Michael G. Schwern reported a failure with &quot;Clone&quot;, that Marcus<br/> explained was due to the slightly naughty use of an lvalue macro. But<br/> he fixed things anyway.<br/><br/><br/><br/>TODO of the week<br/><br/> Here&#39;s a biggie for the bored. This task needs C knowledge, and<br/> knowledge of how the interpreter works, or a willingness to learn.<br/><br/>optimize tail-calls<br/><br/> Tail-calls present an opportunity for broadly applicable optimization;<br/> anywhere that &quot;return foo(...)&quot; is called, the outer return can be<br/> replaced by a goto, and foo will return directly to the outer caller,<br/> saving (conservatively) 25% of perl&#39;s call&amp;return cost, which is<br/> relatively higher than in C. The scheme language is known to do this<br/> heavily. B::Concise provides good insight into where this optimization<br/> is possible, ie anywhere entersub,leavesub op-sequence occurs.<br/><br/> perl -MO=Concise,-exec,a,b,-main -e &#39;sub a{ 1 }; sub b {a()}; b(2)&#39;<br/><br/> Bottom line on this is probably a new pp_tailcall function which<br/> combines the code in pp_entersub, pp_leavesub. This should probably be<br/> done 1st in XS, and using B::Generate to patch the new OP into the<br/> optrees.<br/><br/>Patches of Interest<br/><br/>v5.10.0 Pod/ Can&#39;t call method &quot;pod2text&quot; without a package or object<br/><br/> Jari Aalto had a problem using &quot;pod2text&quot; in 5.10 and offered a patch<br/> to reinstate the previous behaviour.<br/><br/> Michael G. Schwern had a closer look at what was going on and<br/> concluded that the real problem was the fact that &quot;Pod::Text&quot; was<br/> using &quot;Pod::Simple&quot; incorrectly. He also pointed out that &quot;pod2text&quot;<br/> as a function has been deprecated for nearly half of Perl 5&#39;s<br/> lifetime.<br/><br/><br/><br/>Configure/NDBM_File Add prototype detection for NDBM header files<br/><br/> Marcus Holland-Moritz offered a couple of patches to sort out the<br/> problems that have been observed recently with respect to determining<br/> the availability of NDBM. He and H.Merijn Brand had everything settled<br/> down by the end of the week.<br/><br/><br/><br/>threads Changes<br/><br/> Nicholas Clark is busy wrapping up 5.8.9, and he noted the fact that<br/> 5.8.8 shipped with &quot;threads&quot; 1.07, but 5.8.9 will ship with 1.71. An<br/> amazing amount of work was done, mostly by Jerry D. Hedden, and<br/> Nicholas wanted to know if it was possible to summarise the main<br/> changes in three or fours points.<br/><br/> Jerry responded with a patch that contained what he thought were the<br/> most important improvements, which Nicholas applied with thanks.<br/><br/><br/><br/>New and old bugs from RT<br/><br/>&quot;B::Xref&quot; seems to be broken (#18306)<br/><br/> Steve Peters applied a patch from Ren&eacute;e B&auml;cker, thus closing the<br/> oldest bug closed this week.<br/><br/> ding dong the bug is dead<br/><br/><br/>Need to change Cygwin built-in &quot;Cwd::cwd&quot; (#38628)<br/><br/> Steve was able to close this ticket as well, since Jerry D. Hedden<br/> confirmed that its patches have been applied to blead, 5.10 and 5.8.<br/><br/> second verse same as the first<br/><br/><br/>filetests sometimes do not set _ (#46463)<br/><br/> Steve said this bug was resolved as well, but Mark Overmeer thought<br/> that documenting sub-optimal behaviour was not the same improving the<br/> behaviour.<br/><br/><br/><br/>map leaks memory (#53038)<br/><br/> Marcus Holland-Moritz suggests that this has been fixed by change<br/> #34776 and that bug #48004 is something else altogether (a question of<br/> maps within maps not freeing intermediate temporaries and thus<br/> consuming 300Mb when 9Mb should suffice).<br/><br/><br/><br/>perlio.c has a problem (both 5.8 and 5.10) (#54828)<br/><br/> Steve Peters cleared up the question of not all parts of a patch being<br/> applied.<br/><br/><br/><br/>h2xs does not handle properly enum constants (#55896)<br/><br/> Back in June, Steve Peters said that he thought fixes applied to<br/> &quot;h2xs&quot; in the meantime should have resolved the problems encountered<br/> in the bug report. Jeremy Ratcliffe replied this week, saying that<br/> only one bug had been fixed in 5.10, all the others remained.<br/><br/><br/><br/><br/>Unary minus on &#39;numeric&#39; inputs like &#39;-1&#39; (#57706)<br/><br/> Ren&eacute;e B&auml;cker suggested a change to how strings with a leading minus<br/> character are interpreted in the presence of a unary minus.<br/><br/> but the patch has whitespace issues<br/><br/><br/>Permission denied when building as non-root user on FreeBSD 6.2+ (#58180)<br/><br/> On FreeBSD (and possibly other Unix variants), you cannot build Perl<br/> if the directory containing your home directory does not have the read<br/> bit set (in order to prevent you from snooping the names of the other<br/> accounts in a shared environment -- which seems pretty dumb if<br/> /etc/passwd is readable, but who am I to argue with an ISP?)<br/><br/><br/><br/>&quot;PerlIO::via&quot; leaks memory at a high rate (#59268)<br/><br/> Marcus Holland-Moritz resolved this problem to his satisfaction. If it<br/> summons no black smoke, then a CPAN release of &quot;PerlIO::via&quot; will fix<br/> older Perls as well.<br/><br/><br/><br/>In regular expressions, &quot;\N{U+...}&quot; doesn&#39;t match for ... &gt; 256 (#59328)<br/><br/> Karl Williamson dashed off a quick patch for this, and Yves Orton<br/> applied it.<br/><br/><br/><br/>PATCH chr(0400) =~ /\400/ fails for &gt;= 400 (#59342)<br/><br/> Rafa&euml;l Garcia-Suarez replied to Yves Orton&#39;s comment from last week<br/> where he suggested that octal escapes in regular expression be<br/> outlawed. He agreed that they should be put on board the deprecation<br/> train, but could be retained inside character classes. He also noted<br/> some marvellous inconsistencies in error messages.<br/><br/> Glenn Linderman suggested stealing Python&#39;s OoNNN octal notation.<br/><br/> It will take considerable effort on the part of the porters to<br/> convince Tom Christiansen of the need to deprecate octal in regular<br/> expressions. His main argument is that today, the &quot;\g&quot; escape can be<br/> used to disambiguate backreferences from octal. Chip Salzenberg<br/> waltzed in to say that he threw his lot in with Tom.<br/><br/> Undaunted, Glenn replied that there is a definite problem in that<br/> certain octal numbers may not be expressed in a pattern, depending on<br/> the number of backreferences. And when patterns are created by &quot;qr//&quot;<br/> composition, which was Yves Orton&#39;s point, this may not even be<br/> evident by casual inspection).<br/><br/> Tom subsequently posed to Andrew Hume, one of the original authors<br/> along with Ken Thompson and Dennis Ritchie, of C, Unix and regular<br/> expression, the question of how they dealt with the octal notation<br/> backreference ambiguity at the very beginning. And provided a whole<br/> pile of links for people who want to know more about the history of<br/> the matter.<br/><br/><br/><br/>Inconsistent math with large numbers (#60318)<br/><br/> Andreas K&ouml;nig reported on a number of 64-bit perls out in the wild<br/> that consider some ferociously large numbers that end in 89.2 being<br/> larger than the same number ending in 90. Appending a .0 to the latter<br/> makes things work, but is considered distasteful.<br/><br/><br/><br/>utf8+locale substitution cause the Perl interpreter to hang. (#60326)<br/><br/> Shlomi Fish showed how an &quot;s///&quot; expression containing a particular<br/> UTF-8 character could fall into an endless loop.<br/><br/><br/><br/><br/>Regexp lookbehind failure after an (if)then|else in perl 5.10 (#60344)<br/><br/> Someone named Adam reported a bug that was introduced at around the<br/> time that Dave Mitchell derecursified the regular expression engine.<br/> Yves Orton took a crack at fixing it and Dave thought his solution was<br/> fine.<br/><br/><br/><br/>&quot;local $SIG{FOO} = sub {...}&quot; sets signal handler to SIG_DFL (#60360)<br/><br/> Ian Goodacre posted a problem about localising signal handlers, and<br/> the fact that the default handler is loaded transiently in the switch<br/> from the old handler to the new.<br/><br/> Chip Salzenberg brought the house down with an awesome patch to solve<br/> the problem, which he thought would probably fix up some sub-optimal<br/> behaviour that has probably been around ever since 5.000.<br/><br/> Amid the general applause, Marcus Holland-Moritz expressed concern<br/> Chip&#39;s patch alters the signature of a public API. Chip took Marcus&#39;s<br/> concerns on board and wanted to know what the current policy was<br/> regarding the modification of a public call.<br/><br/> In a side note, Chip noted why companies like IBM et al invest on<br/> Linux but not FreeBSD, in a sub-thread relating to how difficult it is<br/> to get companies interested in supporting Perl.<br/><br/> Chip came back afterwards with a second iteration of the patch that<br/> Marcus applied with a minor tweak or two.<br/><br/><br/><br/> sort {} bug with &quot;-Dusethreads&quot; (#60374)<br/><br/> Alex Hunsaker filed a bug regarding a problem with custom sort<br/> routines in a Safe compartment on a threaded perl. He mentioned that<br/> Andrew Gierth had tracked the problem down to a difference in the<br/> implementation of stashes. In a non-threaded perl, a cop points to the<br/> stash, but in a threaded-perl a level of indirection is introduced and<br/> it points to the name of the stash.<br/><br/><br/><br/>&quot;pos()&quot; does not get stored for tainted variables (#60378)<br/><br/> Ren&eacute;e B&auml;cker, who appears to have memorised the entire set of<br/> unresolved bugs in the RT queue, was quick to point out that the<br/> person submitting this bug submitted the same bug about four years ago<br/> as bug #27344.<br/><br/> but it&#39;s still a bug<br/><br/><br/>Perl5 Bug Summary<br/><br/> 1332 (+7 -20)<br/><br/><br/><br/>New Core Modules<br/><br/> &quot;Test::More/Builder/Simple&quot; 0.86<br/><br/><br/> &quot;Attribute-Handlers&quot; 0.81<br/><br/><br/>In Brief<br/><br/> Tom Christiansen wondered about &quot;strange permissions&quot; on files, such<br/> as executable bits of files that would never be executed.<br/><br/><br/><br/> He&#39;d also like to see a useful &quot;ctags&quot; target in Makefile, which would<br/> probably require some Configure probes.<br/><br/><br/><br/> Joshua Hobbit wondered whether replacing &quot;Time::Local&quot; by<br/> &quot;Time::Y2038&quot; (that is, a notorious bug) was particularly wise in<br/> terms of names.<br/><br/><br/><br/> Jerry D. Hedden saw that change #34653 breaks DBM functionality, but<br/> Marcus was quick to make a change that he thought would repair it.<br/><br/><br/><br/> Yves Orton added some files to .gitignore.<br/><br/><br/><br/> PerlIO resource leaks on &quot;open()&quot; and then :pop in :unix and :stdio<br/> (bug #56644). Leaks no longer, thanks to GFUJI&#39;s patches, applied by<br/> Steve Peters.<br/><br/><br/><br/> And another: &quot;ungetc()&quot; to :scalar might cause problems (bug #57322).<br/> I suspect Steve went through Ren&eacute;e B&auml;cker&#39;s list of bug reports<br/> containing patches.<br/><br/><br/><br/> John E. Malmberg began to get POSIX exit mode working/tested on VMS.<br/> Applied by Craig A. Berry.<br/><br/><br/><br/> Karl Williamson wanted to use charnames in &quot;Test::More&quot; &quot;like&quot; tests,<br/> and was told to use &quot;qr//&quot; to minimise the pain.<br/><br/><br/><br/> And &quot;File::Find&quot; (bug #57926)<br/><br/><br/><br/>Last week&#39;s summary<br/><br/> This Week on perl5-porters - 20-26 October 2008<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/>-- <br/>stubborn tiny lights vs. clustering darkness forever ok?<br/> Tue, 18 Nov 2008 15:19:11 +0000 This Week on perl5-porters - 27 October-2 November 2008 by David Landgren This Week on perl5-porters - 27 October-2 November 2008<br/><br/> &quot;So we&#39;re doing things at BEGIN time in UNIVERSAL with source<br/> filters. With a garnish of messing with @ISA in some other classes.<br/> What could possibly go wrong?&quot; -- Nicholas Clark, trying to address<br/> serious bugs lurking somewhere in code this funky.<br/><br/>Topics of Interest<br/><br/>perl@34559<br/><br/> More feedback on the march to 5.8.9. Dave Mitchell fixed up the<br/> problems with &quot;SUPER&quot; method caching. Nicholas uncovered a can of<br/> worms in &quot;Attribute::Persistent&quot;.<br/><br/> Indeed, imacat had found the problem six months ago.<br/><br/> &quot;File::Path&quot; was the long pole holding up the tent for the past couple<br/> of weeks (my fault). 2.07 is now on CPAN, and addresses the symlink<br/> flaw that the Debian project uncovered.<br/><br/> slogging on<br/><br/><br/>Fix for failed Gconvert detection under C++<br/><br/> Tony Cook fixed up a C configure probe that wasn&#39;t valid under C++.<br/> H.Merijn Brand thanked him and stowed the change away in the<br/> metaconfig machinery.<br/><br/> better C park<br/><br/><br/>@{&quot;_&lt;$filename&quot;} is unreasonably tied to use of DB::DB ($^P &amp; 0x2)<br/><br/> Tim Bunce learnt that you can&#39;t introspect the source code of files<br/> without dropping down into single-step mode. This made him sad,<br/> because it meant that &quot;eval&quot;ed code was more or less out of reach of<br/> his current obsession, &quot;Devel::NYTProf&quot;.<br/><br/> Not letting such a minor issue get in his way, Tim proposed a patch to<br/> give him sufficient fine-grained control to achieve his ends. Nicholas<br/> Clark found the time to run with the patch and produce something that<br/> was compatible with 5.8.9-RC1 (yes, coming soon to a mirror near you).<br/><br/> profiling evals<br/><br/><br/><br/>Perl Unicode bug<br/><br/> On the continuing saga of Karl Williamson&#39;s single-handed battle to<br/> slay the Unicode deficiencies in Perl, Juerd Waalboer commented that<br/> &quot;use ascii&quot; had a lot going for it as a putative pragma to deal with<br/> the matter. Rafa&euml;l wanted to see &#39;legacy&#39; appear somewhere in the<br/> name.<br/><br/> Tom Christiansen penned a fine missive on the perils of &quot;\w&quot;, &quot;\s&quot;,<br/> &quot;\b&quot; and even &quot;\d&quot;, pointing out that a certain dingbat character is<br/> classified as a digit, but alas, MATHEMATICAL SANS-SERIF BOLD ITALIC<br/> CAPITAL PI isn&#39;t. Which is he&#39;s given up on all those shortcuts. As a<br/> parting gift, he offered some code to check ASCII characters against<br/> all Unicode properties and so forth.<br/><br/> Yves Orton had a look at the matter from the perspective of the<br/> regular expression engine, and felt that adding &quot;/a&quot; and &quot;/u&quot;<br/> modifiers to enforce ASCII or Unicode semantics would be horribly<br/> painful to implement, and said that he was leaning more towards<br/> ASCIIish semantics (for instance &quot;\d&quot;, &quot;\w&quot; and &quot;\s&quot; would recover<br/> their pre-Unicode meanings), the idea being that people doing Unicode<br/> can use properties instead.<br/><br/> this property is condemned<br/><br/><br/>&quot;perl5db&quot; questions<br/><br/> Edward Peschko had some questions about how the Perl debugger<br/> interacts with the perl binary, so that he could debug the debugger<br/> debugging a Perl script with gdb. Nicholas Clark pointed him in<br/> vaguely the right direction. Richard Foley suggested quite innocently<br/> to Edward that if he came up with anything useful it would be<br/> worthwhile patching the debugger or &quot;Devel::Trace&quot;.<br/><br/> a debugger&#39;s debugger<br/><br/><br/>Why are the file test operators in perlfunc?<br/><br/> Michael G. Schwern wondered with the documentation for file test<br/> operators (&quot;-f&quot;, &quot;-s&quot; ...) lives in &quot;perlfunc&quot; rather than &quot;perlop&quot;.<br/> Eirik Berg Hanssen pointed out that if such a change was made, then he<br/> would miss the &quot;perldoc -f -X&quot; shortcut.<br/><br/> David Nicol pointed out that &quot;perlfunc&quot; also mentions &quot;last&quot;, &quot;next&quot;<br/> and &quot;redo&quot;, which are flow control syntax. And thus it&#39;s easy to get<br/> at them with &quot;perldoc -f&quot; too.<br/><br/> Ren&eacute;e B&auml;cker had a patch lying around in an RT ticket (bug #27886)<br/> that, if applied, would extend the &quot;-f&quot; switch to look inside &quot;perlop&quot;<br/> as well.<br/><br/> In the end, the problem is no so much where the documentation lies,<br/> but rather one of how easy it is to obtain.<br/><br/><br/><br/><br/>RFC: &quot;qv()&quot; confusion<br/><br/> Following on from the humonguous threads about version comparison code<br/> (and the injection of things into the UNIVERSAL namespace), John<br/> Peacock put forward a proposal to try and put an end to the confusion<br/> that surrounds the issue of handling version numbers in Perl.<br/><br/> Michael G. Schwern penned a very thoughtful reply describing the<br/> problems in terms the mental representations that people have<br/> developed to remember how (they think, correctly or otherwise) version<br/> numbers work. He continued by reviewing the documentation, suggesting<br/> better examples, and pointing out that the fact that 1.2 is considered<br/> greater than 1.3.0 is a trap waiting to fool the unwary.<br/><br/> Dave Golden also chipped in with a number of sensible suggestions and<br/> volunteered to rewrite the documentation in terms of whatever changes<br/> were finally agreed upon.<br/><br/><br/><br/><br/>CPAN-1.9301 can&#39;t clean bootstrap .cpan<br/><br/> Nicholas Clark uncovered a problem with the version of the CPAN shell<br/> slated to be included in 5.8.9. Since the p5p summariser was busy with<br/> other matters In Real Life and had not wrapped up the final version of<br/> &quot;File::Path&quot;, Nicholas had the time to confer with Andreas K&ouml;nig to<br/> determine the right thing to do.<br/><br/><br/><br/><br/>Deprecating &quot;Time::Local&quot;?<br/><br/> Dave Rolsky was so impressed by Time::y2038 that he planned to rewrite<br/> Time::Local in terms of it, and add a warning saying it was deprecated<br/> and just use Time::y2038 instead kthx.<br/><br/> Jesse Vincent wanted to know if Dave meant a warning in the<br/> documentation, rather than the code, since there must be an awful lot<br/> of code in the DarkPAN that uses it. Dave did indeed mean a disclaimer<br/> in the documentation.<br/><br/> He had a second look, and decided that it wasn&#39;t even worth the hassle<br/> of trying to do anything, other than just recommending people use<br/> Time::y2038 and be done with it.<br/><br/><br/><br/>TODO of the week<br/><br/> A task that needs some Perl and internals knowledge.<br/><br/>Deparse inlined constants<br/><br/> Code such as this<br/><br/> use constant PI =&gt; 4;<br/> warn PI;<br/><br/> will currently deparse as<br/><br/> use constant (&#39;PI&#39;, 4);<br/> warn 4;<br/><br/> because the tokenizer inlines the value of the constant subroutine<br/> &quot;PI&quot;. This allows various compile time optimisations, such as constant<br/> folding and dead code elimination. Where these haven&#39;t happened (such<br/> as the example above) it ought be possible to make &quot;B::Deparse&quot; work<br/> out the name of the original constant, because just enough information<br/> survives in the symbol table to do this. Specifically, the same scalar<br/> is used for the constant in the optree as is used for the constant<br/> subroutine, so by iterating over all symbol tables and generating a<br/> mapping of SV address to constant name, it would be possible to<br/> provide &quot;B::Deparse&quot; with this functionality.<br/><br/>&quot;checkpods&quot; -&gt; &quot;podchecker&quot;<br/><br/> Woohoo! Alex Vandiver took a crack at solving the<br/> &quot;checkpods&quot;/&quot;podchecker&quot; redundancies, and supplied patches galore to<br/> do the deed.<br/><br/> TODO: patch review<br/><br/><br/>Patches of Interest<br/><br/>Module/Build/t/compat.t failure<br/><br/> Robin Barker sent in a patch to fix up an error that occurs when the<br/> &quot;PREFIX&quot; environment variable is set. Michael G. Schwern thanked him<br/> for his work, and tossed in a couple more suspect variables names into<br/> the mix.<br/><br/><br/><br/>Explicit empty while loops<br/><br/> Robin also made a couple of changes in op.c to change &quot;while(cond);&quot;<br/> constructs to &quot;while(cond) {}&quot;. He thought this made the empty loops<br/> more explicit, and besides, it silences a g++ warning. Rafa&euml;l<br/> Garcia-Suarez applied the patch in the following month.<br/><br/> meanwhile<br/><br/><br/><br/>Large omnibus patch to clean up the JRRT quotes<br/><br/> Tom Christiansen went through all the C source files and corrected the<br/> Tolkien quotes that appear at the top, and explained why it was so<br/> important. Johan Vromans wondered why Tom had cited page numbers,<br/> since these may change from edition to edition. Tom thought that a<br/> good place to note the editions used would be in &quot;perlhack&quot;, since<br/> only hackers would be likely to encounter them in the source. This was<br/> accepted.<br/><br/> Jan Dubois gathered all the Tolkien quotes Sarathy used to announce<br/> the 5.005 builds.<br/><br/> Tom went back and produced a second patch, this time against blead. He<br/> noted that ext/threads/shared/shared.xs contains a non-Tolkien quote,<br/> and wondered if a better Tolkien quote might not be found, should the<br/> original authors of the file agree. Artur responded positively to the<br/> idea.<br/><br/> Working further afield, Tom found another quote that could be applied<br/> to ext/Win32CORE/Win32CORE.c.<br/><br/> The Road goes ever on and on<br/><br/><br/><br/>Be more explicit about magic @ARGV<br/><br/> Moritz Lenz wrote a documentation patch to explain that &quot;&lt;&gt;&quot; doesn&#39;t<br/> open files from @ARGV, but passes them to &quot;open()&quot; instead. After<br/> careful review, it was applied.<br/><br/><br/><br/>New and old bugs from RT<br/><br/>&quot;Cwd::realpath&quot; doesn&#39;t work on files on Windows (#29570)<br/><br/> Andrew Pimlott could no longer recall how to trigger this bug and<br/> suggested it could be closed.<br/><br/> reply to reopen<br/><br/><br/>perl-5.10.0 glibc detected *** free(): invalid pointer: 0x553c6700 (#51238)<br/><br/> Warren Dodge was pleased to hear that Michael J. Krueger was<br/> experiencing the same problems with a module from Rational that was<br/> failing on 5.10. He lodged a bug report (a PMR) with Rational and<br/> wanted to know if Michael gave him permission to forward his report to<br/> Rational as well. No word back from Michael.<br/><br/><br/><br/>Document $var, $arg, $type and $ntype XS variables (#51992)<br/><br/> In response to Michael G. Schwern&#39;s plea for better documentation on<br/> matters XS, Ren&eacute;e B&auml;cker replied with a web page that he found useful.<br/> Living as it does in a &quot;~person&quot; home page, it would be good to get it<br/> onto the Wiki. (Hint hint).<br/><br/> but ask for permission<br/><br/><br/><br/>semi-panic: attempt to dup freed string (#54114)<br/><br/> It has to said: people make Perl do the strangest things. Consider the<br/> following program:<br/><br/> my $r = f();<br/> my @a = @$r;<br/> sub f {<br/> push @a, undef;<br/> return \@a;<br/> }<br/><br/> It works, after a fashion, but the interpreter is left dithering as to<br/> whether it should panic or not. Six months later, Dave Mitchell gave<br/> his analysis on the underlying cause.<br/><br/> half way fixed<br/><br/><br/>&quot;m/a{1,0}/&quot; compiles but doesn&#39;t match a literal string (#56526)<br/><br/> Is now an error in blead.<br/><br/> and we test!<br/><br/><br/>Can&#39;t use &quot;v[0-9]+&quot; as label (vstring) (#56880)<br/><br/> Ren&eacute;e B&auml;cker sent in a patch to correct this problem, but Rafa&euml;l<br/> didn&#39;t like the patch format, and also asked about a boundary<br/> condition (labels with colons). Ren&eacute;e replied with a better patch, but<br/> wondered if the patch responded to Rafa&euml;l&#39;s initial criticism.<br/><br/> like a version, patched for the very first time<br/><br/><br/>&quot;chr(0400) =~ /\400/&quot; fails for &gt;= 400 (#59342)<br/><br/> Yves Orton dropped by to say that he thought it was fundamentally<br/> impossible to reconcile octal escapes and backreferences within a<br/> regular expression, and that by perl 5.14, octal escapes in a regular<br/> expression should be illegal. For instance, the interpretation of<br/> &quot;\17&quot; is either the seventeenth back-reference or &quot;chr(15)&quot;, depending<br/> on spooky action at a distance.<br/><br/> Karl Williamson reiterated his request for a verdict on whether his<br/> patch is worthy or not (the main sticking point being whether it<br/> should be silent, a warning or an error, contingent as it is on<br/> machines having other than 8-bit bytes). Glenn Linderman replied, but<br/> said that the final cut belonged to the pumpking.<br/><br/> perl on a UNIVAC 2200 series?<br/><br/><br/>Program to look at char class complements (#60156)<br/><br/> Karl Williamson noted that some characters are matched by both a POSIX<br/> character class... and the complement of the same character class.<br/> Ideally, all characters should be matched by only one or the other,<br/> not both.<br/><br/> Yves Orton ran some code to probe the Unicode space, and discovered a<br/> distressingly high number of Unicode characters with the same<br/> behaviour. He explained that the problem is essentially due to a speed<br/> optimisation, and the difficulty is reconciling not slowing down<br/> non-Unicode matches against a complete rewrite of the character class<br/> implementation.<br/><br/> Yves also noted that, to a certain extent, some of the problems are of<br/> our own making, such as a discrepancy between what POSIX defines, and<br/> what is implemented in mktables. Rafa&euml;l deflected some of Yves&#39;s<br/> criticism by pointing out that &quot;perltodo&quot; already stated the how the<br/> current situation was broken. Yves continued with a post mortem of<br/> decisions past, pointing out where and when we messed up when bringing<br/> Unicode handling into Perl.<br/><br/> In another sub-thread, it took considerable traffic to define the<br/> exact POSIX equivalency of &quot;\w&quot;.<br/><br/> the &quot;you can have your pie and eat it&quot; bug<br/><br/><br/>Unhelpful error message from unpack (#60204)<br/><br/> Nigel Sandever noted that &quot;unpack &#39;v/a*&#39;, qq[a]&quot; spat out a &quot;&#39;/&#39; must<br/> follow a numeric type in unpack&quot; which was less than helpful for<br/> understanding what the problem was. Marcus Holland-Moritz agreed that<br/> the message stank and wrote a patch to make things a little clearer.<br/> Rafa&euml;l was not entirely convinced.<br/><br/><br/><br/>Stacked file operators (#60214)<br/><br/> Abigail discovered that &quot;-s -f &#39;zero-sized-file&#39;&quot; works, but &quot;-f -s<br/> &#39;zero-sized-file&#39;&quot; doesn&#39;t. Rafa&euml;l fixed it.<br/><br/><br/><br/>&quot;mro::method_changed_in(..)&quot; ignores AUTOLOAD (#60220)<br/><br/> Laurent Dami discovered that dynamically created &quot;AUTOLOAD&quot; routines<br/> in parent packages aren&#39;t seen by previously dynamically created child<br/> packages. Tony Cook offered a patch to correct this situation.<br/><br/> I told you AUTOLOAD was evil<br/><br/><br/><br/>Changing $#array in local sub array affects global $#array (#60222)<br/><br/> probably ENOTABUG<br/><br/><br/>Method cache not updated when dynamic subclass loaded through <br/>&quot;Storable::thaw&quot; (#60232)<br/><br/> &quot;Storable&quot; will &quot;require&quot; a module when asked to thaw an object.<br/> Having a coderef in @INC to catch requirements of dynamically created<br/> classes used to work in 5.8, but Laurent Dami discovered that it is<br/> broken in 5.10. He provided a snippet to demonstrate the problem, but<br/> no-one had a solution.<br/><br/><br/><br/>Broken regexp behaviour for strings produced by <br/>&quot;Crypt::Rijndael::decrypt&quot; (#60246)<br/><br/> &quot;vvv&quot; reported a problem with &quot;Crypt::Rijndael&quot;. Nicholas traced the<br/> problem down to two sources. The first one was with &quot;Crypt::Rijndael&quot;<br/> not correctly terminating C strings with a binary &quot;\0&quot;. The second was<br/> with the regular expression engine incorrectly relying on C string<br/> behaviour and looking for a zero-terminated string, instead of using<br/> the internal length attribute of the string. He suspected that it<br/> might be possible to generate an incorrect result against a Perl<br/> string containing an embedded binary zero.<br/><br/> we need a test<br/><br/><br/>croak(0) crashes (#60262)<br/><br/> Marc Lehmann uncovered a flaw with &quot;croak&quot; but elicited no comments.<br/><br/><br/><br/>&quot;threads::shared&quot; resets %hash iterators (#60294)<br/><br/> kbrintn showed a problem with hashes in threads, and how it becomes<br/> impossible to iterate over the keys within a hash of hashes.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> 1341 (+11 -9)<br/><br/><br/><br/>New Core Modules<br/><br/> constant 1.17<br/><br/><br/> Time::Local 1.19<br/> Dave Rolsky uploaded a new version of &quot;Time::Local&quot; for the 5.10.1<br/> and 5.8.9 maintenance branches, grumbling over the fact that core<br/> was patched instead of having the changes dealt with first in the<br/> CPAN version. This is an interim release until Dave and porters<br/> figure out how to deal with the module in the light of Michael G.<br/> Schwern&#39;s Y2038+ work.<br/><br/><br/><br/> This followed on from a thread started by Jan Dubois, who was<br/> anxious to see &quot;Time::Local&quot; working on 64-bit platforms<br/> post-2038.<br/><br/><br/><br/>In Brief<br/><br/> Andreas K&ouml;nig ran into a warning with &quot;installperl&quot; and offered a<br/> patch that Nicholas applied.<br/><br/><br/><br/> Karl Williamson wrote some code and asked the porters to please check<br/> if this small code snippet looks correct. But no-one did! I mean<br/> really, is it so difficult to confirm the right way to create a scalar<br/> value containing a single arbitrary unicode codepoint in UTF-8?<br/><br/> yes, apparently<br/><br/><br/> Ren&eacute;e B&auml;cker found another 7 tickets with patches in RT.<br/><br/> some assembly required<br/><br/><br/> Peter Scott wanted to have a warning on abandoned statements, thus<br/> independently reinventing bug #59802 (&quot;return 0 or die&quot;). Elliot Shank<br/> said that the problem was already solved with a &quot;Perl::Critic&quot; policy.<br/><br/><br/><br/> Steve Hay has a Cygwin installation that is still unhappy with the<br/> update to &quot;Archive::Extract&quot; 0.28.<br/><br/><br/><br/> Kevin Ryde spotted a flaw in the $Carp::Internal{__PACKAGE__}<br/> documentation example (filed as bug #60300). Rafa&euml;l Garcia-Suarez<br/> amended the documentation accordingly.<br/><br/> deceptive packaging<br/><br/><br/> Rafa&euml;l Garcia-Suarez applied Ren&eacute;e B&auml;cker&#39;s patch to solve the Too<br/> late for &quot;-CS&quot; option problem, thus closing bug #59652.<br/><br/> applied<br/><br/><br/>Last week&#39;s summary<br/><br/> This Fortnight on perl5-porters - 28 September-12 October 2008<br/><br/><br/> This Week on perl5-porters - 13-19 October 2008<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/>-- <br/>stubborn tiny lights vs. clustering darkness forever ok?<br/> Tue, 11 Nov 2008 16:46:57 +0000 This Week on perl5-porters - 20-26 October 2008 by David Landgren This Week on perl5-porters - 20-26 October 2008<br/><br/> &quot;So we have an existing bug. Sometimes \400 matches \400, and<br/> sometimes it matches \01\00, depending on what I would call spooky<br/> action at a distance. I&#39;m trying to get rid of these inconsistencies.<br/> I think something should be done here, but perhaps its not what I<br/> thought it should be. My patch follows what the code was intending to<br/> do, but perhaps we should change that intention. Please guide me.&quot;<br/> -- Karl Williamson, trudging around in the depths of Unicode.<br/><br/>Topics of Interest<br/><br/>Exported symbols: the perl API<br/><br/> H.Merijn Brand shared with us one of the more exciting aspects of<br/> configuring perl. The program goes through the source and<br/> pulls out the name of every function marked as public and saves them<br/> in global.sym.<br/><br/> H.Merijn discovered that there&#39;s no test to check see if what is found<br/> is truly available. Configure a perl with &quot;-Duseshrplib&quot; for example,<br/> and many are not.<br/><br/> Using some unportable code, he whipped up a program to list everything<br/> that was supposed to be available but wasn&#39;t. He wanted to know if a<br/> Windows expert could code up something similar that would work on that<br/> platform.<br/><br/><br/><br/>blead smoke failures for &quot;Module::Build&quot;<br/><br/> Nicholas Clark ran into inconsistencies with $^X (the name of the perl<br/> binary) but got things sorted out. I&#39;m not sure if Ken Williams pushed<br/> the changes upstream to his repository.<br/><br/><br/><br/>&quot;git-info&quot;<br/><br/> Michael G. Schwern lamented the lack of an equivalent command in git<br/> for &quot;svn info&quot;, so he wrote an analogue in Perl. Aristotle thought<br/> that he had just reinvented EasyGit. Michael had a look, was<br/> impressed, but decided that the information &quot;eg info&quot; produced wasn&#39;t<br/> of vital importance.<br/><br/><br/><br/>FreeBSD 7 &quot;libc_r&quot; detection<br/><br/> Tony Cook supplied a very welcome patch to solve the problem of<br/> configuring perl on FreeBSD 7 with threads, when the threads<br/> compatibility shims are not installed. Chris Williams had a feeling<br/> that this would allow bug #57458 to be closed.<br/><br/> So Chris set about checking the results and confirmed that the patch<br/> was good and the bug was dead.<br/><br/><br/><br/>Problems attempt to load &quot;Storable&quot;<br/><br/> While &quot;Storable&quot; was the symptom, the cause was trying to compile XS<br/> extensions with Sun&#39;s C compiler for a perl 5.6.1 compiled with gcc.<br/><br/> Nicholas Clark wrote an elaborate recipe for modifying to<br/> make things work. Andy Dougherty thought that it all made sense, but<br/> both were in agreement that the easiest way forward for Tim Smith, who<br/> posed the question initially, would be to recompile everything with<br/> Sun&#39;s compiler.<br/><br/><br/><br/>&quot;PL_ors_sv&quot; in &quot;Devel::PPPort&quot;<br/><br/> H.Merijn Brand needed to perform a &quot;local&quot;ised &quot;undef $\&quot;, which was<br/> trivial under 5.8.x and beyond, but just about impossible under 5.6<br/> due to radical differences in the underlying implementations.<br/><br/> He wondered if there was a way of pushing the problem off onto<br/> &quot;Devel::PPPort&quot;. Marcus Holland-Moritz thought it was pretty much<br/> impossible. H.Merijn contented himself with marking the module as<br/> unsuitable for use with 5.6 and below.<br/><br/> upgrade already<br/><br/><br/>DLL error messages installing &quot;Term::Title&quot; under Cygwin<br/><br/> Ruben Diez asked for help in figuring out a strange error with a fresh<br/> installation of Perl on a fresh copy of Cygwin running on Vista.<br/><br/> Alexandr Ciornii and Reini Urban diagnosed this as a &quot;rebaseall&quot;<br/> problem, and therein lay the solution.<br/><br/><br/><br/><br/>perl@34559<br/><br/> Nicholas Clark produced what he fervently hopes is the last snapshot<br/> for perl 5.8.9, with six issues outstanding. If anything else is<br/> broken, it will be for anyone else to fix.<br/><br/> Slaven Rezic posted an impressive list of modules that he had tested<br/> against recent versions of 5.8-maint, and he and Nicholas went through<br/> them. A number of failures were deemed acceptable, since they<br/> represented the nailing down of greyer parts of the implementation.<br/> Other failures were due to relying on implementation bugs that were<br/> also fixed.<br/><br/> Of the six main problems, David Landgren posted updates for<br/> &quot;File::Path&quot; and Ken Williams gave p5p co-maintainer status for<br/> &quot;Pathtools&quot;.<br/><br/> Modules were looked at, such as &quot;IO::Mark&quot;, &quot;constant&quot; and<br/> &quot;Business::ISBN&quot;. SUPER method caching was examined, as were format<br/> references.<br/><br/><br/><br/>Next API question for &quot;Devel::PPPort&quot;<br/><br/> H.Merijn Brand wanted to be able to rely on &quot;Perl_pv_pretty&quot; and<br/> &quot;Perl_pv_escape&quot; in any version of Perl. Marcus Holland-Moritz<br/> initially said that it would be difficult, but went ahead and did it<br/> anyway. This now gives H.Merijn a &quot;pv_display&quot; that does UTF-8 right.<br/><br/><br/><br/>Possible mro bug/change between 5.8.8 and 5.10.0<br/><br/> Michael G. Schwern pinned a problem in &quot;DBIx::Class::CDBICompat&quot; to a<br/> change in behaviour of MRO (method resolution order). Nicholas Clark<br/> hoped that Brandon Black, author of mro.c would be able to shed some<br/> light on the matter.<br/><br/> Matt S. Trout said that Brandon hasn&#39;t been available to look at Perl<br/> stuff for months and so he would try and find the time to look at it,<br/> but didn&#39;t make any promises as to when that could be.<br/><br/><br/><br/>How to get Test:: to output in utf8<br/><br/> Karl Williamson wanted to get UTF-8 output from &quot;Test::More&quot; but was<br/> stymied by &quot;Wide character in print&quot; warnings. Michael G. Schwern<br/> offered a couple of tips to get it to work.<br/><br/><br/><br/>Change 34559 oddity<br/><br/> Slaven Rezic wondered if the patch for FreeBSD and the legacy thread<br/> library was meant to apply to 6.x or not, since there was a<br/> discrepancy between the log message and code.<br/><br/> Nicholas admitted that the patch was wrong and 6.x was being treated<br/> the same way... but since things continued to work on 6.x, he wasn&#39;t<br/> sure whether to take it out or leave it.<br/><br/><br/><br/>TODO of the week<br/><br/> A new task that only need Perl knowledge (and an ability to use &quot;grep&quot;<br/> or &quot;ack&quot;).<br/><br/>Parallel testing<br/><br/> (This probably impacts much more than the core: also the Test::Harness<br/> and TAP::* modules on CPAN.)<br/><br/> All of the tests in t/ can now be run in parallel, if $ENV{TEST_JOBS}<br/> is set. However, tests within each directory in ext and lib are still<br/> run in series, with directories run in parallel. This is an adequate<br/> heuristic, but it might be possible to relax it further, and get more<br/> throughput. Specifically, it would be good to audit all of lib/*.t,<br/> and make them use &quot;File::Temp&quot;.<br/><br/>Patches of Interest<br/><br/>Revert const&#39;ing in cygwin.c<br/><br/> Changes to blead and backports to 5.10 left some consting problems<br/> that caused the compiler to grumble a bit. This patch was to clean up<br/> the warnings on 5.10, and appears to be Warnocked.<br/><br/><br/><br/>Refactor &quot;Perl_mem_log_*&quot; functions<br/><br/> Marcus Holland-Moritz discovered a nest of duplicate code in various<br/> logging functions, and factored out what he could into a workhorse<br/> function. He hinted that this patch needed to go in, so that he could<br/> deliver a putative &quot;SV allocation tracing&quot; patch.<br/><br/><br/><br/>Add SV allocation tracing to &quot;-Dm&quot; and &quot;PERL_MEM_LOG&quot;<br/><br/> Despite receiving no feedback from the above patch, Marcus went ahead<br/> and applied his SV tracing patch. This works by adding an additional<br/> field in debugging build to SVs, in which a unique serial number can<br/> be stored.<br/><br/> When a leak is spotted, the serial number can be read. The code is run<br/> a second time, this time setting a break-point on new_SV() watching<br/> for the creation of the SV with the same serial number. From there it<br/> usually become a trivial matter to work out who&#39;s responsible for<br/> making the mess.<br/><br/><br/><br/>Fix prototype detection for C++<br/><br/> Marcus Holland-Moritz isolated a problem with incorrect function<br/> prototypes for C++ and suggested an improvement. H.Merijn Brand, as<br/> Configure pumpking was a bit concerned since the change would have a<br/> potentially large impact. But as it turned out, the fact that he had<br/> switched Configure over entirely to git simplified the house-keeping<br/> tasks considerably.<br/><br/><br/><br/>Use of freed comppad array during &quot;clear_yystack()&quot;<br/><br/> Marcus Holland-Moritz spotted a bug that using PERL_POISON picked up.<br/> (That is, filling the contents of deallocated pointers with garbage to<br/> trigger segfaults from attempts to dereference said freed pointers).<br/><br/> The problem was that a variable was freed, set to NULL, and freed<br/> again. And in real life this works out nicely.<br/><br/> But for the sake of correctness, Marcus wrote a patch to make things<br/> work correctly, whether PERL_POISON is defined or not.<br/><br/><br/><br/>Not silently casting away constness in SV macros<br/><br/> Marcus also noticed that change #34600 corrected an erroneously<br/> consted SV, and reflected that such problems can lie buried for a long<br/> time since macros like &quot;SvREFCNT_dec&quot; blindly cast away constness,<br/> thus preventing the compiler from doing the job we asked it to do in<br/> the first place.<br/><br/> So he thought about how one might go about fixing it, and came up with<br/> some more preprocessor trickery that would allow the compiler to spot<br/> when constness was being cast away.<br/><br/> Nicholas Clark thought that this was a great idea and committed a<br/> patch to implement it. He then began to start using it, and it allowed<br/> him to fix up some problems straight away.<br/><br/><br/><br/>Watching the smoke signals<br/><br/>Smoke [5.11.0] 34541 FAIL(F) MSWin32 WinXP/.Net SP3 (x86/2 cpu)<br/><br/> Steve Hay&#39;s smoke was failing, but Steve wasn&#39;t around, so Nicholas<br/> Clark asked for someone else with access to Windows to run the tests<br/> and provide the details to understand what was going wrong. Tony Cook<br/> dug down and found that it was due to an undefined subroutine<br/> &amp;Cwd::getdcwd.<br/><br/> This allowed Nicholas to understand what was going wrong and suggest a<br/> fix, and Tony reported that it was good.<br/><br/><br/><br/>New and old bugs from RT<br/><br/>Threads support in FreeBSD 7.0 (#57458)<br/><br/> Ren&eacute;e B&auml;cker wanted to know if the recent Configure-fu for FreeBSD<br/> solved this bug.<br/><br/><br/><br/>Feature request: regexp flag to not set $1, $2 etc. (#58072)<br/><br/> Ed Avis asked if it was possible to not set $1, $2 and the like during<br/> a pattern match with captures. He listed three bug reports in the RT<br/> queue about them getting clobbered.<br/><br/> Abigail explained that this was already possible, and showed how.<br/> Norbert Buchmuller mentioned that he had patched &quot;; using the<br/> same technique (and this was one of the cited bug reports) but was<br/> waiting for someone to review (and apply) the patch.<br/><br/><br/><br/>C coding questions for Unicode problem (#58182)<br/><br/> More bikeshed discussions continued this week on how to name Karl<br/> Williamson&#39;s Unicode fixup pragma.<br/><br/><br/><br/>&quot;PerlIO::via&quot; leaks memory at a high rate (#59268)<br/><br/> Nicholas Clark looked at the problem that Marc Lehmann had uncovered,<br/> and regretted to say he wouldn&#39;t be able to fix it properly in time<br/> for 5.8.9. All is not lost though, since he thought it should be<br/> possible to push out a new version via CPAN at some later date.<br/><br/><br/><br/>&quot;chr(0400) =~ /\400/&quot; fails for &gt;= 400 (#59342)<br/><br/> Karl Williamson produced a one-line fix for this problem, and Tom<br/> Christiansen wondered if this introduced yet another meaning to octal<br/> representations, backslashed or otherwise. Karl responded that it was<br/> already a mess and he just wanted it cleaned up.<br/><br/> Glenn Linderman suggested that a better alternative would be to outlaw<br/> octal escapes larger than \377 on 8-bit-byte platforms (as one can<br/> always work around that by using hex encodings).<br/><br/> Abigail, not usually known to be fond of adding new warnings to old<br/> behaviours thought that in this particular case it might be worth<br/> spitting out a warning if an \NNN octal escape (where NNN is greater<br/> than 0377) is found in a regular expression, on the basis that it<br/> would probably point out buggy assumptions.<br/><br/> All the people who responded were in favour of Karl&#39;s patch being<br/> applied.<br/><br/><br/><br/>&quot;return 0 or die&quot; (#59802)<br/><br/> Dr. Ruud coaxed some examples of this construct from real code via a<br/> web search.<br/><br/><br/><br/>Core on syntax error! (#59950)<br/><br/> Nick Kostirya stumbled over a coredump when he used a full colon<br/> instead of a semicolon for &quot;use Data::Dumper;&quot;. Dave Mitchell replied<br/> that this has been fixed in 5.10.0.<br/><br/><br/><br/>Typo in perldata (#60022)<br/><br/> Ryan Dilworth pointed out an inconsistency in perldata regarding<br/> arrays, offsets and entries. Daniel Frederick Crisman proposed a patch<br/> to clarify matters and Marcus Holland-Moritz applied it.<br/><br/><br/><br/>(?&gt;) causes wrongness on long string (#60034)<br/><br/> Zefram pointed out a problem with the &quot;?&gt;&quot; assertion showing up in<br/> 5.10.0. Abigail thought that this was due to a variation on the theme<br/> of leaky implementation details, like the way A* is implemented as<br/> A(between 0 and 32767 times). Vincent Pit identified change #29916 as<br/> the cause.<br/><br/> Once Vincent identified the problem, he was able to suggest a few ways<br/> for solving it, each with various costs and benefits. He produced a<br/> patch for 5.8, to get rid of the immediate show-stopper.<br/><br/> 5.10/blead will require a different approach and more work.<br/><br/><br/><br/>CPAN install pauses due to &#39;ncftp&#39; error on cygwin (#60062)<br/><br/> Arthur Dunham pointed out the futility of asking &quot;ncftpget&quot; to deal<br/> with HTTP resources.<br/><br/><br/><br/>op/groups.t fails when real group name contains blanks (#60136)<br/><br/> Altblue showed that one the core tests makes an incorrect assumption,<br/> that group names may never contain spaces. If there is one, the test<br/> fails.<br/><br/><br/><br/>A number of characters match both a posix class and its complement (#60156)<br/><br/> Karl Williamson ran into more pre-existing errors and inconsistencies<br/> in Unicode, this time dealing with POSIX character classes. Yves Orton<br/> dashed off a patch that he expected to work and so was surprised when<br/> in fact it didn&#39;t. At the same time he sent out a personal Call For<br/> Papers for the next YAPC::Europe conference: someone ought to put a<br/> &quot;gdb for perl hackers&quot; session together.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> 279 new + 1062 open = 1341 (+11 -9)<br/><br/><br/><br/>New Core Modules<br/><br/> ExtUtils::MakeMaker 6.48<br/><br/><br/> SelfLoader 1.17<br/><br/><br/> Test::More/Simple/Builder 0.85_01<br/> cmp_ok() fixage warning<br/><br/><br/> Attribute-Handlers 0.80<br/><br/><br/>In Brief<br/><br/> David Golden began cleaning up the task of documenting Perl via git on<br/> the Perl wiki.<br/><br/><br/><br/> John E. Malmberg ran into a &quot;Module::Build&quot; failure on VMS that he<br/> thought had been fixed at one point by a patch that had been dropped<br/> in the meantime. But then the test succeeded without anything else<br/> happening.<br/><br/><br/><br/> John sent in some other patches for VMS, some of which Craig A. Berry<br/> was able to apply. One dealing with &quot;cwd&quot; issues, needs to be<br/> forwarded to the &quot;Pathtools&quot; developers (i.e. Ken Williams).<br/><br/><br/><br/> JCSS suggested that &quot;Storable&quot; could optionally &quot;delete %hash&quot; when<br/> doing &quot;$foo=freeze(\%hash)&quot;. Nicholas Clark pointed out that when<br/> error handling is taken into account, this becomes much more difficult<br/> than it would appear at first glance.<br/><br/><br/><br/> another Unix platform?<br/> open source BeOS!<br/> one puzzling bug<br/><br/><br/>Last week&#39;s summary<br/><br/> This Fortnight on perl5-porters - 28 September-12 October 2008<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/>-- <br/>stubborn tiny lights vs. clustering darkness forever ok?<br/> Tue, 04 Nov 2008 18:30:52 +0000 This Week on perl5-porters - 13-19 October 2008 by David Landgren This Week on perl5-porters - 13-19 October 2008<br/><br/> &quot;It&#39;s far from being a critical issue, and I&#39;m not saying that magic<br/> shouldn&#39;t be enabled there. But I&#39;d really like to see magic behave in<br/> the most predictable possible way.&quot; -- Vincent Pit, inventing a new<br/> meaning for &quot;predictable&quot;.<br/><br/>Topics of Interest<br/><br/>use bytes pragma<br/><br/> Karl Williamson, in his ongoing overhaul of Unicode handling,<br/> discovered some inconsistencies between the documentation for and<br/> implementation of the &quot;bytes&quot; pragma. As such, he wasn&#39;t willing to<br/> hazard a change, but wondered how often it was used in real life.<br/><br/><br/><br/>PATL/autorequire-0.08.tar.gz broken since perl5.8.8@30113<br/><br/> Slaven Rezic noted that refactoring in DynaLoader had caused this<br/> module to fail, and traced it down to some hairy .PL template code.<br/> Vadim Konovalov admitted guilt over the template syntax and offered to<br/> atone for his sins by writing the machinery that would allow nicer<br/> templating during the build.<br/><br/><br/><br/>ties and other filehandle bondage<br/><br/> Ricardo Signes uncovered an ugly problem with opening a file handle to<br/> a reference of a tied scalar. And while this was probably not the<br/> wisest thing to do in the first place, any error message would be<br/> better than none.<br/><br/> Vincent Pit reasoned that the best way to solve this would be to have<br/> magic triggered on every &quot;print&quot; argument, but that might be woefully<br/> expensive. Nicholas Clark thought that correctness was better than<br/> speed, and if you&#39;re into magic you probably don&#39;t care about<br/> efficiency.<br/><br/><br/><br/>blead and Glib&#39;s lazy-loader<br/><br/> Torsten Sch&ouml;nfeld reported a problem with &quot;av_clear&quot; on @ISA not doing<br/> the right thing, and having to call &quot;av_shift&quot; repeatedly instead. (I<br/> seem to remember summarising a similar issue a couple of weeks ago).<br/><br/><br/><br/>Change 32016 breaks a test in &quot;MPEG::Audio::Frame&quot;<br/><br/> Slaven Rezic uncovered a bug in &quot;MPEG::Audio::Frame&quot;. Nicholas Clark<br/> noted that this was because Yuval Kogman was a wicked man who peeked,<br/> and relied upon the implementation. Yuval admitted that the module<br/> ought to be fixed up (rather than perl), but confessed to low amounts<br/> of tuits.<br/><br/> Nicholas was also in awe of the amount of testing Slaven was doing in<br/> tracking the changes for 5.8.9.<br/><br/><br/><br/>TODO of the week<br/><br/>Add a code coverage target to the Makefile<br/><br/> Make it easy for anyone to run &quot;Devel::Cover&quot; on the core&#39;s tests. The<br/> steps to do this manually are roughly<br/><br/> * do a normal &quot;Configure&quot;, but include &quot;Devel::Cover&quot; as a module to<br/> install (see INSTALL for how to do this)<br/><br/> * make perl<br/><br/> * cd t; HARNESS_PERL_SWITCHES=-MDevel::Cover ./perl -I../lib<br/> harness<br/><br/> * Process the resulting Devel::Cover database<br/><br/> This just give you the coverage of the .pms. To also get the C level<br/> coverage you need to<br/><br/> * Additionally tell &quot;Configure&quot; to use the appropriate C compiler<br/> flags for &quot;gcov&quot;<br/><br/> * make perl.gcov<br/><br/> (instead of &quot;make perl&quot;)<br/><br/> * After running the tests run &quot;gcov&quot; to generate all the .gcov<br/> files. (Including down in the subdirectories of ext/<br/><br/> * (From the top level perl directory) run &quot;gcov2perl&quot; on all the<br/> &quot;.gcov&quot; files to get their stats into the cover_db directory.<br/><br/> * Then process the Devel::Cover database.<br/><br/> It would be good to add a single switch to &quot;Configure&quot; to specify that<br/> you wanted to perform perl level coverage, and another to specify C<br/> level coverage, and have &quot;Configure&quot; and the Makefile do all the right<br/> things automatically.<br/><br/>New and old bugs from RT<br/><br/>&quot;File::Copy&quot; module (#32135)<br/><br/> Nicholas Clark disagreed with Adriano Ferreira&#39;s comment of what was<br/> the underlying problem in this bug report. He wondered if the real<br/> problem did not in fact lie with &quot;IO::Scalar&quot;.<br/><br/><br/><br/> In a related report (&quot;File::Copy&quot; does not handle file objects sanely<br/> (bug #59650)), a rabbit supplied a patch to deal with &quot;IO::Scalar&quot;<br/> objects (which is probably why Nicholas revived the preceding bug.<br/> Nicholas had a minor quibble over the use of &quot;xor&quot; rather than &quot;ne&quot;,<br/> and wondered if there were any corner cases where they would behave<br/> differently.<br/><br/><br/><br/>Unicode problem (#58182)<br/><br/> Karl Williamson reported back on his progress in dealing with Unicode<br/> in Perl. He now has a good idea of what he wants to do, but had some<br/> questions of a practical nature regarding C coding standards. He asked<br/> a very interesting question: what is the feeling regarding the use of<br/> lookup table to push design decisions into data, rather than code.<br/><br/> Another crucial design assumption was that &quot;uc&quot; tries to convert in<br/> place if possible. Karl wondered if it would reasonable to always<br/> return a new SV regardless of whether the original container would<br/> fit, as it would simplify the code. To this latter point, Rafa&euml;l<br/> Garcia-Suarez told him to go ahead with whatever was easiest; there<br/> would always be time to optimise it later on, should the need arise.<br/><br/> In another subthread, Karl pointed people at the bikeshed and asked<br/> for colour schemes. That is, this new Unicode functionality will be<br/> enabled via a pragma in 5.10 (becoming the default behaviour in 5.12).<br/> What, then, should be the name of the pragma? Karl had a number of<br/> ideas, but was dissatisfied with all of them.<br/><br/><br/><br/>Memory leak with regex in 5.10.0 (#59516)<br/><br/> Marcus Holland-Moritz plugged the leak with a well-placed<br/> &quot;SvREFCNT_dec&quot;.<br/><br/><br/><br/>bun in perl 5.8.8 on AIX 5.3 (#59866)<br/><br/> Rainer Tammer noted a perfect 64-bit build on AIX 5.2, but *ceteris<br/> paribus* a failure AIX 5.3. A 32-bit build was fine. H.Merijn Brand<br/> was able to repeat the failure.<br/><br/><br/><br/>Variable falls out of scope but is not garbage-collected (#59882)<br/><br/> Fr&eacute;d&eacute;ric Bri&egrave;re reported a problem of a variable with no remaining<br/> references not being garbage collected. Dave Mitchell explained that<br/> method lookup caching was interfering with things and suggested an<br/> alternate syntax to Do The Right Thing.<br/><br/> Nicholas Clark thought that caching should only improve performance,<br/> not require people to jump through hoops to avoid side effects. He<br/> proposed a change to the implementation but wondered if there were any<br/> corner cases that might be affected. Dave Mitchell was reluctant to<br/> entertain any changes, since the GV implementation has not been widely<br/> studied.<br/><br/> the cold light of day<br/><br/><br/>&quot;x&quot; forces scalar context on array variables (#59884)<br/><br/> James Schneider stumbled over an edge case with &quot;x&quot;, the replication<br/> operator. Much discussion about context, parentheses and &quot;qw()&quot;<br/> followed.<br/><br/><br/><br/>&quot;\x&quot;, &quot;\0&quot;, and &quot;\N{}&quot; not ok in double-quotish when followed by &gt; \x100 <br/>(#59908)<br/><br/> Karl Williamson needs someone to tell him where to look in the source<br/> to track down the problem he summarised in this bug report.<br/><br/> help, I need somebody<br/><br/><br/>tainted values in ternary conditional (#59916)<br/><br/> Dean wanted the propagation of tainted values with ternary expressions<br/> to change, and wrote some tests to describe the behaviour he sought.<br/><br/><br/><br/>Errors in compilation (#59922)<br/><br/> Rajini S was encountering difficulties in testing a 32-bit build on<br/> HP-UX. H.Merijn Brand and Andy Dougherty thought that the new build<br/> was getting mixed up with parts of the system perl.<br/><br/><br/><br/>Memory leak when accessing &quot;%+&quot; (#59942)<br/><br/> Marc Lehmann reported a problem with &quot;%+&quot;, but Ren&eacute;e B&auml;cker thought it<br/> had already been solved in blead by change #34151, and suggested<br/> looking at bug #57024.<br/><br/><br/><br/>&quot;Modification of read-only value&quot; in grep (#59956)<br/><br/> Ed Avis set up a construct that produced a misleading error message.<br/> Eric Brine explained that the so-called modification error was due to<br/> autovivification, and suggested that it would be nice to have a better<br/> error message.<br/><br/><br/><br/>Bug in threads / perl 5.8.8 on AIX 5.2 / 5.3 (#59960)<br/><br/> Rainer Tammer found, and solved, a bug in threads on AIX. H.Merijn<br/> Brand suggested that at the very least, a maintainer for README.aix<br/> would be a great idea, should Rainer feel like volunteering.<br/><br/><br/><br/>Memory leak when using the &quot;qr&quot; operator (#59994)<br/><br/> Roland Illig independently (re-)discovered the &quot;qr//&quot; leak, only to<br/> learn it had been fixed. Marcus Holland-Moritz suggested what he hoped<br/> was an appropriate patch for Roland&#39;s 5.10.0 installation since 5.10.1<br/> is not yet shipping.<br/><br/><br/><br/>&quot;crypt()&quot; returns tainted data even when input strings are detainted <br/>(#59998)<br/><br/> Fr&eacute;d&eacute;ric Buclin uncovered some inconsistencies with tainted data when<br/> &quot;crypt&quot; is involved.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> 279 new + 1054 open = 1333 (+15 -5)<br/><br/><br/><br/>New Core Modules<br/><br/> Archive::Tar 1.40<br/><br/><br/> 1.9301<br/><br/><br/> ExtUtils::MakeMaker 6.47_01<br/><br/><br/> ExtUtils::MakeMaker 6.47_02<br/><br/><br/> Test::More/Simple/Builder 0.82<br/><br/><br/> Test::More/Simple/Builder 0.84<br/><br/><br/>In Brief<br/><br/> Yamashina Hio found that &quot;Storable::thaw&quot; segfaults on blessed<br/> reference to overloaded object and supplied a patch that Nicholas<br/> Clark was happy to apply.<br/><br/><br/><br/> Jerry D. Hedden saw some problems arising following change #33119 that<br/> integrated some consting goodness to cygwin.c.<br/><br/><br/><br/> Jerry then suggested a small lib/DB.t fix, and Nicholas Clark fixed<br/> the problem with change #34554.<br/><br/> applied<br/><br/><br/> Karl Williamson wondered if there was a document that helped porters<br/> come to grips with the use of git. The answer was to note things on<br/> the wiki. This could then be folded into perlhack at a later date.<br/><br/><br/><br/><br/> Niko Tyni pushed a Debian patch to fix &quot;h2xs&quot; enum handling with C++<br/> comments<br/><br/> unapplied<br/><br/><br/> Niko also posted a patch because &quot;h2xs&quot; incorrectly treats enum values<br/> like macros.<br/><br/> also unapplied<br/><br/><br/> While discussing the (im?)possibility of prototype-based polymorphism,<br/> Michael G. Schwern thought that &quot;Method::Signatures&quot; was probably the<br/> way to go.<br/><br/> just a smop<br/><br/><br/>Last week&#39;s summary<br/><br/> This Fortnight on perl5-porters - 28 September-12 October 2008<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/> Tue, 28 Oct 2008 08:56:13 +0000 This Fortnight on perl5-porters - 28 September-12 October 2008 by David Landgren This Fortnight on perl5-porters - 28 September-12 October 2008<br/><br/> &quot;... because a git repository is a collection of assembled changes,<br/> not a linear progression, using a commit ID as a way to find out where<br/> your code came from doesn&#39;t work. This is not git&#39;s fault but is an<br/> issue with every distributed version control system (SVK tries to<br/> pretend otherwise). You could perhaps use a combination of the git<br/> repository you pulled from and the last commit ID, but [...]<br/> fundamentally the idea is gone. It&#39;s a small price to pay.&quot; -- Michael<br/> G. Schwern, coming to terms with the future.<br/><br/>Topics of Interest<br/><br/>$VERSION in &quot;Opcode&quot;<br/><br/> The tangent regarding the issue of module version numbers and the<br/> techniques to deal with them continued apace over the last fortnight.<br/> The core of Matt S. Trout&#39;s argument over &quot;; is that it<br/> injects a method into &quot;UNIVERSAL&quot;, and this, in an of itself, produces<br/> action at a distance, even when &quot;; is not at fault. The<br/> problem shows up when &quot;; is used incorrectly by third-party<br/> code, and the resulting errors are very hard to track down.<br/><br/> All that being as it may, Matt appreciates the value of the version<br/> comparison code available, and would like to be able to get at it,<br/> while leaving &quot;UNIVERSAL&quot; untouched. Otherwise, it&#39;s akin to modifying<br/> $[ or $/ at the global level. Tom Christiansen concluded that only the<br/> highest level code should be putting things into &quot;UNIVERSAL&quot;, not by<br/> proxy via the use of other modules.<br/><br/> universal language<br/><br/><br/><br/> Later on, in a particularly magnanimous gesture, John Peacock<br/> announced that he had a patch that would do all that Matt wanted and<br/> more, and asked if Matt was satisfied by it.<br/><br/> UNIVERSAL::VERSION and<br/><br/><br/>Y2038 branch<br/><br/> Steve Hay took Michael G. Schwern&#39;s Y2038+ code for a spin in the land<br/> of Windows, and made a few adjustments to have it play nicely with the<br/> compilers there.<br/><br/> Based on Steve&#39;s recommendations, Michael produced a series of changes<br/> that ended up delivering sane results. In the end, Michael had to lift<br/> some code from the FreeBSD project to address the problem of<br/> converting strings to long longs. This helped the Microsoft compilers<br/> that still had not caught up with the C standard as of the previous<br/> millennium.<br/><br/> party like it&#39;s 1999<br/><br/><br/><br/> Later on Michael released a newer patch that included all his latest<br/> research on the matter. Steve continued to find a number of rough<br/> edges on Windows. H.Merijn Brand thought that it might be worthwhile<br/> probing for 64-bit variants of time routines on the platforms that<br/> offer them, since that the whole point of the exercise in the first<br/> place. And so he did, and said he&#39;d get around to probing for the<br/> reentrant versions as well.<br/><br/> duty now for the future<br/><br/><br/> Michael then had a patch working on Windows and Cygwin, contingent on<br/> a couple of details that needed to be resolved. Some problems turned<br/> out to involve the building of &quot;miniperl&quot; itself, which uses some<br/> canned constants before Michael&#39;s work is able to work its magic.<br/><br/> Dave Rolsky dropped by to say that he was delighted that all of this<br/> work had a positive effect on the innards of &quot;Time::Local&quot;. On the<br/> other hand, it greatly complicated the task of keeping it dual-lifed<br/> on CPAN, so much so that he doubted that the new changes would work<br/> with older perl releases. Michael showed him how this could be done<br/> with some XS goodness.<br/><br/> just in time<br/><br/><br/>Crash when dying on warning from backticks with vfork() (5.6.1 on Lamp)<br/><br/> Joshua Juran is the caretaker for Perl on the traditional Mac OS (that<br/> is, pre OS/X). Said platform doesn&#39;t know how to &quot;fork&quot;, but it can<br/> &quot;vfork&quot;. In the current state of affairs, asking a program to fork<br/> itself with something silly, like &quot;/dev/null&quot;, leads to some very<br/> interesting (read: not useful) results, in that one receives very<br/> little information as to what went wrong.<br/><br/> Joshua managed to get as far as showing how a minor change to<br/> &quot;Perl_do_exec()&quot;, &quot;Perl_my_popen()&quot;, and &quot;pp_system()&quot; would fix the<br/> problem, but he wasn&#39;t sure if his internals-fu was strong enough to<br/> consider all the ramifications.<br/><br/> Nicholas Clark reasoned that the problem Joshua faced was sufficiently<br/> weird (or rather, his platform of choice was weird) that he should<br/> write the tests to establish the desired behaviour out on the end of<br/> the continuum, and then the rest of us could just follow suit.<br/><br/> Apparently he has done this on a code repository hosted on<br/> Sourceforge, but unless I am mistaken they didn&#39;t make it to the list.<br/><br/> pneumatic tubes<br/><br/><br/><br/>Discussing the (im?)possibility of prototype-based polymorphism for 5.12<br/><br/> David Nicol responded to a previous thread (which I lack the tuits to<br/> track down) with the concept of polymorphism based on prototypes,<br/> which would, amongst other things, make the following work:<br/><br/> sub foo($$);<br/> sub bar(@);<br/><br/> bar foo 1, 2, 3, 4;<br/> # parsed as<br/><br/> bar( foo(1, 2), 3, 4);<br/><br/> He promised to investigate the possibility with his &quot;Macrame&quot; module.<br/> In the meantime, Rafa&euml;l Garcia-Suarez reminded David that prototypes<br/> in Perl are more for changing the syntax rather that type inferencing.<br/><br/><br/><br/>Small incompatibility between 5.8.8 and 5.10.0<br/><br/> Torsten F&ouml;rtsch discovered a problem that had crept into 5.10, which<br/> appears to be something to do changes to the implementation of<br/> stashes. No-one commented.<br/><br/> something new with ::<br/><br/><br/>&quot;protochk&quot; and C++<br/><br/> Tony Cook had been puzzled for a while over intermittent smoke<br/> failures when using C++ on Debian, and managed to discover that C++&#39;s<br/> function overloading mechanism was the cause. He suggested a change to<br/> a Configure test, but H.Merijn admitted that it was far outside his<br/> scope of expertise and asked for other eyes to look at it and consider<br/> the ramifications.<br/><br/> looking the other way<br/><br/><br/>TODO list for moving to git<br/><br/> Nicholas, having endured a painful bisection ordeal under Perforce to<br/> track down when something changed, wondered what was holding up the<br/> migration to git. His current problem was one of mapping a Perforce<br/> revision (a number in a monotonic sequence) to a git checksum.<br/><br/> Mark Mielke wanted to know if there was a page on the web somewhere<br/> that recorded the current status of the Perforce-git migration.<br/><br/> Michael G. Schwern offered an interesting parenthetical remark<br/> regarding the move from Perforce to git, and why it is the Right<br/> Thing. David Golden also noted that git solves the problem of<br/> branching at any point in time, hacking, and folding the changes back<br/> in a most elegant manner. The price you pay, though, is that it is<br/> very hard to point to a specific moment in development (since one only<br/> has an unsortable checksum, not a monotonic sequence).<br/><br/> Craig A. Berry, not fully versed in git-speak, was nonetheless able to<br/> describe how people would communicate points of interest in the<br/> development tree. At the same time, he thought that the barrier to<br/> entry to understanding git was much higher than that of Perforce. As<br/> it turns out, basic web projections of git repositories already come<br/> close to what the All Perl Changes browser provides.<br/><br/> gitting there<br/><br/><br/> Michael went through the git threads on the list and neatly summarised<br/> them on the Perl5 wiki. He noted with satisfaction that there were no<br/> showstoppers, just a question of tuits.<br/><br/><br/><br/>&quot;Perl_newSVpvf(&quot;%lld&quot;)&quot; is broken<br/><br/> One other item that fell out of the Y2038+ code was that, on 32-bit<br/> platforms, &quot;printf(&quot;%lld\n&quot;, 2**32)&quot; gives a result of -1. Michael and<br/> admitted to being terrified by the code and hoped someone else could<br/> dig down through it and figure out where the problem lay.<br/><br/> quad wrangle<br/><br/><br/>Pathtools QNX regression<br/><br/> Nicholas Clark looked more closely at Matt Kraai&#39;s failures for<br/> 5.8.9-tobe on QNX. He determined that it was due to a refactoring of<br/> &quot;File::Spec::Unix::abs2rel&quot; between Pathtools 3.12 and 3.13.<br/><br/> Interestingly, this dredged up an interesting piece of Perl trivia, in<br/> that for a short time, the &quot;/t&quot; flag on a regexp match maintained the<br/> taint flag if the target string was tainted. The idea lived a short<br/> life.<br/><br/> Nicholas thought that creating a new &quot;File::Spec::QNX&quot; (and the like),<br/> since it would be easier to test and would probably simplify the<br/> implementation of &quot;catdir&quot;. In any event, he wrote a patch and Matt<br/> confirmed that it fixed up the problem on QNX 6 (a.k.a QNX Neutrino,<br/> or &quot;$^O eq &#39;nto&#39;&quot;).<br/><br/> Ken Williams folded Nicholas&#39;s patch into his Pathtools repository.<br/><br/><br/><br/>git conversion discrepancy<br/><br/> Nicholas Clark uncovered a flaw in Same Vilain&#39;s Perforce-git import.<br/> Sam said he&#39;d go over the import code to see if he&#39;d missed anything.<br/> By and large most of the Perforce branches were bit-for-bit perfect.<br/><br/> ancient history<br/><br/><br/>perl@34467<br/><br/> Nicholas produced another snapshot of 5.8.9-tobe. Of note were some<br/> problems on VMS (for which fixes existed) and some minor problems with<br/> &quot;Module::Build&quot;.<br/><br/> Slaven Rezic tested some 3700 CPAN distributions and listed a dozen or<br/> so regressions. Most of them turned out to be minor, but one was an<br/> honest to goodness C error, relying on a reallocated SV landing in<br/> exactly right place.<br/><br/> getting closer<br/><br/><br/>Fedora (Assertion failure on glob assignment)<br/><br/> Nicholas Clark wailed and gnashed his teeth at vendors who insist on<br/> foisting a perl compiled with &quot;-DDEBUGGING&quot; upon their users, and<br/> pondered tweaking things to make it produce a nasty warning on STDERR<br/> during startup.<br/><br/> make it so they have to reboot<br/><br/><br/>t/op/regexp.t<br/><br/> Abigail wondered how to deal with a test that causes a segfault during<br/> program exit, since even a &quot;fresh_perl_is&quot; from will return a<br/> correct result, not seeing that $? contains a non-zero value. Michael<br/> G. Schwern thought that the expedient measure of testing $? against<br/> zero should be sufficient.<br/><br/> measuring success<br/><br/><br/>TODO of the week<br/><br/> A task that need a little sysadmin-type knowledge<br/><br/>Linker specification files<br/><br/> Some platforms mandate that you provide a list of a shared library&#39;s<br/> external symbols to the linker, so the core already has the<br/> infrastructure in place to do this for generating shared perl<br/> libraries. My understanding is that the GNU toolchain can accept an<br/> optional linker specification file, and restrict visibility just to<br/> symbols declared in that file. It would be good to extend<br/> to support this format, and to provide a means within &quot;Configure&quot; to<br/> enable it. This would allow Unix users to test that the export list is<br/> correct, and to build a perl that does not pollute the global<br/> namespace with private symbols.<br/><br/>Patches of Interest<br/><br/>Cross-compile for linux<br/><br/> Vadim Konovalov continued to deliver his patches for<br/> cross-compilation. Alas, few people with commit bits have had the time<br/> to review them and enter them into Perforce. There is hope that git<br/> may alleviate these sorts of problems.<br/><br/><br/><br/><br/>5.8.x on Interix<br/><br/> Ben Morrow reported on the test failures on Interix for 5.8.9-tobe.<br/> Jan Dubois took issue with the skipping of tests, since that might<br/> lead the underlying bugs to be swept under the carpet. Ben thought<br/> that there was a distinction to be made as to whether the test suite<br/> was testing Perl or Perl and its interaction with its host environment<br/> (such as bugs in the C library).<br/><br/> Rafa&euml;l hoped that the changes, if they were good enough for 5.8, could<br/> also make it into blead. Ben saw no reason why not, he just wanted to<br/> help get 5.8.9 out the door at the moment.<br/><br/><br/><br/>Invalid read in regdupe in maint-5.8<br/><br/> Nicholas continued to ponder what Vincent Pit had uncovered, regarding<br/> an off-by-one allocation in the regexp compiler.<br/><br/><br/><br/>New and old bugs from RT<br/><br/>Different behaviour using the &quot;-Idir&quot; option on the command line and <br/>shebang (#6665)<br/><br/> Ren&eacute;e B&auml;cker wondered why using &quot;-I&quot; on the shebang line of a Perl<br/> program appends the specified directory to @INC, rather than<br/> prepending.<br/><br/> Rafa&euml;l Garcia-Suarez explained how and why it was a feature, and Ren&eacute;e<br/> proposed a patch to make &quot;-I&quot; always prepend.<br/><br/><br/><br/><br/>&quot;return do { }&quot;: take 3 (or 4...) (#38809)<br/><br/> &quot;sub foo { do { return do { 1; 2 } }; 3 }&quot; returns undef. This is<br/> unfortunate. Vincent Pit has been chipping away at the problem, trying<br/> to solve it. This is his latest offering. He&#39;s still not happy with<br/> the fix, and suggests that it&#39;s either this, or ignore the bug.<br/><br/> tests will tell<br/><br/><br/>Perl 5.8.8 Build Failures for SunOS 4.1.3 (#59456)<br/><br/> Bob Peterson called for help in getting a new Perl running on a very,<br/> very long in tooth SunOS platform. Andy Dougherty thought that the<br/> last time he had attempted such a task was in 2001, and thought that<br/> some of the errors Bob was encountering were due compiler bugs, and<br/> that building without &quot;-O2&quot; optimisation may alleviate some of the<br/> problems.<br/><br/> Nicholas Clark identified some failures as being Mostly Harmless, but<br/> others were rather more disconcerting.<br/><br/> teaching an old dog<br/><br/><br/><br/>&quot;Unicode::UCD::casefold()&quot; does not work as documented, nor probably as <br/>intended (#58430)<br/><br/> Karl Williamson continued to work on Perl&#39;s simple-minded<br/> implementation of folding case for Unicode characters, the real-world<br/> problems that this induces, and a proposal on how to move to something<br/> that works whilst retaining backwards compatibility.<br/><br/> Rafa&euml;l asked for some background for the readers following along at<br/> home, and Karl responded with a very well written summary of the<br/> problem domain.<br/><br/> all you need to know<br/><br/><br/>Segfault on weird but plain Perl in eval on 5.10.0 on Windows (#59498)<br/><br/> Eirik Hanssen and Alexandr Ciornii pinned down some code that failed<br/> in Strawberry Perl 5.10.0 and wondered if it was common to all Windows<br/> 5.10 builds. Cygwin and Unix builds appeared to be unaffected.<br/><br/> broken windows<br/><br/><br/>Memory leak with regex in 5.10.0 (#59516)<br/><br/> Robin Hill offered an interesting bug on 5.10 that proceeded to eat<br/> all memory. The trigger was a regexp with a quotemeta&#39;ed portion and<br/> some single character character classes.<br/><br/> Nicholas Clark noted that while lots of memory gets chewed up, if the<br/> program is able to run to completion, every last byte is correctly<br/> freed. Dave Mitchell produced a smaller test case to demonstrate the<br/> leak... which still cleaned up after itself if things ended in an<br/> orderly fashion. Believed (by Nicholas) to be solved.<br/><br/><br/><br/>Surprising behaviour when &quot;$&quot; is left off $last (#59522)<br/><br/> Inside a curly brace block, even just for lexical scoping, &quot;last&quot; will<br/> take you out of it without a murmur, even if you write &quot;$x &lt; last&quot;<br/> instead of &quot;$x &lt; $last&quot;. Unfortunately there&#39;s not a whole lot that<br/> can be done about it.<br/><br/><br/><br/>&quot;readline&quot; returns EBADF at eof in 5.10.0 (#59550)<br/><br/> Mark Martinec reported that the &quot;readline()&quot; function (or a diamond<br/> I/O operator &quot;&lt;&gt;&quot;) returns a EBADF (Bad file descriptor) as its errno<br/> status on end-of-file when PERLIO is set to &quot;stdio&quot;.<br/><br/><br/><br/>Error installing a Perl 5.8.8 (#59610)<br/><br/> Leandro Gregorio needs some help with an installation on a 64-bit<br/> Linux platform.<br/><br/><br/><br/>FOLDCHAR regop not produced for &quot;\x&quot;, &quot;\0&quot;, &quot;\N{U+....}&quot; (#59616)<br/><br/> Karl Williamson is now using the latest version of blead for his work<br/> and is pushing out the bugs he encounters in Unicode case folding. His<br/> latest item is that specifying characters in hex, octal or named<br/> characters defeats the regular expression engine.<br/><br/><br/><br/>Save code generated by references in @INC (#59626)<br/><br/> Shawn Moore wanted to be able to profile code references in @INC via<br/> &quot;Devel::NYTProf&quot;, and found a number of hurdles in his way. He offered<br/> a patch that appeared to work, but Nicholas Clark pointed out that it<br/> did in fact only appear to work, and making it work would in fact be<br/> much more difficult.<br/><br/><br/><br/>Unicode problem (#58182)<br/><br/> Karl Williamson continued on his Unicode trek this fortnight, with a<br/> summary of the issues concerning this bug (for which the main point is<br/> about how to land it gracefully in 5.10 in a backwards-compatible<br/> manner, switchable via a lexical pragma). Another item is what to do<br/> about regular expressions which are compiled in one (Unicode-encoding)<br/> context and then used in another.<br/><br/> Glenn Linderman and Rafa&euml;l made a few comments, and it appears that<br/> Karl has managed to reach a concensus of sorts.<br/><br/><br/><br/>&quot;unicore/mktables&quot; expects wrong syntax from CaseFolding.txt for Turkish <br/>(#58656)<br/><br/> Karl pinned down the bug in Turkic character handling in Unicode. In<br/> his words: &quot;it appears that the Unicode folks decided they were doing<br/> the wrong thing in 3.1, and changed it in 3.2. Perl is still looking<br/> for the 3.1 syntax.&quot; That is, they snuck it in without telling<br/> anybody. Karl hopes to be able to produce a patch.<br/><br/><br/><br/>&quot;File::Copy&quot; does not handle file objects sanely (#59650)<br/><br/> Wow, another bug in &quot;File::Copy&quot;.<br/><br/><br/><br/>Too late for -CS option (#59652)<br/><br/> Either that, or too early, since no-one has the tuits to implement<br/> something that would do the right thing. In the meantime, Aristotle<br/> Pagaltzis proffered the canonical workaround.<br/><br/><br/><br/>SIGSEGV compiling regexp in 5.10.0 (#59654)<br/><br/> Salvador Fandi&ntilde;o found a way to make things go boom. But what could<br/> that pattern be used to match?<br/><br/> 6000 parens is not enough<br/><br/><br/>&quot;Cwd::realpath&quot; fails on unsearchable directory (AIX) (#59662)<br/><br/> John Wiersba showed that a short C program worked where Perl fell over<br/> and choked.<br/><br/> just need to cut&#39;n&#39;paste<br/><br/><br/>Segfault when using &quot;(?|)&quot; in regexp. (#59734)<br/><br/> Abigail gives the regexp engine indigestion, with a short, sharp &quot;perl<br/> -wE &#39;&quot;;&quot; =~ /(?&lt;a&gt;(?|(?&lt;b&gt;;)))/;&#39;&quot; to the ribs.<br/><br/> new toys broken<br/><br/><br/>Documentation issues with 5.8.8/Math/ (#59746)<br/><br/> Paging Tels. White courtesy phone.<br/><br/> unless fixed in blead?<br/><br/><br/>&quot;File::Find&quot; behaviour with files among @DIRS (#59750)<br/><br/> J. Flack noted with pleasure that &quot;File::Find&quot; does more or less the<br/> right thing when given a file as a starting point. And in fact, if it<br/> didn&#39;t, it would be incredibly awkward to make it so from the client<br/> side.<br/><br/> Unfortunately, it is completely undocumented, so his/her plea was to<br/> have it documented so that it could be relied on, unless perchance it<br/> doesn&#39;t work at all on some obscure platform.<br/><br/> when you need it, you need it bad<br/><br/><br/>Changing effective userid from root to normal user fails on Linux (#59766)<br/><br/> Markus Huaraz filed a bug report on Linux regarding the setting of $&gt;<br/> preventing perl from reading its own binary. The &quot;/proc&quot; symbol table<br/> entered the picture, but Rafa&euml;l Garcia-Suarez was unable to reproduce<br/> the problem.<br/><br/> note to self<br/><br/><br/>Not OK: perl 5.11.0 +DEVEL +patchaperlup: on i686-linux-64int <br/>2.6.22-1-k7 (UNINSTALLED) (#59776)<br/><br/> Andreas K&ouml;nig reported a smoke failure and suggested the fix (in<br/> &quot;ExtUtils::MakeMaker&quot;).<br/><br/><br/><br/>Cannot recurse inside (?|) (#59792)<br/><br/> Whilst working upon the next release of &quot;Regexp::Common&quot;, Abigail<br/> encountered some flaws in the implementation of &quot;(?|)&quot; and offered<br/> some tests to pin down the problem.<br/><br/> broke again<br/><br/><br/>Hash collision? (#59796)<br/><br/> Nope, just symbolic references that &quot;use strict&quot; would have caught.<br/><br/> priceless<br/><br/><br/>&quot;return 0 or die&quot; (#59802)<br/><br/> return doit() or die &quot;did it wrong&quot;;<br/><br/> It would be nice if that warned &quot;unreachable statement&quot;.<br/><br/> that or Perl::Critic<br/><br/><br/>Perl5 Bug Summary<br/><br/> 279 new + 1054 open = 1333 (+15 -5)<br/><br/><br/><br/>New Core Modules<br/><br/> Module::Build 0.30<br/><br/><br/><br/> ExtUtils::MakeMaker 6.46<br/><br/><br/> IPC::Cmd 0.42<br/><br/><br/> File::Fetch 0.16<br/><br/><br/> Archive::Extract 0.28<br/><br/><br/>In Brief<br/><br/> Ren&eacute;e B&auml;cker pointed out that there are many patches in RT bug<br/> reports, just begging to be applied.<br/><br/><br/><br/><br/> Michael G. Schwern suggested an improved &quot;GM/LOCALTIME_MAX/MIN&quot; search<br/> algorithm. H. Merijn Brand suggested a tweak or two.<br/><br/><br/><br/> Jim Cromie was stung by list context in assignment.<br/><br/> bad luck<br/><br/><br/> Michael G. Schwern discovered that HP&#39;s Testdrive being replaced. As a<br/> long-time resource for testing VMS issues regarding Perl, it will be<br/> greatly missed. The HP engineer that H.Merijn contacted suggested that<br/> something could be worked out.<br/><br/> thanks for all the fish<br/><br/><br/> Nicholas Clark wasn&#39;t sure if CPAN bug #39403 involved something that<br/> needed to be fixed in the core (the ability to overload or intercept<br/> an attribute, other than using a source filter).<br/><br/><br/><br/> Nicholas also proposed a wild-assed guess to allow parallel testing on<br/> Win32 but Steve Hay reported no joy. Andy Armstrong understood the<br/> resulting symptoms sufficiently to volunteer to see if he could figure<br/> out why.<br/><br/><br/><br/> Salvador Fandi&ntilde;o noted that Paul Fenwick was not the first person to<br/> whether the prototype for &quot;CORE::truncate&quot; is wrong.<br/><br/><br/><br/> Nicholas removed the missing type &quot;VSTRING&quot; in the documentation to<br/> &quot;ref&quot; since it wasn&#39;t supposed to be there at all, being an overly<br/> optimistic backport from blead.<br/><br/> bug #59264 solved<br/><br/><br/> John O&#39;Rourke ran into some odd behaviour of &quot;substr(lc($utf8))&quot; in<br/> 5.8.8 that Nicholas had fixed, he thought, thanks to a TPF grant.<br/> Since that work had made it to 5.10 and had been backported to the<br/> upcoming 5.8.9, he was happy to leave things there.<br/><br/><br/><br/> Nicholas noticed some &quot;make distclean&quot; failures, in that there were<br/> some files left over from a run of the test suite that weren&#39;t cleanup<br/> up after the target was run. Andy Armstrong began to look at cleaning<br/> things up, since he had a nagging suspicion that a number of them<br/> might be his fault.<br/><br/><br/><br/> H.Merijn Brand released &quot;Data::Peek&quot; to CPAN.<br/><br/> a collection of low-level debug facilities<br/><br/><br/> Nicholas saw a Debugger saved lines regression and wondered out loud<br/> what was the new officially sanctioned way of noting new subroutines<br/> that are defined during an &quot;eval&quot;. When the right technique is found,<br/> a test he wrote should begin to pass.<br/><br/><br/><br/> If Dave Mitchell is ignoring *you*, resend your message.<br/><br/> the tale of davem&#39;s lost emails<br/><br/><br/>Last week&#39;s summary<br/><br/> This Week on perl5-porters - 15-21 September 2008<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/>-- <br/>stubborn tiny lights vs. clustering darkness forever ok?<br/> Sun, 19 Oct 2008 20:53:31 +0000 This Week on perl5-porters - 15-21 September 2008 by David Landgren This Week on perl5-porters - 15-21 September 2008<br/><br/> &quot;This is sort of like one of those useless Windows alert boxes that<br/> pop up to tell you something perfectly normal has happened and you<br/> should do nothing. &quot;A USB device was safely removed!&quot; Yes, thank you,<br/> I just removed it. It&#39;s this sort of hand-wringing user interface<br/> design (&quot;but the user might not have expected that USB device to be<br/> removed, they should be told so they can maybe, possibly do<br/> something!&quot;) that I&#39;d like Perl to avoid.&quot; -- Michael G. Schwern,<br/> wanting numeric upgrades to JFDI.<br/><br/>Topics of Interest<br/><br/>Y2038 branch<br/><br/> Michael G. Schwern&#39;s work (in a git branch) on Y2038+ dates continued<br/> apace, with H.Merijn Brand adding some configuration hooks for minimum<br/> and maximum date values, and discussions of how to set up tests to<br/> check for sane values in the year 803619167319 or so, especially if<br/> daylight savings is still in place.<br/><br/> fresh dates<br/><br/><br/>Blead on OpenSUSE 11.0/64<br/><br/> H.Merijn Brand reported that the only failure on this platform for<br/> 5.8.9-to-be was one test in &quot;CGI&quot;. On the other hand, &quot;ODBM_File&quot; was<br/> collapsing in a heap on blead, but H.Merijn was puzzled as to why,<br/> since he was using the same configuration settings, and there has been<br/> no changes under ext/ODBM_File between 5.8.x and blead.<br/><br/> Andy Dougherty thought that 5.8.x&#39;s &quot;Configure&quot; was missing ODBM_File<br/> altogether, but blead&#39;s was a little more aggressive and found a<br/> header that led it to conclude it could try and build the extension,<br/> and this revealed that SUSE&#39;s dbm compatibility is not up to par.<br/><br/> not ODBC<br/><br/><br/>&quot;autodie&quot; behaviour with &quot;flock()&quot;<br/><br/> Paul Fenwick asked what &quot;autodie&quot; should do in the light of blocking<br/> and non-blocking file lock acquisitions, reasoning that calling<br/> flock() in blocking mode means &quot;I need this lock&quot;, whereas calling it<br/> in non-blocking mode is a question: &quot;Can I get this lock right now?&quot;.<br/> From this, he could come up with sensible behaviour for &quot;autodie&quot;.<br/><br/> The main sticking point was the possibility that a &quot;flock&quot; call<br/> returns the &quot;EWOULDBLOCK&quot; error, which is not really an error, or at<br/> least, not something worth dying for.<br/><br/> There was a long discussion about exceptions, errors and opportunistic<br/> code, but the main point to take home is when Zefram pointed out that<br/> if autodie&#39;s behaviour for flock is unsuitable, one is always free to<br/> use a &quot;no autodie &#39;flock&#39;&quot; to switch it off and handle it manually.<br/><br/> blocked on flock<br/><br/><br/> One may assume that Paul had been pulling his hair out over the issue<br/> and that the documentation wasn&#39;t much help. So he improved<br/> documentation for &quot;flock()&quot; in perlfunc.pod and tidied up the code<br/> examples for by using lexical filehandles rather than globs, checking<br/> for errors, and using constants rather than magic numbers.<br/><br/> aiding the cargo cult<br/><br/><br/>Is the prototype for &quot;CORE::truncate&quot; wrong?<br/><br/> Paul then looked at &quot;truncate&quot; in trying to figure out how to override<br/> it for &quot;autodie&quot;. His version could not take a typeglob as a<br/> parameter, as the parser thought it was a bareword, due to<br/> &quot;truncate&quot;&#39;s prototype.<br/><br/> He missed the fact that &quot;truncate&quot; can also work with the name of a<br/> file, not just a file handle, which is why the prototype had to fudge<br/> matters slightly.<br/><br/> This reminded Jan Dubois of a subtlety he encountered with &quot;unlink&quot; a<br/> while ago: &quot;unlink()&quot; will remove the file named by $_, but<br/> &quot;unlink(())&quot; does nothing. The reason for this oddity is to prevent<br/> &quot;unlink(@stuff)&quot; from unlinking whatever $_ points to, should @stuff<br/> happen to be empty.<br/><br/> Jan gave up trying to implement the same semantics in pure Perl,<br/> instead concluding that there are some core functions that are<br/> impossible to duplicate. And perl 5.10&#39;s &quot;_&quot; prototype doesn&#39;t help<br/> either, given that it imposes scalar context.<br/><br/> Rafa&euml;l wondered what would happen (what would break) if he tweaked<br/> to change the prototype to something more suitable for<br/> Paul&#39;s need. Paul wondered too.<br/><br/> trunk call<br/><br/><br/>Practical considerations in changing the integer upgrade path?<br/><br/> Michael G. Schwern asked for people&#39;s considered opinions on how<br/> painful it would really be to change the integer upgrade path from<br/> signed -&gt; unsigned -&gt; double -&gt; &quot;Inf&quot; to signed -&gt; long long (or<br/> whatever) -&gt; arbitrary precision.<br/><br/> Specifically, he wondered how one creates a new SV type, what impact<br/> would this have on the code base, and whether it would break XS code.<br/><br/> Yuval Kogman answered all three questions quite clearly. And there<br/> ended the thread.<br/><br/> and python does it right<br/><br/><br/>Change 30638 introduces regression<br/><br/> Following on from a change for bug #59168 reported by Father<br/> Chrysostomos and an error in the test suite for &quot;XML::LibXML::Simple&quot;,<br/> Nicholas Clark backed the regressing change out and added some tests<br/> to identify the problem so that that future attempts don&#39;t cause the<br/> same breakage. Dave Mitchell said he had a cold, and was thus unlikely<br/> to look at things for a while.<br/><br/> get well soon<br/><br/><br/>$* is no longer supported<br/><br/> Rory Kingan was worried about some code that crawled out of the<br/> woodwork complaining about $* no longer implemented in 5.10. Aristotle<br/> Pagaltzis looked at the regular expressions Rory posted and concluded<br/> that it was just cargo cult code that could be safely deleted.<br/><br/> night of the living regexp<br/><br/><br/>Milestone: metaconfig now under GIT<br/><br/> H.Merijn Brand thanked Sam Vilain and Abhijit Menon-Sen for helping<br/> him get &quot;metaconfig&quot; hosted entirely in git (at<br/> &lt;;), and declared its<br/> Perforce branches officially closed.<br/><br/> it&#39;s dead, jim<br/><br/><br/>Syntax incompatibility (5.8.8 vs 5.10)<br/><br/> Edward Peschko wrote about a problem with &quot;Readonly::XS&quot; that was<br/> complaining about a use of &quot;Carp::croak&quot;. This can be traced to a<br/> decision taken over three years ago to remove the loading of &quot;Carp&quot;<br/> from &quot;warnings&quot;.<br/><br/> Since the author of the module sees no reason to release a new version<br/> of the module just to fix this problem, it is unlikely that it will be<br/> fixed in the near future. Certainly there is no desire to put &quot;Carp&quot;<br/> back into &quot;warnings&quot;, and &quot;Perl::Critic::StricterSubs&quot; can be used by<br/> authors to find such problems (where client code loads module X, which<br/> in turn loads module Y, and then the client code calls routines in Y<br/> without having loaded it explicitly).<br/><br/> EWONTFIX<br/><br/><br/>TODO of the week<br/><br/> Here&#39;s a simple task that requires no C knowledge.<br/><br/>Fix tainting bugs<br/><br/> Fix the bugs revealed by running the test suite with the &quot;-t&quot; switch<br/> (via &quot;make test.taintwarn&quot;).<br/><br/> (In fact, you don&#39;t even have to fix all of them, or most of them.<br/> Just updating perltodo.pod (patches welcome!) with the list of<br/> problematic files would be a start).<br/><br/>Patches of Interest<br/><br/>&quot;icc&quot; wants &quot;-fPIC&quot; on x86_64<br/><br/> Vincent Pit offered a patch to get Intel&#39;s &quot;icc&quot; compiling XS modules<br/> correctly. Apparently this went nowhere.<br/><br/><br/><br/>Pod/ Can&#39;t call method &quot;pod2text&quot; without a package or object <br/>reference<br/><br/> Jari Aalto uncovered a problem in 5.10 with an undefined file<br/> descriptor in &quot;Pod::Text&quot;. He supplied a patch for it, which appears<br/> to be stuck in limbo.<br/><br/><br/><br/>Don&#39;t reuse temp files in tests<br/><br/> Jerry D. Hedden found some more tests that had problems with names of<br/> temporary file names being reused, so he changed them to use genuine<br/> temporary file names. Jan Dubois pointed out that this was likely to<br/> be a win for Windows systems that have on-access virus scanning, which<br/> can interfere with files that are rapidly deleted and recreated.<br/><br/> do not use a random method to generate random filenames<br/><br/><br/>Show using &quot;waitpid&quot; in &quot;IPC::Open[23]&quot; SYNOPSIS<br/><br/> brian d foy noted that the documentation recommends using &quot;waitpid&quot; to<br/> clean up, but the supplied examples don&#39;t. So he amended them to<br/> provide baseline best practices for people to use.<br/><br/> do as i say not as i do<br/><br/><br/>New and old bugs from RT<br/><br/>Volunteer for fixing the &quot;Unicode&quot; bug (#58182)<br/><br/> Back in August, when I was on my summ(?:ary|er) break, Karl Williamson<br/> filed a bug report relating to the inconsistent handling of 8-bit<br/> characters in strings during case mapping when no locale has been<br/> specified.<br/><br/> For instance, &quot;uc(&quot;\x{e0}&quot;)&quot; returns itself (&agrave;, or lowercase a grave)<br/> rather than &Agrave; (uppercase A grave). And this, regardless of whether<br/> there are any multi-byte characters.<br/><br/> As a consequence, &quot;&quot;\x{e0}&quot; =~ /\x{c0}/i&quot; fails to match. Moritz Lenz<br/> explained that this was a known bug but unfortunately was not fixable<br/> because too much code relies on the current behaviour (which Karl<br/> summarises quite nicely in the original bug report). Moritz showed how<br/> one could make things work, at the expense of a little make-work code<br/> involving &quot;utf8::upgrade&quot;.<br/><br/> Juerd Waalboer mentioned that it is fixable and scheduled for<br/> implementation in perl 5.12, and that such backwards compatibility<br/> issues have been noted in &quot;perl510delta&quot;.<br/><br/> Dave Mitchell sketched out how one might go about producing an<br/> implementation for this, which would involve breaking out the<br/> semantically overloaded &quot;SVf_UTF8&quot; flag from &quot;SvFLAGS&quot; and hanging it<br/> out in an auxilliary structure, which could be used to store<br/> additional bits of information such as character set, encoding,<br/> locales, UTF-8 caches and more, since there&#39;s no space for such<br/> extravagances in a standard SV.<br/><br/> Juerd and Glenn Linderman weren&#39;t sure it this would end up being a<br/> win. Glenn in particular thought that locale and encoding metadata<br/> should probably be associated with file handles and the like.<br/><br/> prologue<br/><br/><br/> Fast-forward to this week, when Karl reported back to the list,<br/> explaining that he&#39;d implemented the change in behaviour in a copy of<br/> 5.10 source that seemed to do the trick, and asked the list where to<br/> go from here. In a nutshell, his patch extends ASCII semantics to the<br/> characters in the 128..255 Latin1 characters.<br/><br/> Glenn Linderman explained that Karl should use a pragma to introduce<br/> this new change for code that wants to use it.<br/><br/> Rafa&euml;l amended this suggestion by saying that the Unicode situation as<br/> it stands at the moment is such a mess that no pragma would be<br/> required for 5.12: it would just Do The Right Thing and backwards<br/> compatibility be damned. If the change was back-ported to the 5.10<br/> track, then a pragma would be required in order to switch to the new<br/> behaviour.<br/><br/> Andreas K&ouml;nig pointed out that Karl should base his patches on blead,<br/> rather than 5.10. Rafa&euml;l said that starting a branch from<br/> &quot;git://; would be as good a place as any<br/> from which to start.<br/><br/> Juerd thought that Karl should have no qualms about breaking code with<br/> his changes, since a certain amount of reverse breakage would may<br/> occur, whereby existing buggy code suddenly begins to work<br/> correctly...<br/><br/> famous last words &quot;I just have to fix this bug&quot;<br/><br/><br/>Building Perl 5.10.0 in AIX 5.3 using &quot;-Duseshrplib&quot; option gives <br/>&quot;ERROR: Undefined symbol: boot_DynaLoader&quot; (#58858)<br/><br/> Tippa found a problem that (s)he was able to fix by a minor tweak to<br/> Makefile.SH and so filed a bug report. Jan Dubois repackaged the fix<br/> as a patch to H.Merijn Brand confirmed the problem and the<br/> fix, and committed it as change #34379.<br/><br/> AIX en provence<br/><br/><br/>3-arg re-open drops IO layers (#58920)<br/><br/> Frank Meisschaert discovered that if STDOUT is redirected to a UTF-8<br/> file using the 3-argument form of &quot;open&quot;, the UTF-8 layer does not get<br/> set. The work-around is to close STDOUT explicitly beforehand.<br/><br/> Michael G. Schwern confirmed that the problem exists from 5.8.8 to<br/> 5.10.0 to blead on OS/X .<br/><br/> not a team (p)layer<br/><br/><br/>&quot;grep unpack a/(a)&quot; loops and eats all memory (#58942)<br/><br/> Ambrus Zsb&aacute;n discovered a nifty way to have perl eat all available<br/> memory. Nicholas Clark reported that the problem had already been<br/> identified and fixed in blead. The correction will be backported to<br/> 5.10.1 and 5.8.9, which Nicholas said should be out within a month.<br/><br/> that&#39;s not a feature!<br/><br/><br/>Typo in CGI(3perl) man page (#59132)<br/><br/> Reuben Thomas identified two typos (in bug reports #59128 and #59130)<br/> which were either already fixed in blead, or fixed thanks to his<br/> report. Reuben found another typo in &quot;CGI&quot;, for which Ren&eacute;e B&auml;cker<br/> produced a small patch, although this will have to be pushed upstream<br/> to Lincoln Stein, &quot;CGI&quot;&#39;s maintainer.<br/><br/> meanwhile back at the CSHL<br/><br/><br/> He also found a typo in &quot;File::stat&quot; (filed in bug #59134).<br/><br/> the proof is in the reading<br/><br/><br/>Perl5 Bug Summary<br/><br/> Heading north. 268 new + 1032 open = 1300 (+6 -2)<br/><br/><br/><br/><br/>New Core Modules<br/><br/> constant 1.16<br/> S&eacute;bastien Aperghis-Tramoni uploaded what is essentially a<br/> documentation fix. Applied to blead by H.Merijn Brand.<br/><br/><br/><br/> podlators 2.1.4<br/> Russ Allbery fixed up the test suite to skip Unicode tests below<br/> 5.8, since &quot;Pod::Simple&quot; doesn&#39;t support UTF-8 encoding with those<br/> versions, and rearranged things to deal with Red Hat &quot;ispell&quot;<br/> idiosyncracies.<br/><br/><br/><br/> This followed 2.1.3, which was Russ&#39;s first attempt at addressing<br/> error handling (emitting to STDERR instead of creating a POD<br/> ERRORS section), along with the errors that H.Merijn brought up<br/> recently, where an otherwise flawless smoke run was choking on<br/> UTF-8 locales.<br/><br/><br/><br/>In Brief<br/><br/> G&aacute;bor Szab&oacute; chose &quot;Debug::Client&quot; as the name for his client for the<br/> built-in debugger.<br/><br/> now available on CPAN<br/><br/><br/> Alexandr Ciornii set up dual life for &quot;Text::ParseWords&quot;. The previous<br/> module on CPAN is 9.5 years old.<br/><br/> now available on CPAN<br/><br/><br/> Paul Marquess was worried about the complexities and potential for<br/> breakage if he created a composite distribution that contains all his<br/> &quot;Compress::Zlib&quot; / &quot;IO::Compress::Gzip&quot; / &quot;IO::Compress::Bzip2&quot;<br/> goodness. Fortunately the solution is simple and robust.<br/><br/> now available on CPAN<br/><br/><br/> Michael G. Schwern reported on &quot;Method::Signatures&quot; and the &quot;\@foo&quot;<br/> prototype, and how nice it all was.<br/><br/> now available on CPAN<br/><br/><br/>Last week&#39;s summary<br/><br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/>-- <br/>stubborn tiny lights vs. clustering darkness forever ok?<br/> Sun, 28 Sep 2008 17:33:22 +0000 This Week on perl5-porters - 8-14 September 2008 by David Landgren This Week on perl5-porters - 8-14 September 2008<br/><br/> &quot;A string in Perl is a sequence of arbitrarily large integers. If they<br/> are all &lt; 256, then you can store them all in bytes, so you can use a<br/> sequence of bytes. If some of them of them are &gt; 255, then you need a<br/> representation that allows storing such values, and a byte string is<br/> not enough. In that case, Perl stores a sequence of variable-width<br/> values encoded according to the rules of UTF-8.&quot; -- Aristotle<br/> Pagaltzis, making it seem so simple.<br/><br/>Topics of Interest<br/><br/>The great &quot;perl589delta&quot; race!<br/><br/> Paul Fencwick has put together a mailing list, RSS feeds, a repository<br/> and more for people wishing to help write the document describing the<br/> changes in perl 5.8.9. Most importantly, he wrote a micro HOWTO to<br/> show people how they could get involved (and no, you don&#39;t need to<br/> read p5p, nor this summary in order to help).<br/><br/> no more excuses<br/><br/><br/> In a related note, Andy Dougherty expunged the INSTALL file of<br/> references to 5.10.<br/><br/><br/><br/>Wrong debugger interaction with &#39;n&#39; single stepping and a panic<br/><br/> Heiko Ei&szlig;feldt didn&#39;t like the way the perl debugger doesn&#39;t know how<br/> to leap over entire &quot;map&quot; or &quot;grep&quot; blocks in a single leap when using<br/> the &#39;n&#39; command. In fact it was enough to make Heiko to make the<br/> debugger Do The Right Thing, and proposed a patch for review. Joshua<br/> ben Jore offered some good advice for making things more robust,<br/> especially when taking error handling into account.<br/><br/> source perlmonks thread<br/><br/><br/> richard foley offers encouragement<br/><br/><br/>&quot;unless(...)&quot; terser than &quot;if(!...)&quot;<br/><br/> In response to Graham Barr&#39;s counter-example using overloading that<br/> showed then &quot;if(!$foo)&quot; is not equivalent to &quot;unless($foo)&quot;, Nicholas<br/> Clark commented that this was sufficient reason not to integrate the<br/> change into a minor release, as there may be code out there that<br/> relies on an overloaded variable being true and false at the same<br/> time.<br/><br/> On the other hand, the concept is so demented that he had no qualms in<br/> breaking it for a major release.<br/><br/> another obfu bites the dust, hep hep<br/><br/><br/> Steve Hay bemoaned the fact that the unless/!if optimisation blew away<br/> his &quot;Win32API::File&quot; smokes. Vincent Pit realised that he had failed<br/> to make allowance for chained nots, as in &quot;1 if !$x or !$y or !$z&quot;,<br/> since that exceeded the size of the opcode stream that the peephole<br/> optimizer was able to consider. And, bad luck, such a code path was<br/> tweaked in itself. (Hint: we need some absurd chains of<br/> conditional tests somewhere in the test suite).<br/><br/> Nevertheless, according to the theory that being able to describe the<br/> bug means you&#39;re able to fix it, Vincent proposed a second patch that<br/> nullifies the ops rather than trying to surgically remove them.<br/><br/> no ops bad, null ops good<br/><br/><br/>Storable-2.15 on FC9<br/><br/> J. Adams was suffering in the attempt to build an ancient version of<br/> Storable (2.15) on a brand new 5.10 perl. Nicholas Clark asked if this<br/> was really necessary, since the current 2.18 is so much nicer. J.<br/> replied that yes, it was vital, since other machines in the network<br/> with older versions of Storable were digesting the output and would<br/> fail if they encountered Storable files from the future.<br/><br/> Nicholas sketched out what brain transplant surgery would be required<br/> in order to get things to work. We may assume that J. succeeded in<br/> getting things to work.<br/><br/><br/><br/>&quot;Test::Harness&quot; prove.t failures<br/><br/> Steve Hay discovered that all his smoke tests were failing simply<br/> because he had set the &quot;HARNESS_TIMER&quot; environment variable to 1.<br/> Nicholas Clark stole some code from Andy Lester&#39;s upstream<br/> &quot;Test::Harness&quot; repository that he hoped would address the problem.<br/><br/><br/><br/>blead with &quot;-Dusemymalloc&quot; fails on t/comp/hints.t<br/><br/> Vincent Pit noticed that blead is now failing in the above test file<br/> but had no idea since when. A little detective work led him to<br/> conclude that it was a question of underlying C &quot;struct&quot;s that were<br/> running into a problem of overlapping copies. While neither Rafa&euml;l<br/> Garcia-Suarez nor Nicholas were able to reproduce the error, Vincent&#39;s<br/> patch seemed sane enough to apply.<br/><br/><br/><br/>Capture the wtf8 flag<br/><br/> (Best. Subject. Line. Ever.)<br/><br/> Ricardo Signes joined a long list of illustrious Perl hackers in<br/> experiencing the pain of UTF-8, and suggesting a set of guidelines for<br/> dealing with it. Aristotle Pagaltzis laid it out in crystal clear<br/> terms (see the top of this article). Glenn Linderman tweaked<br/> Aristotle&#39;s looser prose and both of them recommended Juerd Waalboer&#39;s<br/> &quot;BLOB&quot; CPAN module that helps in times like these.<br/><br/> More advice from Glen Lindemann:<br/><br/> * Using the utf8 flag to make decisions about how to process<br/> character data is inappropriate.<br/><br/> * Using the utf8 flag to determine if it is character data or not is<br/> inappropriate.<br/><br/> So don&#39;t do that.<br/><br/><br/><br/>2038 fix<br/><br/> Michael G. Schwern is dragging Perl kicking and screaming into the mid<br/> 21st century, so that date arithmetic in the years 2039 and beyond<br/> won&#39;t collapse in a screaming heap on Unix systems. People with more C<br/> expertise than Michael are invited to join in the fun on the Google<br/> Code project that hosts the code that deals with this.<br/><br/> your children will be grateful<br/><br/><br/> Michael had so much fun with 2038 and git branching that he went ahead<br/> and produced a git branch for grafting 2038+ date arithmetic onto<br/> blead.<br/><br/><br/><br/> In the process of dealing with time values larger than 32 bits,<br/> Michael wondered about scalar upgrades that go from signed to unsigned<br/> &quot;int&quot; and thence to &quot;double&quot;, and whether it would be worth slotting a<br/> 64-bit long long in there somewhere.<br/><br/> Joshua Hoblitt suggested the Utopian int to long long to<br/> &quot;Math::BigInt&quot;. Tels, as author and maintainer of &quot;Math::BigInt&quot;<br/> pointed out that he had collected various ideas and techniques over<br/> the years to rewrite it in C, but said that this would take hundreds<br/> of hours and he didn&#39;t see how the effort could be financed, short of<br/> winning the lottery.<br/><br/><br/><br/>$VERSION in &quot;Opcode&quot;<br/><br/> Nicholas Clark wondered how one should deal with different versions of<br/> &quot;Opcode&quot; living on CPAN (insofar as it is published with each released<br/> version of Perl) whilst avoiding &quot;I must upgrade your perl&quot; arms race<br/> when someone attempts to upgrade it.<br/><br/> Rafa&euml;l thought it was pretty much a non-issue, given that Opcode is so<br/> intimately tied to the particular perl release (unlike &quot;Safe&quot; which is<br/> dual-life-clean), it cannot reasonably be upgraded. In light of this,<br/> its version number is nearly meaningless. Nicholas wondered if a<br/> &quot;1.06_01&quot; scheme could work.<br/><br/> Zefram recalled problems with &quot;Module::Build&quot; in the light of such<br/> version numbers, but John Peacock thought that &quot;Module::Build&quot; no long<br/> had any issues relating to development release numbering schemes.<br/><br/><br/><br/>&quot;Test::Smoke&quot; improvements for Windows<br/><br/> Jan Dubois, answering Steve Hay&#39;s question as to why his smokes spewed<br/> so many warnings, said that the main problem is that the smoke in<br/> question is on a 64-bit platform, even though there&#39;s precious little<br/> in the output to distinguish it from a 32-bit build.<br/><br/> The warnings arise from the fact that Perl&#39;s internals are not 64-bit<br/> clean at all. Variables are defined as I32 (32 bits in length) and get<br/> assigned &quot;size_t&quot; values (which are indeed 64 bits in length on 64-bit<br/> platforms), plus many other assorted programming sins.<br/><br/> Other 64-bit platforms are more or less immune to such problems as<br/> everything is 64 bits. Windows is singular in its approach, with<br/> &quot;int&quot;s and &quot;long&quot;s being 32 bits when &quot;IV&quot;s and pointers are 64 bits.<br/> Jan had tried to clean this up once, but wound up converting just<br/> about every single &quot;I32&quot; into an &quot;IV&quot;.<br/><br/> Andy Dougherty felt his pain, having undertaken the same task himself<br/> in days gone past. After having battled to resolve the contradictions<br/> between perl&#39;s own internals use of an &quot;int&quot;, and what the C library<br/> wants to see in terms of &quot;int&quot;, each time Andy found something much<br/> easier to do, like rewriting Perl&#39;s Unicode handling on EBCDIC.<br/><br/><br/><br/>Change 33727 (op.c) breaks constant folding in &quot;elsif&quot;<br/><br/> Alexey Tourbin uncovered a flaw in the plan to fix the longstanding<br/> &quot;wrong line number reported for &quot;elsif&quot;&quot; bug. Nicholas understood why<br/> it was going wrong, but professed lack of knowledge to figure out how<br/> the optree and peephole optimiser work.<br/><br/> Vincent Pit proposed a fairly ambitious patch to blead that fixed this<br/> issue which Rafa&euml;l applied to blead. At the same time, Rafa&euml;l also<br/> thought that the original patch was too dangerous to go into the 5.8<br/> track at least in its current state and it being so close to the 5.8.9<br/> release. Nicholas concurred, and backed the change out.<br/><br/><br/><br/>O(1) ISA isa not as great as hoped<br/><br/> Nicholas Clark related the story of Tim Bunce profiling &quot;PPI&quot; with<br/> &quot;Devel::NYTProf&quot;, and discovering that &quot;PPI&quot; spends 15% of its time<br/> living in &quot;UNIVERSAL::isa&quot;.<br/><br/> So he replaced an @ISA linear scan with a hash lookup. And then he<br/> wondered why he observed only a 1% speed improvement. Michael G.<br/> Schwern thought that the problem was probably not so much @ISA<br/> traversals something going on in &quot;isa_lookup&quot;, which contains a lot of<br/> code.<br/><br/><br/><br/>&quot;pod2man&quot; and POD errors (cpan #39007)<br/><br/> Russ Allbery asked what the porters thought of changing &quot;pod2man&quot;&#39;s<br/> error handling to emit errors to stderr, rather than building a POD<br/> ERRORS section in the document. He listed the pros and cons of each<br/> approach.<br/><br/> Alan D. Salewski voted for stderr, Zefram suggested an option to<br/> &quot;die()&quot; on error.<br/><br/> podchecker anyone?<br/><br/><br/>TODO of the week<br/><br/> Here we go, this is easy. Fame, fortune, it&#39;s all yours.<br/><br/>merge checkpods and podchecker<br/><br/> pod/checkpods.PL (and &quot;make check&quot; in the pod/ subdirectory)<br/> implements a very basic check for pod files, but the errors it<br/> discovers aren&#39;t found by podchecker. Add this check to podchecker,<br/> get rid of checkpods and have &quot;make check&quot; use podchecker.<br/><br/>Patches of Interest<br/><br/>Fix up minor formatting inconsistency in &quot;perltodo&quot;<br/><br/> When looking for the TODO of the week a couple of weeks ago, several<br/> proof-readers pointed out the POD formatting errors in the TODO<br/> section. As it was a direct steal from perltodo.pod, I sent in a patch<br/> to fix it up. But of course Nicholas Clark did a much better job of<br/> it.<br/><br/> fwp -- fun with pod<br/><br/><br/>Fix mismatched &quot;#if&quot;/&quot;#endif&quot; in Win64 configuration.<br/><br/> Jan Dubois suspected that change #33350 was responsible for deleting<br/> an &quot;#ifdef&quot; from a Windows header file. So he put it back, and Rafa&euml;l<br/> applied the change.<br/><br/><br/><br/>$ENV{TEST_JOBS} vs $ENV{HARNESS_OPTIONS}<br/><br/> Bram dug down to the bottom of a problem with the new test harness<br/> running tests in parallel and having some tests fail because they are<br/> not yet parallel-safe.<br/><br/> He thought that the problem was that &quot;Tap::Harness&quot; was not running<br/> certain tests serially because of interactions between two environment<br/> variables that govern the harness. So he wrote a patch to get the test<br/> suite testing without error, which seemed good enough for Rafa&euml;l to<br/> apply.<br/><br/><br/><br/>Cross-compilation - step 1 of N+1<br/><br/> Vadim Konovalov delivered a first patch, to Makefile.SH, in hopefully<br/> what will be a series, to get cross compilation working. The result of<br/> the patch is a new Makefile target which can then be used to kick off<br/> the compilation. Rafa&euml;l seemed pleased.<br/><br/><br/><br/>Fix parallel testing temp filenames<br/><br/> Jerry D. Hedden identified lib/charnames.t, lib/strict.t and<br/> lib/subs.t as badly behaved citizens in the brave new world of<br/> parallel testing, so he adjusted them to use the officially sanctioned<br/> temporary file name generation technique.<br/><br/> the prognosis is grim<br/><br/><br/> conform or die<br/><br/><br/>New and old bugs from RT<br/><br/>CGI &quot;multipart_init()&quot; incorrectly quotes other headers (#33118)<br/><br/> Steve Peters filed a bug in 2004 concerning a problem that the<br/> Bugzilla project had uncovered with the venerable<br/><br/> Ren&eacute;e B&auml;cker wrote a patch to address the problem, but it broke the<br/> test suite. In the time it took him rework the patch, Lincoln Stein<br/> had already fixed it in his upstream repository.<br/><br/> While this was happening Nicholas Clark piped up to get the<br/> attribution of another Windows patch from Steve Hay sorted out in the<br/> credits. Craig A. Berry also confirmed that the VMS patches that<br/> Lincoln had integrated blindly did in fact result in a clean test run<br/> for VMS.<br/><br/> 3.42 is gold<br/><br/><br/><br/>Subclassing &quot;CGI::Pretty&quot; dies in -&gt;new (#41572)<br/><br/> Nicholas Clark noted with satisfaction that as of CGI version 3.42,<br/> the blead and CPAN versions are byte-for-byte identical. The only<br/> scheduled change planned in blead is simply the architectural issues<br/> involved in placing the CGI build directory under ext/, which should<br/> not affect the source.<br/><br/><br/><br/>print doesn&#39;t overwrite $! (#43097)<br/><br/> Christoph Bussenius wrote a patch to fix this problem, which simply<br/> clears the error flag on the file descriptor each time it&#39;s called.<br/><br/> Gisle Aas pointed out the flaw in the plan. Christoph took another<br/> stab at solving the problem, but realised that with a global $!,<br/> there&#39;s not much chance at developing a robust solution. What&#39;s needed<br/> is a $! for each file handle.<br/><br/><br/><br/>debugger: &quot;o warn=0 die=0&quot; ignored (#57016)<br/><br/> Tye McQueen reported that, following a refactoring of the debugger<br/> that assigned the functionality of &quot;O&quot; to &quot;o&quot;, the above debugger<br/> command no longer did anything useful. He restored the previous<br/> behaviour (or some sort of useful behaviour) in a patch, which Rafa&euml;l<br/> Garcia-Suarez applied.<br/><br/><br/><br/>&quot;Unicode::UCD::casefold()&quot; does not work as documented (#58430)<br/><br/> In response to Karl Williamson&#39;s description of the possible options<br/> available to him to solve the problem of Unicode case folding, David<br/> Landgren offered a couple of suggestions.<br/><br/><br/><br/>unicore/mktables expects wrong syntax from CaseFolding.txt (#58656)<br/><br/> As Karl kept looking at the Unicode problems, he discovered that the<br/> &quot;mktables&quot; program, which generates the Unicode tables that the core<br/> will use afterwards, is looking for things in a file that Karl points<br/> out do not exist. He wasn&#39;t sure whether the code is just utterly<br/> wrong, or whether the Unicode Consortium changed the contents of the<br/> file at some point. Either way, something needs to be done about it.<br/><br/><br/><br/>POD for &quot;encoding&quot; pragma has triplicated section (#58774)<br/><br/> Darren Duncan suggests that of the three &quot;Side effects&quot; section in the<br/> documentation, only one is needed.<br/><br/> do not operate heavy machinery<br/><br/><br/>make test problem, perl 5.10.0 on AIX 6.1 (#58802)<br/><br/> G. Harders reported a problem building NDBM on AIX. Unfortunately, all<br/> the sympathetic AIX hackers were busy doing other things.<br/><br/><br/><br/>Not OK: perl 5.11.0 +DEVEL +patchaperlup: on i686-linux-64int <br/>2.6.22-1-k7 (UNINSTALLED) (#58848)<br/><br/> The problem is that &quot;Test::Harness&quot; is looking for, and failing to<br/> find &quot;Time::HiRes&quot;.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> 264 new + 1032 open = 1296 (+8 -5)<br/><br/><br/><br/>In Brief<br/><br/>Kawaljeet Kaur reported encountering a couple of errors building<br/>&quot;Time::HiRes&quot; with perl 5.8.8 on a justifiably ancient Solaris 2.6<br/>host. Steve Peters was more impressed by the fact that such an old<br/>operating system was able to build a recent Perl with no more errors<br/>than that.<br/><br/> teaching an old dog new tricks<br/><br/><br/> Richard Srisamang mulled over a &quot;Storable&quot; problem, whereby a data<br/> structure is read in, the structure acquires additional elements and<br/> then is written out... and the new file is smaller than the original<br/> file. Nicholas Clark suggested viewing the results in a human-readable<br/> format, such as XML (sniggering not allowed) or &quot;Data::Dumper&quot;.<br/><br/> sounds like a feature<br/><br/><br/> Tom &quot;spot&quot; Callaway is desperately seeking Rob Brown (BBB on CPAN).<br/> It&#39;s a question of licensing code on CPAN with respect to Fedora.<br/><br/> licensing issues, yummy yummy!<br/><br/><br/> G&aacute;bor Szab&oacute; is clearly mad, since he&#39;s building a GUI front-end to run<br/> debugger sessions over a network link.<br/><br/> and looking for a name<br/><br/><br/>Last week&#39;s summary<br/><br/>This Week on perl5-porters - 25-31 August 2008<br/><br/> Where it is given thanks for the work of Bram and Ren&eacute;e B&auml;cker in<br/> reducing the bug count by several hundred over the summer.<br/><br/><br/><br/>This Week on perl5-porters - 1-7 September 2008<br/><br/> No comments.<br/><br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/>-- <br/>stubborn tiny lights vs. clustering darkness forever ok?<br/> Tue, 23 Sep 2008 02:50:25 +0000 This Week on perl5-porters - 1-7 September 2008 by David Landgren This Week on perl5-porters - 1-7 September 2008<br/><br/> &quot;These [tests] are new and also fail in blead. The watchdog that is<br/> supposed to only kill a stuck process is definitely not waiting 120<br/> seconds, and when it fires it takes out the process from which Perl<br/> was started. Maybe that&#39;s intentional, but it did surprise me the<br/> first time my telnet session disappeared.&quot; -- Craig A. Berry,<br/> bringing maint goodness to VMS<br/><br/>Topics of Interest<br/><br/>Request &quot;does_ok()&quot; as per &quot;isa_ok()&quot; in &quot;Test::More&quot;<br/>*et al*<br/><br/> Darren Duncan wanted to see a &quot;does_ok()&quot; appear in &quot;Test::More&quot; that<br/> would perform a &quot;does&quot; on its argument rather than an &quot;isa&quot;. This<br/> would be helpful in role-based programming.<br/><br/> Matt Trout noted that this is already implemented in &quot;Test::Moose&quot; and<br/> thought that this was the best place for it. Rafael Garcia-Suarez<br/> thought that he would have paid more attention to the matter had it<br/> been related to the new &quot;UNIVERSAL::DOES&quot; in 5.10.<br/><br/> chromatic wondered whether &quot;Moose&quot; (in 5.8) was doing something<br/> dramatically different from &quot;UNIVERSAL::DOES&quot;.<br/><br/> does it indeed<br/><br/><br/>Perl-5.8.6 or Perl-5.8.5 Install/Build process on AIX 5.3<br/><br/> Over the space of about 30 hours, H.Merijn Brand, assisted by Andy<br/> Dougherty helped Mohammed Arshad get Perl 5.8.8 up and running on AIX<br/> 5.3. They nearly got DBD-Oracle running as well, but thankfully<br/> Nicholas put an end to the thread when he suggested that the<br/> &quot;dbi-users&quot; mailing list was a better venue for such matters.<br/><br/> the doctor is [in]<br/><br/><br/>Smartmatch with regex in list context<br/><br/> Moritz Lenz forwarded a link to a Perlmonks discussion where it is<br/> shown that smartmatching against a regular expression doesn&#39;t behave<br/> the same way a regular match when in list context. That is, the<br/> following:<br/><br/> my @a = &#39;aaa&#39; =~ /./g; # match<br/> my @b = &#39;bbb&#39; ~~ /./g; # smart-match<br/><br/> don&#39;t do the same thing. Aristotle Pagaltzis pointed out that changing<br/> this would introduce a difference in behaviour compared to using a<br/> string in list context. Moritz argued that changing things to his way<br/> of thinking would be more in line with Perl 6.<br/><br/> smartest smart match<br/><br/><br/><br/>Forcing older perl to use an older version of cpan module?<br/><br/> Chia-liang Kao uploaded a shiny &quot;B::Utils&quot; to CPAN, only to discover<br/> that it fails to compile on 5.6.2, and wanted to know what was the<br/> best way to signal to people trapped in 5.6-land to not attempt to<br/> install this upgrade.<br/><br/> Nicholas Clark wanted to know why a &quot;use 5.008&quot; would not suffice.<br/> Eric Wilhelm suggested that such a task (getting this new release to<br/> work on 5.6 -- the exact details are rather minor) is exactly the sort<br/> of thing one would pay a vendor to take care of. This amused Nicholas<br/> no end.<br/><br/> chromatic took the opportunity to ask a number of questions to try and<br/> understand why it&#39;s so hard to release a new version of Perl. To his<br/> way of thinking, it should be so simple that people could upgrade<br/> their perl (and not just a module or two), easily and without fuss.<br/><br/> Jesse Vincent, speaking with the hindsight of Parrot&#39;s monthly release<br/> schedule, wanted to know how one would go about doing something<br/> similar for Perl 5. chromatic responded with a nineteen point plan. A<br/> number of people volunteered to fill in the slots proposed in<br/> chromatic&#39;s Plan.<br/><br/> just upgrade already<br/><br/><br/>TODO list for moving to git<br/><br/> Ricardo Signes wanted a TODO list for moving to git to see the light<br/> of day. The move was proposed in March, and six months later we&#39;re<br/> still in Perforce. Nicholas responded with six main points.<br/><br/> H.Merijn Brand requested a cheat-sheet for hardcore Perforce users to<br/> help them get up to gitspeed. Craig A. Berry pointed out that a major<br/> smoker issue is that smoking is carried out by keeping track a<br/> monotonical patch sequence. When the switch to git is made, that will<br/> be replaced by an opaque digest string, so it becomes difficult to<br/> figure out whether one is up to date.<br/><br/> Perlbrowse (the web viewer of the change history) is another major<br/> piece of work that will need to be taken care of.<br/><br/> Many of the popular platforms have working git implementations these<br/> days, VMS being the major exception to the rule.<br/><br/> git along<br/><br/><br/>Hosting Perl&#39;s git<br/><br/> Yuval Kogman despaired at the waffling in the first git thread, and so<br/> he started a new JFDI git thread. While he was right in suggesting<br/> that the git migration doesn&#39;t have to occur all at once, Nicholas<br/> Clark reminded him that lots of commits are made to codebase each and<br/> every day, which means that the switch-over needs to be done with<br/> minimal down-time.<br/><br/> fast flux changelogs<br/><br/><br/>maintperl-5.8.x&#39;s &quot;IPC::SysV&quot; fails tests on Mandriva<br/><br/> Shlomi Fish reported problems with 5.8.9-tobe building &quot;IPC::SysV&quot;,<br/> and this turned out to be a problem due to an &quot;rsync&quot; not removing<br/> files orphaned files from the build. This can be done with the<br/> &quot;--delete&quot; switch.<br/><br/> Nicholas Clark has always been reluctant to put that in the<br/> instructions, because if the &quot;rsync&quot; command is run from the wrong<br/> place, a lot of files can wind up being unexpectedly deleted. He<br/> thought that an improved recipe involving &quot;--dry-run&quot; might be called<br/> for.<br/><br/> the kitchen rsync<br/><br/><br/>Perl with dtrace support built in<br/><br/> Edward Peschko, having read about Andy Armstrong&#39;s, Alan Burlison&#39;s<br/> and Seven Dowideit&#39;s efforts to build a dtraced perl, wondered if it<br/> was available yet in the standard or a vendor distribution.<br/><br/> Nicholas explained that it was in blead and the 5.10 track, so it will<br/> see the light of day first as 5.10.1. Steffen M&uuml;ller announced that he<br/> updates his 5.10 installation directly from the source tree from time<br/> to time and uses it directly in production... and is very happy with<br/> the results.<br/><br/> Andy Armstrong posted a patch for people who want to dtrace 5.10.0<br/> now, today.<br/><br/> dtrace probity<br/><br/><br/>Helping with 5.8.9<br/><br/> After Nicholas Clark told Paul Fenwick that he would not be able to<br/> review Paul&#39;s &quot;autodie&quot; work before getting 5.8.9 out the door, Paul<br/> put that aside for the moment and promised, in between holding Perl<br/> training sessions dressed up as a pirate, that he would avail himself<br/> to writing the perl589delta document.<br/><br/> After examining the size of the Changes file, he announced that he was<br/> going to chop it up month by month, and farm them out to willing<br/> victim^Wvolunteers to try and get some parallel processing happening.<br/><br/> it&#39;s alive<br/><br/><br/> After starting to knock some sense into the document, Paul issued a<br/> wider call for assistance.<br/><br/> now for the paperwork<br/><br/><br/>Git for perforce users<br/><br/> Yuval also took a crack at writing a cheat-sheet for git, which was<br/> reviewed by Rafa&euml;l Garcia-Suarez and Aristotle Pagaltszis.<br/><br/> git crit(?:ic|ter)s apply within<br/><br/><br/>maint-5.8@34289 on VMS<br/><br/> Craig A. Berry gave an update on the current problems that maint has<br/> on VMS. A couple of VMSperlers piped up with suggestions, and at the<br/> end of the thread there was a solution for taking out the perl process<br/> rather than its controlling terminal, and a solution to a &quot;sleep&quot;<br/> waking up too early and causing a watchdog to bark too soon.<br/><br/> more songs about building and VMS<br/><br/><br/>perl@34300<br/><br/> Nicholas Clark released a snapshot of what 5.8.9 is likely to look<br/> like. Robin Barker found a problem with &quot;IPC::SysV&quot; and suggested a<br/> solution. Nicholas thanked him for the feedback.<br/><br/> If *you* download the snapshot and find a problem, Nicholas will thank<br/> *you*, too.<br/><br/> still smoking<br/><br/><br/>PathTools CPAN vs. blead<br/><br/> Nicholas asked about a problem that arose last year concerning %ENV<br/> traversal on VMS, in that the contents can change more or less<br/> asynchronously. John E. Malmberg explained that that&#39;s how things work<br/> on VMS: the environment table is mapped to VMS&#39;s logical names<br/> infrastructure, which is system-wide in scope and thus may be in a<br/> permanent state of flux.<br/><br/> not quite Unix<br/><br/><br/>TODO of the week<br/><br/> Smoke maint-5.8. Seriously. On any weird platform and/or compiler you<br/> can lay your hands on.<br/><br/>Patches of Interest<br/><br/>AutoLoader 0.67<br/><br/> Steffen M&uuml;ller offered a patch that synchronised the CPAN version of<br/> &quot;AutoLoader&quot; with bleadperl and said that it would be safe to apply it<br/> to the 5.8 and 5.10 tracks as well. Nicholas Clark applied it to<br/> blead.<br/><br/><br/><br/>New and old bugs from RT<br/><br/>&quot;Unicode::UCD::charinfo()&quot; does not work on 21 Han codepoints (#58428)<br/><br/> Karl Williamson set in a patch to fix this up for UCD 4.1 and beyond<br/> and suggested it may work for earlier versions. Un-looked-at.<br/><br/><br/><br/>&quot;Unicode::UCD::casefold()&quot; does not work as documented, nor probably as <br/>intended (#58430)<br/><br/> Karl also spent more time on this related bug by plumbing the depths<br/> of the text file that stores the case folding information. While the<br/> file is poorly documented, he was able to draw some reasonable<br/> conclusions by empirical observation.<br/><br/> From his analysis, he concluded that the &quot;casefold()&quot; function doesn&#39;t<br/> follow the ideal case folding algorithm. In which case, it needs work.<br/><br/> raise you an lc()<br/><br/><br/>Bus error with constant + overload + stash manipulation + bless (#58530)<br/><br/> Father Chrysostomos showed how a particularly twisted blend of code<br/> can make the interpreter throw up its hands in a panic.<br/><br/> bless my soul<br/><br/><br/>Compiling PERL 5.8.8 on AS/400 PASE environment. (#58566)<br/><br/> Wayne Johnson was trying to compile on an AS/400 environment, received<br/> a weird error from &quot;Configure&quot; regarding the impossibility of finding<br/> a Bourne shell on the system, and then Wayne referred to AIX.<br/><br/> This left H.Merijn Brand confused as to which environment Wayne was<br/> really using.<br/><br/><br/><br/>&quot;Data::Dumper&quot; and slashes within qr (#58608)<br/><br/> Tina posted a short, sweet snippet showing how &quot;Data::Dumper&quot; gets<br/> confused over a string that is defined as &quot;q( \/ )&quot; and then used as a<br/> regular expression via &quot;qr()&quot;. &quot;Data::Dumper&quot; makes a mess of escaping<br/> things and as a result its output cannot be &quot;eval&quot;&#39;ed back again to<br/> recover the pattern.<br/><br/> Bram was able to produce a number of variations on the theme, but was<br/> at a loss as to how to fix it. He saw how the code in &quot;Data::Dumper&quot;<br/> blindly tried to escape &quot;/&quot; slashes so that it could emit the pattern<br/> as &quot;qr/$whatever/&quot;. &quot;Data::Dump&quot; goes to a lot more effort to try and<br/> find some reasonable delimiters, but Bram suspects that even there the<br/> code doesn&#39;t really solve the problem, just reduces the possibility of<br/> failure down into a smaller range.<br/><br/> David Nicol suggested returning a &quot;do&quot; block that would &quot;eval&quot; the<br/> pattern back into existence correctly.<br/><br/> no-one evals Data::Dumper output, right?<br/><br/><br/>&quot;foreach @foo (@bar)&quot; causes segfault with &quot;namespace::clean&quot; (#58614)<br/><br/> Yuval Kogman wanted to iterate with an array variable over an array.<br/> When &quot;namespace::clean&quot; is near by, one has a choice between a<br/> segfault or a bus error. Yuval thought the problem with the parse<br/> error (hint: you cannot iterate with an @array) was causing &quot;%^H&quot; to<br/> be cleaned up poorly and thus creating a cascade of garbage collection<br/> problems.<br/><br/> Dave Mitchell was of course able to boil the problem down to a pair of<br/> simple files that used no other modules. This allowed him to figure<br/> out what was probably going on underneath the hood, but admitted not<br/> having much time to investigate any further.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> 263 new + 1030 open = 1293 (+5 -2)<br/><br/><br/><br/>New Core Modules<br/><br/> &quot;Test::More&quot; 0.81_01<br/> Michael G. Schwern announced a development snapshot of<br/> &quot;Test::More&quot; replete with shiny goodness and a solution for a 4<br/> year old bug report. Andreas K&ouml;nig announced that it caused a<br/> failure in &quot;Sub::Uplevel&quot;&#39;s test suite.<br/><br/><br/><br/>In Brief<br/><br/> Nicholas Clark recalled that things were simpler in the old days. The<br/> original test harness had about 6 lines of useful code. These days it<br/> contains quite a lot more...<br/><br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/>-- <br/>stubborn tiny lights vs. clustering darkness forever ok?<br/> Mon, 15 Sep 2008 09:31:12 +0000 This Week on perl5-porters - 25-31 August 2008 by David Landgren This Week on perl5-porters - 25-31 August 2008<br/><br/> &quot;I must admit that I find Perl&#39;s Unicode support completely baffling.<br/> I&#39;ve read the documentation multiple times, and while I can now<br/> predict when it won&#39;t work, I still have no idea how to get it to do<br/> what I want. It&#39;s kind of frustrating; I don&#39;t know if I&#39;m just dim,<br/> or if I&#39;m missing some magic bit of documentation, or if the support<br/> is just really confusing.&quot; -- Russ Allbery, shooting fish in a barrel.<br/><br/>Topics of Interest<br/><br/>Profiling parallel tests<br/><br/> On the 17th of August, Nicholas Clark kicked off a thread about<br/> applying Test::Harness&#39;s version 3 goodness to the task of running the<br/> core test suite, which offers a satisfying halving of the time taken.<br/><br/> One thing that surprised him was how much CPU the harness itself used:<br/> if that could be reduced, things would go even faster. Andy Armstrong<br/> thought that O(N&sup2;) algorithms might be extracting their dues from<br/> large numbers of test files.<br/><br/> Over the following couple of days, Aristotle Pagaltzis pondered<br/> various strategies for rewriting the hot spots. Steve Hay was dismayed<br/> to discover that no parallelism was available on the Windows platform,<br/> since the technique requires being able perform a &quot;select&quot; system call<br/> on a file handle, and Windows doesn&#39;t like doing things that way.<br/><br/> blogged<br/><br/><br/><br/><br/>Wrong RE match in 5.10.0<br/><br/> Gisle Aas mentioned that a slightly impaired regular expression used<br/> to dump core on 5.8.8. These days, with an iterative engine under the<br/> hood of 5.10, it no longer dumps core... unfortunately, it returns the<br/> wrong result. Bram was able to simplify the test case to highlight<br/> what was happening.<br/><br/> Abigail showed that the problem was in fact that * (0 or many times)<br/> is implemented as &quot;no more than 32766 times&quot;. This is horribly<br/> reminiscent of CP/M, and Dave Mitchell thought that it would be really<br/> nice if this limit could die a quick death. Nicholas Clark was unsure<br/> as to how that could be brought about.<br/><br/> In the meantime, it would be better if hitting this limit caused the<br/> engine to die, rather than merely warn (which you don&#39;t even hear<br/> about if warnings are switched off).<br/><br/> shades of Advice from Klortho, #11912<br/><br/><br/>&quot;dprofpp&quot; enhanced<br/><br/> With all the cool kids playing around with &quot;Devel::NYTProf&quot;, it was<br/> good to see someone lavish some tender loving care on &quot;Devel::DProf&quot;.<br/> Which is what Daniel Pfeiffer did by adding some new functionality to<br/> &quot;dprofpp&quot;. No-one picked the patch up.<br/><br/><br/><br/>Regaining &#39;O&#39;s<br/><br/> H.Merijn Brand was saddened by smoke tests failing, simply because a<br/> UTF-8 locale was in use and &quot;Pod::Man&quot; was getting needlessly confused<br/> and thus marring an otherwise perfect run.<br/><br/> After a moment of confusion, Russ Allbery realised that the problem<br/> probably lay with &quot;Pod::Simple&quot;, and all that was needed was to add an<br/> &quot;=encoding&quot; directive to the POD test file. After some Unicode<br/> guidance from Juerd Waalboer, Russ saw the light and prepared a patch<br/> that solved the problems and looked sane at the same time.<br/><br/> Russ was a little scared by what the Correct Use of Unicode entailed<br/> in a program and thought it was incredibly complex. Juerd explained<br/> that there were three main techniques for dealing with Unicode, and<br/> showed where PHP, Perl 5 and Perl 6 fitted in the grand scheme.<br/><br/><br/><br/>Proposed pragma/module &quot;ensure&quot;<br/><br/> Chris Hall has written a pragmatic module currently named &quot;ensure&quot;<br/> that attempts to check for undefined subroutine. The denizens of<br/> &quot;comp.lang.perl.modules&quot; advised him to get in touch with the porters<br/> (on this list) for guidance and feedback on the idea. Unfortunately he<br/> received none.<br/><br/><br/><br/>Moving lib/ modules to ext/?<br/><br/> Nicholas Clark explained that he had not got very far in the process<br/> of moving core modules from /lib to /ext, and noted that it would<br/> probably take off once the move to git was complete.<br/><br/><br/><br/> When Jerry D. Hedden pointed out that non-XS modules get built<br/> incorrectly, Nicholas wondered if it were as simple as looking for XS<br/> files in the build directory and in the process discovered a<br/> sub-optimal &quot;File::Find&quot; construct that had been in the &quot;installperl&quot;<br/> Makefile target all the way back to change #18.<br/><br/><br/><br/> Nicholas went ahead and committed the fix that Jerry wrote to deal<br/> with the above problem, and in doing so, he came to the conclusion<br/> that it would probably fix a bug that no-one had reported yet.<br/><br/><br/><br/> So Jerry fixed it.<br/><br/><br/><br/>&quot;unless(...)&quot; terser than &quot;if(!...)&quot;<br/><br/> Nicholas noticed that an &quot;unless($x)&quot; uses one less op than &quot;if(!$x)&quot;,<br/> and so he asked whether it was possible to optimise the latter into<br/> the former (or, more precisely, where one would go about doing it).<br/><br/> Vincent Pit returned a day later with a proof of concept patch which<br/> did just that. As usual with Vincent&#39;s patches, after explaining the<br/> difficulty in addressing all that needs to be taken care of, one is<br/> surprised by how little C code is needed to solve the problem.<br/><br/> Graham Barr warned that overloading can cause &quot;unless&quot; to behave in a<br/> most curious manner, but Yitzchak Scott-Thoennes thought that it<br/> wouldn&#39;t be an issue in practice.<br/><br/><br/><br/>Blead changes to &quot;ExtUtils::CBuilder&quot;<br/><br/> Ken Williams wondered about the reasoning for a line that played<br/> around with name of the linker and compiler executables used to<br/> compile external C code. Reini Urban explained that Cygwin&#39;s<br/> implementation of &quot;EU::CB&quot; is derived from<br/> &quot;ExtUtils::CBuilder::Platform::Unix&quot;, and the patch is to undo the<br/> brain damage in the parent.<br/><br/> Ken was not in favour of adding a hack to undo a mistake, and wanted<br/> to fix the problem upstream. Nicholas Clark summarised the problem<br/> nicely, explaining that traditionally on Unix, the same front-end<br/> program can be used for the tasks of compiling and linking. Other<br/> platforms require one to use the linker program directly, and the perl<br/> configuration doesn&#39;t really capture this distinction nicely.<br/><br/> So Nicholas wrote a TODO item for it, which you may read about below.<br/><br/><br/><br/>Probably unwanted behaviour of lexical filehandles<br/><br/> Dr. Ruud ran into two types of behaviour when opening a input pipe,<br/> depending on whether a package variable or a lexical variable was<br/> used. Dave Mitchell explained that the results are due to the fact<br/> that package variables aren&#39;t cleaned up during global destruction<br/> (unless you ask for it nicely), whereas lexical variables are always<br/> destructed.<br/><br/><br/><br/>TODO of the week<br/><br/>Split &quot;linker&quot; from &quot;compiler&quot;<br/><br/> Right now, Configure probes for two commands, and sets two variables:<br/><br/> * &quot;cc&quot; (in cc.U)<br/><br/> This variable holds the name of a command to execute a C compiler<br/> which can resolve multiple global references that happen to have<br/> the same name. Usual values are cc and gcc. Fervent ANSI compilers<br/> may be called c89. AIX has xlc.<br/><br/> * &quot;ld&quot; (in dlsrc.U)<br/><br/> This variable indicates the program to be used to link libraries<br/> for dynamic loading. On some systems, it is ld. On ELF systems, it<br/> should be $cc. Mostly, we&#39;ll try to respect the hint file setting.<br/><br/> There is an implicit historical assumption from around Perl5.000alpha<br/> something, that $cc is also the correct command for linking object<br/> files together to make an executable. This may be true on Unix, but<br/> it&#39;s not true on other platforms, and there are a maze of work arounds<br/> in other places (such as Makefile.SH) to cope with this.<br/><br/> Ideally, we should create a new variable to hold the name of the<br/> executable linker program, probe for it in Configure, and centralise<br/> all the special case logic there or in hints files.<br/><br/> A small bikeshed issue remains - what to call it, given that $ld is<br/> already taken (arguably for the wrong thing now, but on SunOS 4.1 it<br/> is the command for creating dynamically-loadable modules) and $link<br/> could be confused with the Unix command line executable of the same<br/> name, which does something completely different. Andy Dougherty makes<br/> the counter argument &quot;In parrot, I tried to call the command used to<br/> link object files and libraries into an executable link, since that&#39;s<br/> what my vaguely-remembered DOS and VMS experience suggested. I don&#39;t<br/> think any real confusion has ensued, so it&#39;s probably a reasonable<br/> name for perl5 to use.&quot;<br/><br/> &quot;Alas, I&#39;ve always worried that introducing it would make things<br/> worse, since now the module building utilities would have to look for<br/> $Config{link} and institute a fall-back plan if it weren&#39;t found.&quot;<br/> Although I can see that as confusing, given that $Config{d_link} is<br/> true when (hard) links are available.<br/><br/>Patches of Interest<br/><br/>Safer environment iteration<br/><br/> Milosz Tanski wrote a patch to avoid race conditions when iterating<br/> %ENV in embedded interpreters in multi-threaded applications. Rafa&euml;l<br/> Garcia-Suarez applied the patch.<br/><br/><br/><br/>Stop lib/ExtUtils/t/Embed.t from generating libperl.a<br/><br/> Jerry D. Hedden observed that a test file produced a bogus libperl.a<br/> file on Cygwin that would up being installed by accident. So he<br/> patched things to ensure that the test cleans up properly after<br/> itself. Reini Urban wondered how he had not managed to notice this in<br/> the past, and promised to take the code for a spin.<br/><br/><br/><br/>Add open &quot;|-&quot; and open &quot;-|&quot; to &quot;perlopentut&quot;<br/><br/> Shlomi Fish added some documentation for the magic files &quot;-|&quot; and &quot;|-&quot;<br/> that are used to open input and output pipes. Tom Christiansen wrote a<br/> eloquent response to the question that someone raised regarding<br/> singly- and doubly-quoted strings, arguing convincingly that one<br/> should always use double quoted strings, unless there was a very good<br/> reason not to.<br/><br/> One of the most important reasons is merely the visual cue: it&#39;s<br/> easier to see a double quote (&quot;), rather than a single quote (&#39;),<br/> where certain fonts may make it very difficult to discriminate between<br/> it and a back-tick.<br/><br/> Much discussion followed. No-one commented that at around 1000 lines<br/> long, &quot;perlopentut&quot; is no longer a tutorial, but more of a Compleat<br/> Reference, and thus probably needs less, rather than more, prose.<br/><br/><br/><br/>Clarify documentation on &quot;exists&quot; regarding autovivification<br/><br/> Moritz Lenz made a laudable effort at making the documentation clearer<br/> by removing a sentence, rather than adding one. And this was applied.<br/><br/> seeking clarity, one paragraph at a time<br/><br/><br/>&quot;autodie&quot; 1.991 patch<br/><br/> Paul Fenwick announced the latest version of his &quot;autodie&quot; work.<br/> Nicholas Clark admitted that he was unlikely to review anything major<br/> until 5.8.9 goes out the door.<br/><br/><br/><br/>Watching the smoke signals<br/><br/>Smoke [5.11.0] 34226 FAIL(F) MSWin32 WinXP/.Net SP3 (x86/2 cpu)<br/><br/> Steve Hay&#39;s Windows smokes started going bad with a failure in<br/> op/local.t. This highlighted a problem with shell quote characters and<br/>;s &quot;runperl&quot; function. Nicholas Clark was uncertain as to what<br/> it was that caused the failure to arise, but change #34228 got things<br/> back into line again.<br/><br/><br/><br/>New and old bugs from RT<br/><br/>&quot;Class::Struct&quot; accessor overrides not called from constructor (#29230)<br/><br/> Ren&eacute;e B&auml;cker wrote a patch to address the problem which appears to<br/> have fallen through the cracks.<br/><br/> getting it out<br/><br/><br/>Repeated spaces on shebang line stops option parsing (#30660)<br/><br/> Ren&eacute;e also noticed that a shebang line containing extra spaces (such<br/> as &quot;-s -w&quot;) will fail to notice the subsequent switches (-w in this<br/> case). After a couple of tweaks from H.Merijn Brand and Nicholas<br/> Clark, the code was adjusted to deal with this problem.<br/><br/> lost in space<br/><br/><br/>Loss of stack elements with a do block inside a return (#38809)<br/><br/> Vincent Pit returned to the issue of<br/><br/> sub foo { do { return do { 1; 2 } }; 3 }<br/><br/> returning &quot;undef&quot;. He had proposed a patch some time ago, but after<br/> studying the emitted opcodes, came up with an improved patch to<br/> address the problem. And then came back the next day with an improved,<br/> improved patch, and some improved tests to go along with it.<br/><br/><br/><br/>Removing deprecated features for 5.10? (#41480)<br/><br/> Ren&eacute;e noted that Nicholas had noted that using arrays and hashes as<br/> references had been deprecated as far back as 5.8. It so happens that<br/> the warning for undesirable syntax is present in blead (which will one<br/> day become 5.12). The unanswered question is whether or not removing<br/> the code required that deals with it would simplify matters or not.<br/><br/><br/><br/>Subclassing &quot;CGI::Pretty&quot; dies in &quot;new&quot; (#41572)<br/><br/> Ren&eacute;e also had a patch for this. Nicholas forwarded it to Lincoln<br/> Stein, and would fold it back into the core once he got word back from<br/> Lincoln.<br/><br/><br/><br/>Backwards logic in &quot;perluniintro&quot; (5.10.0) (#58218)<br/><br/> Brad Baxter noted that the documentation that shows how to deal with<br/> the detection of invalid data for a given encoding had its logic<br/> backwards. Dr. Ruud suggested a couple of code variants that were an<br/> improvement on the existing logic, one of which Rafa&euml;l Garcia-Suarez<br/> applied to the documentation.<br/><br/><br/><br/>Speed lost on &quot;/^(foo|bar|baz)$/&quot; match (#58280)<br/><br/> Michael G. Schwern, following up on scurrilous Internet rumours,<br/> discovered that captured alternations are in fact slower in 5.10 than<br/> they were in 5.8. Steve Peters and Tels confirmed the finding. No word<br/> as to why this is the case.<br/><br/><br/><br/>&quot;Unicode::UCD::charinfo()&quot; does not work on 21 Han codepoints (#58428)<br/><br/> Karl Williamson discovered Unicode problems that he traced to magic<br/> numbers causing upper bounds to hide more recent Unicode additions.<br/> Ren&eacute;e created a patch to fix the problem. Karl also came back with a<br/> solution that worked with all Unicode database versions from 4.1 and<br/> beyond, and imagined that it would work for older versions as well.<br/><br/><br/><br/>&quot;Unicode::UCD::casefold()&quot; does not work as documented, nor probably as <br/>intended (#58430)<br/><br/> Similarly, Karl found a number of problems relating to the<br/> implementation for Unicode case folding, and saw that it was such a<br/> mess that it couldn&#39;t work at all. No-one stepped up to try and<br/> improve matters.<br/><br/><br/><br/>&quot;perl -d:DProf&quot; handles shift of @_ with &amp; function wrong (#58446)<br/><br/> A person, whom some people call Tim, reported that &quot;Devel::DProf&quot;<br/> failed to deal correctly with @_ being aliased via magic &amp;sub passing.<br/><br/><br/><br/>Crash on exit with fork done in do FILE on Win32 (#58468)<br/><br/> Alex Davies encountered a problem with a &quot;do &#39;file&#39;&quot; after a program<br/> has forked on the Windows platform. No-one reported that they had<br/> confirmed the problem, much less propose a correction, even though<br/> Alex had gone to the trouble of figuring out why perl was crashing on<br/> a null pointer.<br/><br/><br/><br/>Assigning &quot;*a = \&amp;a&quot; drops a reference (#58480)<br/><br/> Nicholas Clark noted that recent changes that had shifted code around<br/> now caused the assignment of something to one&#39;s own typeglob to leak a<br/> reference. He thought he knew how to fix the matter, and called for<br/> some TODO tests, if anyone was in the mood for volunteering.<br/><br/> Zefram thought that the code Nicholas had used to demonstrate the<br/> problem was incorrect.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> Someone was very busy this summer.<br/><br/> 261 new + 1028 open = 1289<br/><br/><br/><br/>In Brief<br/><br/> Nicholas had been observing an occasional assertion failure in<br/> &quot;S_sv_del_backref&quot;. After struggling for a while to reproduce it at<br/> all, Dave Mitchell nailed it with a tweak to a macro in sv.c.<br/><br/> safer global destruction<br/><br/><br/> Rick McGee reported running into grief attempting to marry 5.10 and<br/> FreeBSD 7.0. Alas, neither Nicholas Clark, nor Scott T. Hildreth nor<br/> Reini Urban were able to reproduce the problem, although Nicholas<br/> suspected it was probably a compiler issue.<br/><br/><br/><br/> Jerry D. Hedden announced that the TODO related to &quot;threads::shared&quot;<br/> is done, and so the item could be removed (if in fact the work he did<br/> on &quot;threads::shared&quot; was indeed what &quot;perltodo&quot; was referring to).<br/><br/><br/><br/><br/> Vincent Pit ran into a precedence nit in &quot;Test::Builder&quot; (or more<br/> specifically &quot;!$x and $y, &#39;foo&#39;&quot;) which meant that a test that should<br/> have failed didn&#39;t.<br/><br/> back to the drawing board<br/><br/><br/>Last week&#39;s summary<br/><br/> There wasn&#39;t one. I enjoyed a lazy summer doing home renovations,<br/> camping, hiking, swimming, drinking, eating and using computers as<br/> little as possible.<br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/>-- <br/>stubborn tiny lights vs. clustering darkness forever ok?<br/> Sun, 07 Sep 2008 13:51:24 +0000 This Week on perl5-porters - 14-20 June 2008 by David Landgren This Week on perl5-porters - 14-20 June 2008<br/><br/> David Nicol: Does pushing all exceptions to @@ whenever $@ gets<br/> assigned to break anything?<br/><br/> Abigail: In theory, it could, as @@ is a &quot;normal&quot; array that can be<br/> used as such. But I doubt anything serious will break. I&#39;d say anyone<br/> that uses a punctuation variable that currently has no special meaning<br/> does so at his/her own risk, and doesn&#39;t have the right to complain if<br/> it does get special meaning.<br/><br/> -- Abigail, suggesting that a little backwards compatibility breakage<br/> from time to time can be good for the soul.<br/><br/>Topics of Interest<br/><br/>Module::Build changes for VMS<br/><br/> Craig Berry sorted out the changes for &quot;Module::Build&quot; that had made<br/> it to blead but not to the &quot;M::B&quot; repository, and tidied them up so<br/> that Ken Williams could apply them with a minimum of fuss.<br/><br/><br/><br/>Attempt to Configure under Bash on VMS results.<br/><br/> John E. Malmberg, at a loss as to how to entertain himself, tried to<br/> configure Perl using the GNV/bash subsystem on VMS. After examining<br/> dozens of problems, he concluded that &quot;it looks like a bit of work<br/> before VMS can run the UNIX configure script&quot;.<br/><br/> One fundamental problem is that the test programs are there to test<br/> for C routines, but if Configure fails to spot the required header<br/> file in the first place, it will skip the test altogether, even though<br/> VMS compilers have ways of finding header files in all sorts of<br/> VMS-specific ways.<br/><br/> Peter Prymmer suggested that a hints/ might allow a sane GNV<br/> environment to be set up, which could improve Configure&#39;s chances of<br/> success.<br/><br/> Paul Green, paramount wrangler of Perl on Stratus VOS suggested that<br/> it was unlikely that pushing changes back to the &quot;autoconf&quot; authors<br/> was a viable approach. He did that five years ago, and he&#39;s still<br/> waiting for the changes to propagate out to various projects that use<br/> it. He advised John to tweak the VMS to work with the existing<br/> framework.<br/><br/><br/><br/>Perl 5.8 and perl 5.10 differences on UTF/Pack things<br/><br/> Alberto Sim&otilde;es ran into trouble with the changes that Ton added in<br/> 5.10 to make &quot;pack&quot;/&quot;unpack&quot; self consistent. He wasn&#39;t sure what<br/> technique should be used to ensure the same behaviour on both versions<br/> of Perl; Nicholas Clark suggested side-stepping the problem<br/> altogether.<br/><br/> the clark gambit<br/><br/><br/>Empty regex<br/><br/> Alfie accidentally trod in a thread from last month concerning the use<br/> of &quot;qr/$var/&quot; when $var is empty, thus reusing the previous pattern<br/> used for matching.<br/><br/> This attracted a considerable amount of discussion, with Yitzchak<br/> Scott-Thoennes contributing the following gem:<br/><br/> my $x = qr//;<br/> ok(&quot;foo&quot; =~ /foo/ &amp;&amp; &quot;bar&quot; =~ /$x$x/);<br/> ok(&quot;foo&quot; =~ /foo/ &amp;&amp; &quot;bar&quot; =~ /$x/);<br/><br/> in which the first test succeeds, and the second test fails. Nicholas<br/> Clark wanted to know if there was a TODO for this (Yitzchak thought<br/> probably not), and which behaviour was the most desirable.<br/><br/><br/><br/>How to dig through symbol tables<br/><br/> Sean O&#39;Rourke was trying to inspect symbol tables, and noticed that<br/> *FOO{SCALAR} was always defined, and wondered if that was because he<br/> was prodding too hard. Ben Morrow confirmed that he was seeing the<br/> expected behaviour, although Yitzchak Scott-Thoennes pointed out that<br/> &quot;PERL_DONT_CREATE_GVSV&quot; changes the picture somewhat.<br/><br/><br/><br/>A Project to get Perl supported on Google App Engine<br/><br/> Steven Adkins mentioned the project (at this stage not much more than<br/> a wish) to get Perl supported as a language for Google&#39;s App Engine.<br/><br/> Not much came out of the discussion, apart from &AElig;var Arnfj&ouml;r&eth;<br/> Bjarmason who asked if there was a precise description of the sandbox<br/> environment the hosted applications would run in (such as no XS<br/> modules or system calls).<br/><br/><br/><br/>Incorrect variable reported in uninitialized value warning<br/><br/> Yuval Kogman managed to fool the new &quot;variable name reported in<br/> uninitialized value&quot; warnings with a simple code snippet. Dave<br/> Mitchell fixed the problem a few hours later.<br/><br/> This inspired Nicholas Clark to go looking, and find a more devious<br/> case that remained broken. Dave went looking and found a few more, and<br/> theoretically nailed them all with an additional patch.<br/><br/> desperately seeking PUSHs(&amp;PL_sv_undef)<br/><br/><br/>TODO of the week<br/><br/> A task that will get your name mentioned in the description of the<br/> &quot;Highlights of 5.12&quot;.<br/><br/>make ithreads more robust<br/><br/> Fix Perl_sv_dup, et al so that threads can return objects.<br/><br/> (hint: you have more than one week to achieve this).<br/><br/>Patches of Interest<br/><br/>.gitignore file<br/><br/> Florian Ragwitz began to update .gitignore files all over the codebase<br/> until Rafa&euml;l Garcia-Suarez gently explained that the files didn&#39;t<br/> exist in the repository yet, given that the porters had not yet<br/> switched over to git.<br/><br/> Sam Vilain, owner and manager of the git mirror of the Perforce<br/> repository, outlined a mechanism he intended to put into place to<br/> allow people to start using git now, while not interfering with<br/> Perforce. Rafa&euml;l gave the approach the thumbs up.<br/><br/><br/><br/> At the same time, Sam added a little script to parse perforce change<br/> numbers, and return the git revision ID when captured, or &#39;git-log&#39;<br/> output otherwise. Unapplied.<br/><br/><br/><br/>TODO B::Deparse cpan #33708<br/><br/> Reini dusted off the old TODO test from the CPAN report and tidied it<br/> up to suit blead. Applied by Rafa&euml;l.<br/><br/><br/><br/>pp_sys.c: &quot;gethostbyaddr&quot;<br/><br/> H.Merijn Brand asked for help to figure out what was the best way for<br/> dealing with an HP-UX bug, since &quot;gethostbyaddr&quot; will use a DNS<br/> resolver whenever it finds one, regardless of what /etc/resolv.conf<br/> says.<br/><br/> routing around brain damage<br/><br/><br/> In the process of tracking down that problem, H.Merijn discovered that<br/> HP-UX&#39;s C compiler has a warnings dial that goes up to 11. So he<br/> cranked it up and posted the results to the list, to see if anyone was<br/> inspired to adjust the code to reduce the quantity.<br/><br/> nope<br/><br/><br/>&quot;Configure&quot; - &quot;d_sprintf_returns_strlen&quot;<br/><br/> Jerry D. Hedden noticed that if the test program used to detect the<br/> setting for &quot;d_sprintf_returns_strlen&quot; failed to compile, no-one would<br/> have been any the wiser. Unapplied.<br/><br/> now you would know<br/><br/><br/>New and old bugs from RT<br/><br/>Unix Domain sockaddr returned by recv is not acceptable to <br/>&quot;Socket::unpack_sockaddr_un&quot; (#2052)<br/><br/> Ren&eacute;e B&auml;cker noticed that one of the oldest still-open bugs in the<br/> database was no more.<br/><br/> seems to be fixed<br/><br/><br/> As does &quot;Lexical objects not destroyed at end of scope&quot; (#3308)<br/><br/><br/><br/>foreach spuriously autovivifies (#2166)<br/><br/> Mike Guy originally pointed out that &quot;foreach (@h{a, b}) { }&quot;<br/> autovivifies $h{a} and $h{b}, when it would have been nice not to.<br/> Ren&eacute;e didn&#39;t see why it should, but since it&#39;s been known about and<br/> relied upon for so long, it may no longer be fixed.<br/><br/> Bo Lindbergh showed how a &quot;do&quot; block could be used as a work-around.<br/><br/> EWONTFIX<br/><br/><br/>Issue with the exists function (#45147)<br/><br/> Ren&eacute;e also added another datapoint to this problem, narrowing the<br/> effect to one implicating &quot;@-&quot;.<br/><br/><br/><br/>Buffer overflow in &quot;win32_select()&quot; (PATCH included) (#46309)<br/><br/> Risto Kankkunen had identified this, and proposed a patch, back in<br/> October 2007. Rafa&euml;l applied it to blead this week.<br/><br/><br/><br/>&quot;Out of memory ... sbrk()&quot; on FreeBSD-6.x for v.5.8.x but not v.5.6.x <br/>(#46381)<br/><br/> Rafael also applied Slaven Rezic&#39;s patch that fixes this problem.<br/><br/><br/><br/> as well as a a patch to stat.t from John P. Linderman, thus resolving<br/> bug #47746.<br/><br/><br/><br/>Regexp optimisation affected by threads (#55600)<br/><br/> John Gardiner Myers had identified a problem with pattern matches<br/> being performed slowly in threads, since a character class<br/> optimisation was skipped. Dave Mitchell grovelled through the source<br/> and discovered why the optimisation was suppressed, and why it wasn&#39;t<br/> be re-enabled. Unfortunately Dave isn&#39;t familiar with this part of the<br/> code and didn&#39;t want to hazard a fix.<br/><br/><br/><br/>perlbug refactoring and prose cleanup (#55844)<br/><br/> Jesse Vincent consolidated the various patches to &quot;perlbug&quot; from last<br/> week. Paul Johnson stopped by to comment that he hated the linguistic<br/> drift that has made &quot;issue&quot; become synonymous with &quot;bug&quot;, &quot;problem&quot; or<br/> &quot;question&quot;. (note to self: guilty as charged).<br/><br/> On a completely different note, Paul also thought that &quot;autodie&quot; (the<br/> name, not the concept) is awful.<br/><br/> a pity the alternatives are worse<br/><br/><br/>&quot;h2xs&quot; does not handle properly enum constants (#55896)<br/><br/> Domi@hp reported an issue, no, *problem*, with XS bindings to<br/> interface C code that uses &quot;enum&quot;s, and a pointer to a blog that<br/> provides additional commentary.<br/><br/> Steve Peters thought that all the problems that were known at the time<br/> the blog entry was written had been addressed, so he wasn&#39;t sure if it<br/> was still relevant. But he did want to find out more about the<br/> specific problem being encountered, in case there was more &quot;enum&quot; work<br/> that needed doing.<br/><br/><br/><br/>Iteration order of hash keys doesn&#39;t appear random (#55952)<br/><br/> Jonathon Sailor wondered why hash keys were always iterated in the<br/> same order, regardless of how &quot;PERL_HASH_SEED&quot; is set. Turns out the<br/> documentation was wrong.<br/><br/><br/><br/>miniperl SIGBUS on test during build Sunos8 64-bit (#55968)<br/><br/> Someone at Sony filed a report about failing to build on Solaris. Andy<br/> Dougherty made a few educated guesses about what the problem was, and<br/> suggested a recipe that might work, and/or a copy of to<br/> figure what the problem was.<br/><br/><br/><br/>problem with miniperl (#55980)<br/><br/> Shanthi M Srinivasan had a problem with libraries on a 64-bit Linux<br/> box not being picked up. Andy explained that the problem was resolved<br/> in 5.10 (which was released six months (!) ago). For people stuck with<br/> 5.8, the fix is simple, just requiring /lib64 and /usr/lib64 to be<br/> specified during configuration.<br/><br/><br/><br/>&quot;return return&quot; (#56150)<br/><br/> Nicholas Clark wondered why this wasn&#39;t a syntax error. Rafa&euml;l<br/> Garcia-Suarez showed him why it was a feature.<br/><br/> The thread then expanded into a very long discussion about the<br/> (f)utility of using an explicit &quot;return&quot; statement.<br/><br/> obviously you&#39;ve never tried to return a reference to a hash<br/><br/><br/>&quot;(((??{1 + $^N})))&quot; behaves differently in 5.10.0 than in blead (#56194)<br/><br/> While researching whether bug #27603 had been fixed, Bram discovered<br/> that &quot;123 =~ /^(\d)(((??{1+$^N})))+$/ ? 1 : 0&quot; return 0 or 1,<br/> depending on whether one uses 5.10.0 or 5.11.0 (or any suitable blead)<br/> to run the code. No replies, but it&#39;s obviously some sort of<br/> regression that wasn&#39;t nailed down by a test.<br/><br/> of course, it didn&#39;t work at all in 5.8<br/><br/><br/>Attempt to free unreferenced scalar: SV... (#56202)<br/><br/> Mike Capella reported a problem with an enormous list of &quot;qr/.../o&quot;<br/> patterns producing some interesting emergent behaviour. Bram suggested<br/> he get rid of the &quot;/o&quot; modifiers. Mike wanted to know the reason but<br/> no-one clued him in. In the meantime, Mike came up with a work-around,<br/> but since the appearance of the error seemed to be dependent on the<br/> number of patterns used, he thought it indicated some sort of overflow<br/> situation, should someone with the necessary internals skills feel<br/> like looking into it.<br/><br/> not today<br/><br/><br/>Perl5 Bug Summary<br/><br/> Hmm, four more this week than last week.<br/><br/> 271 new + 1275 open = 1546 (+12 -8)<br/><br/><br/><br/>New Core Modules<br/><br/> &quot;threads::shared&quot;<br/> Version 1.23 is alive and kicking, thanks to Jerry D. Hedden. The<br/> change is an attempt to stamp out timing errors that cause<br/> spurious failures in the test suite.<br/><br/><br/><br/>In Brief<br/><br/> Paul Fenwick asked about accessing caller&#39;s %^H at runtime in 5.8.x,<br/> as part of his ongoing &quot;autodie&quot; adventure. Sartak suggested he look<br/> at chocolateboy&#39;s &quot;Devel::Hints::Lexical&quot; for inspiration. Paul<br/> admitted having spoken to chocolateboy at length about that very<br/> module, and explained that it didn&#39;t really go as far as he needed.<br/><br/><br/><br/> Paul then shared a monologue with us regarding accessing caller&#39;s $^H<br/> in 5.8 and 5.10.<br/><br/> they all lived happily ever after<br/><br/><br/> Crawford Curry mentioned the incomplete documentation of<br/> &quot;CGI::charset&quot; (in cpan #36817).<br/><br/> paging mr. stein<br/><br/><br/> In a followup to the changes in &quot;m//m&quot; in 5.10 thread, Eric Brine<br/> suggested that the documentation in &quot;perlop&quot; needed updating.<br/><br/><br/><br/> Niko Tyni reported that the Debian project had discovered that the<br/> latest &quot;File::Path::rmtree&quot; makes symlink targets world-writable.<br/><br/> something else for my copious spare time<br/><br/><br/>Last week&#39;s summary<br/><br/> Jan Dubois picked up on last week&#39;s summary of why &quot;IPC::Run&quot; is<br/> preferable to &quot;system&quot;, explaining that on Win32 it is rather<br/> inefficient as it depends on additional helper processes to get the<br/> job done. As a result, the variable $^X (the name of the current copy<br/> of Perl) doesn&#39;t contain what one might expect.<br/><br/> An additional complication is that the exit status counter on Win32 is<br/> a 32-bit quantity and thus does not even fit in $?. One solution would<br/> be to borrow from VMS, and implement a sane &quot;${^CHILD_ERROR_NATIVE}&quot;<br/> variable.<br/><br/> Worse, if a child process returns -1... In certain circumstances, the<br/> parent runs the child a second time.<br/><br/> And then they started talking about losing $@ from an &quot;eval&quot; all over<br/> again. Mark Mielke nailed the problem when he said that the problem is<br/> that $@ is a global, but &quot;eval&quot; is inherently recursive.<br/><br/> This Week on perl5-porters - 1-6 June 2008<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/>-- <br/>stubborn tiny lights vs. clustering darkness forever ok?<br/> Fri, 27 Jun 2008 22:40:45 +0000 This Week on perl5-porters - 7-13 June 2008 by David Landgren This Week on perl5-porters - 7-13 June 2008<br/><br/> This morning, clkao pinged me and mentioned that he couldn&#39;t get<br/> perlbug to set the From: header when sending a bug report. I promised<br/> him I&#39;d take a look.<br/><br/> I opened up perlbug determined to add one line and send a patch.<br/> Somehow, I never got around to adding the line CL asked for...<br/> -- Jesse Vincent, getting a finger caught in the machine.<br/><br/>Topics of Interest<br/><br/>RT bugtrackers, note the changes in 5.10<br/><br/> H.Merijn Brand wished to draw attention to the main changes in the<br/> more complex structures derived from an SV, so that people who were<br/> going through tickets on RT would remember to keep an eye open for the<br/> types of problems this might cause on badly-written XS code.<br/><br/> Nicholas Clark and Reini Urban pointed out a few more gotchas.<br/><br/> do the right thing<br/><br/><br/>&quot;autodie&quot; 1.10 BETA released<br/><br/> Paul Fenwick released a development version of &quot;autodie&quot;, complete<br/> with Fatal, the unauthorised edition.<br/><br/> testers welcome, needed<br/><br/><br/>&quot;overload&quot; segfaulting<br/><br/> Ovid reported that a certain use of &quot;overload&quot; led to a segmentation<br/> fault. Various people reported that various platforms did more or less<br/> the same thing.<br/><br/> Rick Delaney solved the matter with with some minor changes to the<br/> code, the test suite and the documentation. Rafael checked it in.<br/><br/> he made it look easy, too<br/><br/><br/>Enable &quot;getgrgid&quot; on VMS<br/><br/> John E. Malmberg implemented the &quot;getgrgid&quot; call on VMS. Craig Berry<br/> suggested some minor housekeeping tweaks and committed it to blead.<br/><br/><br/><br/>&quot;Cwd::abs_path&quot; behaviour with non-existent paths<br/><br/> John E. Malmberg wanted to get &quot;realpath&quot; working on VMS, and wondered<br/> what the cross-platform concensus was for dealing with path<br/> specifications that don&#39;t exist. Once he had that information, he<br/> would be able to decide what would be best for VMS.<br/><br/> Early feedback showed that different platforms handled John&#39;s examples<br/> quite differently. Thus he felt free to go ahead and do what made the<br/> most sense on VMS.<br/><br/> i did it my way<br/><br/><br/>TODO of the week<br/><br/> A task that need a little sysadmin-type knowledge<br/><br/>Profile Perl - am I hot or not?<br/><br/> The Perl source code is stable enough that it makes sense to profile<br/> it, identify and optimise the hotspots. It would be good to measure<br/> the performance of the Perl interpreter using free tools such as<br/> cachegrind, gprof, and dtrace, and work to reduce the bottlenecks they<br/> reveal.<br/><br/> As part of this, the idea of pp_hot.c is that it contains the *hot*<br/> ops, the ops that are most commonly used. The idea is that by grouping<br/> them, their object code will be adjacent in the executable, so they<br/> have a greater chance of already being in the CPU cache (or swapped<br/> in) due to being near another op already in use.<br/><br/> Except that it&#39;s not clear if these really are the most commonly used<br/> ops. So as part of exercising your skills with coverage and profiling<br/> tools you might want to determine what ops *really* are the most<br/> commonly used. And in turn suggest evictions and promotions to achieve<br/> a better pp_hot.c.<br/><br/> One piece of Perl code that might make a good testbed is installman.<br/><br/>Patches of Interest<br/><br/>&quot;perlbug&quot; prose patch (and some evals, too)<br/><br/> It all started out when clkao wondered why it wasn&#39;t possible to set<br/> the From: header on a perlbug report. Jesse Vincent thought &quot;ho ho ho,<br/> a five-minute, one-line patch sent to perl5-porters coming up&quot;.<br/><br/> One Saturday afternoon later, Jesse sent in a 740 line patch that did<br/> just about everything except just that, discovering that &quot;perlbug&quot; was<br/> in desperate need for some tender loving care.<br/><br/> Ronald J. Kimball greeted the patch enthusiastically and went through<br/> it with a fine-toothed comb adjusting various changes to Jesse&#39;s<br/> prose.<br/><br/> Jesse was still a bit doubtful as to how to write a patch for a PL<br/> file in the utils/ directory (since said files are used to generate<br/> the final program that gets installed). Craig A. Berry hinted darkly<br/> at how things were done in concrete bunkers at secret locations.<br/><br/> now i have to kill you<br/><br/><br/> Jesse then set to work cleaning up the twisty maze of user prompt<br/> routines, all alike. Rafael tried to apply the patch but failed, since<br/> the target of Jesse&#39;s intentions was the post-generated file. Jesse<br/> pointed Rafa&euml;l to the previous patch that was to applied against<br/> perlbug.PL.<br/><br/> perlbug prompting<br/><br/><br/> Jesse finished for the week by overhauling the code that does the<br/> mailing of the bug report. Reini Urban suggested using &quot;readline&quot;, to<br/> get rid of those pesky ^H characters that sometimes appear in actual<br/> bug reports.<br/><br/> Jesse was hesitant to entertain the concept of optional dependencies<br/> within &quot;perlbug&quot;, but admitted that at least things were getting to<br/> the stage where such a change would not be the major surgery that it<br/> would have been before he started cleaning things in the first place.<br/><br/> maybe next week<br/><br/><br/>&quot;perlsyn&quot;: equivalent code for HASH ~~ ARRAY<br/><br/> brian d foy asked for clarifications on smart matching behaviour just<br/> after 5.10.0 was released. He returned this week with a tweak to the<br/> documentation.<br/><br/><br/><br/>Readable assertion names<br/><br/> Reini Urban went on a spring clean to strip out the metasyntactic<br/> variable names used in assertion errors and replaced them with names<br/> that conveyed useful information. Minor discussion followed as to<br/> whether the macro names that Reini used would mask or shadow real<br/> variable names, but Reini thought everything was safe.<br/><br/><br/><br/> He then carried on with the rest of the files and Rafa&euml;l applied all<br/> of it.<br/><br/><br/><br/>testing $/ with in memory files<br/><br/> Bram had worked out a patch some time ago that addressed this problem,<br/> but had used $ENV{_} as a sneaky shortcut for the current process.<br/> After it was pointed out that this was highly non-portable he had<br/> switched to a more robust technique. Rafa&euml;l applied the latter<br/> version, but in the meantime Bram had noticed that the patch ran into<br/> difficulties with &quot;-Uuseperlio&quot;.<br/><br/> But that was ok, because Bram had a patch for that as well. So Rafa&euml;l<br/> applied it too.<br/><br/><br/><br/>More COW lvalues<br/><br/> Reini Urban used &quot;-DPERL_DEBUG_COW&quot; and found a couple of macros that<br/> are used as lvalues. He was able to solve one issue easily, since an<br/> assigning macro existed, but he was stuck as to how to rewrite<br/> &quot;SvIVX(sv_dat)++&quot; in a safe manner.<br/><br/> Nicholas Clark had a look, and noticed that the end result boiled down<br/> to &quot;a = a + 1&quot;, and gcc&#39;s optimiser (at least) reduced that to the<br/> same assembly instructions as &quot;a++&quot; and concluded that it was safe to<br/> use an apparently long-hand macro assignment, since it would wind up<br/> as a simple post increment.<br/><br/><br/><br/>.gitignore file<br/><br/> Paul Fenwick develops with git, and thus is endlessly annoyed by git<br/> moaning about files it encounters but doesn&#39;t know what to do about<br/> them. So he wrote a crude .gitignore file to teach git to not pay<br/> attention to them.<br/><br/> Rafa&euml;l had admitted planning doing such a thing, but was waiting until<br/> 5.8.9 was out the door. At the same time, he thought there existed a<br/> certain opportunity for factoring Paul&#39;s list through the judicious<br/> use of wildcards.<br/><br/> Sam Vilain took Paul&#39;s list and laid some serious ignore-fu upon it.<br/><br/><br/><br/>New and old bugs from RT<br/><br/>attributes don&#39;t like &quot;.=&quot; (#3605)<br/><br/> Bram made the distinction between &quot;my $var : locked .= &quot;test&quot;&quot; (a<br/> syntax error) and &quot;my $var .= &quot;test&quot;&quot; (legal, and does the Right<br/> Thing) and wondered whether the inconsistency should remain.<br/><br/><br/><br/>Subroutine doesn&#39;t create elements (#8910)<br/><br/> Ren&eacute;e B&auml;cker had a look at one of Abigail&#39;s old bugs and added one<br/> more piece to the puzzle, but perhaps not enough to say it was<br/> resolved.<br/><br/><br/><br/>&quot;sub foo(@$) {}&quot; should generate an error (#36673)<br/><br/> Rafael Garcia-Suarez took Ren&eacute;e&#39;s patches for this bug report,<br/> reworked them slightly, and applied them to blead.<br/><br/><br/><br/>&quot;bleadperl -Dm -e1&quot; segfaults on win32 (#39806)<br/><br/> Bram asked other people to check this old bug issued by Yves Orton,<br/> presumably because he could no longer reproduce the crash. Both Steve<br/> Hay an Niko Tyni reported that the test program ran without flaw.<br/><br/><br/><br/>SIGTERM not terminating child process (#49073)<br/><br/> Jerry D. Hedden reworked a test in &quot;Time::HiRes&quot; so that it would play<br/> nicely on Cygwin. Patch not applied (Time::HiRes is now maintained by<br/> Zefram).<br/><br/><br/><br/>&quot;length($@)&quot;&gt;0 for empty $@ if utf8 is in use (#51370)<br/><br/> Bram brewed up a fix for this bug, that Rafa&euml;l applied, albeit with<br/> the uppercasing of a utility macro.<br/><br/><br/><br/>Trying to build perl5.8.3 under Maemo environment (#53328)<br/><br/> Bram suggested a bette diagnostic for &quot;Cwd&quot; that would report where<br/> the program had looked for the &quot;pwd&quot; external binary, along with a<br/> short summary of what steps could be taken to fix the problem.<br/><br/><br/><br/>Perl 5.10 segmentation fault using &quot;Net::SSH2::Channel&quot; (#54908)<br/><br/> Sebastien Rodriguez followed &AElig;var Arnfj&ouml;r&eth; Bjarmason&#39;s advice, which<br/> seemed to be essentially a diagnosis of the problem, and reported that<br/> things now worked. Hence his wish to contact the module author in<br/> order to push the change upstream.<br/><br/><br/><br/>&#39;once&#39; warnings from xs modules in perl 5.10.0 (#55550)<br/><br/> This is the bug that Chia-liang Kao opened for the problem of XS<br/> modules producing &quot;only used once&quot; warnings in 5.10 and beyond.<br/><br/><br/><br/>Recursive multithreading causes massive amounts of context switches (#55560)<br/><br/> Rafa&euml;l Garcia-Suarez explained, until a Copy On Write scheme is<br/> implemented in Perl, large numbers of thread creations will remain<br/> expensive.<br/><br/> go iterative, young man<br/><br/><br/>&quot;IPC::Open3&quot; does not auto-create an error handle (#55570)<br/><br/> &quot;Fiji&quot; wondered why a simple call to &quot;IPC::Open3&quot; never has the<br/> child&#39;s STDERR being connected to the lexical variable that is<br/> supposed to hold it. Looking at the code, it was clear why it didn&#39;t<br/> work, but the question was should the documentation be clearer, or<br/> should the code be changed.<br/><br/> Bram thought that is was doubtful as to whether the behaviour could be<br/> changed, since there may be people that have written code that depends<br/> on how things work currently.<br/><br/> Ben Morrow agreed that refining the POD was the only course of action,<br/> although Rafa&euml;l suggested that an API shift could be handled in a<br/> dual-life version.<br/><br/><br/><br/> Ren&eacute;e B&auml;cker supplied a patch to change the behaviour, and it was up<br/> to Eric Brine to explain that the crux of the matter was that the<br/> behaviour should not be changed. Instead, Eric showed how to solve the<br/> problem with a teeny amount of client make-work code.<br/><br/> the correct use of gensym()<br/><br/><br/>Regexp optimization affected by threads (#55600)<br/><br/> John Gardiner Myers showed that when the regular expression engine is<br/> passed a pattern containing character classes (e.g. &quot;[a-e]+&quot;), the<br/> performance becomes abysmal if the call is issued from within a<br/> thread. John traced the problem to the code path not ever hitting the<br/> &quot;find_byclass&quot; routine which causes it to rely much more heavily on<br/> the backtracking mechanism.<br/><br/><br/><br/>&quot;free from wrong pool&quot; on Fedora 6 (#55658)<br/><br/> Jason Van Dias sent in a reasonably concise test program that showed<br/> how to generate a panic in perl 5.10.0. Nicholas Clark pointed him to<br/> the latest source of the 5.10 track (which will become 5.10.1).<br/><br/> Jason took that for a spin, and the only result was that the coredump<br/> message changed slightly. He had to tweak the Perl source slightly to<br/> get it to work at all. He noted that everything was fine with 5.8.4<br/> and 5.8.0 on other platforms.<br/><br/><br/><br/>&quot;eval&quot;ing a certain format string segfaults perl (#55668)<br/><br/> Arthur Kantor showed how a poorly formatted format string kills perl.<br/> Alexandr Ciornii replied that the problem was fixed in 5.10.<br/><br/><br/><br/>Synopsis documents (deprecated, fragile) indirect object syntax (#55708)<br/><br/> Michael R. Wolf filed a bug report to change constructs like &quot;new<br/> Dumpvalue&quot; to &quot;Dumpvalue-&gt;new&quot;. Ilya Zakharevich pointed out that both<br/> constructs are flawed, that the more robust &quot;Dumpvalue::-&gt;new()&quot;<br/> construct isn&#39;t understood by older perls, leaving only the slightly<br/> horrendous &quot;&quot;Dumpvalue&quot;-&gt;new()&quot;.<br/><br/> cpan RT #36694<br/><br/><br/>Perl5 Bug Summary<br/><br/> 265 new + 1276 open = 1541 (+5 -21)<br/><br/><br/><br/>New Core Modules<br/><br/> &quot;Pod::Perldoc&quot; version 3.14_07<br/> Adriano Ferreira had Rafa&euml;l synch blead with the latest goodies<br/> from CPAN.<br/><br/><br/><br/> &quot;threads&quot; 1.71<br/> Jerry D. Hedden needed a couple of iterations to get the latest<br/> POD and test tweaks sorted out, but it was applied in the end.<br/><br/><br/><br/> &quot;threads::shared&quot; 1.22<br/> This module also received similar treatment.<br/><br/><br/><br/> &quot;Thread::Semaphore&quot; 2.09<br/> ditto<br/><br/><br/> &quot;Thread::Queue&quot; 2.11<br/> ditto<br/><br/><br/> &quot;B::Debug&quot; 1.06<br/> Reini Urban asked if it would be possible to synch the CPAN<br/> version of &quot;B::Debug&quot; with blead, and Rafa&euml;l was happy to oblige.<br/> So now &quot;B::Debug&quot; is officially dual-lifed.<br/><br/><br/><br/>In Brief<br/><br/> Ren&eacute;e B&auml;cker announced that bugs #3176, #3495, #3534, #5246 and #6783<br/> were either fixed or non-bugs.<br/><br/> look them up on RT<br/><br/> The problem with porting perl on Armel (bug #55038) inched one step<br/> forwards this week.<br/><br/><br/><br/> I suspect that Panic in regex processing (unknown regstclass 0) (bug<br/> #55466) does not concern the porters directly.<br/><br/><br/><br/> Craig A. Berry and Aaron Crane continued to delve into the subtleties<br/> of &quot;File::Copy&quot; and permission bits.<br/><br/> generally impossible<br/><br/><br/> Steve Hay added some code to remove temporary files left over by test<br/> in &quot;IO-Compress-Zlib&quot;, which Nicholas Clark applied.<br/><br/> now to inform Paul Marquess<br/><br/><br/> Steve also had some code added to fix run/switches test on Win32.<br/><br/> blindly applied<br/><br/><br/> David Nicol thought about what it would take to write a state machine<br/> for parsing Perl; Ben Morrow pointed him at PPI.<br/><br/> unreinventable wheels<br/><br/><br/> John E. Malmberg reported that VMS passes these t/io/open.t tests now<br/> so there is no longer any need to skip them. Unapplied, apparently.<br/><br/><br/><br/> Andreas K&ouml;nig wondered if he was the only person with a failing syslog<br/> test in current blead; Bram reported that he was in good company.<br/><br/><br/><br/> Mattia Barbon encountered problems using wxPerl playing around with<br/> &quot;setenv&quot; and &quot;putenv&quot;, and traced it down to an interaction between<br/> &quot;DEBUGGING&quot; and &quot;PL_use_safe_putenv&quot;. A quick edit to wxPerl solved<br/> the immediate problem, but Mattia wanted to know if there was a better<br/> underlying solution waiting to be found.<br/><br/><br/><br/> John Peacock had a self-referential &quot;; question, wondering<br/> what was the best way of delivering a POD-only improvement release.<br/> Eric Wilhelm pointed out a possible gotcha.<br/><br/> debian does it differently<br/><br/><br/>Last week&#39;s summary<br/><br/> This Week on perl5-porters - 1-6 June 2008<br/><br/><br/>About this summary<br/><br/> This summary is dedicated to the recent addition to Rafa&euml;l&#39;s family:<br/><br/><br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/>-- <br/>stubborn tiny lights vs. clustering darkness forever ok?<br/> Sun, 22 Jun 2008 17:48:10 +0000 This Week on perl5-porters - 1-6 June 2008 by David Landgren This Week on perl5-porters - 1-6 June 2008<br/><br/> *Traditional exception handling is more like equipping each Klingon<br/> with a dead-man&#39;s switch attached to a nuke. Dying by accident in<br/> someone else&#39;s nuke blast would be a death without honor. So the point<br/> of the Perl 6 exception model is to try to keep as many warriors alive<br/> as long as possible in order to inflict the maximum possible damage on<br/> the enemy, which is our highest goal, after all. :)* -- Larry Wall, on<br/> the issue of dealing gracefully with errors.<br/><br/>Topics of Interest<br/><br/>&quot;IO::Dir&quot; destructor<br/><br/> Peter Dintelmann looked at Zefram&#39;s fix for &quot;IO::Dir&quot; (which was<br/> clobbering global variables like $!) and realised that the same<br/> criticism could be levelled at &quot;DirHandle&quot;. So he adopted Zefram&#39;s<br/> initial approach to &quot;DirHandle&quot; as well, and Steve Peters made sure it<br/> got into blead.<br/><br/><br/><br/>Fatal/autodie exception hierarchies for Perl 5<br/><br/> Paul Fenwick laid out a more detailed description of his exceptions<br/> hierarchy for Perl 5. chromatic thought that an attempt at<br/> hierarchies, whether they be singly or multiply rooted, was doomed to<br/> failure. A much better approach would be to define a set of roles, and<br/> any given exception would implement one or more roles. Larry Wall<br/> explained what was going on over in Perl 6 and detailed a most<br/> interesting shift in the design philosophy of handling exceptions, in<br/> that errors are treated as data rather than interruptions to control<br/> flow.<br/><br/> Mark J. Reed offered a useful Klingon directive (yIQap pagh yIHegh!).<br/> Joshua ben Jore reminded people of the danger of inspecting $@ and<br/> wiping it in the process, thus resulting in a error-on-error condition<br/> known as exception suicide. He went on to show how paranoid you really<br/> need to be in order to avoid exceptions vanishing through<br/> carelessness.<br/><br/> they *are* out to get you<br/><br/><br/>&quot;; design questions<br/><br/> Paul, no Bruce, Fenwick had a couple of questions to ask the porters.<br/> The first one was how to apply autodie semantics to &quot;system&quot;, which is<br/> more difficult that one might imagine since it has some really weird<br/> variant calling conventions. The second question was the possibility<br/> to grant &quot;autodie&quot; core status at some point (the problem being that<br/> it currently depends four non-trivial non-core modules).<br/><br/> Roland Giersig accidentally opened old wounds asking why it couldn&#39;t<br/> be possible to retrofit the new &quot;autodie&quot; semantics onto &quot;Fatal&quot;, but<br/> Aristotle Pagaltzis and Abigail made short order of that issue.<br/><br/> Of the prerequisite modules needed by &quot;autodie&quot;, Roland thought that<br/> &quot;IPC::System::Simple&quot; sounded like something useful in its own right.<br/><br/> As to the &quot;system&quot; issue, Abigail thought that it would be nice to<br/> &quot;autodie&quot; along with the rest, as long as there was an &quot;no autodie<br/> &#39;system&#39;&quot; escape hatch.<br/><br/> Paul, err Bruce, no Paul sneaked in a subsequent question, which was<br/> should a bare &quot;use autodie&quot; enable the Fatality of everything it knew<br/> how to lay its hands on, or just a conservative (but nevertheless<br/> broad) subset. In other words, does it mean &quot;use autodie &#39;:all&#39;&quot; or<br/> &quot;use autodie &#39;:default&#39;&quot;? The latter approach is innately<br/> conservative, forcing the client code to ask explicitly for any<br/> semantics for which no solid concensus has emerged.<br/><br/> Paul dumped his current thoughts into POD here:<br/><br/><br/><br/> and admitted it would be better to put it in a wiki, but the tram he<br/> was in at the time didn&#39;t have wireless (loser!).<br/><br/> Another issue (the bloke just kept sneaking them in) is that old Fatal<br/> messages sucked the big one, and Paul wanted to make them prettier in<br/> the new version. Aristotle Pagaltzis argued that their ugliness had<br/> never hindered widespread adoption of the module in the first place.<br/> Therefore it was important to retain the bletcherously ugly error<br/> messages of &quot;Fatal&quot;, and introduce soothing, elegant messages in<br/> &quot;autodie&quot;, since that would only increase the velocity of adoption of<br/> the latter. And you never could eliminate the possibility that<br/> someone, somewhere, was scraping the exact output of a Fatal error<br/> message.<br/><br/> a fatal abstraction<br/><br/><br/>&quot;PERL5OPT -M&quot; processed after command line -M?<br/><br/> David Golden was surprised to discover that the effect of a &quot;-M&quot;<br/> switch in the &quot;PERL5OPT&quot; environment variable takes place after a &quot;-M&quot;<br/> switch on the command line. And I imagine that few people would have<br/> expected the contrary.<br/><br/> Rafa&euml;l Garcia-Suarez argued that it was intentional, since<br/> traditionally, the command-line overrides the environment and when one<br/> thinks about the precedence of module loading it sort of makes sense.<br/> On the other hand &quot;-T&quot; gets noticed straight away. David agreed that<br/> while that was useful behaviour, the inconsistency bothered him. What<br/> was lacking was the documentation that would explain which switches<br/> overrode which context.<br/><br/><br/><br/>More results from llvm-gcc<br/><br/> Yuval Kogman reported on some research he had conducted with llvm-gcc<br/> (the Low Level Virtual Machine project) by using it to compile the<br/> 5.10 perl codebase. He saw an improvement of around 15% (which is a<br/> serious improvement) but had trouble trying to get XS modules to work<br/> (which is a serious disadvantage). On the other hand, it may open the<br/> door to putting Perl apps on Apple&#39;s iPhone, which earns serious cred<br/> points in the mindshare department.<br/><br/> Steve Peters wanted to see how current Intel C++ and Sun Studio fare,<br/> since they usually leave gcc in the dust.<br/><br/> the return of the compiler wars<br/><br/><br/>Ruminations on &quot;Devel::Cover&quot;<br/><br/> In a side remark on the Summer of code mentor applications starting<br/> (and ending) next week thread, Paul Johnson, on the subject of modules<br/> that maintain a rather incestuous relationship with the core, said<br/> that for better or worse, &quot;Devel::Cover&quot; was destined to remain a<br/> module that remained outside of core.<br/><br/> He admitted that while it would be nice to have someone step in and<br/> fix up its breakage following significant changes to the core, he was<br/> sufficiently lucid to realise that the resources available to develop<br/> the core are thin, and that in releasing such a module, he was<br/> responsible for expending the appropriate effort to keep it working.<br/> Joshua ben Jore admitted that his love-hate relationship with the core<br/> veered strongly to the hate side.<br/><br/> all raise your glasses to Paul<br/><br/><br/>&quot;??{ }&quot; closure semantics<br/><br/> Yuval Kogman also ran into some trouble in some hairy patterns using<br/> &quot;??{ }&quot; constructs, and assumed it was a bug. Rafa&euml;l confirmed the<br/> issue, saying that it was indeed a bug, Dave Mitchell knew about it,<br/> and wanted to fix it. David Nicol asked if it was more difficult that<br/> just incrementing the refcount on lexicals encountered within<br/> &quot;??{...}&quot; constructs and maintaining a list of same to decrement when<br/> the regexp goes out of scope, and Dave said yes.<br/><br/> it is *more* difficult than that<br/><br/><br/>Smoking from GIT<br/><br/> H.Merijn Brand idly wondered how we were supposed to smoke from a git<br/> repository, since a nice monotonic sequence, a feature that endears us<br/> to Perforce, is replaced by a SHA-1 digest that only an idiot savant<br/> could love. Rafael sidestepped the issue by saying that the &#39;HEAD&#39; tag<br/> gets you what you need.<br/><br/> git describe<br/><br/><br/>&#39;once&#39; warnings from xs modules in perl 5.10.0<br/><br/> Chia-liang Kao noticed that 5.10.0 spews out &quot;used only once: possible<br/> typo&quot; where before silence used to reign. He wondered if it was<br/> possible for the core to suppress the warning if it emanated from an<br/> XS boot block.<br/><br/> Nicholas Clark thought that something needed to be done to address the<br/> problem, so Chia-liang will file a bug next week.<br/><br/> direct from the time machine<br/><br/><br/>TODO of the week<br/><br/>Common test code for timed bail out<br/><br/> Write portable self destruct code for tests to stop them burning CPU<br/> in infinite loops. This needs to avoid using alarm, as some of the<br/> tests are testing alarm/sleep or timers.<br/><br/> (This TODO is perhaps too terse. Interested parties are invited to ask<br/> the porters for an idea of what really needs to be done. Even TODOing<br/> the TODO would be helpful at this point).<br/><br/>Patches of Interest<br/><br/>&quot;Archive::Tar&quot; was building corrupt archives on VMS<br/><br/> John E. Malmberg finally figured out exactly what the problem was with<br/> &quot;Archive::Tar&quot; on VMS. So he fixed it.<br/><br/> now to get it applied<br/><br/><br/>Fix for Config detection<br/><br/> Steffen M&uuml;ller was embarrassed by a very silly mistake in his work on<br/> He corrected it, and Rafa&euml;l applied the correction.<br/><br/><br/><br/>&quot;File::Copy&quot; &amp; permission bits<br/><br/> Following Craig A. Berry&#39;s belated follow-up on the change in<br/> &quot;File::Copy&quot;&#39;s behaviour, Charles Bailey, made an even more belated<br/> follow-up, and it was full of good stuff. Charles explained the<br/> original rationale behind &quot;copy&quot; and &quot;syscopy&quot; and how things have<br/> drifted over the years since the original implementation was drafted.<br/><br/> He also agreed that the new changes were likely to cause trouble on<br/> non POSIXish platforms. Abigail expressed surprise that the patch was<br/> even accepted in the first place, given the provisos surrounding it<br/> (that it was non-backwards compatible and that it was unclear what it<br/> would do on non-POSIX platforms).<br/><br/> While no clear concensus emerged as to what should be done, most<br/> people that commented suggesting that backwards compatibility was<br/> paramount, and in any event the code needs a thorough overhaul.<br/><br/> up on the blocks<br/><br/><br/>&quot;stat()&quot; and &quot;-X&quot; for tied handles<br/><br/> Robert Norris, who goes for tied file handles in a big way, delved<br/> into the guts in order to allow &quot;stat&quot; and &quot;-X&quot; (where X is f, d, b,<br/> ...) to do something sane. Rafa&euml;l Garcia-Suarez looked upon it<br/> favourably, but waited to see if other people had any opinions, as he<br/> doesn&#39;t really do tied handles at all.<br/><br/><br/><br/>Incorrectly failing test in lib/Pod/t/text.t<br/><br/> A correction for a bug in &quot;Pod::Simple&quot; meant that a work-around in<br/> the test suite was no longer required. This made it into both blead<br/> and the podlators kit.<br/><br/><br/><br/>&quot;perldoc -q ...&quot; searches index entries (&quot;X&lt;&gt;&quot;)<br/><br/> Ren&eacute;e B&auml;cker noticed a slew of &quot;X&lt;&gt;&quot; going to waste in the perl FAQs,<br/> and therefore tweaked &quot;perldoc -q&quot; to look at them when asked to<br/> perform a search.<br/><br/><br/><br/>New and old bugs from RT<br/><br/>-e tests not reliable under Win32 (#30622)<br/><br/> Steve Peters noted that Cygwin is now reliable, although the problem<br/> persists with Windows.<br/><br/><br/><br/>&quot;CGI::Util&quot;, expire_calc (#33047)<br/><br/> Tom Hospel wondered why his bug had been resolved, since he thought<br/> the initial problems were still present. Bram demonstrated why he<br/> thought otherwise, and invited Tom to point out where his reasoning<br/> was incorrect.<br/><br/> In any event, the bug should probably be addressed via Lincoln Stein,<br/> the module&#39;s author.<br/><br/> and we will synch<br/><br/><br/>&quot;\n&quot; after $ in regex (#35877)<br/><br/> Bram thought that a nice warning for this problem would be a warning<br/> that said &quot;Possible unintended interpolation of $\ in regular<br/> expression&#39;, assuming it&#39;s actually possible. Yitzchak Scott-Thoennes<br/> observed that there is an elegant work-around to silence the warning,<br/> by way of &quot;${/}&quot;.<br/><br/> assuming that&#39;s also possible<br/><br/><br/>&quot;File::Temp&quot; and unsafe shell characters (#50146)<br/><br/> Ed Avis failed to see why anyone still used of &quot;system&quot; when<br/> &quot;IPC::Run&quot; was so much nicer.<br/><br/> &#39;coz it ain&#39;t core?<br/><br/><br/>&quot;pod2man&quot; needs to translate some ASCII characters (#50950)<br/><br/> Steve Peters committed Mike Ward&#39;s patch that addressed the rendering<br/> of backticks. There was also the issue of a =head2 with two C&lt;&gt; blocks<br/> (#53974)<br/><br/> podlators are go<br/><br/><br/><br/>perl-5.10.0 glibc detected *** free(): invalid pointer (#51238)<br/><br/> Warren Dodge reported a problem in &quot;ClearCase::CtCmd&quot; puking on a<br/> &quot;free()&quot;. Steve Peters asked if he was able to coax a full stack trace<br/> out of his perl binary, but Warren wasn&#39;t sure how to do that and<br/> asked for guidance.<br/><br/> help me-e-e-e-e<br/><br/><br/>ext/POSIX/t/sysconf.t makes too many assumptions (#51276)<br/><br/> Steve Peters noted that thanks to change #33401 there&#39;s one less<br/> assumption in the code.<br/><br/> Posixly robust<br/><br/><br/>perl5.8.8 crashed when I build ikiwiki on gentoo linux (#53200)<br/><br/> Steve Peters verified that this problem is solved in 5.10. The next<br/> thing to do will be to see what a 5.8.8 debugging build thinks of it.<br/><br/> SMOD<br/><br/><br/>Regexp modifier to disable interpolation like m&#39;&#39; (#54702)<br/><br/> Bram thought that the /n modifier for a non-interpolating regular<br/> expression was a bad choice since it has a purpose in .NET patterns.<br/> Ed Avis thought that /d would do just as well; the letter is not<br/> important, the functionality is. Abigail could see the point in having<br/> a generalised quoting mechanism for non-interpolating patterns, &agrave; la<br/> &quot;q()&quot; and &quot;qq()&quot;, so long as it didn&#39;t break any existing code. Ed<br/> pointed out that &quot;m/./d&quot; was currently a syntax error.<br/><br/> doomed episodic demigoddesses<br/><br/><br/>perlio.c has a problem (both 5.8 and 5.10) (#54828)<br/><br/> Rafael applied Goro Fiju&#39;s patch, who then realised that the second<br/> part of it was redundant since the first part of the patch ensured a<br/> level of consistency that obviated the need for a subsequent sanity<br/> check.<br/><br/><br/><br/>Attempt to free unreferenced scalar fiddling with the symbol table (#54934)<br/><br/> After some further discussion with Niko Tyni concerning the eventual<br/> security implications leaving this bug unchecked could have, Rafa&euml;l<br/> applied the patch.<br/><br/><br/><br/>Hash subscript documentation (#55158)<br/><br/> Ian Goodacre supplied a goodly-sized chunk of documentation to explain<br/> hash subscripts more clearly. The patch was left on the table, perhaps<br/> because Ian did not supply another patch that removed the equivalent<br/> budget of words plus from elsewhere in the documentation.<br/><br/> documentation karma<br/><br/><br/>Fix cygwin mount test (#55160)<br/><br/> Reini Urban suggested a fix and Rafa&euml;l applied it.<br/><br/><br/><br/>&quot;File::Spec&quot; Cygwin/Win32 case_tolerant improvement (#55162)<br/><br/> Reini Urban attempted to improve &quot;File::Spec&quot; to make it behave better<br/> on Windows and produced several iterations of a patch that still<br/> wasn&#39;t accepted by midweek.<br/><br/><br/><br/>Autoflush output after :encoding pushed (#55172)<br/><br/> Kevin Ryde discovered that using an encoding on a file handle will<br/> interfere with any subsequent attempts to change the flushing<br/> behaviour (as in $|).<br/><br/><br/><br/>UTF-8 regex case insensitive character classes mishandle non-utf8 <br/>strings (#55250)<br/><br/> John Gardiner Myers found some more arguable behaviour in the handling<br/> of pattern matching in UTF-8 strings. Rafa&euml;l agreed with John, and<br/> stated that some of the misbehaviour will definitely need to be<br/> smacked down. Bram wrote some TODO tests.<br/><br/><br/><br/>cc_runtime syntax error (#55302)<br/><br/> Reini Urban discovered a long-standing bug in &quot;B::CC&quot;, which has been<br/> there more or less since its inception. Steve Peters applied the<br/> patch.<br/><br/> and you are the first person to notice... oh wait<br/><br/><br/>No warnings when reading from a file only opened for appending. (#55420)<br/><br/> Paul Fenwick was surprised to learn that using the diamond operator on<br/> an file handle in void context will warn if the file was opened for<br/> output, but not if it was opened for append. So he took a look at<br/> pp_hot.c to cook up a patch, and did so, but thought it was too easy.<br/> Especially since more exotic file opening directives like &quot;+&gt;&gt;&quot; should<br/> not warn.<br/><br/> Rafa&euml;l thought that fixing that would require a new &quot;IoTYPE&quot;.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> With Ren&eacute;e and Steve P getting their hands dirty along with Bram, the<br/> total bug count continues its downward trend. Hooray.<br/><br/> 274 new + 1286 open = 1560 (+15 -60)<br/><br/><br/><br/>New Core Modules<br/><br/> podlators 2.1.0<br/> The official announcement from Russ Allbery.<br/><br/><br/><br/> Steve Peters reported that &quot;Pod::Simple&quot; was slightly broken for a<br/> while since it initiated an undeclared dependency on<br/> &quot;HTML::Parser&quot; in order to scoop out &quot;decode_entites&quot;. But<br/> everything was straightened out in the end.<br/><br/> a simple matter of programming<br/><br/><br/> On the other hand, when Nicholas Clark integrated the upgrade into<br/> 5.8.9 he discovered that a new test was failing in UTF-8 locales.<br/><br/><br/><br/> Sys-Syslog 0.25<br/> S&eacute;bastien Aperghis-Tramoni realised that 0.25 had not made it into<br/> core, which was a pity, since it contained fixes to all sorts of<br/> issues.<br/><br/><br/><br/> Nicholas went out for a smoke, and discovered lots of errors on<br/> blead. S&eacute;bastien was able to reduce the problem to a tiny test<br/> case involving &quot;constant&quot;. After some more detective work, he<br/> confirmed that there was a discrepancy between<br/> &quot;ExtUtils::Constant&quot; in blead and on CPAN. And further that the<br/> discrepancy was an issue of proxy subroutines.<br/><br/> This in turn led to the discovery that there wasn&#39;t any<br/> documentation for &quot;ExtUtils::Constant::ProxySubs&quot;, which, at the<br/> very least, makes it difficult for anyone to realise that it could<br/> be of any use.<br/><br/> Working together, S&eacute;bastien and Nicholas ironed out all the bugs<br/> that were deemed necessary to fix.<br/><br/> some 5.6.0 breakage observed<br/><br/><br/>In Brief<br/><br/> Paul Fenwick reported on his &quot;; updates.<br/><br/> now with 5 minute video tutorial!<br/><br/><br/> Dave Mitchell observed that change #32881, to make &quot;Data::Dumper&quot;<br/> handle blessed regexes properly caused 5.10-maint to dump core.<br/><br/><br/><br/> Bram spent most of the week helping Jochen Luig come to grips with<br/> some perl 5.10.0 installation issues on CentOS 5 but success eluded<br/> them.<br/><br/><br/><br/> John E. Malmberg proposed some correct CGI/t/upload*.t fixes for VMS,<br/> but learnt that Craig A. Berry had already beaten him to it.<br/><br/><br/><br/> Re: Change 33987: Upgrade to podlators-2.1.0 Some<br/> of the porters helped out with some datapoints to help Torsten<br/> Foertsch understand some &quot;Linux::Smaps&quot; kernel/perlio dependencies.<br/><br/> try this at home<br/><br/><br/> Rafa&euml;l Garcia-Suarez took Ren&eacute;e B&auml;cker&#39;s patch to make &quot;perldoc -q<br/> slurp&quot; do something useful.<br/><br/> no more bug #8806<br/><br/><br/> Steve Peters idly wondered if there was a VAX Ultrix box alive<br/> somewhere. If so, it would help solve bug #17146.<br/><br/> stalled until further notice<br/><br/><br/> Ren&eacute;e B&auml;cker found a series of tickets in RT that could be closed. But<br/> when I went to look, Rafa&euml;l had already beaten me to it.<br/><br/> i feel inferior today<br/><br/><br/> Ren&eacute;e also noticed, regarding bug #19388, that the behaviour changed<br/> in Perl 5.10.<br/><br/> but is it any better?<br/><br/><br/> Shlomi Fish announced that he was revamping the Perl FAQs. Rafa&euml;l<br/> directed him to the &quot;perlfaq-workers&quot; mailing list.<br/><br/><br/><br/>Last week&#39;s summary<br/><br/> This Week on perl5-porters - 25-31 May 2008<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/>-- <br/>stubborn tiny lights vs. clustering darkness forever ok?<br/> Sat, 14 Jun 2008 13:47:35 +0000 This Week on perl5-porters - 25-31 May 2008 by David Landgren This Week on perl5-porters - 25-31 May 2008<br/><br/> &quot;I&#39;ve fixed the bug itself as change #33952. (Whoo hoo! A bug that<br/> was easy to locate, fix, and test for. You don&#39;t see that very often<br/> :-)&quot; -- Dave Mitchell, happy man.<br/><br/>Topics of Interest<br/><br/>&quot;File::Path::mkpath()&quot; incompatibility in perl-5.10<br/><br/> David Landgren replied to Jan Dubois on the subject of inodes on<br/> Win32. &quot;perlport&quot; says the second value in the return list from &quot;stat&quot;<br/> is always 0, and this throws off the code that detects race<br/> conditions. As such, there&#39;s no way to determine if an attacker is<br/> manipulating the filesystem for some nefarious purpose while a<br/> long-running &quot;rmtree()&quot; call is running.<br/><br/> As it turns out, Windows filesystems may be intrinsically immune to<br/> the attack, since you cannot move (or remove) a directory if any<br/> process whatsoever has set their current working directory to it, or<br/> any directory underneath it.<br/><br/> different strokes for different folks<br/><br/><br/>&quot;Data::Dumper&quot; patch<br/><br/> Earlier this month, Rafa&euml;l Garcia-Suarez applied a patch from Alexandr<br/> Ciornii to get the bleading &quot;Data::Dumper&quot; to compile on older perls.<br/> Dave Mitchell wondered whether C compilers understood Perl comments.<br/> If not, this may mean that the patch needs patching.<br/><br/> slash that hash<br/><br/><br/>Change 30608 (17 March 2007)<br/><br/> Bram looked at change #30608, which involved commenting out a &quot;study&quot;<br/> operation in op/taint.t. This results in the tests not really testing<br/> what they set out to test.<br/><br/> He asked if anyone could recall why the line was commented out. No<br/> takers, but I wonder if it has something to do with Yves Orton<br/> discovering and UTF-8 and &quot;study&quot; studiously ignored each other in the<br/> regexp engine.<br/><br/><br/><br/>Consistent use of honor (instead of honour)<br/><br/> The British speller in me hates this idea.<br/><br/> but consistency has a lot going for it<br/><br/><br/>&quot;Module::Build&quot; changes for VMS<br/><br/> John E. Malmberg revived the stranded changes for &quot;Module::Build&quot; that<br/> were put aside in the lead up to 5.10.0. Essentially a number of<br/> Unixisms needed to be excised from the code.<br/><br/> Craig A. Berry went through the changes with a fine-toothed comb and<br/> picked up a number of glitches that needed work. John revised his work<br/> and then had a patch ready for consideration by Ken Williams.<br/><br/> Craig found it hard to reconcile blead&#39;s &quot;Module::Build&quot; with Ken&#39;s<br/> own repository. Ken found himself regretting Perforce&#39;s ability to<br/> track the integration of patches. The plan at the end of the week was<br/> to attack Ken&#39;s repository directly, and then dump something from that<br/> back into blead.<br/><br/> John also figured out what was going wrong with &quot;Archive::Tar&quot;<br/> creating an unopenable archive on VMS, which would have them within an<br/> inch of having &quot;Module::Build&quot; build and test perfectly on VMS.<br/><br/> tales of the reconstruction<br/><br/><br/> John detailed the &quot;Archive::Tar&quot; issue with VMS regarding<br/> Module/Build/t/ppm.t in more detail in another thread. The problem<br/> boils down to the different ways (stream and record oriented) that one<br/> may employ to read a file on VMS. After this is fixed all that will be<br/> needed is to mark VMS as having case-insensitive file names.<br/><br/><br/><br/>Confused about &quot;close STDIN&quot;<br/><br/> Bram was looking over an old bug report and trying to understand what<br/> happens when one closes &quot;STDIN&quot;, and wondered if the documentation for<br/> &quot;close&quot; needed improvement.<br/><br/> Mark Mielke explained the difference between file descriptor 0 and the<br/> &quot;STDIN&quot; file handle, which, through an extraordinary coincidence of<br/> fate are usually the same, but sometimes aren&#39;t.<br/><br/> In which case, the documentation about &quot;STDIN&quot; needs to be worked on,<br/> rather than &quot;close&quot;.<br/><br/> closer<br/><br/><br/>ext/POISX/t/sigaction.t failing under harness<br/><br/> (And the rest of the title of the thread is &quot;...but not under test<br/> (and not failing with threads under harness)&quot;). Bram spent some time<br/> working to reduce the problem down to the tiniest test case possible,<br/> and in getting down to about five lines of real code, succeeded.<br/><br/> When he asked if anyone had an explanation for what was happening,<br/> however, he met with less success.<br/><br/><br/><br/>TODO of the week<br/><br/> Something for a person with basic Perl skills.<br/><br/>Profile &quot;installman&quot;<br/><br/> The &quot;installman&quot; script is slow. All it is doing text processing,<br/> which we&#39;re told is something Perl is good at. So it would be nice to<br/> know what it is doing that is taking so much CPU, and where possible<br/> address it.<br/><br/> (And there&#39;s a hot new profiler in town, &quot;Devel::NYTProf&quot;).<br/><br/>Patches of Interest<br/><br/>Testing $/ with in memory files<br/><br/> Back in April, Bram had added some new regression tests for bug<br/> #44833, that had itself been resolved many moons ago. At the time,<br/> Rafa&euml;l applied them. Early in May, Ben Morrow suggested that Bram&#39;s<br/> technique was not very cross-platform compatible, relying as it did on<br/> a specific environment variable that specific Unix shells leave<br/> behind. At the same time, Ben suggested a better internal-to-Perl<br/> condition, so Bram rewrote the test to use that.<br/><br/> This week Bram pinged the list since the change still hadn&#39;t been<br/> committed.<br/><br/><br/><br/>Recent change imposes dual-life<br/><br/> Steffen M&iuml;ller was keen to see an updated make it out to CPAN,<br/> since that would allow him to upgrade older perl installations. This<br/> in turn would stop &quot;use lib &#39;foo.par&#39;&quot; from issuing a useless warning.<br/><br/> He tracked down Tim Bunce, who was listed as the current author. Tim<br/> pleaded amnesia. Steffen took over maintenance, and posted a few<br/> tweaks that would allow him to ready the module for a CPAN release.<br/> Rafa&euml;l tweaked the license section to make it friendlier to license<br/> lawyers.<br/><br/> lib liberation front<br/><br/><br/>Watching the smoke signals<br/><br/>Smoke [5.11.0] 33949 FAIL(F) MSWin32 WinXP/.Net SP3 (x86/2 cpu)<br/><br/> Craig Berry glanced at one of Steve Hay&#39;s regular reports of smoke<br/> failures to the list, and suggested he try one of Craig&#39;s own tweaks<br/> to fix a failure that he had seen appearing on VMS.<br/><br/> preserving bits with File::Copy<br/><br/><br/>New and old bugs from RT<br/><br/>Document behaviour when optional match does not match (#3589)<br/><br/> Reini Urban wrote a patch for &quot;perlre&quot; in an attempt to resolve an<br/> eight year old bug report from Hugo van der Sanden, in which he was<br/> misled by the documentation (or rather, its ambiguity) to think that<br/><br/> &quot;babadad&quot; =~ /^((.)?a\2)+$/<br/><br/> should succeed. Other porters explained the reasoning behind the<br/> observed behaviour, and it was agreed that the documentation needed to<br/> clarify this issue.<br/><br/> And so it came to pass that Reini added a paragraph to &quot;perlre&quot; to do<br/> just that. Bram considered the explanation without looking at the bug<br/> report, and admitted that he didn&#39;t have a clue as to what it meant.<br/><br/> needs work<br/><br/><br/>\n after $ in regex (was: Strange regex failure?) (#35877)<br/><br/> As Bram continued his culling of RT issues, he came across the issue<br/> of &quot;qq[&gt;10\n] =~ /&gt;\d+$ \n/ix&quot; failing, where the original ticket<br/> author thought it should succeed.<br/><br/> As it turns out, on 5.10 and beyond, it does in fact succeed. But then<br/> Bram thought it might be worthwhile checking what happens when one<br/> omits the &quot;/x&quot; modifier, and was surprised to see that it failed,<br/> along with four other variations on a theme.<br/><br/> Zefram explained that this was to be expected, since the lack of<br/> spaces meant that &quot;dollar something&quot; turned into a real Perl scalar<br/> that contained something completely different, thus causing the match<br/> to fail.<br/><br/> meta dollar<br/><br/><br/>&quot;sub foo(@$) {}&quot; should generate an error (#36673)<br/><br/> Ren&eacute;e B&auml;cker thought that a prototyped function that has no body<br/> should be an error. Rafa&euml;l thought so too, but said that he needed to<br/> think about the ramifications a bit more. In the meantime, Ren&eacute;e<br/> revised the path.<br/><br/><br/><br/>Certain string handling functions don&#39;t warn on undef (#36875)<br/><br/> Now that &quot;uc&quot;, &quot;lc&quot; and the like warn if asked to operate on &quot;undef&quot;,<br/> Bram completed the picture by making &quot;reverse undef&quot; warn as well.<br/><br/><br/><br/>Threads + &quot;require IO&quot; causes segmentation fault (#37076)<br/><br/> Bram reported that this bug does not manifest itself on 5.8.9-tobe,<br/> nor on 5.10 and beyond. He concluded that the bug had likely been<br/> fixed, but asked for people on other platforms to take the test script<br/> for a spin.<br/><br/> reflexions in a threaded perl<br/><br/><br/>Back reference problem with quantified groups (#38133)<br/><br/> Bram supplied a TODO test for this problem, which was still waiting to<br/> be applied at the end of the week.<br/><br/><br/><br/>Fix bit-fields for VC (&quot;GIMME_Vbroken&quot; with 5.10.0/GCC and XS?) (#50386)<br/><br/> Dave Mitchell asked if the patch that resolved this bug was safe for<br/> 5.10.1, but Jan Dubois admitted that it wasn&#39;t binary compatible. But<br/> it&#39;s not that bad, just a bit of bloat.<br/><br/><br/><br/>Prototypes sneakily break :lvalue subs (#51408)<br/><br/> Rafa&euml;l Garcia-Suarez wondered if this problem could be solved through<br/> some judicious tweaking of ENTERSUB flags.<br/><br/><br/><br/>Doubled &lt;meta http-equiv&gt; header (#51542)<br/><br/> Ren&eacute;e supplied a patch to fix the two code paths in which could<br/> lead to &quot;&lt;meta http-equiv&gt;&quot; headers being emitted twice.<br/><br/><br/><br/>Trying to build perl5.8.3 under Maemo environment. (#53328)<br/><br/> After much to&#39;ing and fro&#39;ing, Bram managed to get Devendra Purbiya up<br/> and running. A symbolic link for &quot;pwd&quot; did the trick.<br/><br/><br/><br/>Bug with &quot;index()&quot; matching beyond end of string when \0 bytes <br/>(00000000) are involved (#53746)<br/><br/> Once he saw the TODO test, Dave Mitchell realised that there was a<br/> really simple fix for the bug.<br/><br/> so he fixed it<br/><br/><br/>&quot;usethread=no&quot; Configure compiler test file try.c is missing. (#54042)<br/><br/> H.Merijn Brand was puzzled as to why Reini Urban had only recently<br/> begun (for some definition of recent) to encounter this error, since<br/> the code in question has been touched in over a year. Andy Dougherty<br/> suspected that something must have changed in Reini&#39;s setup, to<br/> trigger a walk down a previously unvisited codepath.<br/><br/> Reini concurred, saying that an upgrade to cygwin2.dll could have<br/> changed the result from a &quot;fflush(NULL)&quot; call, which is what tripped<br/> up &quot;Configure&quot;.<br/><br/> all fixed<br/><br/><br/>Double free or corruption using threads and goto (#54756)<br/><br/> Luis Lencina reported this problem on 5.8.8, but Dave Mitchell was<br/> unable to reproduce it on 5.10 and beyond.<br/><br/> a good reason to upgrade<br/><br/><br/>Perl 5.10 memory corruption (#54758)<br/><br/> George Greer reported a problem with in-place sorts on 5.10. Rafa&euml;l<br/> tried to diagnose the problem, and Moritz Lenz tried to bisect the<br/> error to determine what patch caused the error. But while they were<br/> trying to work things out, Dave Mitchell strolled by and tweaked a<br/> couple of spots in pp_sort.c.<br/><br/> George was happy to report that Dave&#39;s patch corrected his cut-down<br/> test, as well as the real-life code from whence the problem came.<br/><br/> wrap it up as a test<br/><br/><br/>perlio.c has a problem (both 5.8 and 5.10) (#54828)<br/><br/> Goro Fuji reported an issue with &quot;PerlIORaw_pushed()&quot; and offered a<br/> patch to fix things up. Rafa&euml;l Garcia-Suarez agreed with the reasoning<br/> and applied one part of the patch. For the second part, he deferred to<br/> people with more experience with Windows, since he wasn&#39;t sure why it<br/> was needed.<br/><br/><br/><br/>Perl 5.10 segmentation fault using &quot;Net::SSH2::Channel&quot; (#54908)<br/><br/> Sebastien Rodriguez suffered segmentation faults with 5.10 when trying<br/> to use this module. Steve Peters built the module, and was alarmed by<br/> the number of compiler warnings it emitted. He also saw it fail an<br/> assertion.<br/><br/> &AElig;var Arnfj&ouml;r&eth; Bjarmason traced the problem down to the fact that it<br/> used the PV slot of a GV to store a pointer to a custom data<br/> structure, which reminded him of &quot;Math::Pari&quot; (another module that<br/> gave the porters grief a few weeks back).<br/><br/> On IRC, the concensus was that it would be very difficult to tweak the<br/> core to play nicely with the module, so the module will just have to<br/> adapt. What is more, despite the extensive test campaign that the<br/> porters conducted, it turns out that the test suite itself was<br/> hopelessly inadequate, since it passed, and yet the most basic real<br/> usage failed.<br/><br/> Which also meant that not a single person had tried 5.9.x with the<br/> module in the months leading up to 5.10.<br/><br/> so when we say test, TEST!<br/><br/><br/>IO on active pipes fails after ithread fork in 5.8.8 (#54926)<br/><br/> John Heidemann wrote about a simple program that performs differently<br/> depending on how it is run:<br/><br/> cat data | prog<br/> # or<br/> prog &lt;data<br/><br/> Specifically, according to &quot;strace&quot;, the internals perform an &quot;lseek&quot;<br/> after spinning off a new thread, and this appears to fail in the first<br/> example.<br/><br/> that&#39;s not supposed to happen<br/><br/><br/>Attempt to free unreferenced scalar fiddling with the symbol table (#54934)<br/><br/> Niko Tyni showed a tiny program that demonstrated a larger problem<br/> that occurs when one tries to blow away a dynamically created package.<br/> I give him bonus points for taking the time to bisect the change log<br/> and isolate the offending patch.<br/><br/> Armed with that information, Rafa&euml;l Garcia-Suarez was able to supply a<br/> patch that fixed up the problem, but he had a sneaking feeling that it<br/> might cause a memory leak. Alex Vandiver was pretty pleased, since a<br/> corollary of the bug fix was that SVK no longer segfaults on 5.10 and<br/> blead.<br/><br/> heads up for 5.10.1<br/><br/><br/>Building 5.6.2 Fails with -Duseshrplib on Leopard (#54952)<br/><br/> David Wheeler had problems with a build of 5.6.2, and despite its<br/> exceptional old age, a number of porters spent a surprising amount of<br/> time trying to figure out why it had stopped working and what one<br/> might to be able to do in order to get it working again.<br/><br/> it&#39;s dead Jim<br/><br/><br/>Crash on binary-or lvalue operation on &quot;qr//&quot; (#54956)<br/><br/> Steve Peters delved further into this problem and discovered that &quot;&amp;=&quot;<br/> fails in the same way (which means &quot;^=&quot; is probably a likely bet too)<br/> and any sort of reference to a non-numeric scalar would suffice.<br/><br/> He graciously stepped aside to wait in case anyone felt like jumping<br/> in and fixing it. He can dream, right?<br/><br/> no, after you<br/><br/><br/>Strange &quot;map {}&quot; behavior when returning two values (#54974)<br/><br/> David Wheeler was bitten by the tokeniser choosing between a code<br/> block and an anonymous hash and taking the wrong decision. The<br/> disambiguation involves using a leading semi-colon or parentheses.<br/> Debate raged as to what would be clearest to a maintenance programmer<br/> of little brain.<br/><br/><br/><br/>Initial make failing, but don&#39;t know why (#55008)<br/><br/> Steve Michel was mystified by a build failing. Andy Dougherty was<br/> quite puzzled as well, but thought some of the configure switches<br/> seemed a little unusual. Jim Cromie pinged the list about his patch<br/> from last year that would outlaw unrecognised switches.<br/><br/><br/><br/>Problem with porting perl on Armel (#55038)<br/><br/> Devendra Purbiya continued to have build troubles, this time on an ARM<br/> platform. All sorts of weird failures were encountered. Bram patiently<br/> walked Devendra through a series of steps to try and get to the bottom<br/> of the issues.<br/><br/><br/><br/>Debugger loops infinitely with &quot;__DIE__&quot; and &quot;DESTROY&quot; (#55084)<br/><br/> Peter Scott showed a nifty technique to give the debugger a bad case<br/> of indigestion, and traced the problem all the way back to 5.004.<br/><br/> time to die<br/><br/><br/>Perl5 Bug Summary<br/><br/> Hey, we cracked he 1600 barrier!<br/><br/> 280 new + 1309 open = 1589 (+12 -54)<br/><br/><br/><br/>New Core Modules<br/><br/> Thread::Queue 2.09<br/> Jerry D. Hedden pushed a new version out that deals more<br/> gracefully with older perls.<br/><br/><br/><br/>In Brief<br/><br/> Andreas K&ouml;nig filed bug #54776 concerning a failure with<br/> &quot;Archive::Extract&quot; on 5.10.1-tobe, and then later reported that change<br/> #33470 corrected the problem.<br/><br/><br/><br/> Ren&eacute;e B&auml;cker found some tickets in RT that had patches ready for the<br/> picking, as well as some more that could be closed.<br/><br/> low hanging fruit<br/><br/><br/> Ren&eacute;e also supplied documentation for to render it less<br/> recursive and incomplete (bug #36516)<br/><br/><br/><br/> H.Merijn Brand found some warnings in a Unicode test environment when<br/> dealing with &quot;Module::Build&quot;.<br/><br/> nasty unexpected non-continuation bytes, we hates them<br/><br/><br/> Steve Peters added some more &quot;-fstack-protector&quot; goodness. (bug<br/> #54120)<br/><br/><br/><br/> H.Merijn Brand issued a ping for &quot;Math::Complex&quot; regarding smoke<br/> failures on HP-UX. Since maintenance is currently in a state of flux,<br/> somewhere between Jarkko Hietaniemi and Zefram, the message went<br/> adrift.<br/><br/><br/><br/> Andy Dougherty and Craig Berry managed to propagate new i_gdbm*ndbm<br/> variables somewhere in the depths of Configure.<br/><br/><br/><br/>Last week&#39;s summary<br/><br/> I think these must have got wedged in a moderator queue somewhere.<br/><br/> This Week on perl5-porters - 11-17 May 2008<br/><br/><br/> This Week on perl5-porters - 18-24 May 2008<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/>-- <br/>stubborn tiny lights vs. clustering darkness forever ok?<br/> Thu, 05 Jun 2008 14:37:09 +0000 This Week on perl5-porters - 18-24 May 2008 by David Landgren This Week on perl5-porters - 18-24 May 2008<br/><br/> &quot;Ah, more details about filenames. Well, this sounds positively weird.<br/> Octet strings are not particularly user-friendly if you can&#39;t<br/> interpret them as characters reliably.<br/><br/> From what you say, and what I think I&#39;ve heard elsewhere, Unix<br/> filename interpretation is a mess. Seems like the only bigger mess<br/> I&#39;ve heard about is VMS file handling, where they seem to have a<br/> choice of several messes.&quot; -- Glenn Linderman, deep in the heart of<br/> Unicode, case conversion, filenames, encodings, character sets, &szlig; and<br/> other exciting issues.<br/><br/>Topics of Interest<br/><br/>Another perldoc shortcut<br/><br/> Tom Christiansen commented on Gisle Aas&#39;s perldoc shortcut (that<br/> &quot;perldoc ipc&quot; would redirect to &quot;perlipc&quot;, assuming no ipc.{pod,pm}<br/> existed), saying that in pre-5.8 times he had been working on a<br/> technique to make &quot;perlipc&quot; itself, run from the command-line, do the<br/> same thing. Somewhere along the line, things went astray and the work<br/> never made it the core.<br/><br/> not bitter, not really<br/><br/><br/>&quot;File::Path::mkpath()&quot; incompatibility in perl-5.10<br/><br/> I had expected to make some progress on this issue, this week, but<br/> Real Life is eating my tuits like popcorn at the moment.<br/><br/> next week, cross my heart<br/><br/><br/>On the almost impossibility to write correct XS modules<br/><br/> I might preface this thread &quot;on the almost impossibility to write a<br/> correct summary of a complex subject&quot;. Marc Lehmann had written a few<br/> weeks ago that a bare &quot;char *&quot; through an XS API is fraught with<br/> peril, because there is no metadata available to tell you if it&#39;s<br/> Latin-1, KOI8-R, UTF-8 or something else.<br/><br/> The thread blossomed this week, with a long-running debate about what<br/> is broken (and when, and how). One point that was made is that Win32<br/> encodes filenames in a particular way that doesn&#39;t really jibe with<br/> the rest of the internals. Unfortunately, it is only with hindsight<br/> that the problem really became apparent, hence the dilemma is that<br/> fixing it would break everything that has tried, with various degrees<br/> of success, to work around it.<br/><br/> The &quot;utf8&quot; flag on SVs was again singled out as being responsible for<br/> world hunger and other assorted ills, with a number of examples<br/> demonstrating the problems.<br/><br/> Rafael Garcia-Suarez outlined an approach that just may be a way<br/> forward out of the mess. After listening to Juerd Waalboer, he thought<br/> that marking an SV as &quot;binary&quot; and thereby disqualified from being<br/> upgraded to Unicode would be quite useful.<br/><br/> Glenn Lindemann invented &quot;blorf&quot; as an opaque token for discussing the<br/> issues without people getting sidetracked over definitions of bytes,<br/> strings, characters, numbers and codepoints.<br/><br/> hard core<br/><br/><br/>It&#39;s wafer thin!<br/><br/> David Nicol&#39;s tiny patch to document the empty pattern (&quot;m//&quot;) more<br/> clearly sparked a fairly intense technical debate over how to get rid<br/> of the latter.<br/><br/> One point of particular interest was when Aristotle Pagaltzis<br/> suggested a &quot;s///R&quot; modifier which would return a modified copy of the<br/> original string, instead of modifying the contents and returning the<br/> number of matches made.<br/><br/> As it turns out, this would solve a number of problems very nicely,<br/> not the least being the elegantly succinct<br/><br/> my @changed = map { s/$this/$that/R } @list;<br/><br/> so let&#39;s have it already<br/><br/><br/>Compiling 5.10 with g++ 4.3.0<br/><br/> Not content with compiling perl with old gcc compilers, Bram took a<br/> very new one for a spin to see how things worked out.<br/><br/> It did of course go *boom* (otherwise you probably wouldn&#39;t be reading<br/> about it). Bram traced the problems down to typedefs and enums in<br/> system headers, and wondered how in Configure this could be sorted<br/> out.<br/><br/> duty now for the future<br/><br/><br/>&quot;Getopt::Long&quot;, + options, installperl and +v<br/><br/> Nicholas Clark was looking how to factor out the common code in<br/> &quot;installman&quot; and &quot;installperl&quot; and noticed that the main sticking<br/> point regarding &quot;installperl&quot; was that it admitted a &quot;+v&quot; switch (and<br/> it does something else than &quot;-v&quot;), using hand-rolled @ARGV processing.<br/><br/> This precludes it from using &quot;Getopt::Long&quot; because, while<br/> &quot;Getopt::Long&quot; can be taught to accept &quot;-x&quot; and &quot;+x&quot;, it offers no way<br/> of discriminating between the two.<br/><br/> Johan Vromans said that as it turns out, with a bit of hand-holding,<br/> it is possible to coax the information out as things stand, and he<br/> plans to improve support for - and + switches in a future release.<br/><br/> Nicholas thought that a middle path might be to keep the hand-rolled<br/> code, but adjust it to dump its results into an %opts hash, which<br/> would allow a drop-in replacement when &quot;Getopt::Long&quot; gets updated<br/> with the needed functionality.<br/><br/> This brought forth a long discourse from Tom Christiansen, who<br/> admitted to the wrong kind of laziness regarding command-line switches<br/> by resorting to hand-rolling code to deal with a solitary switch when<br/> in fact it would have been better to rely on a module. When he quizzed<br/> Larry Wall about it during the first decade of Perl&#39;s development,<br/> Larry admitted to rolling his own frequently, since it seemed a bit of<br/> a waste in his eyes to pull in a module for just one or two or<br/> switches for a program little more than a one-liner. As a peace<br/> offering for his own hand-rolling sins, Tom offered the list the<br/> ultimate file renaming Perl program.<br/><br/> bespoke options<br/><br/><br/>On broken manpages, trolling, inconsistent implementation and the <br/>difficulty to fix bugs<br/><br/> Marc Lehmann wrote a long response to Jan Dubois as a spin-off from<br/> the &quot;On the impossibility of writing XS correctly&quot;, stating that<br/> Perl&#39;s Unicode handling because some parts of the core deal with<br/> Unicode one way, and other parts another way. This leads to annoying<br/> bugs, in that they are hard to identify, and hard to fix.<br/><br/> Tom Christiansen called him out for excessive use of rhetoric and<br/> asked him to clarify a couple of points. Several messages later Yves<br/> Orton offered a nice summary of the situation that showed where things<br/> break down. Then people started to speak about encodings, bytes,<br/> characters and character sets and as usual my eyes began to acquire<br/> that dead fish look.<br/><br/> see also<br/><br/><br/>On the problem of strings and binary data in Perl<br/><br/> On the subject of subjects on the problem of things, Yves Orton broke<br/> out into a new thread to discuss the schizophrenic attitude that Perl<br/> has when dealing with strings. He put forward a proposal for<br/> identifying and processing Unicode strings asked people to point out<br/> where he was wrong. Rafael Garcia-Suarez made a decent effort at doing<br/> just that.<br/><br/> Juerd Waalboer provided a contrarian argument, suggesting that Unicode<br/> works pretty well in Perl, insofar as one can have strings containing<br/> Unicode, and other strings containing binary data, because in a<br/> correct program, one usually doesn&#39;t have the two appearing in the<br/> same string. (such as having the Thai-encoded name of a Thai person<br/> concatenated with the slurped contents of a PNG file representing his<br/> signature in the same Perl scalar). In Juerd&#39;s eyes, the main problems<br/> come about when dealing with pure binary data and hoping that it<br/> doesn&#39;t wind of being treated as Unicode when it shouldn&#39;t.<br/><br/> more recommended reading<br/><br/><br/> As a followup to the above discussion, Juerd announced that he had<br/> released BLOB to CPAN.<br/><br/><br/><br/>&quot;; alias for &quot;%+&quot;<br/><br/> Amir Elisha Aharoni ventured for the first time into the waters of<br/> p5p, suggesting that %NAMED_CAPTURE would be a nice English name for<br/> the new 5.10 &quot;%+&quot; variable. Yves Orton thought the idea was worthy of<br/> consideration, but one also needed to deal with &quot;%-&quot; at the same time,<br/> which could be named %MAMED_CAPTURE_LIST.<br/><br/> updating the babelfish<br/><br/><br/>07arith.t failing on &quot;_strptime(&#39;2001-2-29 12:34:56&#39;,&#39;%Y-%m-%d %H:%M:%S&#39;)&quot;<br/><br/> February 29, 2001 was not a leap year, so trying to format it is an<br/> error. Apparently there is a test in &quot;Time::Piece&quot; to ensure it fails<br/> in the correct manner. Unfortunately, on some of the more exotic<br/> platforms like VMS and OS/X, the call also correctly fails, but does<br/> so in a way that fools the test suite.<br/><br/> at the third stroke it will be the 32nd of february<br/><br/><br/> Gisle Aas gave some additional background regarding Time-Piece-1.13<br/> test failures on HP-UX, by forwarding a message he sent to Matt<br/> Sergeant, the author of &quot;Time::Piece&quot;.<br/><br/><br/><br/>Some smoke digging (HP-UX failures)<br/><br/> H.Merijn Brand delved into HP-UX smoke reports to figure out what was<br/> going wrong. &quot;Time::Piece&quot; was already under control (see above), but<br/> &quot;Math::Trig&quot; was failing (and the only recent change has been an<br/> upgrade to &quot;Math::Complex&quot;). Tests for &quot;readdir&quot; were also turning<br/> black, which suggested subtler problems.<br/><br/> Half way through the conversation, Craig Berry announced the<br/> integration of Gisle Aas&#39;s fix for &quot;Time::Piece&quot; which addressed the<br/> VMS problems, and H.Merijn reported that it did the trick for HP-UX as<br/> well. Using the power of CPAN, H.Merijn was able to go through<br/> previous &quot;Math::Complex&quot; versions, and this allowed him to resolve<br/> that problem.<br/><br/> I think the &quot;readdir&quot; problem was solved by upgrading smoke harness.<br/><br/> The remaining failure appeared to be caused by &quot;use blib&quot; hoisting in<br/> an errant directory into @INC. Bram showed him how to fix that, which<br/> should nail down the last error.<br/><br/> going for O O O O<br/><br/><br/> But then H.Merijn reported a problem with a failing blib test, and<br/> everyone pretended to pay attention to the character encoding debates.<br/><br/> war knocked<br/><br/><br/>TODO of the week<br/><br/>Improve the coverage of the core tests<br/><br/> Use &quot;Devel::Cover&quot; to ascertain the core modules&#39;s test coverage, then<br/> add tests that are currently missing.<br/><br/> Just to help budding testers along, here is a non-exhaustive list of<br/> suggestions to get you going (suggested by sorting out the biggest<br/> &quot;.pm&quot; files is lib/):<br/><br/> &quot;AutoLoader&quot;<br/> &quot;AutoSplit&quot;<br/> &quot;Benchmark&quot;<br/> &quot;Cwd&quot;<br/> &quot;DB&quot;<br/> &quot;Dumpvalue&quot;<br/> &quot;Exporter&quot;<br/> &quot;Memoize&quot;<br/> &quot;NEXT&quot;<br/> &quot;SelfLoader&quot;<br/> &quot;charnames&quot;<br/> &quot;diagnostics&quot;<br/> &quot;overload&quot;<br/> &quot;warnings&quot;<br/><br/> Even concentrating on a single module would be helpful.<br/><br/>Patches of Interest<br/><br/>&quot;ExtUtils::ParseXS&quot; - Error reporting problem with INTERFACE and ALIAS <br/>keywords<br/><br/> About a year ago, Ken Williams explained that, while he was the<br/> maintainer of this module, he didn&#39;t know what was the best way to<br/> address the problem that Robert May had brought up regarding error<br/> reporting.<br/><br/> then<br/><br/><br/> Of the two approached supplied by Robert as a solution, Ken liked the<br/> second one back then, and Nicholas Clark, reviving the conversation<br/> agreed that it seemed to make more sense.<br/><br/> He had a look at how things work currently, and realised that with a<br/> new function, he could effect a small saving of space. As a result,<br/> both the core and &quot;EU::PXS&quot; could rely on the function.<br/><br/> Nicholas wrote the function, and felt that it would make it into 5.8.9<br/> and 5.10.1. or older releases, &quot;ExtUtils::ParseXS&quot; would need to<br/> bundle the function, and emit it as required if the core didn&#39;t supply<br/> it.<br/><br/> Rob thought that this sounded reasonable, except that if ever a bug is<br/> found in the function that Nicholas just wrote, it would need to be<br/> fixed both in the core and EU::PXS. Since this would be less that<br/> desirable, Robert said that he would try to come up with an alternate<br/> patch at some point.<br/><br/> now<br/><br/><br/>&quot;; should not warn about loading &quot;.par&quot; files<br/><br/> Paul Fenwick noted that a &quot;use lib &#39;Foo.par&#39;&quot; will issue a warning,<br/> but load the damned thing anyway. Since someone pulling in a library<br/> in this way probably has a pretty good idea what they&#39;re doing anyway,<br/> Paul thought it would be a good idea to suppress the warning, just for<br/> &quot;.par&quot; files.<br/><br/> Rafael Garcia-Suarez felt that this made sense, so he applied the<br/> patch. Steffen M&uuml;ller wanted to know if this meant that would<br/> be dual-lifed, so that 5.8.8 could benefit from the improvements.<br/><br/> dual-life pragma on par<br/><br/><br/>Indented preprocessor directives in sv.c<br/><br/> Jerry D. Hedden noticed that some preprocessor defined in sv.c were<br/> not flush left, and thought that some compilers would choke on it.<br/> H.Merijn Brand explained that it was perfectly legal according to<br/> ANSI, although he admitted that some older compilers, such as on AIX,<br/> would likely get into trouble over this.<br/><br/> Both Robin May and Andy Dougherty explained that something that does<br/> work is to leave the # in the first column, and then indent the macro<br/> preprocessor directive as appropriate.<br/><br/> hash hard left<br/><br/><br/>New and old bugs from RT<br/><br/>*x{IO} bizarre copying (#3314)<br/><br/> Steve Peters discovered that some bizarre code that used to emit a<br/> bizarre error message now emits a more prosaic error message. He<br/> noticed that the change occurred way back in change #27179 and asked<br/> if anyone had objections to backporting it to 5.8.<br/><br/> a leap into the unknown<br/><br/><br/>&quot;exists()&quot;: error message on wrong argument type is incorrect (#38955)<br/><br/> A couple of years ago, Jeremy Hetzler noted that &quot;exists&quot; may be<br/> applied to a HASH, an ARRAY and also a subroutine name. The<br/> documentation even admits as much.<br/><br/> On the other hand, for incorrect use, such as applying it to a scalar,<br/> the error message makes mention of only HASH and ARRAY, not of<br/> subroutines.<br/><br/> Bram patched the source to bring the error message into line with the<br/> documentation and implementation, and Rafael Garcia-Suarez applied it.<br/><br/> language lawyers rejoice<br/><br/><br/>No complaint about bareword (#53806)<br/><br/> Rafael Garcia-Suarez supplied a fix for the &quot;print Does::Not::Exist,<br/> &#39;&#39;&quot; problem, so that the bareword is correctly identified as such, and<br/> not stringified. Despite all the magic surrounding &quot;print&quot;&#39;s first<br/> argument, all that Rafael needed to do was to hoist a goto label four<br/> lines higher in the source.<br/><br/> H.Merijn Brand applied the correction, along with Bram&#39;s tests.<br/><br/><br/><br/>&quot;pod2man&quot; loses =head2 starting &#39; or . (#53910)<br/><br/> Bram correctly identified &quot;Pod::Man&quot; as a dual-life module. This means<br/> that the best place to fix this particular problem is in the CPAN<br/> distribution, which can then be synched with blead when the problem is<br/> fixed.<br/><br/> SEP<br/><br/><br/>&quot;IO::Seekable&quot; + &quot;POSIX&quot; = constant subroutines redefined (#54186)<br/><br/> Part of the fallout from Nicholas Clark&#39;s corrections for this bug is<br/> that calls with the wrong numbers of arguments causes the program to<br/> croak. Rafael Garcia-Suarez felt it was safe enough to inflict on the<br/> world. As a point of confirmation, S&eacute;bastien Aperghis-Tramoni ran a<br/> code search and didn&#39;t find any examples of such usage.<br/><br/> safe to break<br/><br/><br/>&quot;perlipc&quot; problems<br/><br/> Andrew at Sundale noted a problem in the documentation in &quot;perlipc&quot;<br/> concerning the signalling of negative process IDs. Steve Peters<br/> tweaked the example to show more clearly what was happening.<br/><br/> perlipc and negative pids (#54412)<br/><br/><br/> Andrew found another problem with &quot;setsid&quot;, in that that the<br/> documentation suggests a &quot;setsid or die&quot; idiom, except that, if one<br/> reads the manpage for &quot;setsid&quot;, one learns that it returns -1 on error<br/> (as do many other system calls). As such, if the &quot;setsid&quot; call fails,<br/> the die won&#39;t be triggered.<br/><br/> perlipc and negative truth (#54422)<br/><br/><br/> While we&#39;re on the subject, Andrew found one final problem concerning<br/> the documentation for safe pipe opens.<br/><br/> perlipc unclear on the concept (#54424)<br/><br/><br/>Faulty &quot;select()&quot; in Activestate perl (#54544)<br/><br/> Marc Lehmann noted that &quot;select&quot; returns &quot;Unknown Error (10022)&quot;<br/> instead of simply timing out.<br/><br/> just no it<br/><br/><br/>Assertion failure fiddling with @ISA (#54566)<br/><br/> Niko Tyni discovered a way of abusing @ISA that would result in an<br/> assertion failure. Rafael Garcia-Suarez figured out what was going<br/> wrong in mg.c and provided a patch, that H.Merijn Brand applied.<br/><br/> out through the smtp tunnel<br/><br/><br/>&quot;Can&#39;t take log of 0&quot; error in perl 5.8.8. 64 bit (#54590)<br/><br/> Lourdes Pe&ntilde;a Castillo reported that on some versions of perl, but not<br/> others, the number 2.5e-310 gets rounded down to 0, and the log of 0<br/> is negative infinity.<br/><br/> Various porters reported similar behaviour on a variety of perls,<br/> platforms and Configure options, but no clear reasons why.<br/><br/> now you see it, now you don&#39;t<br/><br/><br/>&quot;PerlIO::via&quot; free unrefed scalar on certain dodgy code (#54686)<br/><br/> Kevin Ryde wrote some slightly broken code that managed to make the<br/> perl interpreter complain about memory problems. He wasn&#39;t especially<br/> worried about a fix any time soon, but wondered if it was a symptom of<br/> an underlying problem that needed to be addressed.<br/><br/> need to know<br/><br/><br/>Regexp modifier to disable interpolation like m&#39;&#39; (#54702)<br/><br/> Ed Avis filed a feature enhancement request, to allow the &quot;/n&quot; flag on<br/> a regular expression to indicate that no interpolation should be<br/> performed.<br/><br/> Currently, only &quot;m&#39;300 $US&#39;&quot; (with single quotes as a pattern<br/> delimiter) does no interpolation. Ed thought that &quot;/300 $US/n&quot; might<br/> be clearer.<br/><br/> we&#39;ll get the whole alphabet in some day<br/><br/><br/>&quot;PathTools-3.27&quot; triggers a bug in Perl (#54728)<br/><br/> Jan Dubois isolated a problem in &quot;File::Spec::Win32&quot;&#39;s &quot;catfile&quot;<br/> function. The fix from the client side is to stringify a $1 passed as<br/> a parameter (a variation on the &quot;better to be paranoid than sorry&quot;<br/> theme), since &quot;catfile&quot; appears to clobber it with some other action<br/> before getting around to using it. Ideally, &quot;catfile&quot; should stringify<br/> its arguments itself, although Jan wondered if there was a more<br/> general way of solving the problem.<br/><br/> match point<br/><br/><br/>Perl5 Bug Summary<br/><br/> 278 new + 1345 open = 1623 (+13 -43)<br/><br/><br/><br/>New Core Modules<br/><br/> &quot;Thread::Semaphore&quot;<br/> Jerry D. Hedden released 2.08, which adds a few checks for<br/> undefined parameters.<br/><br/><br/><br/>In Brief<br/><br/> Ricardo Signes wondered why &quot;delete local $hash{elem}&quot; didn&#39;t work<br/> when &quot;local $hash{elem}; delete $hash{elem}&quot; did. After boggling<br/> briefly over the syntax, Rafael Garcia-Suarez thought it wouldn&#39;t be<br/> too hard to make it work.<br/><br/><br/><br/> Ricardo Signes looked at the documentation in &quot;perlobj&quot; and corrected<br/> errors and omissions in &quot;DOES&quot;. He hinted that he would take the axe<br/> to the documentation for &quot;UNIVERSAL&quot;.<br/><br/> less is more<br/><br/><br/> Jerry D. Hedden corrected a typo in perlop.pod that H.Merijn Brand<br/> estimated as being a difference of about 3 pixels, thus possibly<br/> qualifying for the smallest patch ever.<br/><br/><br/><br/> He also silenced build warnings in universal.c.<br/><br/><br/><br/> Nicholas Clark discovered what he thought was a &quot;usage error in XS<br/> subs&quot; with the ALIAS keyword. This reminded Robert May that he had<br/> written about a similar problem with INTERFACE last year, and that the<br/> message had gone nowhere.<br/><br/><br/><br/> Florian Ragwitz also managed what was roughly a seven pixel change to<br/> fix a documentation typo in &quot;Attribute::Handlers&quot;.<br/><br/><br/><br/> Artur Bergman handed over maintenance of &quot;Attribute::Handlers&quot; to<br/> Rafael Garcia-Suarez.<br/><br/><br/><br/>Moritz Lenz saw that &quot;; refers to old title of &quot;Higher Order Perl&quot;<br/>and changed the wording. There was some discussion as to whether the full<br/>text of HOP was available on the web, and if so, where?<br/><br/><br/><br/> After Steve Peters performed an upgrade to &quot;AutoLoader&quot; to bring it to<br/> 5.66, Nicholas Clark bumped it up to 5.66_01 to be on the safe side.<br/><br/> for the record<br/><br/><br/> Craig Berry returned to the &quot;File::Copy&quot; &amp; permission bits issue,<br/> saying that changes were unlikely to fly on VMS. Aristotle Pagaltzis<br/> pointed out that on Windows, files tend to inherit their permission<br/> bits from the directory in which they reside, and that the only<br/> important bit to honour on Unix systems is the execute bit.<br/><br/><br/><br/> Ren&eacute;e B&auml;cker was Warnocked over a patch to add more documentation to<br/><br/><br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/>-- <br/>stubborn tiny lights vs. clustering darkness forever ok?<br/> Fri, 30 May 2008 16:27:52 +0000 This Week on perl5-porters - 11-17 May 2008 by David Landgren This Week on perl5-porters - 11-17 May 2008<br/><br/> Dominic Dunlop: Trouble is, some of it is CGI, and people whinge<br/> loudly when previously-clean CGI starts warning.<br/><br/> Ed Avis: Ha ha ha. I think any possible programmer mistake can be<br/> found in a Perl CGI program somewhere.<br/><br/>Topics of Interest<br/><br/>5.8.9-to-be on Irix<br/><br/> David Cantrell took the time to track down the failures (regarding<br/> &quot;Sys::Syslog&quot;) with the upcoming 5.8.9 release. Versions 0.13 (bundled<br/> with 5.8.8) through 0.18 both pass on 5.8.8 and 5.8.9-tobe on Irix.<br/> 0.19 and beyond fail on both versions. But 0.24 (the current version)<br/> does pass on platforms other than Irix.<br/><br/> David provided an additional clue, in that the compiler moaned that<br/> something was wrong with a variable named &quot;RETVAL&quot; (a name that will<br/> strike fear into any author starting out in XS).<br/><br/> S&eacute;bastien Aperghis-Tramoni, the current maintainer, wailed in despair,<br/> since 0.18-0.19 was a monster release, introducing support for the<br/> Win32 platform. After a couple of hours of serious work (and some<br/> minor goofing off), he offered a Subversion version for David to try.<br/> David announced that it worked, although the compiler was still a<br/> little suspicious of &quot;RETVAL&quot;. S&eacute;bastien fixed that as well.<br/><br/> And S&eacute;bastien will buy David a beer at the next London Perl Workshop.<br/><br/> you know this will go down on your permanent record<br/><br/><br/>File::Path::mkpath() incompatibility in perl-5.10<br/><br/> Gisle Aas ran into grief over old-style/new-style interface for<br/> &quot;File::Path&quot;. As a result, David Landgren learnt that sometimes it<br/> doesn&#39;t pay to be too Clever when trying to introduce new features<br/> while maintaining pure backwards compatibility at the same time.<br/><br/> Thus, the next release of File::Path will guarantee total backwards<br/> compatability, and those wishing to live on the cutting edge will have<br/> to say so, one way or another.<br/><br/><br/><br/>On the almost impossibility to write correct XS modules<br/><br/> Hmm. Lot of traffic next week on this one (sometimes it comes in handy<br/> to run late).<br/><br/><br/><br/>&quot;eval &quot;require Foo&quot;&quot; with binary-incompatible XS modules<br/><br/> Niko Tyni was running into problems setting up Debian packages in<br/> order to upgrade from 5.8.8 to 5.10.0. The main reason being that<br/> Debian don&#39;t use a $Config{vendorarch}, which was designed to resolve<br/> the problem of keeping binary-incompatible XS code apart.<br/><br/> There were a number of suggestions as to what could be done to fix up<br/> the situation, but Nicholas Clark was hesitant to endorse any of them,<br/> pointing out quite rightly that Debian had already survived the<br/> 5.6-to-5.8 upgrade.<br/><br/><br/><br/>Method call overloading<br/><br/> Following on from last week&#39;s musings, Ricardo Signes released a first<br/> cut at testing method call overloading to allow one&#39;s own dispatching<br/> techniques.<br/><br/> TIMTOWTdispatchI<br/><br/><br/> After pondering the issue for a couple of hours, he released a second<br/> version with a new, improved class-based scheme. Unfortunately, in<br/> Ricardo&#39;s eyes, the syntax sucks. With a bit of encouragement from the<br/> parser, it might be possible to come up with something beautiful.<br/><br/> classy work<br/><br/><br/>Division by zero folding deferred to run-time<br/><br/> Eric Brine wondered what the reasoning was behind deferring constant<br/> folding (such as 1/0) until run-time, when it could be caught at<br/> compilation time (as, in fact, it used to in 5.8).<br/><br/> Nicholas Clark explained that the concept as such was an optimisation,<br/> and as such it should not affect the behaviour of a program. For<br/> instance:<br/><br/> print 1/0 if $ARGV[0] &gt; 10;<br/><br/> ... could not be compiled at all on 5.8, even though in some<br/> circumstances the code may never be executed in the first place.<br/><br/> The point in question is that such a construct might be hidden behind<br/> two constants subs that have different values depending on the<br/> platform the code is running on. In that case, the code might be<br/> uncompilable even though the program itself could run perfectly well.<br/><br/> early decisions bad, late decisions good<br/><br/><br/>Compiling perl (5.10.x) with gcc &lt;= 3.2.3<br/><br/> After sparring with the RT bug database, Bram began to install as many<br/> versions of &quot;gcc&quot; as he could lay his hands on, to see how they fared<br/> compiling perl.<br/><br/> When he got as far back as version 3.2.3, the &quot;Configure&quot; and &quot;make&quot;<br/> succeeded, but the test suite spat out numerous &quot; cannot<br/> open shared object file&quot; errors.<br/><br/> Andy Dougherty suggested a riff on the &quot;-fstack-protector&quot; problems<br/> seen elsewhere this week, but that didn&#39;t do any better. Since the<br/> compiler in question was released five years ago, Andy suggested just<br/> adding a note in the INSTALL file.<br/><br/> H.Merijn Brand committed change #33841 to note the fact in<br/> README.linux, but wasn&#39;t really happy with the idea, since gcc runs on<br/> other platforms as well. But that&#39;s ok, because he will have to revert<br/> the change, since Bram figured out a simple recipe that allows 3.2.3<br/> to work.<br/><br/><br/><br/>Empty pattern and /o<br/><br/> Bram lifted an old bug out of obscurity, concerning the empty pattern<br/> (&quot;//&quot;) and the &quot;/o&quot; modifier, the point in question being the<br/> interactions observed when &quot;use re &#39;eval&#39;&quot; comes into play.<br/><br/> Yves Orton grumbled that all these things were complicated to begin<br/> with, so one can grasp the potential for mischief when they interact<br/> in a single expression.<br/><br/> Abigail thought it would be nice to downplay the importance of &quot;/o&quot; in<br/> the documentation, since it invariably led people to find out about<br/> it, and then proceed to use it incorrectly.<br/><br/> Similarly, Abigail thought that &quot;//&quot; (match again with the same<br/> pattern that was used previously) doesn&#39;t have any use in the real<br/> world; most canonical examples being somewhat contrived. What does<br/> happen with annoying regularity is that people use &quot;/$var/&quot;, and $var<br/> turns out to be empty, thus triggering an unexpected action at a<br/> distance.<br/><br/> Yves Orton wanted to make &quot;/o&quot; a true no-op, and make the magic empty<br/> pattern behaviour only kick in if the pattern was well and truly a<br/> &quot;//&quot; as parsed. And it probably comes as no surprise that Yves had a<br/> couple of perfectly reasonable use cases where &quot;//&quot; patterns are very<br/> useful:<br/><br/> if (m/$some_big_nasty_pattern/ and $1 eq $something) {<br/> s///;<br/> }<br/><br/> and<br/><br/> if (m/$pat1/ or m/$pat2/ or m/$pat3/) {<br/> s///;<br/> }<br/><br/> Yves was careful to point out that he only used empty pattern magic<br/> with the substitution operator. For the match operator, he thought the<br/> empty pattern should warn all the time.<br/><br/> And &quot;/o&quot; can&#39;t be no-op&#39;ed just yet, since it still adds a tiny<br/> smidgen of performance, even in 5.10. So first of all Yves needs to<br/> fix the underlying problems that make it useful in the first place, at<br/> which point it could be deprecated.<br/><br/><br/><br/>TODO of the week<br/><br/>Remove duplication of test setup<br/><br/> Schwern notes that there&#39;s duplication of code - lots and lots of<br/> tests have some variation on the big block of $Is_Foo checks. We can<br/> safely put this into a file, change it to build an %Is hash and<br/> require it. Maybe just put it into Throw in the handy<br/> tainting subroutines.<br/><br/>Patches of Interest<br/><br/>Add Some Links to External (WWW) Resources to the Perldocs<br/><br/> Shlomi Fish responded to the criticism of his patch (it should not be<br/> accepted since it has a higher maintenance burden due to linkrot),<br/> arguing that a quality product requires maintenance, and a high<br/> quality product requires more maintenance.<br/><br/> Quoting Nicholas Clark:<br/><br/> There is a fundamental conflict in the Perl documentation as is.<br/> People are tugging it in both ways - it&#39;s trying both to be a<br/> reference manual (terse, to the point), and an introduction/tutorial.<br/><br/> It can&#39;t be both. It certainly can&#39;t be all things to all people.<br/> [...]<br/><br/> We have to assume some level of intelligence on the part of the<br/> readership. If they don&#39;t know a concept, they will be smart enough to<br/> research it for themselves.<br/><br/> rejected<br/><br/><br/>Compress/Raw/Zlib/Zlib.xs // comment fix<br/><br/> Andy Dougherty replaced some C++ comments with good old-fashioned C<br/> comments. Paul Marquess thanked him and updated his own repository.<br/> H.Merijn Brand applied the change, and idly wondered whether it will<br/> be possible with git to reject a patch that contains such base sins.<br/><br/> /* TIOOWTDI */<br/><br/><br/>&quot;h2ph&quot;: recognise the quote mark delimiter on #include directives<br/><br/> Niko Tyni saw that &quot;h2ph&quot; had trouble when system headers include file<br/> names in quotes rather than angle brackets. He wrote some code to fix<br/> up the problem and this allowed a number of regexp experts to show off<br/> their skills. In the process, the patch was thoroughly reviewed and<br/> made it in.<br/><br/> #include &quot;peer-review.h&quot;<br/><br/><br/>New and old bugs from RT<br/><br/>uc/lc/ucfirst/lcfirst fail on typeglobs (#39019)<br/><br/> Bram tried to sneak this one past as being resolved, since it<br/> certainly looked like it. Nicholas Clark disagreed, explaining that<br/> there was a problem with it, although likely one that only he could<br/> fix.<br/><br/> So Bram asked Nicholas to explain more clearly what the problem was,<br/> or rather, given what input produces incorrect output?<br/><br/> an open question<br/><br/><br/>&quot;bleadperl -Dm -e1&quot; segfaults on win32 (#39806)<br/><br/> Bram asked for Win32 porters (which these days is Strawberry, right?),<br/> and/or Linux+threads porters to see if this problem persists.<br/><br/> call me in the morning<br/><br/><br/>glob() should do taint checking (#39821)<br/><br/> Bram asked for a resolution on this issue. Andy Dougherty replied that<br/> functions don&#39;t fail on tainted args unless they have an impact on the<br/> outside world. &quot;glob&quot; pulls information in from the outside world, so<br/> we don&#39;t care about what we ask of it. On the other hand, what &quot;glob&quot;<br/> returns is viewed with the utmost suspicion.<br/><br/> live free or die<br/><br/><br/>Bug in &quot;File::Find&quot; on Windows when targetdir is bare drive letter and <br/>&quot;no_chdir = 1&quot; (#41555)<br/><br/> Bram implemented David Landgren&#39;s suggestion (or something resembling<br/> it) to create a regression test for the code to deal with a directory<br/> search starting with a volume name and a relative directory (that is,<br/> something like &quot;D:right\here&quot;.<br/><br/> Rafael thought the patch looked sane enough to apply; the smokers will<br/> soon find out if it causes severe burns.<br/><br/><br/><br/>&quot;NDBM_File&quot; fails to build (#50180)<br/><br/> Andy Dougherty created a pair of patches to teach &quot;NDBM_File&quot; how to<br/> build itself, and he believed that the patches were safe to apply to<br/> all perl versions. H.Merijn Brand applied the patch to blead.<br/><br/><br/><br/>Deparse interpolation in regex literal (#51848)<br/><br/> Ambrus Zsb&aacute;n had filed a report about &quot;B::Deparse&quot; failing to<br/> restitute &quot;/${x}y/&quot; correctly. Rafael Garcia-Suarez commented this<br/> week, saying that it failed because the optree was missing an<br/> &quot;op_concat&quot;, and this threw everything else off. Rafael proposed a<br/> first fix, with ugly cutting and pasting, but then sat down like a<br/> good boy and did a proper refactoring and wrote some regression tests<br/> as well (change #33851).<br/><br/> This did lead him to wonder, all the same, *why* the opcode was no<br/> longer there. Yves Orton blamed Dave Mitchell. Dave replied saying<br/> that yes, it was his fault. The change was a result of some initial<br/> work some time ago to make &quot;(??{...})&quot; work better. The idea is to had<br/> the regexp compiler a list of tokens that comprise the code block,<br/> instead of a single blob of uselessness.<br/><br/><br/><br/>op/pwent.t should use the DirectoryService on OS X (#53500)<br/><br/> Tom Wyant read about this problem in the perl5-porters summary, and<br/> was inspired enough to write a patch to fix the issue. Yay him! Rafael<br/> applied the patch to blead, hoping that no Leopards, Tigers or other<br/> such beasts would be hurt in the process.<br/><br/> w00t<br/><br/><br/>&quot;elseif&quot; should be &quot;elsif&quot; (#53808)<br/><br/> Ben Aveling got mixed up between Perl and Ruby or PHP or ASP or TCL or<br/> not Javascript and wrote &quot;elseif&quot; instead of &quot;elsif&quot;. Instead of<br/> receiving a boring syntax error, Ben was slightly puzzled by the fact<br/> that he received an explicit recommendation to change &quot;elseif&quot; to<br/> &quot;elsif&quot;. His reasoning was that if the lexer is so smart to<br/> second-guess the programmer, why not just emit the elsif token and be<br/> done with it.<br/><br/> Abigail pointed out that doing this would break any code that defined<br/> a sub named &quot;elseif&quot; (although it could be argued that any programmer<br/> doing so should be taken out the back and beaten severely about the<br/> head with a blunt object). David Nicol gave &quot;Macrame&quot; a plug, showing<br/> how one could write a macro for this situation. Yitzchak<br/> Scott-Thoennes pointed out that a language change of this nature would<br/> break syntax-highlighters.<br/><br/> we&#39;ll leave it at that<br/><br/><br/>Bug in &quot;Time::HiRes&quot; 5.11 (#53962)<br/><br/> Dmitry Karasik thought he found a bug in &quot;Time::HiRes&quot; on 5.10 and<br/> blead (bug #53962) and thought the underlying code looked pretty<br/> horrible. Dominic Dunlop replied that many different systems handle<br/> high resolution time measurements in many weird and wonderful ways.<br/><br/> Given this extra bit of information, Dmitry was able to refine his<br/> patch. But the patch didn&#39;t solve Reini Urban&#39;s ongoing &quot;Time::HiRes&quot;<br/> failures on Cygwin.<br/><br/> adapt to reality<br/><br/><br/>&quot;pod2man&quot; nroff =head2 with two C&lt;&gt; blocks (#53974)<br/><br/> Kevin Ryde looked at a POD heading with two C directives and noticed<br/> that the bold was switched off after the first one. He was brave<br/> enough to delve into Pod/ and produce a patch that fixed things<br/> up.<br/><br/> Unfortunately he wasn&#39;t entirely certain that this wouldn&#39;t cause<br/> problems elsewhere, and the copious tests available did not help<br/> clarify the issue.<br/><br/><br/><br/>Respawning processes with negative return values on Win32. (#54028)<br/><br/> Alistair showed how a very short C++ program whose main claim to fame<br/> was to return -1 as a status code to the operating system could be<br/> called twice, even though the Perl code contains only a single<br/> &quot;system&quot; call. He delved into the code in win32.c and found some<br/> suspicious code that appears to interact with $!.<br/><br/> skeletons in the closet<br/><br/><br/>Misparsing of sort comparison subroutine intention (#54040)<br/><br/> Ken Williams tripped up over the difference between the use of a<br/> function used to compare pairs in a sort and sorting the results of<br/> what a function returns. David Nicol was hard pressed to classify the<br/> problem as a bug from either a documentation or implementation<br/> standpoint.<br/><br/> Aristotle Pagaltzis admitted to having been bitten by the bug before,<br/> Abigail suggested using the secret &quot;+&quot; operator to disambiguate the<br/> meaning. David finished with a revised wording for the documentation,<br/> and there the thread ended.<br/><br/> care is required when sorting the list returned from a function<br/><br/><br/>&quot;usethread=no&quot; Configure compiler test file try.c is missing. (#54042)<br/><br/> Reini Urban saw that deactivating threads with MAD triggered an<br/> internal Configure script bug, and so he reported it. Alas, no porter<br/> with sufficient Configure-fu responded.<br/><br/> please report this<br/><br/><br/>&quot;perl -wle &#39;%::=();//&#39;&quot; crash (#54044)<br/><br/> Reini also recorded the fact that resetting the main stash and then<br/> running an empty match will cause perl to dump core. He wasn&#39;t sure<br/> which way out was the best, but thought that he could do better than<br/> just segfaulting.<br/><br/> Yves Orton recalled reading about someone who built up some Markov<br/> chains using real Perl code to produce slightly bogus code to try and<br/> trigger segfaults. Nicholas Clark pointed Yves to the perl5-porters<br/> post, a mere five minutes later.<br/><br/> match my stash<br/><br/><br/>semi-panic: attempt to dup freed string (#54114)<br/><br/> Nicholas Clark suspects this bug is yet another case of the stack not<br/> being reference counted.<br/><br/> wontfix<br/><br/><br/>Need more &quot;-fstack-protector&quot; (#54120)<br/><br/> Andy Dougherty sent in a patch to fix up undefined symbols from<br/> occurring when &quot;-fstack-protector&quot; is used. The correction was to use<br/> compiler flags to ensure the use of the switch was propagated out to<br/> XS modules.<br/><br/> Nicholas Clark pointed out a flaw in the plan that forced Andy back to<br/> the drawing board.<br/><br/><br/><br/>&quot;IO::Seekable&quot; + &quot;POSIX&quot; == constant subroutines redefined (#54186)<br/><br/> Niko Tyni showed how the incestuous relation between (what in fact<br/> actually turned out to be) &quot;Fcntl&quot; and &quot;POSIX&quot; would generate lots of<br/> messy warnings.<br/><br/> Nicholas Clark fixed things up so that &quot;POSIX&quot; now imports what it<br/> needs from &quot;Fcntl&quot; instead of reinventing wheels badly. In the process<br/> of cleaning things up, he realised that there was scope for doing the<br/> same kind of decrufting elsewhere in the codebase, which should worth<br/> another TODO.<br/><br/><br/><br/>&quot;readlink()&quot; returns result along with garbage (#54198)<br/><br/> Denis Melnikov noticed that using &quot;readlink&quot; in the Linux /proc<br/> filesystem can lead to some strange results. After some investigation<br/> it was decided that the observed behaviour was quite appropriate.<br/><br/> although not really documented<br/><br/><br/>segfault in &quot;perl_clone()&quot;, probably due to running out of memory (#54224)<br/><br/> This week, Niko Tyni also uncovered another way to generate a<br/> segfault, but admitted that it wasn&#39;t a very important issue.<br/><br/> but a core dump is a core dump<br/><br/><br/>Panic opt close in regex &quot;/(?:(o){2})?/&quot; (#54228)<br/><br/> Niko also rediscovered the bug involving a capture group and a curly<br/> specifier in a regexp. Apart from the fact that no-one can provide a<br/> definition of what such an expression should do, it certainly<br/> shouldn&#39;t dump core.<br/><br/> David Landgren grovelled through his memory and old summaries and<br/> identified bug #39233 as an earlier instance of the same underlying<br/> problem. Yves Orton assigned himself the bug so as not to forget about<br/> it.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> Bram&#39;s been busy again this week.<br/><br/> 279 + 1383 = 1662 (+8 -44)<br/><br/><br/><br/>New Core Modules<br/><br/> &quot;threads::shared&quot; 1.21<br/> Jerry D. Hedden shares some more threads goodness.<br/><br/><br/><br/> &quot;Thread::Queue&quot; 2.08<br/> and this allowed him to push a new release of this one, too.<br/><br/><br/><br/> &quot;IO::Compress::*&quot; 2.011<br/> Following on from the C++ comment, Paul Marquess release 2.011,<br/> which also fixed a slew of problems reported on RT.<br/><br/><br/><br/>In Brief<br/><br/> (My damned wireless network at home kept flaking out this week,<br/> causing my ssh sessions to die. At some point during an evening&#39;s<br/> summarising, I noticed that the file was truncated right about here.<br/> I&#39;ve restored the rest of it from a backup, but some items I wrote<br/> between then and now were wiped out. Sorry about that. Since what goes<br/> here is usually short, and resolved, it&#39;s not so bad).<br/><br/> Rafael Garcia-Suarez took chromatic&#39;s patch to add ..., !!!, and ???<br/> operators and applied it.<br/><br/> I want a blah blah blah operator<br/><br/><br/> Reini Urban pleaded for the change that fixes the crash when<br/> localizing a symtab entry (bug #52740) to be backported to 5.10.x.<br/><br/> one for Dave<br/><br/><br/> Yves Orton announced that he was out of action but back in the saddle<br/> again a bit. Marvellous. Now he&#39;ll go and add a slew of regexp verbs,<br/> and I still haven&#39;t digested the first lot.<br/><br/> onya!<br/><br/><br/> Bram says bleadperl crash in &quot;Perl_pp_entersub()&quot; (#40493) is fixed.<br/><br/><br/><br/> Bram looked at a perl -d bug on Mandriva Cooker with 5.8.8 (bug<br/> #39758) and said it looked pretty good (although the jury was still<br/> out on 5.8.9-tobe)<br/><br/> so, the smoke finished?<br/><br/><br/> He also delivered some promised TODO tests to record the fact that<br/> &quot;print Does::Not::Exist, &#39;&#39;&quot; does, when it shouldn&#39;t (bug #53806).<br/><br/><br/><br/> He also repackaged another suggestion from a previous week concerning<br/> the AIX Hints file (libm package).<br/><br/> awaiting comments<br/><br/><br/> Bram wrote a documentation patch to clarify the use of reverse in<br/> scalar context. Yves applied it. Which allowed Bram to close bug<br/> #39187.<br/><br/><br/><br/> Edward Peschko wanted to know if a particular debugger that promised<br/> seamless XS debugging ever made it out into the wild.<br/><br/><br/><br/> Matt Kraai made some edits in the FAQ to link &quot;perlfunc&quot; to the<br/> correct section of &quot;perlop&quot;.<br/><br/> q//, qq//, qx//, and qw//<br/><br/><br/>Last week&#39;s summary<br/><br/> Hmm, seems it never made it to the list. It did turn up on<br/> summary-only mailing list if you need to hunt down a copy. And yes,<br/> the archive on is not being updated. I&#39;ll get to that...<br/> eventually.<br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/>-- <br/>stubborn tiny lights vs. clustering darkness forever ok?<br/> Sat, 24 May 2008 19:10:50 +0000 This Week on perl5-porters - 4-10 May 2008 by David Landgren This Week on perl5-porters - 4-10 May 2008<br/><br/> Today, I was doing some mucking about with class data, generated<br/> packages, and &quot;Class::ISA&quot;, and I started to wail and gnash my teeth.<br/> I cried, &quot;Why can&#39;t I just replace the darn object system?&quot;<br/> -- Ricardo Signes, a man with a method.<br/><br/>Topics of Interest<br/><br/>fascinating paper: heapsort with n log(n) - 0.9n comparisons<br/><br/> Last week, Marc Lehmann had tossed out a link to an interesting paper<br/> he had read on heapsorts, with a new implementation that purported to<br/> require fewer comparisons.<br/><br/> This week John P. Lindeman wrote a very thoughtful reply that&#39;s worth<br/> reading in its own right. In essence, one of the fundamental problems<br/> facing heapsort these days is that it is very cache-unfriendly.<br/><br/> Quicksort and mergesort tend to process data sequentially, and that<br/> plays nicely with how caches behave. Heapsort, on the other hand,<br/> tends to skip around all over the place, and that leaves the cache<br/> lines cold and unloved. And so John feels that heapsort will be<br/> unlikely to beat the other algorithms consistently, especially when<br/> large datasets are processed, which is where the correct use of cache<br/> comes into play.<br/><br/> welcome to the real world<br/><br/><br/>Helping 5.8.9<br/><br/> Nicholas Clark asked for some volunteers to help with the mundane<br/> pumpking tasks that need doing when a new release goes out the door.<br/> Such things as checking author/email names, module versioning,<br/> dual-life synchronisations and making suggestions for<br/> perl589delta.pod.<br/><br/> Yitzchak Scott-Thoennes checked out most of the CPAN/core<br/> discrepancies. Steffen M&uuml;ller did the author names.<br/><br/> out-sourcing pumpkingship<br/><br/><br/>add Porting/<br/><br/> Jim Cromie started to play around with git, and the more he looked at<br/> it, the more he liked it. He proposed a script to deal with ignoring<br/> files not under revision control, but Rafael thought that he had the<br/> logic completely backwards.<br/><br/> git down<br/><br/><br/>Adding new keywords<br/><br/> Simon Wistow, in a flash of inspiration, realised that it would be fun<br/> to dive into the guts and figure out how to add a new keyword to the<br/> language, such as &quot;method&quot;, which would start out being a simple alias<br/> for &quot;sub&quot;. He was quite surprised at how easy it was, and on which<br/> side things that can be implemented both inside or outside the core<br/> should be.<br/><br/> Jonathan Rockway muttered about &quot;Devel::Declare&quot; and<br/> &quot;Method::Signatures&quot;. Jesse Vincent revealed that Chia-liang Kao and<br/> Yuval Kogman were working on &quot;Perl6-Declare&quot; that was much more robust<br/> and flexible than &quot;Method::Signatures&quot;.<br/><br/> Matt S. Trout thought that Jesse&#39;s recent work on MAD and Yuval&#39;s<br/> start on &quot;B::Simple&quot; should be a big help in making the perl5 syntax<br/> more malleable.<br/><br/> anyone for &quot;with&quot;<br/><br/><br/>TODO Tests<br/><br/> Bram saw what he thought was a flaw in the infrastructure for dealing<br/> with TODO tests. Imagine a function that should return 1. Except it<br/> doesn&#39;t, because a bug that no-one understands makes it return 2.<br/><br/> So we write a TODO test to say &quot;this should return 1&quot;. Now imagine<br/> that the bug was tickled, and now the function returns 3. Currently<br/> there&#39;s no way of detecting that the value, while still incorrect, has<br/> changed. Some people were dubious about the value of detecting this.<br/><br/> different kinds of wrong<br/><br/><br/>Documentation bug or brain bug? (or, what \k&lt;name&gt; and $+{name} refer to)<br/><br/> S&eacute;bastien Aperghis-Tramoni had a couple of questions about the new<br/> 5.10 regexp extensions (or rather, the documentation that explains<br/> their behaviour). After a couple of porters worked the the problems in<br/> the wording, Aristotle Pagaltzis wrote up a new description, that Yves<br/> Orton thought was a good description.<br/><br/><br/><br/>Understanding refcounts<br/><br/> Simon Wistow was looking at &quot;Devel::Gladiator&quot;, a module that examines<br/> memory allocations in arenas (geddit?), and wondered why, given two<br/> nearly identical snippets, one leaked massively while the other<br/> didn&#39;t.<br/><br/> Naturally, Dave Mitchell gave a cogent explanation as to why, and<br/> demonstrated a simpler case in a couple of lines of Perl, no modules<br/> needed.<br/><br/><br/><br/>Thoughts about overloading method calls<br/><br/> Ricardo Signes want to do some exotic things with classes, objects and<br/> overloading. Aristotle Pagaltzis admitted to having wanted to do as<br/> much in the past. &AElig;var Arnfj&ouml;r&eth; Bjarmason had thought of doing even<br/> more bizarre things, and I would say more, but alas this paragraph is<br/> too small for it to fit.<br/><br/> The thread is well worth reading in its entirety, for a view on the<br/> current thinking on allowing more flexible syntaxes.<br/><br/><br/><br/>Recursive inheritance detected while looking for method<br/><br/> Lyle ran into a problem with recursive inheritance and wondered why<br/> things didn&#39;t work in a way that would make it possible.<br/><br/> Nicholas Clark explained that the code that looks after this was<br/> heavily rewritten thanks to Brandon Black and his MRO work. He also<br/> thought that it should be possible to plug in a custom MRO handler<br/> that would do what Lyle wanted.<br/><br/><br/><br/>&quot;File::Path::mkpath()&quot; incompatibility in perl-5.10<br/><br/> Gisle Aas demonstrated a problem in the 2.x version of &quot;File::Path&quot;&#39;s<br/> mkpath creating unwanted directories. David Landgren offered a<br/> work-around, and began to work a better solution.<br/><br/> the right path<br/><br/><br/>Should potentially confusing labels emit a warning?<br/><br/> Following up on Andy Lester&#39;s blog about the grief caused by &quot;BEGIN: {<br/> }&quot;, which is a labelled lexical scope rather than a &quot;BEGIN&quot; block,<br/> there was a tentative suggestion to make such things warn.<br/><br/> Most people weren&#39;t too comfortable with the idea, suggesting that if<br/> it was really a problem then it would have wound up on the TODO list<br/> at some point.<br/><br/> JFDDI<br/><br/><br/>Special blocks below the top-level scope<br/><br/> In playing around with BEGIN blocks while researching things from the<br/> above thread, Aristotle Pagaltzis came across some some strange<br/> behaviour with a BEGIN block within a subroutine.<br/><br/> Nicholas explained how it was quite consistent given the rules<br/> concerning compile-time and run-time effects, and Jan Dubois wrapped<br/> out the remaining doubts.<br/><br/><br/><br/>On the almost impossibility to write correct XS modules<br/><br/> Marc Lehmann had raised the problem of &quot;char *&quot; as an interface to<br/> character strings in XS last week. Yves Orton pointed out that this is<br/> used internally by the core, and thus faces the same issues. Win32 is<br/> particularly sensitive to the issue.<br/><br/><br/><br/>TODO of the week<br/><br/> chromatic proposed a patch for the TODO from last week. Yay!<br/><br/> the yada yada yada operator<br/><br/><br/> and a revised patch to add the &quot;...&quot;, &quot;!!!&quot;, and &quot;???&quot; operators<br/><br/> the yada yada yada trinity<br/><br/><br/>readpipe(LIST)<br/><br/> &quot;system()&quot; accepts a LIST syntax (and a PROGRAM LIST syntax) to avoid<br/> running a shell. &quot;readpipe()&quot; (the function behind &quot;qx//&quot;) could be<br/> similarly extended.<br/><br/>Patches of Interest<br/><br/>Add Some Links to External (WWW) Resources to the Perldocs<br/><br/> David Landgren thought that the patch to add web page links to the<br/> Perl documentation should be refused on the grounds of the likelihood<br/> of them becoming obsolete and therefore contributing to the<br/> maintenance burden.<br/><br/> looked at your 1996 bookmarks recently?<br/><br/><br/>I must be *mad*<br/><br/> Jesse Vincent moved MAD&#39;s libraries under lib/ and placed them under<br/> the &quot;MAD::&quot; namespace. Other than that he tidied up Gerrard Goossen&#39;s<br/> work on the test suite and generally brought the bitrot level down<br/> close to zero.<br/><br/> Gerrard wondered whether, because of the dependency on &quot;XML::Parser&quot;,<br/> if it wouldn&#39;t be better to spin the libraried out completely as CPAN<br/> modules. Jesse felt that pulling MAD too far away from the core would<br/> all but ensure its demise.<br/><br/> what, me worry?<br/><br/><br/>Documentation typo fix for MRO<br/><br/> Florian Ragwitz suggested a documentation patch for MRO but it was<br/> ignored.<br/><br/> the next self can<br/><br/><br/>Call &quot;SvMAGICAL_off&quot; in &quot;mg_free&quot;<br/><br/> In the ongoing saga concerning &quot;mg_free&quot; and &quot;mg_clear&quot;, Bram<br/> identified only one other place in the core where &quot;SV*MAGICAL_off()&quot;<br/> was called after &quot;mg_free&quot;. So he cleaned things up, and Rafael<br/> Garcia-Suarez applied his patch.<br/><br/><br/><br/> In the process of working with magic, Bram wanted to know how to<br/> downgrade a &quot;PVMG&quot; to a &quot;PV&quot;. John Peacock wondered why on earth<br/> someone would want to do such a thing, to which Bram replied that it<br/> would make testing easier. John suggested a different approach that,<br/> while more work for Bram, better reflected what was going on under the<br/> hood.<br/><br/> got magic?<br/><br/><br/>Add &quot;SvMORTAL&quot; to check if a SV is mortalized<br/><br/> Claes Jakobsson was grovelling deep in XS code, trying to figure out<br/> whether SV were mortal or not, and was surprised to discover that<br/> there was no simple check available. So he wrote a macro to allow SVs<br/> to be tested as such.<br/><br/> Rafael wondered whether it would be more interesting to wrap it up as<br/> a module so that older perls could use it. In turn, Claes wondered if<br/> the hassle of setting up the module and having the XS author bring it<br/> in and use it was worth it.<br/><br/> Nicholas was hesitant to load up the core with yet another addition to<br/> the API, and when Claes thought about writing regression tests for it,<br/> he realised that the best place for it would be on CPAN.<br/><br/> mortal combat<br/><br/><br/>New and old bugs from RT<br/><br/>Bug in &quot;File::Find&quot; on Windows when target dir is bare drive letter and <br/>&quot;no_chdir = 1&quot; (#41555)<br/><br/> Last week, Bram fixed this bug, but wondered how one could write some<br/> tests for it. This week, David Landgren sketched out an approach, but<br/> no-one commented on its viability.<br/><br/><br/><br/>Ambiguous Configure run/make error (#49946)<br/><br/> Stefan Schlotterbeck-Macht filed a bug back in January concerning a<br/> cross-compilation failure, the exact problem being a &quot;make&quot; target<br/> &quot;&lt;command-line&gt;&quot; not having a rule in the Makefile. Andy Dougherty<br/> noticed it this week, and suggested that it was quite possible that<br/> just deleting the target in the &quot;Makefile&quot; would be sufficient.<br/><br/><br/><br/>&quot;NDBM_File&quot; fails to build (#50180)<br/><br/> Also back in January, Devogon filed a report with &quot;NDBM_File&quot; not<br/> being built on 5.10.0 under Debian. Andy had a look at things, and saw<br/> that they had changed both the name of the header file (now called<br/> gdbm-ndbm.h) and the library file (gdbm-compat).<br/><br/> Andy wanted to patch Configure to do the right thing and so made a<br/> request for comments. Currently there are three different header files<br/> to search, as well as three different library names. The question was<br/> whether there were any other possibilities lurking about on other<br/> platforms.<br/><br/> speak up<br/><br/><br/>Crash when localizing a symtab entry (#52740)<br/><br/> In April, Niko Tyni wrote a very detailed bug report concerning a<br/> segfault in a mod_perl environment. This provided sufficient<br/> information to Rafael Garcia-Suarez to make a small change to sv.c,<br/> which was later officialised as change #33807.<br/><br/> one good turn deserves another<br/><br/><br/>perl-5.10.0-33733 assertion with JSON::XS-2.2 (#53244)<br/><br/> This is the thread about the correct use of &quot;SvCUR&quot;. Nicholas Clark<br/> revived the thread when he explained that one of the reasons the code<br/> broke was that because when gcc is instructed to add the &quot;-g&quot; compiler<br/> switch for debugging purposes, Configure piggybacks this and enables a<br/> raft of code assertions, and &quot;JSON::XS&quot; was tripping over one of them.<br/><br/> Many new assertions had been added to the code by Nicholas when he<br/> worked on slimming down the SV bodies, and he needed to be sure that<br/> nothing broke out in the wild (due to a cavalier approach to the<br/> internals). Andreas K&ouml;nig&#39;s long BBC smoke campaign showed that by and<br/> large Nicolas&#39;s changes were completely transparent.<br/><br/> Marc Lehmann compared 5.8.8 and 5.10.0, running bare, or with POSIX<br/> loaded, and noticed that while the bare binary was smaller, the size<br/> when POSIX was loaded showed a larger increase on 5.10 compared to<br/> 5.8. This appeared to contradict the statement in perldelta, and this<br/> left Marc feeling a bit confused.<br/><br/><br/><br/>Bug in &quot;if(open(my $fh,...)) { }&quot; scoping (#53504)<br/><br/> Aristotle Pagaltzis showed how Perl 6 deals with the problem of<br/> scoping lexicals to blocks, and that the rules there are much simpler.<br/><br/><br/><br/>bug with &quot;index()&quot; matching beyond end of string when \0 bytes are <br/>involved (#53746)<br/><br/> Giuseppe Insana filed a fairly comprehensive report detailing his<br/> surprise at some results with &quot;index&quot; when NUL bytes appear in the<br/> string.<br/><br/> Bram simplified matters, which made it clear to see what the problem<br/> was. Abigail wrote a series of TODO tests so that some budding<br/> internals hacker who wanted to take a stab at fixing &quot;pp_index&quot; in<br/> pp.c would know if their efforts were successful or not.<br/><br/> hint hint<br/><br/><br/>64-bit Integers -- inexact division gives odd result when is large (#53784)<br/><br/> Chris Hall ran into difficulties with the results of large integer<br/> divisions being upgraded to floating point, with the loss of accuracy<br/> that that implies. He and Dominic Dunlop kicked the problem around a<br/> bit but were not able to come up with an explanation for what they<br/> were seeing.<br/><br/> but -Mbigint ok<br/><br/><br/>No complain about bareword (#53806)<br/><br/> Ronald Fischer complained thusly when bitten by &quot;print&quot; merrily<br/> accepting a bareword as its first argument and silently stringifying<br/> it. Bram promised some TODO tests for this.<br/><br/> Something tells me this is not going to be simple to fix.<br/><br/> the magic of print<br/><br/><br/>perlpodspec typo &quot;Encoding::Supported&quot; (#53908)<br/><br/> Kevin Ryde found an instance of &quot;Encoding::Supported&quot; that he<br/> suspected should read &quot;Encode::Supported&quot;. And indeed it should.<br/> Patched by H.Merijn Brand.<br/><br/><br/><br/>&quot;pod2man&quot; loses &quot;=head2&quot; starting [with] &#39; or . (#53910)<br/><br/> Kevin also discovered that &quot;Pod::Man&quot; failed to properly escape POD<br/> headings that begin with a quote or period, letting them be<br/> interpreted by *roff and thus ignored. He proposed a simple patch that<br/> should be enough to resolve the issue.<br/><br/> more POD love<br/><br/><br/>Perl5 Bug Summary<br/><br/><br/><br/><br/>New Core Modules<br/><br/> Encode 2.25<br/> Released by Dan &quot;the Encode maintainer&quot; Kogai.<br/><br/><br/><br/> IO::Compress::* 2.010<br/> Paul Marquess synched blead with the current CPAN release, which<br/> should make things play more nicely on 5.10<br/><br/><br/><br/> threads::shared 1.19<br/> Jerry D. Hedden pushed the latest &quot;threads::shared&quot; out the door.<br/> The main change is saner semantics for &quot;ref()&quot; on shared objects.<br/><br/><br/><br/> Thread::Queue 2.07<br/> The above module in turn allowed Jerry to release a version of<br/> &quot;Thread::Queue&quot; that allows one to enqueue structures with<br/> circular references.<br/><br/><br/><br/>In Brief<br/><br/> Bhavna Yadav wondered how to port a Perl script on Vxworks. Dominic<br/> Dunlop pointed out that Wind River ported Perl independently to their<br/> Vxworks operating system... seven years ago, and as far as Dominic was<br/> aware, no porter had any technical knowledge of the platform.<br/><br/><br/><br/> Thanks to Reini Urban, one can build a static perl on Cygwin.<br/><br/> no shared libraries<br/><br/><br/> Alexandr Ciornii pinged the list with an 18 month old &quot;Net::SMTP&quot;<br/> documentation patch that had never been applied.<br/><br/><br/><br/> In the Taint (PL_tainting, SvTAINTED_on, SvTAINTED_off, SvTAINT)<br/> thread, Paul Fenwick explained that late-acting tainting left<br/> &quot;PERL5LIB&quot; wide open.<br/><br/> this is a problem<br/><br/><br/> Vadim Konovalov cross-posted a question regarding Perl<br/> cross-compilation on arm-linux but no-one took him up on it.<br/><br/><br/><br/> Abigail tweaked &quot;File::Copy&quot; to use the 3-arg open instead of a<br/> slightly crufty and vaguely deprecated 2-arg form.<br/><br/><br/><br/> Abigail also wrote an initial cut to teach &quot;File::Copy&quot; to respect<br/> permission bits. This caused problems on Cygwin, so, for want of a<br/> better solution, Jerry D. Hedden changed some of the failing tests<br/> into TODO tests for that platform.<br/><br/><br/><br/> Alexandr Ciornii supplied a &quot;Data::Dumper&quot; patch to make the latest<br/> blead version compile on older perls.<br/><br/><br/><br/> Ricardo Signes fixed up a POD link for &quot;perlunitut&quot;.<br/><br/><br/><br/> David Nicol wrote a wafer thin patch to underscore the semantic<br/> importance of the empty pattern (&quot;//&quot;).<br/><br/><br/><br/>Last week&#39;s summary<br/><br/> This Week on perl5-porters - 28 April-3 May 2008<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/> Thu, 15 May 2008 16:26:25 +0000 This Week on perl5-porters - 28 April-3 May 2008 by David Landgren This Week on perl5-porters - 28 April-3 May 2008<br/><br/> &quot;I&#39;ve been playing around with MAD this morning [...] The current<br/> state of the tests for MAD is a bit sad, though I hope to have<br/> something that will make interested porters glad in the near future&quot;.<br/> -- Jesse Vincent, not a bad lad to spend a tad on MAD. (gad, Dad! it&#39;s<br/> not a fad).<br/><br/>Topics of Interest<br/><br/>More on tainting<br/><br/> Nicholas Clark thought that a of points Paul Fenwick made regarding<br/> late-acting taint weren&#39;t borne out by an inspection of what the<br/> source code actually did.<br/><br/> Although, looking closely, he found a couple of suspect constructs. He<br/> thought that one possibility was to alter &quot;$^TAINT&quot; to be &quot;undef&quot; if<br/> no tainting, 1 (or true) if -T tainting, or 0 for late-acting<br/> tainting.<br/><br/> Then again, Paul&#39;s idea of deprecating late-acting tainting sounded<br/> like the path of least resistance.<br/><br/> better to be safe than sorry<br/><br/><br/>Support mallocs of struct T, which contains struct S[N]<br/><br/> Nicholas apologised to Jim Cromie for having not applied his patch,<br/> noting that at the moment Rafael seems to be the only person with<br/> enough motivation to apply patches.<br/><br/> He thought that Jim&#39;s avenue of research seemed promising and<br/> suggested he keep slogging on to see whether the rest of it works.<br/><br/><br/><br/>Bug in &quot;if(open(my $fh,...))&quot;<br/><br/> In a parallel thread (to bug #53504), Matt Sergeant reopened the<br/> discussion about filehandles persisting past their due date. The<br/> problem arises when one opens a file as a side effect of a conditional<br/> in an if statement.<br/><br/> When Matt learnt that it was sufficient to wrap the &quot;if&quot; block in a<br/> curly block to force the handle to be closed early, he deemed that it<br/> was no longer such a problem.<br/><br/> Hint: if bug reports don&#39;t contain the word &quot;perl&quot;, they run the risk<br/> of being filed in a &quot;possible spam&quot; folder for human perusal.<br/><br/> it&#39;s all right<br/><br/><br/><br/>5.6.x in the wild<br/><br/> A recent change to the GNU &quot;coreutils&quot; package has broken the<br/> Configure script for 5.6.x (or rather, it&#39;s been fixed for more recent<br/> perls for ages, but hasn&#39;t been, and is unlikely to be backported to<br/> 5.6.x).<br/><br/> Jesse Vincent asked for a show of hands to see how many porters are<br/> still using 5.6, to gauge the importance of creating a fix for<br/> software that was released eight years ago.<br/><br/> Gabor Szabo won a surprisingly crowded race, by having the courage to<br/> admit that he has a client still running perl 4.x in a couple of<br/> places.<br/><br/> an unscientific survey<br/><br/><br/> GNU coreutils 6.9 breaks F&lt;Configure&gt; (#53446)<br/><br/><br/>Prototypes, parsing and optrees<br/><br/> Nicholas Clark thought there was a smidgen of performance to be gained<br/> by figuring out what context a routine needed to used to call a<br/> function and that maybe a prototype, or its absence, could help. But<br/> Rafael explained that what he was looking at was actually from<br/> something completely different, so the question is moot.<br/><br/><br/><br/>Weird kernel failure in t/op/threads.t in blead@33758<br/><br/> David Landgren related the tale of a test suite falling into an<br/> infinite loop, spewing out the message<br/><br/> Fatal error &#39;Exceeded maximum lock level&#39; at line 199 in file<br/> /usr/src/lib/libpthread/thread/thr_rtld.c (errno = 136039556)<br/><br/> and wondered if it was the symptom of some recent change. Nicholas<br/> Clark thought that the fact that the test was run on a 6-cpu machine<br/> running FreeBSD 6.0 was probably a better explanation.<br/><br/> Nicholas also thought it would be slightly more helpful if the &quot;-V&quot;<br/> switch were able to report the number of CPUs on the machine, at least<br/> for a subset of platforms where such a test was easy enough to<br/> determine.<br/><br/> Abe Timmerman looked at the code in Test::Smoke::SysInfo and wrote no,<br/> but I think he meant yes. If so, it should just be a simple matter of<br/> programming...<br/><br/><br/><br/><br/>Smoker segfaults on OpenBSD 4.1<br/><br/> Stephen Schubiger reported that smoke tests of blead had been crashing<br/> with what turned out to be low-level XS problems. Abe Timmerman had<br/> heard of the problem also occurring on FreeBSD 7.0.<br/><br/> In the meantime, Stephen discovered that the latest release of the<br/> smoker&#39;s companion (Test::Smoke 1.32) fixed the problem.<br/><br/> smokers of the world, upgrade<br/><br/><br/><br/>5.8.9-to-be on Irix<br/><br/> David Cantrell reported the results of a smoke for the upcoming 5.8<br/> release on IRIX. Everything was fine except for a couple of failures<br/> in &quot;Sys::Syslog&quot;. One issue involved taint, the other was possibly<br/> related to CPAN# 30710, but S&eacute;bastien Aperghis-Tramoni had no real<br/> idea about the heart of the problem.<br/><br/><br/><br/><br/> Similarly, the same problem also occurred with blead, although<br/> &quot;Time::Piece&quot; and &quot;Archive::Extract&quot; were also giving grief.<br/><br/> bleeding on Irix<br/><br/><br/>Parameterize &quot;ptr_table_new(table-size)&quot;<br/><br/> Jim Cromie delivered another fiendishly obscure patch to improve the<br/> performance of ptr_tables, which serve an important role in<br/> implementing hashes. Part of the aim was to expose the guts so that<br/> things like Storable could delve deeper into the core for an increase<br/> in performance.<br/><br/> Nicholas Clark was a bit uncomfortable with the idea, expressing the<br/> wish to see more performance tweaks that don&#39;t expand the public API.<br/> Apart from that, he felt that Jim&#39;s research might be help re-tune<br/> various magic numbers used for sizing things in the core.<br/><br/> The main sticking point was a useful set of benchmarks to help examine<br/> the result of changes to the core.<br/><br/><br/><br/>Another perldoc shortcut<br/><br/> It suddenly dawned on Gisle Aas that instead of typing &quot;perldoc<br/> perlintro&quot; one could just as easily type &quot;perldoc intro&quot;. He wrote a<br/> patch so that if it failed to find something, it would prepend &quot;perl&quot;<br/> to the search string and try again. Thus &quot;perldoc re&quot; would continue<br/> to return the page on the &quot;re&quot; pragma, rather than the &quot;perlre&quot; page.<br/><br/> all that&#39;s lacking is shell auto-completion<br/><br/><br/> Adriano Ferreira liked the idea so much he pushed &quot;Pod::Perldoc&quot;<br/> version 3.14_06 out to CPAN and asked for feedback.<br/><br/> RFC<br/><br/><br/>Upgrading to &quot;Digest::SHA&quot; 5.47<br/><br/> The CPAN version has apparently been moving files around in the<br/> distribution, and this is naughty, since it causes more work when<br/> integrating into blead. Still not sure if it&#39;s all tidied up yet.<br/><br/> bumping into things in the night<br/><br/><br/>Bug or not? constants warn only once<br/><br/> Nicholas Clark excoriated the list for wasting time on pointless<br/> questions (why is Ruby slow?) rather than answering more mundane<br/> questions which would help things move forward. The issue at hand was<br/> whether constants should warn once, or as many times as necessary.<br/> Both outcomes are doable, and feasible, so we just need to decide what<br/> to do. All he wanted was someone&#39;s opinion.<br/><br/> Aristotle Pagaltzis wanted to be sure that whatever was changed<br/> wouldn&#39;t make things slower than they are now, expressing the opinion<br/> (yes!) that things had become slower over time (although for the most<br/> part the price was happily paid). He also took the time to rewrite<br/> Nicholas&#39;s proposed tests into something he felt was easier to read.<br/><br/> Dave Mitchell was very surprised to learn of 2x slowdowns in the<br/> regexp engine, and thought that if this was true then it was something<br/> that needed fixing.<br/><br/> Aristotle referred him to an article by Ben Tilly.<br/><br/> Ilya&#39;s insight<br/><br/><br/><br/>MAD Dumper - missing encoding of XML-unsafe literals in &quot;pre&quot;<br/><br/> Jesse Vincent looked at the state of MAD mode in Perl and was dismayed<br/> by the paucity of tests as well as the way it generated XML. Part of<br/> the problem was the fact that the test suite relies on &quot;XML::Parser&quot;,<br/> which is a slightly odd state of affairs to have. At least until Dave<br/> Mitchell gets around to writing an XML parser using /bin/sh.<br/><br/> Unfortunately Jesse used 5.10.0 as a basis, and significant changes<br/> have been made in 5.11 and thus the patch could not be applied. Plus<br/> Gerard Goossen had already fixed it. Nevertheless, had it been<br/> applicable, it would have leaked a scalar, although fortunately Rick<br/> Delaney was around to show Jesse how that could have been fixed.<br/><br/> teacher tell me what&#39;s my lesson<br/><br/><br/>TODO of the week<br/><br/>The yada yada yada operators<br/><br/> Perl 6&#39;s Synopsis 3 says:<br/><br/> *The ... operator is the &quot;yada, yada, yada&quot; list operator, which is<br/> used as the body in function prototypes. It complains bitterly (by<br/> calling fail) if it is ever executed. Variant ??? calls warn, and !!!<br/> calls die.*<br/><br/> Those would be nice to add to Perl 5. That could be done without new<br/> ops.<br/><br/>Patches of Interest<br/><br/>weak.t<br/><br/> Alexandr Ciornii offered a patch to allow &quot;Scalar::Util&quot;&#39;s &quot;weaken&quot;<br/> function to be tested correctly both in the CPAN module and in the<br/> perl core.<br/><br/> and strong coffee<br/><br/><br/>Testing $/ with in memory files<br/><br/> Bram noticed that bug #44833 had been resolved, but no tests were ever<br/> added to help pin down the issue. There was an issue with the test<br/> being run by &quot;miniperl&quot;, which would possibly give it fits, so Bram<br/> tweaked it to be skipped if run by &quot;miniperl&quot;.<br/><br/> Rafael applied the patch as it stood, but Ben Morrow thought of a<br/> tweak for additional robustness. Bram adopted the idea, but it was<br/> apparently left unapplied.<br/><br/><br/><br/>Extra tests for t/op/tie.t<br/><br/> As a follow-up to the READONLY bug from last week, Bram added a couple<br/> of tests to make sure things stayed sane. After have mulled over the<br/> issue for a while, he returned to it again this week, asking the<br/> porters whether a deeper overhaul was needed concerning these tests.<br/><br/> Warnocked<br/><br/><br/>Win32 process ids can have more than 16 bits<br/><br/> Jan Dubois tweaked the Win32 code to return the full 32-bit PID value<br/> on Windows platforms. He also mentioned that &quot;system&quot; behaves slightly<br/> differently on Windows, in that it returns the PID and not the exit<br/> status.<br/><br/> Paul Johnson thought it was high time (since he&#39;s been waiting on it<br/> for ten years) to either document the issue properly, or come up with<br/> a better interface.<br/><br/> 32 bits ought to be enough for anybody<br/><br/><br/>Two less double magic warnings<br/><br/> Vincent Pit wrote a patch to kill a redundant warning in the construct<br/> &quot;binmode $fh, undef&quot;<br/><br/><br/><br/> as well as &quot;tie $x, $m&quot; when $m is undefined.<br/><br/><br/><br/> Rafael liked these patches so much, he applied them.<br/><br/>Detab and move POD in Pod/<br/><br/> In a prelude to major cleanups in &quot;Pod::Html&quot;, David Landgren<br/> submitted a patch to cleanse the whitespace of tabs, and a second<br/> patch to push the POD down to the end of the file (hint: this comes in<br/> handy when using &quot;Devel::Cover&quot;).<br/><br/> H.Merijn Brand was loathe to apply the patches, since he remembered<br/> Tom Christiansen vehemently opposing the change last time someone<br/> tried to reformat the code for &quot;stylistic&quot; purposes.<br/><br/> to be continued<br/><br/><br/><br/> David also noticed that the tests for &quot;Pod::Html&quot; relies on being able<br/> to find /bin/diff or /usr/bin/diff and wondered if &quot;is()&quot; from<br/> Test::More wouldn&#39;t do just as well.<br/><br/> evil external OS-dependent dependencies<br/><br/><br/>&quot;~~&quot; with non-overloaded objects<br/><br/> With a very small dash of C, Vincent Pit tweaked smart matching to<br/> croak on a non-overloaded object. This made Ricardo Signes, who raised<br/> the issue in the first place, very happy.<br/><br/> r e s p e c t (staying out of the living room)<br/><br/><br/>Add some links to external resources<br/><br/> Shlomi Fish suggested some links to web pages in the documentation,<br/> but qualified his patch with a complex web of licensing details. This<br/> prevented the patch from receiving much serious consideration.<br/><br/> licensed to patch<br/><br/><br/>New and old bugs from RT<br/><br/>&quot;Pod::HTML&quot; generates incorrect HTML for &quot;=item *&quot; (#19655)<br/><br/> David Landgren went through the open bugs for &quot;Pod::Html&quot; and noticed<br/> that this one has been fixed as recently as in 5.10.0.<br/><br/> resolved<br/><br/><br/>Bug in &quot;File::Find&quot; on Windows when target dir is bare drive letter and <br/>&quot;no_chdir = 1&quot; (#41555)<br/><br/> Bram wrote a patch to correct the problem, but wondered how one would<br/> go about how one could write a test for the behaviour.<br/><br/><br/><br/>Infinite recursion related to &quot;die&quot;, overloading, &quot;s///&quot; and &quot;\x{...}&quot; <br/>(#41618)<br/><br/> Bram noted that this problem is still around on blead, and was able to<br/> refine the test cases to show what does and what doesn&#39;t cause a<br/> segfault.<br/><br/> getting better all the time<br/><br/><br/>Unicode and case insensitive regex (#41664)<br/><br/> Bram discovered that for some reason the problem goes away if anchors<br/> are used in the pattern match.<br/><br/><br/><br/>&quot;Carp::croak()&quot; replace user error message by own (#42329)<br/><br/> Bram wrote a patch to make &quot;croak()&quot; croak with a more useful error<br/> when there are no file descriptors available to pull in &quot;Carp::Heavy&quot;.<br/><br/> now you know why<br/><br/><br/>&quot;Data::Dumper&quot; ignores &quot;^M&quot; in scalars? (#43617)<br/><br/> Bram tried to convince the bug reporter that this was more a problem<br/> of shell interpretation of newlines rather than being the fault of<br/> &quot;Data::Dumper&quot;.<br/><br/><br/><br/>Missing tests for &quot;sprintf %f&quot; with Nan/+Inf/-Inf (#45383)<br/><br/> Bram wrote some patches to pin down the behaviour of &quot;sprintf&quot;.<br/> Applied by Rafael Garcia-Suarez.<br/><br/><br/><br/>Clarification about @ISA declaration in perlboot.pod (#45733)<br/><br/> Bram saw that the patch attached to this bug report had never been<br/> applied, and asked why. Rafael explained that he never saw it on the<br/> mailing list the first time around.<br/><br/> will it be applied this time around?<br/><br/><br/>Split function broken on MacOS (#46073)<br/><br/> Bram found another patch that had been overlooked and so Rafael<br/> applied it.<br/><br/><br/><br/>&quot;perl -x&quot; reports incorrect line number for errors or warnings (#46369)<br/><br/> Anon Sricharoenchai thanked Bram for his followup on how to<br/> resynchronise perl&#39;s concept of line numbers when dealing with files<br/> that contain Perl and non-Perl chunks.<br/><br/> or try Inline<br/><br/><br/>Clearing magic (or &quot;length($@)&gt;0&quot; for empty $@ if utf8 is in use) (#51370)<br/><br/> Animator had opened this can of worms last week on the clearing of<br/> magic on $@ with an exploration of sorts on how to fix it.<br/><br/> Rafael Garcia-Suarez commented saying that the results looked<br/> reasonable, but of course one could only be sure with a series of new<br/> tests to ensure that nothing had been broken.<br/><br/> So Bram wrote some code and tests and asked for comments. Nicholas<br/> Clark thought that the code Bram had written had the freeing and<br/> clearing of magic the wrong way around. The code also introduced a new<br/> class of macros to deal with the situation; Nicholas felt this added<br/> unnecessary complexity.<br/><br/> Another thing that caught his eye was the fact that one of Bram&#39;s<br/> tests induced a &quot;panic: sv_len_utf8 cache 17 real 0&quot;. This will need<br/> to be looked into. Bram thought that this was probably a side effect<br/> of the UTF-8 flag not being cleared when it should have been.<br/><br/> So Nicholas did that, and a after thinking about it for a bit thought<br/> that &quot;mg_free&quot; might be to blame. He and Bram kicked the idea around a<br/> bit more and at one point a proposed change might have had the side<br/> effect of allowing $@ to become tie-able. Nicholas thought that this<br/> was a bit sick, but then again, hmmm. There has been talk of promoting<br/> $@ to a first-class object...<br/><br/><br/><br/><br/>perl-5.10.0-33733 assertion with JSON::XS-2.2 (#53244)<br/><br/> This is the thread with Marc Lehmann discussing the use of &quot;SvCUR&quot;.<br/> The only followup this week was from Sam Vilain, wondering if there<br/> was a problem or not with &quot;sv_upgrade&quot; and whether Marc might not be<br/> too liberal in choosing when to access &quot;SvCUR&quot;.<br/><br/><br/><br/>Parse problem in &quot;; (#53414)<br/><br/> Don&#39;t use it. Even the author says so.<br/><br/> when given a real switch<br/><br/><br/>A bug with &quot;Readonly::XS&quot; that might be a guts bug (#53482)<br/><br/> A change in the core might have been the cause of the problem. Bram<br/> added some tests to make sure things didn&#39;t drift in the future. After<br/> a couple of idle suggestions, Andreas K&ouml;nig came through with the<br/> patch that seemed to be the root cause.<br/><br/><br/><br/><br/>op/pwent.t should use the DirectoryService on OS X (#53500)<br/><br/> Jan Dubois outlined the approach that he thought should be taken to<br/> fix this bug, admitting that he didn&#39;t have the time right now to<br/> pursue the issue.<br/><br/> feel free to jump in<br/><br/><br/>Some UTF-8 string with CP932 encoding will freeze DOS BOX (#53502)<br/><br/> Chihiro reported that writing a program in a Japanese environment<br/> worked, but if the program had a different name, it would freeze<br/> inside a Windows DOS box. No comments.<br/><br/> might be a ^S<br/><br/><br/>Bug in &quot;if(open(my $fh,...)) { }&quot; scoping (#53504)<br/><br/> Matt Sergeant was surprised to discover that $fh was not destroyed<br/> until the end of the scope encompassing the &quot;if&quot;, rather than at the<br/> end of the &quot;if&quot; block.<br/><br/> In the subsequent exchange, a work-around was suggested, and the<br/> usefulness and hatefulness of lexicals &quot;leaking&quot; across if/elsif/elsif<br/> blocks was debated.<br/><br/> been there since 5.003<br/><br/><br/> continued in May<br/><br/><br/>Overload and fallback binary or (|) (#53550)<br/><br/> Bram opened a ticket related to bug #53482 which showed the overload<br/> fallback mechanism privileging string context rather than numeric<br/> context, which, in the context of the bug, would have been more<br/> useful.<br/><br/> Rafael explained that binary or (&quot;|&quot;) works on both string and<br/> numbers, so it would be hard to discern what was needed in a<br/> systematically correct way. David Nicol speculated on the possibility<br/> of allowing the author of the overloading to give numeric context the<br/> first chance and resolving the overload.<br/><br/> &quot;we travel on the quiet road&quot;<br/><br/><br/>Range operator and magic (#53554)<br/><br/> Bram opened another ticket regarding the range operator, wondering why<br/> the interpreter inspects the contents of $x six times in the fragment<br/> &quot;@y = $x .. $x&quot;, where $x was a tied variable (and thus if the magic<br/> was being used to piggy-back side effects, the double magic would<br/> throw things out of kilter).<br/><br/> The prompted Dave Nicol to ask if the range &quot;1..$x&quot; was driving a for<br/> loop, what would happen if the $x value was modified in the loop. Bram<br/> thought that it shouldn&#39;t be allowed, and promised a TODO test for it.<br/><br/> magic and loss<br/><br/><br/><br/>Patch for linux LDAP groups (#53560)<br/><br/> David Dick encountered a test failure regarding groups (as in<br/> /etc/group) containing spaces in names. This occurred on a Linux box<br/> using LDAP authentication, and so his expedient fix was to add Linux<br/> to the list of platforms where group names could be expected to<br/> contain spaces.<br/><br/> Rafael applied the patch, but H.Merijn Brand rightfully pointed out<br/> this scenario would play out the same way on many other Unix-like<br/> platforms. In which case, a much more robust solution would be to<br/> determine if LDAP (or in fact any NIS/NSS mechanism, come to think of<br/> it) was in use, and use that as a basis for the test.<br/><br/> wanted: finer discriminant<br/><br/><br/>Zero-length regex bug (#53562)<br/><br/> Another victim failed to notice that &quot;//&quot; has special meaning.<br/><br/> That the problem comes up so frequently caused David Nicol to conclude<br/> that the documentation needs a special EMPTY PATTERN section.<br/><br/> only a wafer-thin documentation patch needed<br/><br/><br/><br/>perl5.10 and blead crash on win32 (#53586)<br/><br/> Dmitry Karasik uncovered a snippet that runs fine on FreeBSD but<br/> crashes on Win32. Then again, it does involve &quot;IO::Handle&quot;, SIGPIPE<br/> signals and setting far too many things to &quot;undef&quot;.<br/><br/> bad magic<br/><br/><br/>Perl5 Bug Summary<br/><br/> All hail Bram, the new Perl5 bug warrior.<br/><br/> 288 new + 1472 open = 1760<br/> Created this week: 8<br/> Closed this week: 64<br/><br/> may his wrangling be long and fruitful<br/><br/><br/><br/>In Brief<br/><br/> Bram&#39;s documentation patch for &quot;perlrun -x&quot; made it in<br/><br/><br/><br/> as did Vincent Pit&#39;s patch for segmentation fault with array ties (bug<br/> #51636).<br/><br/><br/><br/> On the Why is Ruby on Rails so darn slow thread, Alberto Sim&otilde;es<br/> forwarded a message from Leopold T&ouml;tsch that gave some Parrot<br/> benchmarks on crunching Mandelbrot sets.<br/><br/><br/><br/> John E. Malmberg took a second shot at getting the forked debugger<br/> working on LINUX/UNIX/CYGWIN/VMS.<br/><br/><br/><br/> Marc Lehmann read a fascinating paper on heapsort with n log(n) - 0.9n<br/> comparisons which is interesting because it reduces the number of<br/> comparisons that need to be performed, which is useful in a language<br/> where the compares themselves are expensive.<br/><br/><br/><br/> perl @ 33444 was still having problems in Cygwin due to db-btree.t,<br/> io_multihomed.t, HiRes.t and op/alarm.t.<br/><br/><br/><br/> Jesse Vincent found a teeny tiny typo in &quot;Encode&quot; 2.24&#39;s Makefile.PL.<br/> Applied.<br/><br/><br/><br/>Last fortnight&#39;s summary<br/><br/> This Fortnight on perl5-porters - 13-27 April 2008<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/> Fri, 09 May 2008 10:26:22 +0000 This Fortnight on perl5-porters - 13-27 April 2008 by David Landgren This Fortnight on perl5-porters - 13-27 April 2008<br/><br/> &quot;Perl simply isn&#39;t broken enough. Most things work too well, hence<br/> no-one finds that they need to fix their itch, so in turn, they don&#39;t<br/> get sucked into core development generally. Maybe we need to start<br/> adding bugs, somewhat like a protection racket.&quot;<br/><br/> &quot;Your program works very nicely. It would be a shame if something<br/> went wrong with it, wouldn&#39;t it? ...&quot;<br/><br/> -- Nicholas Clark, on possible future revenue schemes.<br/><br/>Topics of Interest<br/><br/>Perl @ 33536<br/><br/> Nicholas Clark followed up on the 5.8.9-tobe thread, regarding binary<br/> compatibility, pointing out that the entire 5.8 line had never needed<br/> to rearrange struct layouts, so clearly it&#39;s not much of a limitation.<br/><br/> He thought that forcing a layout reshuffle between each minor release<br/> sounded like quite a bit of work; Jan Dubois noted that all one needed<br/> to do was to roll the first member around to the end, which is easy,<br/> and has the added bonus of guaranteeing that the offset of every<br/> single member changes.<br/><br/> challenge their assumptions<br/><br/><br/>Banishing &quot;free to wrong pool&quot;, and making Win32 faster?<br/><br/> Nicholas then related the details of a discussion he had with Dave<br/> Mitchell concerning the viability of a copy-on-write scheme. The main<br/> stumbling block is the need for threaded perls to track which<br/> interpreter allocated a given block of memory, since only the true<br/> owner should free it.<br/><br/> This would mean that every single SV needs an extra pointer to link<br/> back to the parent interpreter, on top of the extra counter needed to<br/> keep track of the current copy count.<br/><br/> So Nicholas went exploring to find out if there was another way to<br/> determine to which parent a block belonged. After studying things for<br/> a while he came to the conclusion that between util.c and malloc.c,<br/> the necessary infrastructure already exists to acquire large blocks of<br/> memory from the system and then allocate it on an as-needed basis as<br/> program executes.<br/><br/> And then he was struck by the fact that this could be useful right<br/> now, without waiting for a copy-on-write scheme to be written, since<br/> the above could be used to both speed up Win32&#39;s slow &quot;malloc&quot;<br/> performance and speed up (or at least simplify) thread destruction.<br/><br/> Another brilliant piece of detective work by Nicholas that, alas,<br/> attracted no comments.<br/><br/><br/><br/>Taint (PL_tainting, SvTAINTED_on, SvTAINTED_off, SvTAINT)<br/><br/> Nicholas also took the time to examine Paul Fenwick&#39;s reasons for<br/> dismay with the way tainting can be turned on part way through a<br/> program and offered a number of answers to Paul&#39;s questions.<br/><br/> By using Sam Vilain&#39;s git repository back to the dawn of time, he was<br/> able to show that the current behaviour was introduced during 5.000<br/> alpha 4.<br/><br/><br/><br/>Sustaining Perl 5 maintenance<br/><br/> Nicholas also related a conversation from Real Life (see, the man does<br/> have a Life) where Leon Brocard asked whether there were enough people<br/> working on Perl 5, and Nicholas&#39;s flat answer was... no.<br/><br/> The inescapable fact is that working on a codebase that is over twenty<br/> years old is not fun, it&#39;s work. Even taking care of patches people<br/> send in and shepherding them to completion is work. A back of the<br/> envelope calculation gives 8 person-work-days, per week, just to stand<br/> still.<br/><br/> The grant scheme is not working. Expert Perl users know how to skate<br/> around the weird parts of the language (or give them a wide berth).<br/> Companies don&#39;t see the need to finance Perl development.<br/><br/> At the very least, a bug-wrangler who could keep track of bugs, tie<br/> related bugs together, filter out not-a-bugs, write TODO tests, write<br/> tests to improve coverage... well, it&#39;s a full-time job. And not fun.<br/> At least not always. Hardly ever.<br/><br/> Dave Mitchell pointed out that a seemingly innocuous bug report about<br/> a &quot;premature free&quot; error turns out, after a long debugging session, to<br/> be another case of a design decision embedded in the code base many<br/> years ago, at which point there&#39;s very little to be done about it.<br/> This sort of bug cannot be dealt with by a junior coder, lest they<br/> quickly lose their mind, or at least become quickly discouraged.<br/><br/> Sven Dowideit gave thanks for the Git repository, which made life much<br/> easier compared to the previous Perforce export via rsync approach. In<br/> which case one of the goals for switching over to git has already been<br/> met.<br/><br/> life support<br/><br/><br/>Updated Perl Git, with the Git Nits Picked<br/><br/> Sam Vilain, on the subject of the Perl Git, announced that he had<br/> cleared up all the problems outstanding with the first release of the<br/> repository and said that the current repository would likely be the<br/> definitive one.<br/><br/> Rafael Garcia-Suarez announced that his company,, had<br/> offered the bandwidth and hosting for the repository, and it would<br/> live under the domain. He said that the move to git will take<br/> place once 5.8.9 is out the door and so in the meantime Sam will have<br/> to continue to import the Perforce changes.<br/><br/><br/><br/><br/><br/><br/> Andy Armstrong mindlessly propagated a link to a web site that<br/> purports to perform a census on the adoption of open-source software,<br/> and was keen to find out how Perl fared.<br/><br/> Apparently one has to download a 44Mb Ruby application as part of the<br/> process.<br/><br/> that&#39;s the easy part<br/><br/><br/>t/ taint issue with VMS<br/><br/> John E. Malmberg returned to the issue of $ENV{PATH} being tainted on<br/> VMS and there being no way to untaint it in order to allow to<br/> execute &quot;runperl&quot;. Part of the problem is that $ENV{PATH} need not<br/> even exist on VMS, and things will work just fine without it.<br/><br/> He recalled that the issue worked if PATH was defined beforehand but<br/> couldn&#39;t track down the original discussion on the matter.<br/><br/> finding your way<br/><br/><br/>Wrong line numbers in &quot;elsif()&quot;<br/><br/> This one&#39;s been around for a *looong* time and now, finally, it may be<br/> time to retire advice #11943 from Klortho.<br/><br/> Nicholas Clark took another look at it and decided that it would make<br/> a lovely opener for the Vienna Summer of TODOs project. Then when he<br/> took a closer look, he thought of a trivial solution that just might<br/> work after all.<br/><br/> He wrote up the new TODO, and within 12 hours, Rafael Garcia-Suarez<br/> had written and applied a patch to implement Nicholas&#39;s idea.<br/> Unfortunately it skewed another line numbering result. So he committed<br/> a better change (#33710). Nicholas wondered whether Rafael was going<br/> to fix each TODO he attempted to propose as worthy of a bounty.<br/><br/> Bram wondered if this was related to bug #47632, and asked whether the<br/> fix could be extended to resolve a variation on the theme (of<br/> reporting incorrect line numbers).<br/><br/> Tim Bunce was very pleased, because an unexpected benefit that came<br/> out of this was that all line-based execution profilers picked up the<br/> improvement for free.<br/><br/> Paul Johnson saw that &quot;Devel::Cover&quot; was flummoxed by the change, but<br/> he noted happily that the test suite was reporting the error in an<br/> appropriate way which should simplify the fix. He also saw that<br/> &quot;B::Deparse&quot; got a little confused as well and offered a patch to fix<br/> that up.<br/><br/> &quot;Ah yes, and you are the first person to have<br/> noticed this bug since 1987. Sure.&quot;<br/><br/><br/> The above work thus allowed Rafael Garcia-Suarez to announce that the<br/> bug &quot;if ... elsif&quot; gives wrong line number for warning about undefined<br/> value (#37302) was hereby fixed.<br/><br/> so backport it<br/><br/><br/>valgrind<br/><br/> H.Merijn Brand took valgrind for a spin on his Text::CSV_XS module to<br/> see what happened. In the process he discovered that it works better<br/> if you have a perl built with &quot;-DDEBUGGING&quot;, but a module written by<br/> Rafael (&quot;Perl::Destruct::Level&quot;) partially obviates the need.<br/><br/> Marvin Humphrey explained what good valgrind figures should look like<br/> and made some suggestions to reduce the numbers H.Merijn was seeing.<br/> Vincent Pit asked whether his brand new &quot;Test::Valgrind&quot; would be of<br/> any use, and this caught Marvin&#39;s attention.<br/><br/> the daily grind<br/><br/><br/>&quot;ExtUtils::CBuilder&quot; with MinGW on Win32<br/><br/> Steve Hay asked about the status of &quot;ExtUtils::CBuilder&quot; (or more<br/> specifically, the differences between the CPAN version, the<br/> development version in its Subversion repository and blead). When all<br/> was said and done, version 0.23 made it out to CPAN and this contains<br/> the MinGW fixes that will clean up Steve&#39;s smokes.<br/><br/> On the other hand, the blead version still contains some VMS-specific<br/> fixes that need to be merged back into the development version of the<br/> module to get everyone in synch.<br/><br/> whither 0.24?<br/><br/><br/>Object ~~ overloading and not<br/><br/> Ricardo Signes reminded the porters about the perils of<br/><br/> $anything ~~ $obj_without_overload<br/><br/> and wrote a test case to try and nail it down. But something went<br/> wrong and he had a core dump on his hands. Rafael took over and<br/> cleaned everything up so that we know have a nicely-behaved TODO test.<br/><br/><br/><br/> In other news, he also wrote a testcase as a followup to the &quot;Array ~~<br/> Any&quot; discussion, but this appears to have been overlooked.<br/><br/><br/><br/>Support mallocs of struct T containing struct S[N]<br/><br/> In his continuing explorations of slab allocations, Jim Cromie offered<br/> a patch to allow structs with arbitrarily-sized arrays of structs to<br/> be allocated easily.<br/><br/> This was a follow-up to his Warnocked patch at the beginning of the<br/> month dealing with exposing the ptr-table subsystem, on the grounds<br/> that it offered a speed boost to XS authors. It turned out that<br/> freeing ptr-tables was very slow, and so switching to a slab allocator<br/> would simplify the freeing, since one could just throw the slab away.<br/> But for that to work, one needed to be able to calculate the overall<br/> required size needed for variable length allocations.<br/><br/> Those who were sufficiently well versed in the finer details of the C<br/> standard pointed out that not many current compiler implementations<br/> had implemented this part of the standard, which appears to have<br/> compromised the acceptance of the patch.<br/><br/> unwarranted chumminess with the C implementation<br/><br/><br/>Why is Ruby on Rails so darn slow?<br/><br/> A long digression about the relative merits of speed and usefulness of<br/> Perl, Ruby and Java, inspired by a web article written by Tim Bray.<br/><br/> not much porting going on<br/><br/><br/>Perl 5.10 and the concept of stable<br/><br/> Alberto Sim&otilde;es learnt that Slackware 12.1 was about to be released,<br/> and it is set to go with 5.8.8 rather than 5.10.0.<br/><br/> When he enquired as to why this was, he was told that according to the<br/> documentation on, 5.10.0 is considered a testing release, and<br/> thus not suitable for general deployment (as in being bundled with a<br/> Linux distribution).<br/><br/> Matt S. Trout warned that anyone into Catalyst will run into problems<br/> with attributes on an unpatched 5.10.0. Reini Urban had several<br/> patches for Cygwin that had to make it back in.<br/><br/> The fact that &quot;given&quot;/&quot;when&quot; and smartmatch have problems was brought<br/> up again, and a call was made for someone to go through the archives<br/> and track down the exact issues (which occurred during my summary<br/> sabbatical, sorry).<br/><br/> If a concise explanation can be made and a concensus can be reached as<br/> to what the desired behaviour is, Dave Mitchell, Matt S. Trout and<br/> Ricardo Signes offered to put in the work to get it done.<br/><br/> smartmatching the concept of stable<br/><br/><br/> Matt S. Trout reiterated the call for information.<br/><br/><br/><br/>Any takers for &quot;Math::Complex&quot;/&quot;Math::Trig&quot; and &quot;Time::HiRes&quot;?<br/><br/> Jarkko Hietaniemi put the maintenance of these dual-life modules on<br/> offer, citing lack of time to be able to devote the required tuits to<br/> shepherd them along. Zefram offered to take them over, since they were<br/> already of interest to him.<br/><br/> time for some maths<br/><br/><br/>Bug or not? constants warn only once<br/><br/> Nicholas was surprised that the following code only produces one<br/> warning:<br/><br/> perl -lwe &#39;sub pie {print 0 + &quot;pie&quot;}; pie; pie;&#39;<br/><br/> An even simpler variation on theme also didn&#39;t produce subsequent<br/> warnings and one could argue that it should. The problem is that the<br/> expression gets marked as valid numerically (or more precisely, &quot;IOK&quot;<br/> gets set) after the first time through (and issuing a warning) whereas<br/> the second time around the numeric context is used directly, thereby<br/> skipping the chance for the warning to fire.<br/><br/> Jan Dubois therefore observed that this was the equivalent of saying<br/> that &quot;IOK&quot; should be not be set if the conversion generated a warning.<br/><br/> Abigail ventured the opinion that one warning was enough, and that if<br/> the problem the warning was signalling was so important as to merit<br/> repeated warnings about the same problem, then the warning should have<br/> been an error in the first place.<br/><br/> In the end, Nicholas suggested a series of tests to codify the<br/> behaviour and asked people to see if any loose ends needed to be tied<br/> up.<br/><br/> have your say<br/><br/><br/>One less &quot;File::Copy&quot; bug<br/><br/> Nicholas fixed up the very silly bug that allowed one to copy a file<br/> using a buffer of 0 bytes, which is only useful if you want 0 bytes in<br/> the copied file.<br/><br/> The conversation then veered into a discussion about the fact that<br/> &quot;File::Copy&quot; doesn&#39;t respect file permissions and attributes, and<br/> other generally unhelpful problems the module has.<br/><br/> it&#39;s ok to ask the OS to do it<br/><br/><br/>New perl packages fix denial of service (Debian)<br/><br/> Spiros Denaxas wanted to know if the porters were aware of a Debian<br/> security issue concerning buffer overflows in regular expressions<br/> containing Unicode characters.<br/><br/> Tony Cook replied that there was an open ticket (#48156) on the issue<br/> in the bug database.<br/><br/><br/><br/>On the almost impossibility to write correct XS modules<br/><br/> Marc Lehmann wrote an impassioned plea to see what could be done about<br/> helping XS modules work correctly with Unicode strings.<br/><br/> The first problem is that the raw interface to a string (&quot;char *&quot;) is<br/> useless, since there is no side channel to tell the XS code what<br/> encoding is in use.<br/><br/> In reaction to this, some XS authors have invented their own XS<br/> typemaps to get around the problem, however this can result in objects<br/> being stringified.<br/><br/> The only way out that Marc could see was to take a mortal copy of the<br/> input argument. Rafael thought that it might be possible to invent a<br/> more efficient mechanism, if only syntactically.<br/><br/> Marc stressed that the problem with the current situation is that when<br/> people encounter the problem on their own, they wind up learning about<br/> the utf-8 flag and begin to play around with that, and this leads to<br/> only more tears. Hence, if Perl wants to get really serious about<br/> Unicode, it needs to be addressed in a sane manner for XS.<br/><br/><br/><br/>INSTALLDIRS and dual-life modules<br/><br/> Paul Marquess inquired about the right way to deal with CPAN updates<br/> overwriting core versions of modules correctly. By default, the CPAN<br/> shell will carefully install the new version in an @INC directory<br/> listed after the core version (also known as shadowing). The trick is<br/> to specify an override in the &quot;Makefile.PL&quot; (or &quot;Build.PL&quot;) of the<br/> CPAN module.<br/><br/> Rafael wondered if there was a problem with the core installing files<br/> in architecture-dependent directories when in fact they should be<br/> installed in architecture-independent directories, and whether it was<br/> because of some blanket assumption about the modules living under ext/<br/> in the codebase.<br/><br/><br/><br/>Closing tickets in RT<br/><br/> Bram trawled through RT and found close on a dozen tickets that he<br/> thought could be closed. So Steve Peters closed them. For another<br/> ticket concerning AIX, H.Merijn Brand suggested a hint that checks<br/> that the maths library is available.<br/><br/><br/><br/>Linking with &quot;DynaLoader&quot; and &quot;ExtUtils::Embed::ldopts&quot; since 5.10<br/><br/> Reini Urban reported that linking against DynaLoader had become quite<br/> difficult since the release of 5.10, due to changes in the way various<br/> linker symbols were exposed where. Rafael pointed to the exact change<br/> to help Reini understand what was going on.<br/><br/> Nicholas Clark thought that a test or two wouldn&#39;t go astray.<br/><br/><br/><br/>Smoking bleed @33752 blew up my system<br/><br/> Johan Vromans had the misfortune to smoke change #33752, which was<br/> perfectly bracketed by change #33751, which introduced a bug into the<br/> forked debugger code that was then reverted by change #33753.<br/><br/> Unfortunately the bug caused the smoker log file to fill up the<br/> remaining disk space with an endless loop of debugger output.<br/><br/> you have been warned<br/><br/><br/>TODO of the week<br/><br/> Hey! We got a bite! James Bence wrote a patch to make a reproducible<br/> perlmodlib.PL. Note to budding TODO doers: please use unified diffs<br/> for sending patches (&quot;diff -u&quot;, or the more melodious &quot;diff -dub&quot;).<br/><br/> smoke that<br/><br/><br/> Next up, I think the following two TODOs are dids.<br/><br/> Improving &quot;threads::shared&quot;<br/> Investigate whether &quot;threads::shared&quot; could share aggregates<br/> properly with only Perl level changes to &quot;;.<br/><br/> &quot;POSIX&quot; memory footprint<br/> Ilya observed that &quot;use POSIX&quot; eats memory like there&#39;s no<br/> tomorrow, and at various times worked to cut it down. There is<br/> probably still fat to cut out - for example POSIX passes Exporter<br/> some very memory hungry data structures.<br/><br/> I believe that the first issue, if anything can be done about it, is<br/> receiving the appropriate amount of care from Jerry D. Hedden. And the<br/> second issue has been resolved with Nicholas Clark&#39;s new<br/> implementation for constant subs.<br/><br/> Here, then, is a TODO that requires a little C knowledge:<br/><br/>Weed out needless &quot;PERL_UNUSED_ARG&quot;<br/><br/> The C code uses the macro &quot;PERL_UNUSED_ARG&quot; to stop compilers warning<br/> about unused arguments. Often the arguments can&#39;t be removed, as there<br/> is an external constraint that determines the prototype of the<br/> function, so this approach is valid. However, there are some cases<br/> where &quot;PERL_UNUSED_ARG&quot; could be removed. Specifically<br/><br/> * The prototypes of (nearly all) static functions can be changed<br/><br/> * Unused arguments generated by short cut macros are wasteful - the<br/> short cut macro used can be changed.<br/><br/>Patches of Interest<br/><br/>perlfunc.pod: &quot;atan2(0,0)&quot; returns 0, not &quot;undef&quot;<br/><br/> The porters continued to study the holy scriptures (that is, the C<br/> standard) this past fortnight to figure just what was the best thing<br/> for &quot;atan2(0,0)&quot; to return. Rafael Garcia-Suarez boldly went where no<br/> pumpking had gone before, and declared with change #33676 that it<br/> should return &quot;undef&quot;. And almost immediately began to have second<br/> thoughts.<br/><br/> Andy Dougherty opened another can of worms and asked if we should also<br/> be checking for things like &plusmn;0. But it seems that, buried in the<br/> Configure infrastructure, we already do.<br/><br/> an error shall not occur<br/><br/><br/>Allow &quot;-&gt;[]&quot; and &quot;-&gt;{}&quot; instead of &quot;@{}&quot; and &quot;%{}&quot;<br/><br/> Ben Morrow delivered an amazing hack to the parser to allow &quot;$x-&gt;[]&quot;<br/> (currently a syntax error) to be semantically equivalent to @$x, and<br/> this comes in handy when $x is a complex hash-array-hash-hash-array<br/> dereference.<br/><br/> Rafael Garcia-Suarez commended Ben on the patch, and asked for a)<br/> tests and b) whether &quot;qq{$x-&gt;p[]}&quot; worked, since the latter involves<br/> working with the scarier parts of the lexer.<br/><br/> One problem that arose with builtins and there prototypes is that the<br/> lexer really, really, *really* wants arrays to begin with a &quot;@&quot; sigil.<br/> Nevertheless Ben came back with another iteration of the patch that<br/> solved that problem, by pushing the is-it-an-array decision from the<br/> lexer into the various ops. As a bonus this slims the &quot;PL_parser&quot;<br/> struct, and shaves off an op here and there.<br/><br/> Other people admitted to being a bit disturbed by the patch, citing<br/> that it added some inconsistencies to the language that were a little<br/> too weird to explain away with mere hand-waving.<br/><br/> Jonathan Rockway pointed out that this doesn&#39;t help the matter of<br/> protecting array dereferences from blowing up by guarding it with an<br/> empty list as in<br/><br/> @{ $might-&gt;{be}{undef} || [] }<br/><br/> This moved Nicholas Clark to say that autovivification would be less<br/> inconsistent if @$x, where $x is undef, returned an empty list. This<br/> garnered a certain amount of agreement, but Graham Barr pointed out<br/> that code that dereferences &quot;undef&quot; expecting something good to happen<br/> is probably buggy.<br/><br/> Aristotle Pagaltzis thought that &quot;autobox::Core&quot; already provides a<br/> satisfactory solution to retrofitting a saner syntax onto Perl 5, and<br/> for anything beyond becomes the realm of Perl 6.<br/><br/> People asked again why it was that &quot;autobox&quot; wasn&#39;t in core, and<br/> Nicholas Clark did such a wonderful job of summarising the debate that<br/> it deserves its own entry right here:<br/><br/><br/><br/> Matt S. Trout wrapped up the thread to say that new, exotic syntax<br/> bending must first of all prove itself as a distinct CPAN module, and<br/> only afterwards should it move into core. And if it can&#39;t be done<br/> without patching the core itself, then the core needs to expose more<br/> hooks so that such syntax extensions can be made. Which is sort of the<br/> argument for putting autobox in the core, but like David Nicol says,<br/> the name is strange, or at least esoteric, and possibly it leads us to<br/> the Dark Side Of Laziness.<br/><br/> try this at home<br/><br/><br/>Linking to Better Alternatives from core modules<br/><br/> Shlomi Fish suggested adding SEE ALSO references from core modules to<br/> other modules available on CPAN that solve the issue in better ways.<br/><br/> A number of people took issue with the subjective slant of &quot;better&quot;<br/> and thought that &quot;alternative&quot; would be, well, better.<br/><br/> One of the suggested modules, in relation to &quot;File::Spec&quot; was<br/> &quot;Path::Class&quot;, but S&eacute;bastien Aperghis-Tramoni mentioned that he had<br/> modified a number of programs at work in this very way, but had to<br/> roll back the changes due to unexpected interactions between<br/> &quot;Path::Class&quot; and other non-Path::Class-aware modules on CPAN.<br/><br/><br/><br/>perlbugging non-core modules<br/><br/> Alexandr Ciornii continued to enhance &quot;perlbug&quot; to warn the user if<br/> they tried to report a bug in a non-core module. Perhaps part of the<br/> reason that no-one commented was that he leveraged to do the<br/> heavy lifting, which makes for one more thing to go wrong.<br/><br/> and Module::Corelist?<br/><br/><br/>Fix several problems in &quot;a2p&quot;<br/><br/> Gregg Weber delivered a patch to fix no less than seven problems in<br/> &quot;a2p&quot;, the awk-to-Perl convertor, as well as the smarts to deal with<br/> two modern awk language extensions. Tels thought that the patch had<br/> been inverted, but other than that the patch attracted no comments.<br/><br/><br/><br/>&quot;gcc -foptimize-sibling-calls&quot; cause trouble for perl&#39;s signal handler<br/><br/> Gisle Aas reported that the above switch will cause gcc 3.3 to emit<br/> incorrect code. This can be patched by adding an explicit return<br/> statement at the end of the C function that causes the problem.<br/><br/> Another alternative would be to arrange the build process to not apply<br/> the -foptimize-sibling-calls switch when compiling mg.c.<br/><br/><br/><br/>New and old bugs from RT<br/><br/>Clearing magic (was: &quot;length($@)&gt;0&quot; for empty $@ if utf8 is in use) (#51370)<br/><br/> Animator took a stab at resolving this bug report that details how<br/> magic associated with $@ persists long after the need has gone, and<br/> proposed a series of approaches all deficient in one way or another<br/> until finally hitting what looked like the right one.<br/><br/> Rafael thought the result looked correct, but thought that some more<br/> testing would be needed, and also wondered if there was a more concise<br/> way of achieving the same result (rather than 8 lines of code).<br/><br/> Bram wondered what could be tested, and how to do it. chromatic<br/> couldn&#39;t think of anything better than scraping the output of<br/> &quot;Devel::Peek&quot;.<br/><br/> ye gods, Devel::Peek::XML?<br/><br/><br/>&quot;Scalar::Util::looks_like_number&quot; *versus* Optimzation in regexp (#51568)<br/><br/> Nicholas Clark situated the error within &quot;Scalar::Util&quot; and prodded<br/> Graham Barr to integrate the change (or something that meets with his<br/> favour) upstream, then it could be merged back into the core<br/> afterwards.<br/><br/> c&#39;est utile<br/><br/><br/>Warn/abort on attempted perl exit (#52000)<br/><br/> Animator suggested overriding the core &quot;exit&quot; built-in function with<br/> an appropriately verbose equivalent. John Gardiner Myers was doubtful<br/> as to whether that would help in his situation, since things were<br/> exiting due to memory allocation failures.<br/><br/> last exit to prompt<br/><br/><br/>Segfault on ISA push after symbol table delete (#52074)<br/><br/> Rafael fixed up the segfault by ensuring that the deleted stash stays<br/> dead, but wondered what the appropriate behaviour should be when asked<br/> to act upon a stash that is no more.<br/><br/> No clear concensus (between Nicholas, Rafael and Graham Barr) arose,<br/> perhaps because in the end this is just another case where the experts<br/> just say &quot;yeah well things are a little weird around this part, so<br/> don&#39;t venture out too far&quot;, and move on to other matters.<br/><br/> doesn&#39;t crash == good enough<br/><br/><br/>Perl 5.10 regression bug in match and substitution evaluation in list <br/>context (#52658)<br/><br/> Rafael backed out the optimisation that Yamashino Hio had written<br/> (that sped up &quot;s///e&quot; substitutions by freeing intermediate<br/> temporaries).<br/><br/> choose correctness<br/><br/><br/>Incorrect variable name in perlintro (#52860)<br/><br/> Matt Kraai spotted an error in the documentation where the dubious $a<br/> and $b had been replaced by ordinary $x and $y variables, except not<br/> entirely.<br/><br/><br/><br/>Invalid &quot;cop_free&quot; of nullified cop (#52920)<br/><br/> While testing &quot;B::C&quot;, Reini Urban discovered that nulled opcodes were<br/> being freed. He proposed a straight forward patch that addressed the<br/> symptoms, but wondered if another more subtle patch might be a better<br/> approach. Then he realised it was &quot;B::C&quot; itself generating spurious<br/> data that could never be produced by the core, thus there was no cause<br/> for alarm.<br/><br/> good cop, bad cop<br/><br/><br/> In other discussions, Rafael added some code to the core to keep an<br/> eye out for these sorts of shenanigans.<br/><br/> never can be too sure<br/><br/><br/>map leaks memory (#53038)<br/><br/> Robin Redeker reported that &quot;while (1) {map 1, 1}&quot; leaks memory. Bram<br/> wondered if this was bug #48004 in another guise. Shlomi Fish<br/> confirmed a leak under valgrind. Nicholas Clark used a machine with<br/> real hardware watchpoints to pin-point exactly where the leak was<br/> occurring, but was then not quite sure if it was more an issue of<br/> particularly delayed house-keeping, rather than a leak *per se*.<br/><br/><br/><br/>UTF-8 converted to Latin1 for output with format incorrect output (#53054)<br/><br/> Michael Koehn submitted a detailed report where UTF-8 being converted<br/> to Latin1 in a Perl format went wrong. His workaround was to use an<br/> explicit &quot;encode&quot; on the data.<br/><br/> Alexandr Ciornii confirmed the problem exists with 5.10 on Windows.<br/><br/><br/><br/>Modifying $_ inside &quot;given&quot; (#53186)<br/><br/> Ed Avis was bitten by the fact that &quot;given&quot; takes a copy of its value<br/> that is in turn passed to $_ for use in &quot;when&quot; statements. Paul<br/> Fenwick pointed out that if one used &quot;for&quot; instead of &quot;given&quot; then one<br/> could indeed obtain the desired aliasing behaviour.<br/><br/> forgiven<br/><br/><br/>perl5.8.8 crashed when I build ikiwiki on gentoo linux (#53200)<br/><br/> A bug report that attracted no comments.<br/><br/> double free or corruption<br/><br/><br/>Stop t/op/fork.t relying on &quot;rand&quot; (#53238)<br/><br/> David Dick noticed that some failures for testing &quot;fork&quot; involved the<br/> parent and child processes generating a random number. Since the<br/> generator wasn&#39;t explicitly seeded, it turns out that every once in a<br/> while both processes would generate the same number and the test would<br/> consequently fail.<br/><br/> David wrote a patch to ensure that the numbers are always different,<br/> and Rafael applied it.<br/><br/> that must have been hard to reproduce<br/><br/><br/>perl-5.10.0-33733 assertion with JSON::XS-2.2 (#53244)<br/><br/> David Favor reported a failure in &quot;JSON::XS&quot; on the maintenance track<br/> of 5.10. Nicholas Clark suggested a patch to fix &quot;JSON::XS&quot;. Marc<br/> Lehmann was surprised as it seemed to him that &quot;SvCUR&quot; could no longer<br/> be used as previously, and thought that many other modules could be<br/> prone to the same sort of failure.<br/><br/> Jan Dubois was surprised as it seemed to him that people shouldn&#39;t be<br/> using &quot;SvCUR&quot; unless &quot;SvPOK&quot; was known to be true. Marc still thought<br/> it was a regression.<br/><br/><br/><br/>Trying to build perl5.8.3 under Maemo environment (#53328)<br/><br/> Devendra Purbiya reported a problem with a &quot;getcwd&quot; call failing<br/> miserably. S&eacute;bastien Aperghis-Tramoni suggested that the first thing<br/> to try would be to use a more modern release, such as 5.8.8 or 5.10.0,<br/> which may fix the problem due to fixes made since 5.8.3 was released<br/> (over four years ago).<br/><br/><br/><br/>Error on Configure PERL 5.8.6 on HP platform &quot; pthread: not found.&quot; <br/>(#53330)<br/><br/> Alexandra Bacher also reported having problems building a slightly<br/> more modern perl from source on the HP platform. H.Merijn Brand<br/> enquired as to whether there was a reason she didn&#39;t want to a<br/> precompiled bundle.<br/><br/><br/><br/>Parse problem in (#53414)<br/><br/> Another bug report from the module that would not die.<br/><br/> rrrrr, chainsaw, rrrrrrrrr<br/><br/><br/>Perl5 Bug Summary<br/><br/> In the second week we saw a welcome decline of 4 tickets, although<br/> sadly not enough to make up for the difference of 9 new tickets the<br/> previous week.<br/><br/> 296 + 1524 = 1820 (+11 -2)<br/><br/><br/> 293 + 1523 = 1816 (+6 -10)<br/><br/><br/><br/>This is the BBC<br/><br/> Devel::Cover<br/> Now fixed in 0.64<br/><br/><br/><br/>New Core Modules<br/><br/> Compress::Zlib, IO::Compress::*<br/> Paul Marquess synched blead with the latest compression modules<br/> available on CPAN.<br/><br/> 2.009<br/><br/><br/> Math::BigInt<br/> Tels released v1.89, closing out 4 tickets in the process.<br/><br/><br/><br/> Win32<br/> Jan Dubois uploaded 0.36 to CPAN, and Steve Hay synched it with<br/> blead. Not much more than a few tweaks to make it behave nicely<br/> when compiled in 64-bit land.<br/><br/><br/><br/>In Brief<br/><br/> Reini Urban found the time to figure out Tels&#39;s sins with<br/> &quot;Devel::Size&quot; and bleadperl, and wrote a patch to fix it up.<br/><br/> all part of the service<br/><br/><br/> Brian Greenfield announced that he had taken up smoking.<br/><br/><br/><br/> Reini Urban updated the Perl 5 wiki with a summary of hints for<br/> distributors wishing to distribute Perl with their operating system.<br/><br/> comments welcome<br/><br/><br/> Dave Mitchell wanted to know if it there was anything preventing the<br/> inclusion of &quot;Test::Harness&quot; 3.x in maint-5.10.x. Andy Armstrong<br/> thought it would be fine.<br/><br/> and there was colour!<br/><br/><br/> Aschwin van der Woude cross-posted a question from an spctools mailing<br/> list regarding a forking problem. Tels wondered if the<br/> problem was due to /dev/null missing inside a &quot;chroot&quot; jail.<br/><br/><br/><br/> Adriano Ferreira synched blead with the ongoing developments of<br/> &quot;Pod::Perldoc&quot;.<br/><br/><br/><br/> Robin Barker had another go at &quot;[[:print:]]&quot; *versus* &quot;\p{Print}&quot; that<br/> Rafael liked sufficiently to accept. (Bug #49302).<br/><br/> documents and tests<br/><br/><br/> Paul Fenwick wanted to know if he could use &quot;%^H&quot; in Perl 5.8.x,<br/> especially the upcoming 5.8.9. Nicholas Clark said no, and that it was<br/> unlikely that the 5.8 track would ever be able to.<br/><br/> time to let go<br/><br/><br/> Rafael applied a patch for to get the forked debugger to<br/> work on Linux/Cygwin and reverted it after noticing it caused a<br/> failure in perl5db.t.<br/><br/> back to the drawing board<br/><br/><br/> Bram documented &quot;perlrun -x&quot;.<br/><br/> see bug #46369<br/><br/><br/>Last week&#39;s summary<br/><br/> 6-12 April 2008<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/> Sat, 03 May 2008 14:14:44 +0000 This Week on perl5-porters - 6-12 April 2008 by David Landgren This Week on perl5-porters - 6-12 April 2008<br/><br/> David Nicol: I have no idea what NaN(Q) is by the way; Google suggests<br/> it is a furniture store in Japan.<br/><br/> Jarkko Hietaniemi: It&#39;s the strong, silent type of NaN. As opposed to<br/> the hysteric, screaming type of NaN (aka NaNS).<br/><br/> -- David N. and Jarkko H., arcing tangents.<br/><br/>Topics of Interest<br/><br/>Make built-in list functions continuous<br/><br/> David Nicol continued the &quot;unroll map into pushy for loops&quot; thread<br/> with a decent stab at an implementation using his &quot;Macrame&quot; macro<br/> processing module.<br/><br/> Aristotle Pagaltzis stressed the usefulness of having a map block<br/> producing n elements for each input element, where n could be a fixed<br/> number greater than 1, an arbitrary number greater than 1, sometimes<br/> 0, and anything in between.<br/><br/> Some map blocks that use such behaviours lead to remarkably concise<br/> code that would be very cumbersome to write in any other way.<br/><br/><br/><br/>Perl @ 33536<br/><br/> The perl 5.8.9-tobe thread continued to attract traffic this week. Jan<br/> Dubois reported back on the problems that the Vista platform was<br/> causing.<br/><br/> It boils down to the tradeoff between keeping the binary interface<br/> stable while preventing people from outside the core build from<br/> reaching directly into the guts. All you have to do is define<br/> &quot;PERL_CORE&quot; and you can do whatever you want.<br/><br/> Jan suggested that one way to do this would be to reorder the struct<br/> members, on purpose, on each maintenance release. That would quickly<br/> smoke out poorly-behaved modules and make them play by the rules.<br/><br/> Not so unsurprisingly, this met with a certain amount of favour with<br/> the porters; at least, it wasn&#39;t dismissed out of hand.<br/><br/> keep your mits off<br/><br/><br/>Saving a pointer in every COP?<br/><br/> Nicholas Clark had a brainwave, realising that it should be feasible<br/> to shave off a whole pointer from each COP struct. Sixteen hours<br/> later, he delivered the patch to do just that.<br/><br/> He did leave us something to do, though: prove or disprove that it<br/> made things go faster.<br/><br/> something to do^W^Wdone<br/><br/><br/> Jerry D. Hedden managed to spot a minor compiler warning, which<br/> Nicholas promptly fixed.<br/><br/> but no benchmarks<br/><br/><br/>using &quot;-Wall&quot; in modules generate tons of warnings in core files<br/><br/> G&aacute;bor Szab&oacute; set about trying to build &quot;Prima&quot; with the 5.10 Strawberry<br/> Perl distribution, and ran into grief over poorly nested comments (as<br/> in &quot;/* foo /* bar */&quot;).<br/><br/> Andy Dougherty explained that this problem also arose with fussy<br/> compilers on Unix platforms, and there the issue was addressed by<br/> substituting &quot;/ *&quot; (with a space) for the inner opening comment<br/> marker. It was therefore a simple matter of inspection to figure out<br/> how config.h was generated by Strawberry.<br/><br/> Jan Dubois took a look at win32/config_h.PL and found a substitution<br/> operator that looked like it was to blame. Andy showed how the<br/> &quot;Configure&quot; process used a &quot;sed&quot; one-liner to work around the damage.<br/><br/><br/><br/>TODO of the week<br/><br/> Last week&#39;s TODO caught James Bence&#39;s attention, so much so that he<br/> outlined an approach he wanted to try and wondered if it would be<br/> acceptable. Rafael Garcia-Suarez explained why it wouldn&#39;t (as it<br/> would add to the burden of the pumpking). The primary design<br/> consideration is that it must be able to go about its business in a<br/> completely autonomous manner. That is, no sneaky command-line switches<br/> to spoon-feed it what needs to be done.<br/><br/> figure out what it should do, then make it do it<br/><br/><br/> (I should also mention that this whole TODO idea of the week is not my<br/> own, bla^Wcredit must be given to Nicholas Clark).<br/><br/>Compressed man pages<br/><br/> Be able to install them. This would probably need a configure test to<br/> see how the system does compressed man pages (same directory/different<br/> directory? Same filename/different filename), as well as tweaking the<br/> installman script to compress as necessary.<br/><br/> (I suspect even getting this working for two common platforms, such as<br/> Linux, *BSD or Solaris, would be a fine start. Other local experts on<br/> other platforms could piggy-back the work done to hit other targets).<br/><br/>Patches of Interest<br/><br/>Double magic with &#39;\&amp;$x&#39;<br/><br/> Rafael Garcia-Suarez applied Vincent Pit&#39;s patch. Vincent had also<br/> questioned the wisdom of allowing magic to be triggered merely by the<br/> gathering of information to produce an error message.<br/><br/> Rafael commented that while in essence Vincent was correct, the<br/> unresolved problem about what to do about code in the wild that may<br/> depend of the precise text of an error message meant that it was<br/> probably wiser just to let sleeping dogs lie.<br/><br/> so won&#39;t fix<br/><br/><br/>Make &quot;PL_AMG_names&quot; and &quot;PL_AMG_namelens&quot; static<br/><br/> Nicholas Clark wrapped up the discussion explaining why these symbols<br/> that had leaked out accidentally in 5.10 had to stay: some linkers<br/> might blow up in their subsequent disappearance, even if the client<br/> code makes no reference to them.<br/><br/> lazy lazy dynamic loading<br/><br/><br/>&quot;is_gv_magical&quot; correctly checks &quot;ISA&quot;<br/><br/> Gerard Goossen, going through the code with a fine-toothed comb for<br/> his ongoing Kurila project, spotted a mistake due to incorrect<br/> aliasing of a C array. It could never have worked, but then again<br/> no-one ever had problems with it. In any event, Rafael applied the<br/> change since the test suite appears to remain satisfied.<br/><br/> and it does the right thing<br/><br/><br/>changes to perlsec.pod and call for removal of quicksort<br/><br/> John P. Lindeman offered a patch to clean some of the more glaring<br/> documentation errors regarding sort in &quot;perlsec&quot;, and this was applied<br/> by Rafael. He also suggested that the sort subsystem based on the<br/> Quicksort algorithm be removed, since these days the default mergesort<br/> has much better worst-case characteristics for any pathological set of<br/> data you care to throw at it.<br/><br/> Tom Horsley, who wrote the original implementation of quicksort for<br/> perl, made no impassioned claim to keep it in, admitting that in fact<br/> he thought the code had been axed years ago.<br/><br/> out of sorts<br/><br/><br/>New and old bugs from RT<br/><br/>regexp: unicode char causes a &#39;double free corruption&#39; (#48156)<br/><br/> Niko Tyni identified the changes which had fixed this bug, but noted<br/> that it is still present in the version of perl shipped with Debian<br/> stable (no sniggering up in the back row please). Don Armstrong, in<br/> the Debian bug report, believes that it may allow arbitrary code to be<br/> executed, which if true, would be very serious indeed.<br/><br/><br/><br/>&quot;[[:print:]]&quot; *versus* &quot;\p{Print}&quot; (#49302)<br/><br/> David Landgren offered a couple of tweaks to Robin Barker&#39;s prose.<br/> Juerd Waalboer also identified a mistake.<br/><br/> or at least, a counter-example<br/><br/><br/>&quot;pack &#39;A*&#39;&quot; and &quot;pack &#39;a*&#39;&quot; untaint data in 5.10.0 (#52552)<br/><br/> Christopher E. Stith was surprised by the fact that in 5.10, the pack<br/> formats &#39;a&#39; and &#39;A&#39; strip tainting off untrusted input, whereas 5.8<br/> leaves it tainted. Andreas K&ouml;nig identified change #24010 as the cause<br/> for the change in behaviour. Alas, that particular change touched over<br/> a dozen files (although 4 were POD files, and, surprise pp_pack.c was<br/> touched)...<br/><br/> the monks have a go<br/><br/><br/> I blame Unicode<br/><br/><br/>Unwanted warning from XS BOOT (#52572)<br/><br/> reading the fine documentation leads to resolution<br/><br/><br/>&quot;Bizarre copy of ARRAY in sassign at Carp/; (#52610)<br/><br/> Chris Heath reported a variation on the bizarre copy theme, seen<br/> regularly with &quot;Carp&quot;. Nicholas Clark thanked him for the report,<br/> which contained a snippet of code that he was able to shrink down even<br/> farther.<br/><br/> This led him to conclude that the heart of the matter is an unwanted<br/> interaction between Perl&#39;s internal stack and lexical pads, but had no<br/> insight as to what exactly was happening.<br/><br/><br/><br/>Perl 5.10 regression bug in match and substitution evaluation in list <br/>context (#52658)<br/><br/> Wolf-Dietrich M&ouml;ller spotted a regression between 5.8 and 5.10<br/> concerning the use of an &quot;e&quot; modifier on a &quot;s///&quot; operator. Nicholas<br/> Clark was dismayed to discover that the bug is also in 5.8.9-tobe,<br/> definitely not good.<br/><br/> Andreas K&ouml;nig fired up his binary search bug finder, and discovered<br/> that not one, but two separate changes (#26332 and #26334) was at<br/> fault. The first patch dealt with accelerating &quot;s///e&quot; expressions by<br/> freeing intermediate temporaries, and the second dealt with &quot;s///e&quot;<br/> that die in the right hand side result in memory leaks.<br/><br/> we got oursel&#39;s a show-stopper<br/><br/><br/>regexp failure: &quot;(?=)&quot; turns into OPFAIL (#52672)<br/><br/> L. Mai reported another failure due to the 5.10 regexp engine<br/> overhaul: the &quot;match always&quot; &quot;(?=)&quot; idiom flipped over to mean &quot;match<br/> never&quot;. Fortunately &AElig;var Arnfj&ouml;r&eth; Bjarmason came to the rescue with a<br/> short, sharp patch to engine to restore the previous behaviour.<br/><br/> we do test for this now, right?<br/><br/><br/>Consistent localization between &quot;foreach (...)&quot; and &quot;while (&lt;fh&gt;)&quot; (#52702)<br/><br/> Ed Avis wanted to have warnings issued when $_ was modified, due to<br/> differences in how &quot;while&quot; and &quot;for&quot; behave. Rafael Garcia-Suarez<br/> thought that using &quot;my $_&quot; in 5.10 was a much better idea.<br/><br/><br/><br/>crash when localizing a symtab entry (#52740)<br/><br/> Niko Tyni reported a failure smoking mod_perl2 2.0.4rc1 on 5.10, due<br/> to the new implementation of constant subroutines, going so far as to<br/> identify change #29544 as being the (ir)responsible party. No takers.<br/><br/><br/><br/>Crash perl with &quot;binmode(STDOUT, &#39;:encoding(wildybad)&#39;)&quot; (#52786)<br/><br/> Todd Olson that one can make perl crash and burn on a variety of<br/> platforms by giving it nothing more than a bogus I/O encoding name.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> 1811 (+8 -4)<br/><br/><br/><br/>New Core Modules<br/><br/> Math::BigRat version 0.22<br/> Tels synched blead with CPAN, applied by Rafael.<br/><br/><br/><br/>In Brief<br/><br/> Nicholas Clark committed change #33657 to split out<br/> &quot;S_refcounted_he_new_common()&quot; from &quot;Perl_refcounted_he_new_common()&quot;<br/> after having tested it out on four different machines. Alas, it still<br/> managed to break the build for Jerry D. Hedden. Fortunately, Nicholas<br/> was able to commit the subsequent change #33659 that fixed up the<br/> breakage.<br/><br/><br/><br/> S&eacute;rgio Durigan J&uacute;nior wondered about the status of the &quot;-m32&quot; flag<br/> that is planned for 5.12, which would allow a 32-bit perl to be built<br/> on a 64-bit platform. H.Merijn Brand said that for the moment it was a<br/> non-starter.<br/><br/> imagine -Duse64bitall in reverse<br/><br/><br/> The &quot;atan2&quot; thread kicked up far more than you would ever want to know<br/> about NaNs.<br/><br/><br/><br/> Kurt Starsinic fixed up a long-standing perldata.pod typo.<br/><br/><br/><br/> Alberto Sim&otilde;es took a shot at benchmarking the differences between<br/> &quot;say&quot; and &quot;print&quot;.<br/><br/> take two<br/><br/><br/> How not to file a bug. (was: &quot;IO::Socket::accept()&quot; doesn&#39;t fill<br/> &quot;io_socket_proto&quot; information in sockets).<br/><br/><br/><br/> Tels wanted to know if a delivery date for perl 5.8.9 had been fixed,<br/> as this would help him figure out what to do with warnings occurring<br/> in &quot;Math::BigInt&quot;. Yitzchak Scott-Thoennes suggested that it should<br/> warn at all during normal usage.<br/><br/><br/><br/> Vincent Pit had some &quot;perlclib.pod&quot; tweaks applied.<br/><br/> memset, strtod and friends<br/><br/><br/> He also made emacs users the world over insanely jealous with a cool<br/> patch to make &quot;autodoc&quot; generate a Vim XS syntax file. He admitted it<br/> was slightly frivolous and probably not worth taking, but Vim lovers<br/> should be happy to know it&#39;s out there.<br/><br/> you also need to love XS<br/><br/><br/> Reini Urban offered an experimental work-in-progress patch for the<br/> upcoming cygwin-1.7 release with UTF-8 path support.<br/><br/> oh the pain<br/><br/><br/>Last week&#39;s summary<br/><br/> 30 March-5 April 2008<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren. I plan to be offline next<br/> week; there will be no summary for 13-19 April. The summary will<br/> return the following week, with a bumper fortnight issue.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/> Tue, 15 Apr 2008 16:48:07 +0000 This Week on perl5-porters - 30 March-5 April 2008 by David Landgren This Week on perl5-porters - 30 March-5 April 2008<br/><br/> The extent that map/grep go to to keep the calling overhead of the<br/> block is horrendous and getting that to work for reduce in<br/> &quot;List::Util&quot; was difficult. Doing it with multiple blocks is going to<br/> be potentially very difficult. -- Graham Barr, not exaggerating how<br/> hard it is to work on the parser and optree generator.<br/><br/>Topics of Interest<br/><br/>Dual-lifing &quot;Pod::Html&quot;<br/><br/> Steffen M&uuml;ller gave David Landgren a commit bit last week to take over<br/> the maintenance of &quot;Pod::Html&quot;. After looking around the blead<br/> directory tree, David wondered where the tests were. Jan Dubois<br/> pointed out their hiding place.<br/><br/> mmm, hand-rolled test harnesses<br/><br/><br/>Lack of 5.10.x smoking<br/><br/> Dave Mitchell looked through the smoke results from March and saw less<br/> than half a dozen smokes for 5.10.1-tobe. This led him to ask if some<br/> of the regular smokers could schedule a smoke or two on a more regular<br/> frequency (especially after 5.8.9 is released).<br/><br/> Bram asked for some help on how to start smoking, such as what the<br/> most desirable combinations are for smoking. One important point to<br/> come out of the discussion was how useful &quot;ccache&quot; can be to cut down<br/> smoking time.<br/><br/> chained smoking<br/><br/><br/><br/>Make built-in list functions continuous<br/><br/> Nicholas Clark noticed that one of the Google Summer of Code projects<br/> was to improve the performance of built-in functions, by getting them<br/> to skip the construction of intermediate lists. Nicholas wsa curious<br/> as to what was meant by this, since it isn&#39;t part of the current TODO<br/> list.<br/><br/> Wren Argetlahm replied that it is an optimisation known as<br/> &quot;deforestation&quot; in Haskell parlance, and comes into play when you have<br/> a series of chained maps or greps, and a pipeline of SVs between each<br/> step. The answer to this is to use continuous functions, which is just<br/> a fancy way of saying that they operate on input and output streams.<br/><br/> Wren offered some rewriting strategies that he thought would speed<br/> things up. It all began to fall apart when Nicholas explained that<br/> during compilation there was never at any point a usable abstract<br/> syntax tree (or AST) that could be used as a basis for such<br/> manipulations, since the tokeniser and lexer emit what is more or less<br/> the final optree directly. Some additional obligatory fixups are then<br/> performed on the tree, as well as some peep-hole optimisations, but<br/> both of these operations are hopelessly intertwined. A distinct,<br/> pluggable optimiser for Perl 5 remains an elusive dream.<br/><br/> It gets worse. Nicholas said it took him a full time week&#39;s worth of<br/> work, just to create opcode optimisations for &quot;reverse sort @pig_pen&quot;<br/> and &quot;foreach (reverse @recusandae)&quot;. It took him a day or so to remove<br/> the &quot;srefgen&quot; and &quot;ex-list&quot; ops from the creation of arrayrefs (like<br/> &quot;[1, 3, 7]&quot;) and hashrefs.<br/><br/> He wasn&#39;t sure how long it took for Dave Mitchell to teach the<br/> optimiser to perform in-place sorts for &quot;@schlip = sort @schlip&quot;, or<br/> for Yves Orton to achieve a faster &quot;if (%hash) {...}&quot;, but these are<br/> the only known examples of optree optimisations in the past three<br/> years. Dave admitted that it was &quot;quite hard&quot;.<br/><br/> Dave explained that the naive approach of &quot;look for a long string of<br/> ops and replace them by a shorter string&quot; are hard to do and very<br/> fragile: they are either easily broken, or they break other things.<br/> And Rafael chipped in to say that it is difficult to write regression<br/> tests for them to boot.<br/><br/> Nicholas thought a better approach would be to get &quot;B::Generate&quot; and<br/> co. into the state where one could write optree rewriters in perl Perl<br/> and start to explore where the real wins lie. And it just so happens<br/> that Steffen M&uuml;ller has been playing around with &quot;B&quot; and &quot;B::Utils&quot; to<br/> manipulate the optree and was beginning to make progress towards doing<br/> just that.<br/><br/> The other alternative that Nicholas came up with was to investigate<br/> Larry Wall&#39;s MAD work, which purportedly allows one to recover the<br/> original source after compilation (although I believe no-one has<br/> actually managed to achieve this in the general case).<br/><br/> deforestation<br/><br/><br/> for de trees<br/><br/><br/>Expose &quot;ptr-table&quot; funcs, add &quot;ptr-table-delete&quot;, and benchmark them<br/><br/> Jim Cromie wrote a patch to expose the underlying hashing mechanisms<br/> used by the internals, so that XS code could use it directly. He<br/> wasn&#39;t entirely convinced that it was wise to do so, but a factor of 5<br/> speed-up was nothing to sneeze at. The fact that it might help<br/> &quot;Devel::Size&quot; caught Tels&#39;s attention, but he wasn&#39;t sure he<br/> understood what the patch offered.<br/><br/> the street finds its own use for things<br/><br/><br/>Stupid Transaction Idea?<br/><br/> Curtis &quot;Ovid&quot; Poe wanted to know if anyone had ever thought about<br/> using forks or threads to create a poor man&#39;s transactional memory.<br/> Robin Barker pointed to a talk made by Simon Wistow on the subject.<br/><br/> Mark-Jason Dominus made the connection between this question and a<br/> thread from June 2006 regarding reversible debugging. This revived the<br/> discussion about reversible debuggers and missile launches, until<br/> Abigail dragged things back on track, pointing out that rolling back<br/> transactions is a much simpler proposition than rolling the universe.<br/> For instance, a &quot;fire_missile()&quot; appears really to fire a missile,<br/> except that in reality it doesn&#39;t, not until the &quot;commit()&quot; is issued.<br/><br/> Paul Fenwick thought that if anyone was brave enough to pursue the<br/> idea, they could do worse than use a &quot;Safe&quot; compartment to ensure that<br/> no operations that could not be rolled back were performed.<br/><br/> Simon says<br/><br/><br/> the p5p thread<br/><br/><br/>TodoTracker - get money for fixing TODO tests<br/><br/> Thomas Klausner and the crew announced the grand opening of<br/> their TODO bounty hunter scheme, whereby people who write patches to<br/> solve TODO problems earn real money (that is, Euros).<br/><br/> What exactly is a TODO, and what it is worth is a work in progress,<br/> and you can find out more about it on their wiki:<br/><br/><br/><br/> make money fast<br/><br/><br/>Leopard has more standard &quot;/etc/passwd&quot; files than previous<br/><br/> Back in October 2007, Rafael Garcia-Suarez committed change #32200 to<br/> resolve a problem on an older OS/X. In newer OS/X versions, a file<br/> crucial to the test suite, &quot;nidump&quot;, is not longer available, and thus<br/> the test suite fails. Jan Dubois suggested that scraping the output of<br/> &quot;dscl&quot; might do the job instead. Unfortunately he lacked the tuits to<br/> do so.<br/><br/> Nicholas Clark said that Jan should refile it as a bug report so that<br/> it isn&#39;t left behind.<br/><br/><br/><br/>Unicode 5.1.0<br/><br/> The latest Unicode specification was released by UCD. Of particular<br/> interest was the inclusion of uppercase Uppercase &szlig; (eszet). Tels made<br/> a cogent argument for the gradual disappearance of such characters:<br/> they are really fiddly to text via SMS. In any event, Perl now does<br/> 5.1.0, which is going to simplify the task of people who wish to write<br/> domino servers (the game, not the Lotus kind).<br/><br/><br/><br/>TODO of the week<br/><br/> (here, this should be an easy one).<br/><br/>&quot;perlmodlib.PL&quot; rewrite<br/><br/> Currently perlmodlib.PL needs to be run from a source directory where<br/> perl has been built, or some modules won&#39;t be found, and others will<br/> be skipped. Make it run from a clean perl source tree (so it&#39;s<br/> reproducible).<br/><br/>Patches of Interest<br/><br/>Double magic with &quot;substr&quot;<br/><br/> Vincent Pit had been sufficiently annoyed by magic in &quot;substr&quot; being<br/> triggered twice, when once was enough, that he sat down and crafted an<br/> elegant patch to fix it up. He had a couple of doubts about how to<br/> deal with the API change.<br/><br/> Nicholas explained how to resolve that by having the old<br/> implementation shuffle off to &quot;mathoms.c&quot;, and writing a macro that<br/> exposes the old name in terms of the new.<br/><br/> old functions never die<br/><br/><br/> they just mathom<br/><br/><br/>Double magic with &#39;\&amp;$x&#39;<br/><br/> In his continuing quest to rid the core of twice-invoked magic,<br/> Vincent also delivered a patch to fix up the magic associated with<br/> &quot;\&amp;$x&quot;. He knew there was another possibility of magic being<br/> triggered, but questioned the wisdom of invoking magic for something<br/> as tedious as creating an error message.<br/><br/> a surfeit of magic<br/><br/><br/>Make &quot;PL_AMG_names&quot; and &quot;PL_AMG_namelens&quot; static<br/><br/> Jan Dubois noticed that a couple of new symbols were being exported<br/> for 5.8.9-tobe. Since they really should be private, he made them<br/> static in blead. Steve Hay applied the patch, and tweaked to<br/> get it to keep track of overload.c and overload.h.<br/><br/> Nicholas Clark thought that since 5.10 was out in the wild, it would<br/> not be possible for to hide them, since someone might already have<br/> discovered a way of using them, and thus removing their public<br/> visibility would cause such code to break (or at least, become<br/> unlinkable).<br/><br/><br/><br/>perlfunc.pod: &quot;atan2(0,0)&quot; returns 0, not &quot;undef&quot;<br/><br/> Paul Fenwick noticed a small error in the documentation concerning<br/> &quot;atan2(0,0)&quot;, as the result of those arguments is undefined. Paul felt<br/> that perl should return &quot;undef&quot;, but in fact it returns 0.<br/><br/> Mark-Jason Dominus wondered if it would be better to have it throw an<br/> exception, like the logarithm of a negative number, or dividing by<br/> zero. Unfortunately that would be almost certain to break a lot of<br/> code in the wild. Paul felt that a warning would be sufficient, since<br/> people would be free to &quot;use Fatal&quot; and thus obtain an exception in<br/> due form.<br/><br/> Rafael Garcia-Suarez invited interested parties to look at the &quot;atan2&quot;<br/> manpage on FreeBSD, which put forward some reasons why returning 0 can<br/> make sense.<br/><br/> Dave Mitchell then looked at the source and discovered that perl just<br/> returns whatever the underlying C library does. Andy Dougherty<br/> investigated further and determined that some platforms do indeed<br/> return 0 (as dictated by the C89 standard) and some will also set<br/> &quot;errno&quot; to EDOM.<br/><br/> Nicholas Clark was of the opinion that &quot;CORE::atan2&quot; should return 0,<br/> and that leaves &quot;POSIX::atan2&quot; free to call the underlying library.<br/><br/> getting atan<br/><br/><br/>New and old bugs from RT<br/><br/>possible fd bug in &quot;PerlIOStdio_close&quot; (#46173)<br/><br/> Last last year, Steve Peters outlined a scenario where &quot;dup&quot;ing a file<br/> descriptor during a &quot;close&quot; could cause a file descriptor to be<br/> leaked.<br/><br/> Nicholas Clark admitted this week that since Nick Ing-Simmons&#39;s<br/> passing, probably no-one understood how &quot;PerlIO&quot; works deep down. In<br/> any event, he thought the code as it stood appeared to be sufficiently<br/> wrong to merit a fix.<br/><br/> This it turn reminded Craig Berry to ask why &quot;PerlIOUnix_open&quot;<br/> hard-wires the opened file to 0666 wide-open permissions, and wondered<br/> why the code didn&#39;t honour the current &quot;umask&quot; setting. Dave Mitchell<br/> explained that the kernel took care of that.<br/><br/><br/><br/>&quot;[[:print:]]&quot; *versus* &quot;\p{Print}&quot; (#49302)<br/><br/> Given that no-one had been able to reconcile the differences between<br/> these two syntaxes (for example, that the former fails to match some<br/> things that the latter does), Robin Barker chose to document the<br/> differences.<br/><br/> if you can&#39;t beat &#39;em<br/><br/><br/>&quot;utf8::valid&quot; rejects characters in &quot;\x14_FFFF - \x1F_FFFF&quot; (#51710)<br/><br/> Steve Peters wondered whether the patch included in bug #43294 would<br/> fix this problem. Which it didn&#39;t, but that left him asking why<br/> &quot;\x14ffff&quot; was considered to be a valid character.<br/><br/> Chris Hall thought that it was but &quot;utf::valid&quot; was also happy with<br/> 0x000000 through 0x13ffff and 0x150000 through 0x7fffffff, which left<br/> him puzzled as to why &quot;utf::valid&quot; was singling out the &quot;0x14xxxx&quot;<br/> range.<br/><br/> Chris wondered if the patch Steve was looking at was causing<br/> &quot;utf::valid&quot; to reject both &#39;ill-formed&#39; byte sequences as well as<br/> &#39;non-characters&#39;. Either way, it seemed to be sitting on the fence and<br/> not have a clear purpose.<br/><br/> After that I lost it a bit.<br/><br/> we need a unicode-porters list<br/><br/><br/><br/>Segfault in &quot;B::SVOP::sv&quot; (#52284)<br/><br/> &quot;Inferno&quot; filed a bug which actually works correctly on a threaded<br/> perl, only non-threaded perls have problems. Reini Urban thought that<br/> the best solution was for &quot;B::Size&quot; to die a quick, painless death,<br/> and to use &quot;Devel::Size&quot; instead, as it is so much nicer.<br/><br/> bug in march, answer in april<br/><br/><br/><br/>Attempt to free temp prematurely (perl 5.8.8) (#52386)<br/><br/> Frank v Waveren reported a bug in 5.8.8 that Nicholas Clark determined<br/> had been fixed in 5.8.9 to be, although he didn&#39;t know off-hand what<br/> change was responsible for the fix. Frank tracked it down via the git<br/> repository, and identified change #30166 as being the fix.<br/><br/><br/><br/>&quot;lc&quot;/&quot;uc&quot; have unexpected side effects inside for loop (#52412)<br/><br/> Mike Wver discovered that the following snippet<br/><br/> my $foo = &#39;A&#39;;<br/> for my $bar (uc($foo)) {<br/> my $lower_bar = lc $bar;<br/> print &quot;$foo $bar\n&quot;; # $bar should still be &#39;A&#39;<br/> }<br/><br/> prints &quot;A a&quot; instead of &quot;A A&quot;. No-one knew why, but Abigail pointed<br/> out that it was fixed in 5.10.0.<br/><br/><br/><br/>&quot;map&quot; isn&#39;t context aware in some cases (#52452)<br/><br/> Stefan Wehinger wondered why slightly different nested map constructs<br/> use some, a lot, or all available memory. David Nicol made a decent<br/> stab at explaining it in terms of lists being reclaimed sufficiently<br/> early or not.<br/><br/> Nicholas Clark suggested that the desired behaviour described in the<br/> report can be achieved, along with a sane level of memory consumption,<br/> by rewriting the loops with &quot;foreach&quot; instead of &quot;map&quot;.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> 1807 (+7 -3)<br/><br/><br/><br/>New Core Modules<br/><br/> Math::BigInt 1.88<br/> Tels announced the release of a brand new Math::BigInt, along with<br/> an updated &quot;bignum&quot; pragma, &quot;Math::BigInt::FastCalc&quot; and<br/> &quot;Math::BigRat&quot;. This release closes out nearly all the existing<br/> bugs, only two remain, at the bottom of the barrel. In the<br/> meantime, Tels is sitting back and waiting to see what the CPAN<br/> Testers make of them.<br/><br/><br/><br/>In Brief<br/><br/> Tels wondered if Reini Urban had had time to check out his patch for<br/> &quot;Devel::Size&quot; and bleadperl, but Reini was moving house this week.<br/><br/><br/><br/> Robin Barker&#39;s verbosity tweaks to and friends made it in.<br/><br/><br/><br/> Jan Dubois felt that &quot;PL_bincompat_opt&quot; should be exported on AIX and<br/> Windows. Steve Hay thought so too, but realised that Jan was really<br/> talking about &quot;PL_bincompat_options&quot;. Applied.<br/><br/><br/><br/> Jarkko Hietaniemi got H.Merijn Brand to tweak Configure in order to<br/> align floating point policies of gcc and cc on Tru64.<br/><br/><br/><br/> Jan Dubois thought that change #23984 should be integrated into 5.8.x,<br/> as it gets &quot;corelist&quot; installed on Win32. Nicholas Clark said that it<br/> was already in, the reason being that it help &quot;perlbug&quot; go about its<br/> business.<br/><br/><br/><br/> Andreas K&ouml;nig warned that lib/CGI/t/upload_post_text.txt was checked<br/> in as binary and wanted to know if it be changed. Rafael said that it<br/> was binary for a reason; it was in fact a GIF file.<br/><br/> and patent-free<br/><br/><br/> Jerry D. Hedden ran into trouble with the above file, and Nicholas<br/> Clark straightened things out.<br/><br/> all packed up<br/><br/><br/> Paul Fenwick issued an RFC for &quot;Fatal&quot;/&quot;autodie&quot; exception handling<br/> naming and structures.<br/><br/><br/><br/>Last week&#39;s summary<br/><br/> Tels clarified a point regarding the use of POD for wiki markup,<br/> explaining that his MediaWiki-Pod distribution on CPAN was a subclass<br/> of &quot;Pod::Simple::HTML&quot; that fixes up a lot of the problems that people<br/> encounter when using &quot;Pod::Simple::HTML&quot;.<br/><br/> This Week on perl5-porters - 23-29 March 2008<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation or attending a YAPC to help support the development of<br/> Perl.<br/><br/> Fri, 11 Apr 2008 15:42:16 +0000 This Week on perl5-porters - 23-29 March 2008 by David Landgren This Week on perl5-porters - 23-29 March 2008<br/><br/> &quot;Anyway, a lot of these design changes work together to produce a<br/> smoother result. I confess I haven&#39;t thought much about whether they<br/> could be borrowed piecemeal; I have a hard enough time keeping one<br/> fantasy language in my head at a time.&quot; -- Larry Wall, on the<br/> differences in exception handling between Perl 5 and Perl 6.<br/><br/>Topics of Interest<br/><br/>Perl and CPAN distributors<br/><br/> The thread wound up this week with Gabor Szabo asking for someone to<br/> summarise the main points made in the discussion, for inclusion on the<br/> Perl5 wiki. The idea is to make life easier for people who package<br/> perl in operating system distributions, by explaining what they may,<br/> should and must do.<br/><br/> Nicholas Clark noted that starting from 5.11, the infrastructure is<br/> nearly all there for the perl5-porters to remove modules from the core<br/> while allowing distributors and local sites to continue to keep them,<br/> in a graceful manner.<br/><br/> modular ecology<br/><br/><br/>Perl @ 33536<br/><br/> The 5.8.9 snapshot is having problems on Vista. Jan Dubois saw<br/> t/op/alarm.t failing but wasn&#39;t able to track down why. In the<br/> meantime, he released &quot;Win32&quot; 0.35 on CPAN. This will be folded into<br/> 5.8.9 to upgrade the &quot;Win32&quot; therein from its current development<br/> status.<br/><br/><br/><br/>local $@ has an unwanted side effect<br/><br/> Larry Wall gave the porters a run down on the current thinking<br/> regarding exception handling in Perl 6. Most of the pieces are in<br/> place, except for a hierarchy of exception object types, as @Larry are<br/> waiting to see the various implementations make of it all.<br/><br/> there is no try<br/><br/><br/><br/>pod wiki?<br/><br/> Reini Urban wanted to write in POD for the Perl 5 wiki (that uses<br/> SocialText as a back-end). Michael G. Schwern explained that the<br/> existing plug-in/markup-escape infrastructure was up to the job, and<br/> sketched out how one might go about doing it. Reini was sufficiently<br/> motivated to take a stab at setting it up.<br/><br/> Tels thought that it was silly to write Yet Another Pod-HTML<br/> convertor, and Michael thought that &quot;Pod::Simple::HTML&quot; should be<br/> close. Aristotle Pagaltzis thought that &quot;Pod::POM::View::HTML&quot; wasn&#39;t<br/> too bad either.<br/><br/><br/><br/>&quot;left_shift&quot; problem<br/><br/> Reini has started to write a document about the guts of the op-tree.<br/> He started with the most trivial of op-codes, the one that performs a<br/> left bitshift (&quot;&lt;&lt;&quot;). Unfortunately he became side-tracked over the<br/> way signed and unsigned integers are used depending on whether the<br/> &quot;use integer&quot; pragma is in force. Yitzchak Scott-Thoennes explained<br/> the reason why things were why they are.<br/><br/> hard left turn right<br/><br/><br/>Append &quot;64&quot; suffix to some of the installed files<br/><br/> S&eacute;rgio Durigan J&uacute;nior continued his quest to get 32- and 64-bit perls<br/> coexisting peacefully on his machine. Abigail showed how many<br/> different perls could live in the same directory tree, sharing common<br/> pure-Perl modules and keeping binary-incompatible files separate.<br/><br/> Dominic Dunlop remarked that Apple had managed to do just that<br/> already, but unfortunately no-one outside Apple had managed to<br/> replicate what they had done. Nicholas Clark mentioned that Edward Moy<br/> had some raw patch files to do just that, but didn&#39;t have the time to<br/> tidy them up (nor did Nicholas). Sounds like a nice self-contained<br/> task...<br/><br/> Other discussion in the thread talked about how perl is installed on<br/> HP-UX.<br/><br/> more bits<br/><br/><br/>Too late for -Co<br/><br/> Alberto Sim&otilde;es wanted to know how he could make some old scripts work<br/> with 5.10, since they have &quot;-Co0&quot; on the shebang line. Aristotle<br/> Pagaltzis recommended &quot;use open OUT =&gt; &#39;:utf8&#39;, &#39;:std&#39;&quot; as a suitable<br/> replacement. Rafael Garcia-Suarez explained that &quot;-C&quot; had received<br/> this treatment as a consequence of a bug report, and that there was a<br/> TODO item recorded that explained what needed to be done to have the<br/> old behaviour reinstated (this time, without bugs).<br/><br/> get it right<br/><br/><br/><br/>Making more robust<br/><br/> Jan Dubois had been exploring approaches to make &quot;;, since<br/> depending on whether an executable foo anything, as opposed to a<br/> specific foo.bat, exists in the current directory or not, you can wind<br/> up running something else that the program you thought you were going<br/> to run. Spaces in path names add to the fun.<br/><br/> With a series of four fall-through tests, Jan thought he had all the<br/> bases covered, and defied anyone to come up with a scenario that could<br/> get past the last case and hit the &quot;Can&#39;t find full path&quot; error<br/> message.<br/><br/> Jan also hoped that there were no longer any serious Perl users stuck<br/> on Win9X.<br/><br/> going batty<br/><br/><br/>Patches of Interest<br/><br/>Too much sv.c consting<br/><br/> Nicholas Clark undid the final batch of consting from last week that<br/> Steven Schubiger had applied to sv.c. What is more, it was the second<br/> time he had had to roll back the same change.<br/><br/> Unfazed, Stephen delivered the fourteenth patch in the series. Andy<br/> Lester explained that he had considered doing what Steven is currently<br/> doing, when he was on his consting quest, but had considered that the<br/> added value wasn&#39;t worth the price.<br/><br/><br/><br/>Borg<br/><br/> Rafael Garcia-Suarez edited to recommend in its<br/> place, and ask Max &quot;Corion&quot; Maischein to release a new version of<br/> &quot;parent&quot; to synchronise CPAN with blead. Some minor problems cropped<br/> up that Jerry D. Hedden tidied up.<br/><br/> debased<br/><br/><br/> and vms.c fixes<br/><br/> John E. Malmberg delivered some urgent patches to get VMS to build out<br/> of the box. H.Merijn Brand handled part of the patch through the brand<br/> new metaconfig infrastructure. Unfortunately this caused other<br/> platforms to complain unnecessarily. H.Merijn wasn&#39;t sure if he was<br/> doing something wrong, or whether the approach cannot work.<br/><br/><br/><br/>Documentation fix for perlfunc/shutdown<br/><br/> Paul Fenwick documented the return values of &quot;shutdown&quot; (whose<br/> existence I had so far managed to ignore). Nicholas Clark tried to<br/> improve Paul&#39;s prose and Paul came back with yet a better version.<br/> Unapplied.<br/><br/> and turn the lights out<br/><br/><br/>Solaris build warnings<br/><br/> Jerry D. Hedden found some warnings when building blead on Solaris.<br/> Andy Dougherty traced this to arrival of the &quot;PERL_BITFIELD16&quot; typedef<br/> and proposed a minimal patch that cast things together correctly. Or<br/> at least silently. Unapplied.<br/><br/><br/><br/>Revising perlhack.pod<br/><br/> Leon Brocard updated the documentation to &quot;perlhack&quot; to take into<br/> account the changes to perlmain.c, and some notes on using &quot;valgrind&quot;.<br/> Applied after a resend.<br/><br/><br/><br/>Do not use &quot;SVTYPEMASK&quot; to prevent cleaning of &quot;PL_fdpid&quot; and &quot;PL_strtab&quot;<br/><br/> As part of his ongoing Kurila experiment (a fork of the perl5<br/> codebase), Gerard Goossen traced down some problems that exist in the<br/> Perl array implementation.<br/><br/> Nicholas Clark used the information to provoke an assertion failure<br/> when running a &quot;make minitest&quot;. He applied Gerard&#39;s change, and<br/> suggested that there are still some things that need to be sorted out.<br/><br/><br/><br/>New and old bugs from RT<br/><br/>&quot;POSIX::SigSet&quot; double free with threads (#36653)<br/><br/> Steve Peters took another look at this problem from 2005, and<br/> discovered that while 5.8.8 ran without error, blead panicked with a<br/> free from wrong pool.<br/><br/> ungood<br/><br/><br/>Segfault on @ISA push after symbol table delete (#52074)<br/><br/> Peter Scott posted a one-liner to make blead dump core. Nicholas Clark<br/> noted that since 5.8.8 is immune, it must be a problem in the new MRO<br/> code.<br/><br/> nice self-contained task<br/><br/><br/>&quot;Text::Wrap::wrap()&quot; generates a segfault with Cyrillic characters when <br/>the utf8 flag is turned on (#52104)<br/><br/> Fr&eacute;d&eacute;ric Buclin filed a ticket that was turned arose in the<br/> development of Bugzilla (heh). Nicholas reduced it to a simple matter<br/> of a regexp using &quot;pos()&quot; inside a substitution, and tracing back,<br/> realised that the bug had been lying in wait, ever since it checked<br/> in, back in 2000.<br/><br/> It was then a simple matter to fix it in change #33580. As a bonus,<br/> this should make it into 5.8.9-to-be. Fr&eacute;d&eacute;ric wondered what he could<br/> do in the meantime. Nicholas suggested one approach and Robin Barker<br/> another. Aristotle Pagaltzis, who wrote the current implementation of<br/> &quot;Text::Wrap::wrap&quot; (and built it for speed), suggested downgrading to<br/> a previous version.<br/><br/> that wraps it up<br/><br/><br/>&quot;POSIX::strftime&quot; hangs on %Z under cygwin (#52126)<br/><br/> Eric Roode reported a bug in 5.8.8 that had previously been reported,<br/> and fixed, with change #29350. Nicholas Clark announced that said<br/> change was included in 5.8.9. Steve Peters showed how changing the<br/> final argument to &quot;strftime&quot; prevented the process from hanging in the<br/> meantime.<br/><br/> tis a matter of time<br/><br/><br/>Build error on AIX (#52188)<br/><br/> Shanthi Muthu Srinivasan was unable to build 5.8.8 on AIX, the process<br/> blowing up when trying to link &quot;miniperl&quot;. Dominic Dunlop suggested<br/> that it could be due to running out of disk space, and that<br/> Activestate have an Activeperl distribution for AIX that may be worth<br/> a try. H.Merijn Brand suggested a special incantation for 64-bit AIX.<br/><br/> No further information was forthcoming.<br/><br/><br/><br/>XS error in &quot;Win32::Console::_WriteConsoleInput&quot; (#52216)<br/><br/> Ed Sanman traced down a problem of console misbehaviour to what is<br/> probably a case of bad cut&#39;n&#39;paste. Not confirmed.<br/><br/> watch your stack<br/><br/><br/>Perl5 Bug Summary<br/><br/> 294 new + 1509 open = 1803 (+8)<br/><br/><br/><br/>New Core Modules<br/><br/> DB_File 1.817<br/> Paul Marquess synchronised blead and CPAN.<br/><br/><br/><br/>This is the BBC<br/><br/> Regexp-Optimizer 0.15<br/> Andreas K&ouml;nig discovered, somewhat belatedly, that change #28868<br/> broke Dan Kogai&#39;s &quot;Regexp::Optimizer&quot; package.<br/><br/><br/><br/>In Brief<br/><br/> Nicholas Clark applied Dominic Dunlop&#39;s patches to tidy up failing<br/> tests on PPC64.<br/><br/><br/><br/> Vincent Pit spotted an apidoc mismatch for &quot;Perl_magic_clearhint&quot; and<br/> offered a patch, so Rafael applied it.<br/><br/> wild cut&#39;n&#39;paste<br/><br/><br/> Niko Tyni spotted a nasty typo in &quot;IO::Socket::INET&quot; where a hash key<br/> was named &quot;upd&quot; instead of &quot;udp&quot;, and also offered a patch. H.Merijn<br/> applied the patch. I wonder if we could have tested for that.<br/><br/> nice catch<br/><br/><br/> chromatic tweaked the usage documentation for utils/dprofpp.PL.<br/> Applied.<br/><br/> being consistent<br/><br/><br/> Gerard Goossen also rejigged the MAD dump XML escape regexp, thus<br/> fixing a pile of tests that used to fail when run madly.<br/><br/><br/><br/> Yitzchak Scott-Thoennes thinks that &quot;Devel::Cover&quot; in the core would<br/> be a marvellous idea.<br/><br/><br/><br/> Nicholas Clark wrote some code to detect &quot;Configure&quot; test goofs and<br/> H.Merijn Brand folded it into the configuration infrastructure.<br/><br/><br/><br/> David Cantrell hopes that Dave Mitchell&#39;s perl 5.10.1 plan includes<br/> Jarkko Hietaniemi&#39;s patch for &quot;Encode::Alias&quot;.<br/><br/> 20 houses down from the beast<br/><br/><br/> The bug tracking system thread attracted more discussion this week.<br/><br/><br/><br/> S&eacute;rgio Durigan J&uacute;nior pinged the list about his problems when setting<br/> the libraries&#39; installation path.<br/><br/><br/><br/> Jim Cromie had a small interesting task to do, something about<br/> separate debug info.<br/><br/> didn&#39;t set the world on fire<br/><br/><br/> Lincoln Stein absorbed a &quot;CGI::Carp&quot; typo difference between blead and<br/> CPAN.<br/><br/><br/><br/> Peter Scott took a bash at glob in scalar context, offering a patch to<br/> reset the iterator in certain circumstances. Yitzchak showed how such<br/> a change would lead to even harder to debug problems.<br/><br/> an oldie but a goodie<br/><br/><br/> It would appear that change #26980, regarding an improvement to<br/> &quot;PERL_DONT_CREATE_GVSV&quot;, would be the reason for test failures in<br/> Math-Pari.<br/><br/><br/><br/>TODO of the week<br/><br/> A task that need a little C knowledge<br/><br/>Weed out needless PERL_UNUSED_ARG<br/><br/> The C code uses the macro &quot;PERL_UNUSED_ARG&quot; to stop compilers warning<br/> about unused arguments. Often the arguments can&#39;t be removed, as there<br/> is an external constraint that determines the prototype of the<br/> function, so this approach is valid. However, there are some cases<br/> where &quot;PERL_UNUSED_ARG&quot; could be removed. Specifically<br/><br/> * The prototypes of (nearly all) static functions can be changed<br/><br/> * Unused arguments generated by short cut macros are wasteful - the<br/> short cut macro used can be changed.<br/><br/>Last week&#39;s summary<br/><br/> Actually, two weeks ago. Sam Vilain explained how one could go about<br/> cherry-picking patches with git and promised to create a new version<br/> of the repository in UTF-8, so that people with non-Latin-1 names may<br/> be represented faithfully. (Hi Slaven!)<br/><br/> In mail to the list, I had complained about &quot;foo&quot; being rendered as<br/> ``foo&#39;&#39; in the summaries. It turns out that this is because at some<br/> point I switched my POD-to-HTML conversion from blead&#39;s &quot;pod2html&quot; to<br/> that of maint.<br/><br/> It turns out that lots of bugfixes went into the 5.10 release of<br/> &quot;Pod::Html&quot;, but as the module is not dual-lifed, it is difficult to<br/> upgrade older perls. So I volunteered to take care of dual-lifing it.<br/> Look for 1.09_01 on a CPAN mirror near you soon.<br/><br/> This Week on perl5-porters - 9-15 March 2008<br/><br/><br/> This Week on perl5-porters - 16-22 March 2008<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation to help support the development of Perl.<br/><br/> Thu, 03 Apr 2008 16:32:58 +0000 This Week on perl5-porters - 16-22 March 2008 by David Landgren This Week on perl5-porters - 16-22 March 2008<br/><br/> &quot;I suspect that by now the Parrot code base has moved on sufficiently<br/> that it&#39;s faster and cleaner to start from scratch than to try to<br/> merge over that code. I might be wrong, but I&#39;d suggest keeping &quot;redo<br/> from start&quot; as an option.&quot; -- Nicholas Clark, not wishing to flog a<br/> dead horse.<br/><br/>Topics of Interest<br/><br/>Lexical &quot;; and &quot;;<br/><br/> We now return you to last week&#39;s discussion about &quot;Fatal&quot; (issuing a<br/> warning become a fatal error that halts execution) and how Paul<br/> Fenwick has begun work to make the effect lexical (that is, scoped to<br/> the current code block).<br/><br/> First off, it appears that &quot;use lethal&quot; has lost out to &quot;use autodie&quot;,<br/> which doesn&#39;t seem like an improvement, but it has the pumpking&#39;s<br/> favour.<br/><br/> As the code was more or less ready to be pulled into the code base,<br/> the question was what to do about dual-lifing the module, since<br/> lexical pragmas aren&#39;t available in 5.8 and below. Nonetheless, it<br/> would be nice to get rid of the AUTOLOAD craziness on 5.8 and 5.6.<br/> Further backwards compatibility would not be required as it is<br/> doubtful that anyone stuck on such ancient versions would be using<br/> &quot;Fatal&quot; in the first place.<br/><br/> Aristotle Pagaltzis thought it would be useful to have shorthand<br/> import lists to make warnings from all core functions dealing with,<br/> for instance, I/O, to invoke the Fatal machinery. He was also a little<br/> doubtful about wedging the pragma into the Fatal namespace. It would<br/> be better to have Fatal and the autodie pragma be APIs into the same<br/> underlying code.<br/><br/> There was a certain amount of discussion about what happens when<br/> &quot;Fatal&quot; is used at the package level, and then a &quot;no autodie&quot; pragma<br/> is invoked in a scope. Paul hinted that he&#39;d be happy to implement<br/> whatever the concensus turned out to be, but while there wasn&#39;t<br/> exactly disagreement over anything, some of the corner cases had some<br/> pretty horrible choices.<br/><br/> The messages that &quot;Fatal&quot; produces when it does its stuff also came<br/> under fire. Paul said he&#39;d look cleaning that up. Aristotle even<br/> volunteered to chip in with the task if needed.<br/><br/> one thread<br/><br/><br/> and another<br/><br/><br/>Wanted: interesting self contained task<br/><br/> Nicholas Clark was a bit sad that the idea of learning about how to<br/> hack on perl&#39;s internals attracted so little interest. He concluded<br/> that it would not be worth the effort to write up a conference talk on<br/> the matter if it was likely that no new people became interested in<br/> hacking on perl.<br/><br/> Rick Delaney disagreed and said he that thought the self-contained<br/> task idea was worth pursuing. All that is needed is to find another<br/> task, and set up a mentor.<br/><br/> rewrite the peep-hole optimiser<br/><br/><br/>Perl @ 33536<br/><br/> Nicholas Clark released another snapshot that is asymptotically<br/> approaching 5.8.9. At this point the &quot;ExtUtils::Install&quot; issues<br/> haven&#39;t quite settled down on Windows (but subsequent patches to the<br/> list indicate that this is close to being fixed).<br/><br/> Improvements in this snapshot include the quashing of intermittent<br/> threads failures and that it builds out of the box on Stratus VOS.<br/><br/> Steve Hay mentioned that there a couple of his patches that ought to<br/> go in as they quieten a number of compiler warnings on Windows.<br/><br/><br/><br/>&quot;Devel::Size&quot; and bleadperl<br/><br/> Tels noticed (in bug #33530) that &quot;Devel::Size&quot; was no longer<br/> buildable under bleadperl, mainly due to the promotion of regexps to<br/> first-class REGEXP datatypes. Reini Urban fixed it up as best he could<br/> and added an error message that pleased Paul Johnson&#39;s sense of<br/> whimsy.<br/><br/><br/><br/>perl and CPAN distributors<br/><br/> It all started out with the simple wish of Gabor Szabo to hoist the<br/> information about Perl ports from out onto the Perl5 wiki in<br/> order to allow many hands keep it up to date.<br/><br/> The thread then developed into a long discussion about how<br/> distributors of operating systems (such as Debian) go about including<br/> Perl in their distribution. There was much talk about the relative<br/> merits of strategies for dealing with architecture-dependant (read:<br/> XS) components, dual-life modules, and fitting in the distribution<br/> packaging schemes.<br/><br/> Rafael Garcia-Suarez hinted that he wanted to take a fresh approach to<br/> these issues in 5.12.<br/><br/> One of the main problems, articulated by Michael G. Schwern, is the<br/> persistent (literally) difficulty in modifying @INC locally, without<br/> resorting to sub-optimal hacks like<br/><br/> In the final analysis, we need to allow Perl to allow itself to be<br/> driven by the host packaging system whilst retaining the ability for a<br/> local site to include a fresh new Perl module of which the packaging<br/> system has not yet caught up with.<br/><br/><br/><br/>Is &quot;posix_fallocate()&quot; a possible candidate for<br/><br/> Joshau Hoblitt wondered if there was any interest in exposing the<br/> &quot;posix_fallocate&quot; function to Perl, which allows one to ask the host<br/> for enough contiguous space in which to write out really huge files,<br/> the idea being to minimise fragmentation as far as possible.<br/><br/> Craig A. Berry replied that any serious patch would be seriously<br/> considered.<br/><br/><br/><br/>Eliminate cut-n-paste code in dump.c<br/><br/> Jim Cromie spotted a quick way to chop around 150 lines from dump.c.<br/> Reini Urban noted that part of the code in question was duplicated in<br/> various B and Op modules, so it would be nice to expose the underlying<br/> code via an API, which would simplify the task of keeping these<br/> ancillary modules in sync.<br/><br/><br/><br/>Faster safe signals?<br/><br/> Nicholas Clark wondered if we could have faster safe signals by<br/> pushing the safe signal check down out of the core runloop into a<br/> small number of suitably hot opcodes.<br/><br/> Tim Bunce wondered if adding branch prediction hints in suitable<br/> places might not produce an even greater performance boost.<br/><br/> All of the experiments tended to produce results whose differences<br/> were lost in the noise.<br/><br/><br/><br/>perl 5.10.1 plan<br/><br/> Dave Mitchell asked what was needed in order to release 5.10.1, such<br/> as outright breakages from 5.8.x and fixes for new things in 5.10.0,<br/> such as some of the quirky edges in &quot;given&quot;/&quot;when&quot;, where it is<br/> important to nail them down quickly before too many people get used to<br/> them the way they are now.<br/><br/> Michael G. Schwern mentioned the @_ slowdown (which is no more),<br/> problems with &quot;ExtUtils::Install&quot;, making sure things build out of the<br/> box on Vista and a list of issues that have arisen with smart<br/> matching.<br/><br/><br/><br/>&quot;local $@&quot; has an unwanted side effect<br/><br/> Yuval Kogman described a scenario in which &quot;local $@&quot; doesn&#39;t do the<br/> right thing. It boils down to the latter day &quot;DESTROY&quot; method<br/> interfering with the orderly behaviour of unwinding exceptions and<br/> transferring information via $@.<br/><br/> After a long discussion as to whether it would be possible to fix the<br/> current behaviour, short of introducing a putative &quot;@@&quot; variable,<br/> David Nicol suggested a documentation improvement to describe exactly<br/> how things are now, and that&#39;s what made it in.<br/><br/><br/><br/>Bug tracking system<br/><br/> RT sucks. Bugzilla rulez.<br/><br/> and?<br/><br/><br/>TODO of the week<br/><br/> (based on a suggestion by Nicholas Clark in private correspondence).<br/><br/> Here&#39;s *your* chance to get your name in lights, or at least in the<br/> following section of &quot;This Week on perl5-porters&quot;. Take a TODO item,<br/> and... do it! Each week, a random TODO will be featured. To start the<br/> ball rolling, we have:<br/><br/>Merge common code in installperl and installman<br/><br/> There are some common subroutines and a common &quot;BEGIN&quot; block in<br/> installperl and installman. These should probably be merged. It would<br/> also be good to check for duplication in all the utility scripts<br/> supplied in the source tarball. It might be good to move them all to a<br/> subdirectory, but this would require careful checking to find all<br/> places that call them, and change those correctly.<br/><br/>Patches of Interest<br/><br/>&quot;ExtUtils::Install&quot; under Cygwin<br/><br/> Steve Hay thought he had the patch to end all patches to get<br/> &quot;POSIX::access&quot; working sensibly on Cygwin using all the compilers he<br/> could get his hands on. No-one commented on it, apart from Yves Orton<br/> via IRC, so Nicholas Clark committed it.<br/><br/><br/><br/>New and old bugs from RT<br/><br/>&quot;PERL_NO_SHORT_NAMES&quot; incompatible with perl.h (#51762)<br/><br/> Michael Fowler (of the Debian Project) identified a problem with<br/> &quot;PERL_NO_SHORT_NAMES&quot; which results in undefined symbols occurring at<br/> link time. No answers as yet.<br/><br/><br/><br/>&quot;open(OUT, &quot;&gt;-&quot;)&quot; is not &quot;open(OUT, &quot;&gt;&quot;, &quot;-&quot;)&quot; (#51842)<br/><br/> Himanshu G. tripped over the 3-arg open and &quot;&gt;-&quot; (STDOUT). Ronald J.<br/> Kimball asked how the documentation could be improved to clarify the<br/> situation.<br/><br/><br/><br/>Deparse interpolation in regex literal (#51848)<br/><br/> Zsban Ambrus uncovered a deparsing problem in 5.10 (but not 5.8)<br/> whereby &quot;qr/${x}y/&quot; produces &quot;/$xy/&quot;, which is definitely wrong.<br/><br/><br/><br/>UTF-8 non-characters (#51918)<br/><br/> Chris Hall opened a ticket to say that the Encode distribution&#39;s<br/> &quot;decode&quot; and &quot;encode&quot; routines only recognise &quot;U+FFFF&quot; as a<br/> non-character, but 65 others, such as &quot;U+FFFE&quot; and &quot;U+10FFFF&quot; and<br/> waved through as being valid characters.<br/><br/><br/><br/>Inconsistent handling of characters with value &gt; 0x7FFF_FFFF and other <br/>issues (#51936)<br/><br/> Even more scary stuff about Unicode non-characters and 13-byte<br/> extended sequences that fairly had my head spinning.<br/><br/><br/><br/>Typo on regular expression at &quot;perlopentut&quot; manual page. (#51964)<br/><br/> Pancho found a very silly typo in a code fragment in the<br/> documentation, so Rafael fixed it.<br/><br/> a patch to remove one character<br/><br/><br/>Document $var, $arg, $type and $ntype XS variables (#51992)<br/><br/> Michael G. Schwern was annoyed at the way perlxs waffles on about<br/> these variables without ever really getting around to explaining what<br/> they are. Michael promised that is someone could explain them to him<br/> then he would make improvements to the documentation.<br/><br/><br/><br/>Warn/abort on attempted perl exit (#52000)<br/><br/> John Gardiner Myers offered a patch (but no tests) to convert an<br/> attempt to call &quot;exit&quot; into a warning. This is a highly desirable<br/> feature to have in a multi-threaded environment where a single &quot;exit&quot;<br/> can really ruin your day (especially when the &quot;exit&quot; comes hidden in<br/> something downloaded from CPAN)...<br/><br/> The patch makes a Perl stack trace available to a &quot;__WARN__&quot; handler<br/> so that the offending code can be tracked down.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> 1795 (+9 -6)<br/><br/><br/><br/>In Brief<br/><br/> S&eacute;rgio Durigan J&uacute;nior had a few questions about compiling a 64-bit<br/> Perl in a 32-bit system following on from his problems with failed<br/> tests on PPC64. H.Merijn Brand set him straight.<br/><br/> 64 bits for all<br/><br/><br/> S&eacute;rgio also asked about make distclean and config.arch but received no<br/> answers.<br/><br/><br/><br/> But feedback from H.Merijn on how to solve his problem in a better way<br/> led to the resurrection of the rarely used config.over technique for<br/> overwriting Configure behaviour.<br/><br/><br/><br/> As well as some problems when setting the libraries&#39; installation<br/> path.<br/><br/><br/><br/> Having pulled the rug up over things long since swept away and<br/> forgotten about, S&eacute;rgio added some smarts to &quot;make distclean&quot; remove<br/> config.arch. H.Merijn applied the concept, if not the patch itself, to<br/> Makefile.SH.<br/><br/><br/><br/> Paul Green reported that a smoke of perl@33536 on Stratus VOS issued a<br/> number of errors that were all due to Stratus VOS&#39;s own take on<br/> reality, and not (or nearly never) Perl&#39;s fault. He thus lifted<br/> Stratus&#39;s option to stall the release of 5.8.9.<br/><br/> 98.68% ok<br/><br/><br/> Jim Cromie wrote a patch to improve IS_NUM_COMPARE by coalescing all<br/> the opcode numbers involved to be contiguous. He was a bit peeved that<br/> it didn&#39;t reduce the resulting assembly code, but figured that at<br/> least it renders the code less sensitive to the ability of the C<br/> compiler to perform sophisticated optimisations.<br/><br/><br/><br/> Thanks in large part to Eric Wilhelm&#39;s tireless efforts, Perl is again<br/> a participant in Google&#39;s Summer of Code (at least as far as the<br/> northern hemisphere is concerned).<br/><br/> it&#39;s official<br/><br/><br/> And regarding the GSoC, there is a list of Things To Do.<br/><br/><br/><br/> Reini Urban uploaded his Mperl compiler and optree debugger. No-one<br/> commented.<br/><br/><br/><br/> Robin Barker added some optional verbosity to and friends.<br/> Unapplied.<br/><br/><br/><br/> Gerard Goossen stripped out some unnecessarily complex code when<br/> dealing with MAD. Unapplied.<br/><br/><br/><br/> As tweaked the keys for sub and var attributes to avoid clashes with<br/> arrow operators.<br/><br/><br/><br/> Michael G. Schwern reported that the patent for &quot;Software Package<br/> Verification&quot; was nothing to worry about. There had been some concern<br/> in the past that Perl&#39;s test infrastructure could have been covered by<br/> its scope.<br/><br/><br/><br/> H.Merijn Brand reported that perl&#39;s Configure script had been ported<br/> to &quot;meta-3.5-20&quot;.<br/><br/><br/><br/> Vincent Pit went looking for double warnings for single errors, and<br/> found two. &quot;perl -we &#39;\&amp;$x&#39;&quot; used to spit out the same error twice<br/> (along with four others).<br/><br/><br/><br/> and &quot;perl -we &#39;my $a; substr $a, 0, 10, &quot;foo&quot;&#39;&quot; did much the same, so<br/> he arranged things to have $a silently upgraded to an empty string<br/> beforehand. Both patches applied.<br/><br/><br/><br/>Last week&#39;s summary<br/><br/> This Week on perl5-porters - 9-15 March 2008<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren. It is hopelessly late; I<br/> crave the indulgence of my readers. It was my birthday this week, or<br/> at least the attendant celebrations, and on top of that, a supermarket<br/> chain obsessed more with profit motives than the well-being of its<br/> clients sold my family beef well past its due date, and, well, I&#39;ll<br/> spare you the details...<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation to help support the development of Perl.<br/><br/> Sat, 29 Mar 2008 15:24:23 +0000 This Week on perl5-porters - 9-15 March 2008 by David Landgren This Week on perl5-porters - 9-15 March 2008<br/><br/> Take our command, strip off the package, pass the short name and the<br/> calling package to &quot;_make_fatal()&quot;, and then use magic-goto to call<br/> our subroutine at the end. It&#39;s simple, right? Yet I struggle to find<br/> any time when it&#39;s correct. -- Paul Fenwick and his Fatal attraction.<br/><br/>Topics of Interest<br/><br/>Getting blead via git<br/><br/> Nicholas Clark pondered the layout of files in the build directory. He<br/> thought that it would be useful to have dual-lifed modules positioned<br/> under ext/, and in git parlance they would become submodules. This<br/> would simplify managing the changes between the CPAN version and blead<br/> or maint. But he was wondered how git would keep track of the same<br/> file that is in lib/ for maint but in ext/ for blead.<br/><br/> S&eacute;bastien Aperghis-Tramoni wondered if Nicholas was thinking about<br/> pragma modules (like &quot;strict&quot; and &quot;constant&quot;) too.<br/><br/> Nicholas also wanted to know what support git provided to answer<br/> questions such as &quot;which changes from this branch have been integrated<br/> into that branch&quot;. Rafael seemed to think it should be possible, but<br/> no people with strong git-fu responded.<br/><br/><br/><br/> Elsewhere, there was some idle chatter of converting everything to<br/> UTF-8, but no resolution.<br/><br/><br/><br/>A lexical Fatal for Perl 5.10<br/><br/> Now that 5.10 allows people to write lexical pragmas, Paul Fenwick set<br/> about writing a scoped version of the &quot;Fatal&quot; module (whereby warnings<br/> become fatal errors).<br/><br/> He thought that it would be possible to bolt the additional<br/> functionality onto a dual-lifed &quot;Fatal&quot; module, but the syntax seemed<br/> clumsy, and a better idea would be to build on &quot;Fatal&quot; to produce an<br/> all-new &quot;lethal&quot; pragma.<br/><br/> There was a certain amount of bikeshed discussion to suggest better<br/> names, such as &quot;deadly&quot;, &quot;autodie&quot; and sillier, but &quot;lethal&quot; gathered<br/> currency as the thread moved along.<br/><br/><br/><br/>&quot;Fatal::AUTOLOAD&quot; - Feature or Bug?<br/><br/> In the middle of adding lethal support to Perl, Paul stumbled upon a<br/> thing of wond&#39;rous beauty. It turns out that you can inherit from<br/> &quot;Fatal&quot; in a package, and through the magic of &quot;AUTOLOAD&quot;, invoke<br/> Fatal behaviour by prepending an ampersand to a builtin (&agrave; la &quot;&amp;open<br/> my $in, &#39;&lt;&#39;, &#39;/no/such/file&#39;&quot;) or not, by omitting it.<br/><br/> Of course, this functionality is not documented anywhere: neither the<br/> POD, nor code, nor test suite make any allusion to it. As such, Rafael<br/> Garcia-Suarez and a chorus of porters called for the chain-saw to have<br/> the beast put out of its misery.<br/><br/><br/><br/>Fedora 9 and 5.10.0<br/><br/> Tom Callaway was happy to announce that, thanks in large part to the<br/> efforts of Andy Armstrong, Nicholas Clark and Rafael Garcia-Suarez,<br/> the upcoming Fedora 9 release will contain perl 5.10.0. This should be<br/> available in late April.<br/><br/><br/><br/>Safely supporting POSIX &quot;SA_SIGINFO&quot;<br/><br/> POSIX offers various ways to define C routines that may be used as<br/> signal handlers, one of which gives the routine access to additional<br/> information. This in turn offers the handler more context with which<br/> to figure out what is going on. Some years back, Jarkko Hietaniemi<br/> wrote some code to expose this richer interface to a signal handler<br/> written in Perl.<br/><br/> Nicholas Clark ran across Jarkko&#39;s work this week, and realised that<br/> it no longer worked in the age of safe signals, because the lag<br/> between the signal&#39;s arrival and its delivery to Perl results in the<br/> extra information being lost. He thought that there was a way to make<br/> things work, as one of the allowed system calls in a signal handler is<br/> &quot;write&quot;, and with this he could squirrel the information away<br/> somewhere until it is safe to fetch it.<br/><br/> His scheme was to install a shim at the signal arrival to write the<br/> information to a conveniently pre-opened pipe, and then after the<br/> current opcode has been run, see if there are any piped signals<br/> waiting. If there are, then the information is pulled out of the pipe,<br/> unpacked (since it is all intra-host communication, we&#39;d be free to<br/> write out raw structs), prettied up, and then the safe signal handler<br/> is called.<br/><br/> Tim Bunce admired the deviousness, but wondered if using pipes was<br/> overkill, and asked whether a slab of memory could be set aside for<br/> this use instead. Nicholas pointed out that there is nothing from<br/> preventing a process from receiving multiple signals simultaneously<br/> (they are asynchronous after all), so when all is said and done one<br/> would probably wind up with something that resembled the pipe<br/> infrastructure anyway, only buggy.<br/><br/> Current flaws in the idea include the fact that on a couple of<br/> platforms the siginfo structure is larger than 512 bytes, the largest<br/> atomic write permitted to a pipe. Craig Berry reminded people that for<br/> multiple deliveries of the same signal during the execution of an<br/> opcode are thrown away. Nicholas wondered if that was a bug that<br/> needed fixing. Craig pointed back to previous thoughts he had had on<br/> the subject perl&#39;s signal implementation.<br/><br/> Nicholas also mentioned the hoops one would have to jump through in<br/> order to deliver the signal to the right thread in a multi-threaded<br/> environment.<br/><br/><br/><br/>Refine &quot;make regen&quot; to be more selective<br/><br/> Jim Cromie was annoyed by the fact that running a &quot;make regen&quot; will<br/> cause everything to be recompiled (because it generates a slew of<br/> files that tickle major Makefile target rules). So Jim added smarts to<br/> to have each file built in a holding pen, and only update the<br/> target file when it differs from previous run.<br/><br/> At first there was considerable debate about using checksums and hash<br/> digests to check whether the files differed. Ben Morrow pointed out<br/> that as both the old and new files were present, and read in their<br/> entirety one could do away with extra trickery and just perform a<br/> simple byte-for-byte comparison.<br/><br/> shades of mv-if-diff<br/><br/><br/>A question of inheritance, encoding and aliases<br/><br/> It started out with H.Merijn Brand tracking down the cause of utf8.t<br/> (from &quot;Test::Simple&quot;) failure on HP-UX.<br/><br/><br/><br/> This in turn led Michael G. Schwern to discover that there was<br/> something wrong with and &quot;Encode&quot;. Rafael Garcia-Suarez<br/> realised that the cause of the problem was due to some sort of<br/> assumption of a routine name being present in the &quot;Encode&quot; namespace,<br/> something that the new method dispatch of 5.10 may have broken.<br/><br/><br/><br/> Michael G.Schwern extracted the problem and filed it as a bug. Rafael<br/> fixed that up with change #33486. H. Merijn Brand produced a similarly<br/> entertaining error message by using &quot;Encode&quot; and &quot;encoding&quot; without an<br/> encoding name. Michael thought the results were very pretty, but a<br/> better error message wouldn&#39;t go astray.<br/><br/> Encode::Alias + open go boom (#51608)<br/><br/><br/> After the dust settled, Dan Kogai, the Encode maintainer, release<br/> Encode 2.24. H.Merijn was, however, still having difficulties with the<br/> utf8.t with open failing to know what to do about &quot;roman8&quot; encoding<br/> which appears to be an HP specialty. Michael G. Schwern tried, and<br/> failed, to understand what &quot;Encode::Alias&quot; was doing, and/or whether<br/> it was doing it incorrectly.<br/><br/><br/><br/> Unfortunately, at about the same time, David Cantrell discovered that<br/> his own 5.10 smoke tests were spewing black, and so Rafael and<br/> H.Merijn suggested he try upgrading to Encode 2.24. Alas, that did not<br/> solve the problem.<br/><br/><br/><br/> Fortunately, Jarkko Hietaniemi came to the rescue with his &quot;646&quot;<br/> patch, and this had David up and running again. Alas, Jarkko did not<br/> think that this would help with H.Merijn&#39;s roman8 problem.<br/><br/><br/><br/>Taint (&quot;PL_tainting&quot;, &quot;SvTAINTED_on&quot;, &quot;SvTAINTED_off&quot;, &quot;SvTAINT&quot;)<br/><br/> Bram has a large application that wasn&#39;t designed to be taint-clean.<br/> Nevertheless, in the middle of the code, he wanted to enable taint<br/> mode briefly in order to bring taint checks to bear on unsafe feeds<br/> coming into the system.<br/><br/> So he used &quot;Taint::Util&quot; and &quot;Taint::Runtime&quot; for his nefarious<br/> purposes, yet was surprised when reality didn&#39;t quite meet his<br/> expectations, in that a scalar, created before taint mode was enabled,<br/> reading from &quot;STDIN&quot; will *not* be considered to have tainted<br/> contents.<br/><br/> Paul Fenwick was horrified by the idea of enabling taint mode at an<br/> arbitrary point during the execution of a program (perhaps missing the<br/> point that Bram&#39;s application wasn&#39;t taint-clean in the first place,<br/> in which case some taint is better than none). He thought that the<br/> problem of scalars not honouring taint mode if created before tainting<br/> was enables was probably a performance consideration.<br/><br/> say it taint so<br/><br/><br/>5.8.9 for VMS<br/><br/> Craig Berry issued a status report for the current 5.8 snapshot on<br/> VMS. There are four main problems (three in ExtUtils, one to do with<br/> threads). Solutions exist for two problems in ExtUtils, the third may<br/> be a question of housecleaning. The threads issue is related to bug<br/> #45053. As this is failing with 5.8.8, Craig suggested that it could<br/> be left documented that way so as not to hold up 5.8.9.<br/><br/> 99.63% okay<br/><br/><br/>Tests failed on PPC64<br/><br/> S&eacute;rgio Durigan J&uacute;nior reported a couple of failures in the test suite<br/> when building 5.10 on the PPC64 platform. Dominic Dunlop realised that<br/> the messages were semi-harmless, being indicative of tests making<br/> assumptions on the availability of modules that had not yet been<br/> built.<br/><br/> Since none of the porters run PPC64 machines, it seems likely that<br/> some new hints will be needed for the configuration process to allow<br/> building straight out of the box.<br/><br/><br/><br/>&quot;Perl_ck_op_sanity&quot;<br/><br/> Jim Cromie regretted the lack of a &quot;Perl_ck_*&quot; routine to check all<br/> constructed ops, and thought we needed one. The routine would check<br/> that the C struct of the op had sane values.<br/><br/><br/><br/>Test failures for perl 5.10 on Solaris 10<br/><br/> Ken Williams took 5.10 for a spin on Solaris and discovered a number<br/> of failures. He traced this down to the fact that the source was built<br/> using Sun&#39;s &quot;make&quot;, but that some tests wind up running with a<br/> different make, and they fail.<br/><br/><br/><br/>Patches of Interest<br/><br/>More sv.c consting<br/><br/> Steve Schubiger continued with his consting crusade, creating a series<br/> of patches that Rafael applied. At the end of the week, patch number<br/> 13 was as yet unapplied.<br/><br/><br/><br/>Fix &quot;ExtUtils::Install&quot; under Cygwin<br/><br/> This problem continued to occupy Steve Hay, Nicholas Clark and Jan<br/> Dubois this week. The underlying issue is whether a read-only<br/> directory may not be added to, or may not be deleted. Compounding the<br/> problem was the fact that different compilers return contradictory<br/> information concerning the information returned from the operating<br/> system.<br/><br/> By the end of the week, things were cleaned up enough to give the<br/> green light for the release of 5.8.9.<br/><br/><br/><br/>Testing madly<br/><br/> Gerard Goossen set about fixing up the errors with the Perl5-to-Perl5<br/> conversion that the MAD infrastructure provides.<br/><br/> mad/t/p55.t<br/><br/><br/> $[<br/><br/><br/> Gerard also wanted to rip out a chunk of code that was no longer<br/> needed for guessing if a bareword was a subroutine name. Rafael<br/> wondered if this was wise, and Gerard explained that changes elsewhere<br/> in the MAD codebase had rendered the code unnecessary.<br/><br/><br/><br/>Misleading example in perlsyn.pod (given/when/default)<br/><br/> Paul Fenwick looked at &quot;given&quot; and &quot;when&quot;, and was misled by the<br/> documentation. He proposed removing the ambiguity with a slight edit,<br/> and Rafael applied it.<br/><br/><br/><br/>Rever cygwin archname hints<br/><br/> Reini Urban reverted the archname tweaks on the Cygwin platform, the<br/> main reason being to tidy up cpan-testers reports.<br/><br/><br/><br/>Lexical and<br/><br/> Paul Fenwick delivered a first cut at lexically scoped fatalities. The<br/> message thread, however, will be summarised next week.<br/><br/> ENOTIME<br/><br/><br/>New and old bugs from RT<br/>=head2 Remove revision bread crumbs from short description (#48453)<br/><br/> The perlfaq has, for the longest time, carried the blight of revision<br/> tags in the titles, causing an unsightly mess in &quot;perltoc&quot;. Rafael<br/> explained that that the Perl FAQ was maintained in a separate SVN<br/> repository, and suggested that it would make sense in the long run to<br/> bring it back in the fold under git control.<br/><br/><br/><br/>Incorrect calculations (#50072)<br/><br/> Vladislav Malyshkin filed a bug back in January, and at the time<br/> Abigail explained that the bug was more in Vladislav&#39;s code rather<br/> than Perl (the heart of which was the problem of operators having side<br/> effects).<br/><br/> Abigail and Michael G. Schwern replied that debating the merits of<br/> operators and side effects in Perl 5 was a bit of a lost cause at this<br/> stage of the game.<br/><br/><br/><br/>Problem and &quot;solution&quot; for building 5.10.0 with win32+mingw+dmake (#51562)<br/><br/> Kjetil Skotheim reported a problem (and a fix) when building perl on<br/> Win32 with MinGW. Jan Dubois wasn&#39;t sure how Kjetil encountered the<br/> error in the first place, suspecting that some other issue was coming<br/> into play.<br/><br/><br/><br/>&quot;Scalar::Util::looks_like_number&quot; vs. Optimisation in regex? (#51568)<br/><br/> Steffen Ullrich thought he had found a bug in &quot;looks_like_number&quot;, but<br/> he was passing $3 as a parameter. Eric Brine explained that this was a<br/> dangerous practice, as something was probably interfering with it on<br/> the way down. It would be wise to interpolate it into a string, and<br/> pass that instead.<br/><br/> When that is done, the problem goes away.<br/><br/><br/><br/>segmentation fault with array ties (#51636)<br/><br/> &quot;blino&quot; encountered a problem while developing &quot;Gtk2::SimpleList&quot; and<br/> reduced it to a bug involving ties within ties. Most remarkable was<br/> the fact that (s)he was able to pin-point the problem as being change<br/> #31770, which involved optimising &quot;push @ISA&quot; and propose a tentative<br/> patch to correct the problem.<br/><br/> Rafael thought the patch looked safe enough, but wondered if it would<br/> not be papering over a deeper bug in handling magic. Vincent Pit was<br/> able to put forward a very good explanation as to what was really<br/> happening, and produced a better patch and a regression test. Nicholas<br/> wondered if Vincent should have used heavier machinery for saving and<br/> restoring magic; Vincent wasn&#39;t sure either way.<br/><br/><br/><br/>&quot;waitpid()&quot; example in perlfunc(1) is bogus (#51642)<br/><br/> &quot;vedge&quot; suggested that the &quot;waitpid&quot; snippet in the documentation<br/> could produce an infinite loop, and proposed an alternative. Abigail<br/> thought that the alternative could also wind up as an infinite loop.<br/><br/> back to the drawing board<br/><br/><br/>op/alarm.t hangs on 5.11.0 (Windows Vista only) (#51674)<br/><br/> Sisyphus reported problems with &quot;alarm&quot; on Vista. Robert May owned up<br/> as being the probable culprit with some recent changes he had made.<br/> With a small edit, he was able to recover the correct behaviour.<br/><br/><br/><br/>&quot;@-&quot; array is incorrect with non matching grouping (#51688)<br/><br/> The bug itself was not a bug, but (and perhaps because of that) Paul<br/> Fenwick asked for a point of order concerning the handling of tickets<br/> on the perlbug RT queue.<br/><br/><br/><br/>&quot;utf8::valid&quot; rejects characters in \x14_FFFF - \x1F_FFFF (#51710)<br/><br/> Chris Hall discovered a discrepancy between &quot;utf::valid&quot; and<br/> &quot;Encode::encode(&#39;utf8&#39;, ...)&quot;, with &quot;utf::valid&quot; rejecting characters<br/> incorrectly. No takers.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> 290 new + 1502 open = 1792 (+10 -8)<br/><br/><br/><br/>In Brief<br/><br/> Yitzchak Scott-Thoennes&#39;s fix for &quot;Archive::Extract&quot;&#39;s x.lzma test<br/> file was applied.<br/><br/><br/><br/> Andy Dougherty delivered what he thought was his most trivial patch<br/> ever, a one line suppression in MANIFEST. Nicholas Clark thought Andy<br/> could do much better, since Nicholas has made changes that involve<br/> only a single character.<br/><br/><br/><br/> The &quot;perlbal&quot; issue of not building for Fedora was sorted out.<br/><br/><br/><br/> Daisuke Maki found a leak in &quot;Text::CSV_XS-&gt;getline&quot; , which isn&#39;t<br/> part of core, but since (s)he supplied a reasonable patch, H.Merijn<br/> Brand, &quot;Text::CSV_XS&quot;&#39;s maintainer, took the time to fix the problem<br/> anyway.<br/><br/><br/><br/> Elizabeth Mattijsen puzzled over the differences in &quot;builtin()&quot; versus<br/> &quot;builtin( () )&quot; (extra parentheses in the call) and discovered that<br/> she had been bitten by prototypes.<br/><br/><br/><br/> Nicholas Clark believes he has nailed the corruptions seen in<br/> ext/threads/t/free.t.<br/><br/> dup shenanigans<br/><br/><br/> In the process of tidying up a bug report for &quot;CGI&quot;, Nicholas Clark<br/> wondered if the current dual life module bug/patch work-flow was<br/> optimal. The distinctly sub-optimal part is having perl bugs reported<br/> to an RT queue at, and dual-life module bugs reported to<br/> RT queues. This alone makes it difficult to bounce tickets<br/> from one queue to another.<br/><br/> Which begs the question, why are we even using RT in two separate<br/> domains?<br/><br/><br/><br/> Paul Fenwick asked for (and received) a point of order concerning the<br/> cleaning out of RT non-bugs.<br/><br/><br/><br/>Last week&#39;s summary<br/><br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider attending a YAPC<br/> conference or contributing to the Perl Foundation to help support the<br/> development of Perl.<br/><br/> Sat, 22 Mar 2008 13:05:18 +0000 This Week on perl5-porters - 1-8 March 2008 by David Landgren This Week on perl5-porters - 1-8 March 2008<br/><br/> &quot;I personally think that the git tools have far too many ways to do<br/> the same thing (a complaint levelled against Perl itself at times) for<br/> the normal human to comprehend, let alone remember.&quot; -- John Peacock,<br/> gitting used to the idea of a new code repository.<br/><br/>Topics of Interest<br/><br/>ExtUtils::Install updates<br/><br/> Michael G. Schwern released a new version of the venerable<br/> &quot;ExtUtils::MakeMaker&quot; distribution, partly to include<br/> &quot;ExtUtils::Install&quot; version 1.45. Unfortunately Yves Orton had, in the<br/> meantime, pushed out version 1.46 which closed out a number of bug<br/> reports which had been quietly gathering dust in the RT queue.<br/><br/> The changes caused a ripple of failures to show up in smoke tests.<br/> Yves had everything squared up again as of version 1.50.<br/><br/><br/><br/> A side thread on the same issue was started by Jerry D. Hedden<br/> concerning problems with the module on Cygwin. One of the problems<br/> encountered was the broken behaviour of &quot;Archive::Tar&quot; with respect to<br/> the WinZip archive tool on Windows. Apparently due to concerns with<br/> Solaris interoperability, &quot;Archive::Tar&quot; will construct a tar file for<br/> which WinZip is unable to discern the directory structure, thus<br/> causing everything to be extracted into the current directory.<br/><br/> bit of a hassle, that<br/><br/><br/>Interesting self contained task<br/><br/> In the follow-up to the discussion of getting fresh blood hacking on<br/> the core, Joshua ben Jore pointed to his perlguts talk with a focus on<br/> the op-tree. Eric Wilhelm reminded people of the importance of the<br/> Google Summer of Code with respect to getting new people hacking on<br/> perl.<br/><br/><br/><br/> This lead to further discussion of the Summer of Code, with cross-pver<br/> from the pm_groups mailing list, about how similar the effort required<br/> is to herding cats.<br/><br/> don&#39;t be eval<br/><br/><br/> Eric put out a formal call for an official p5p cat-herder to<br/> coordinate the issues between the SoC and the perl5 porters. I hope he<br/> received a flood of off-list replies.<br/><br/><br/><br/>&quot;List::Util::sum()&quot; doesn&#39;t handle overloading<br/><br/> Jan Dubois uncovered a glaring inconsistency between the XS and<br/> pure-Perl implementations of the &quot;sum&quot; routine: the XS version doesn&#39;t<br/> deal with objects that overload &quot;+&quot; correctly.<br/><br/> Yves Orton recalled previous discussions on the matter and the<br/> concensus was that the XS version was built for speed, which leads to<br/> things like overloading being ignored. Michael G. Schwern thought that<br/> he&#39;d rather settle for slightly slower and always right, rather than<br/> slightly faster and sometimes subtly wrong. Nicholas Clark wanted to<br/> know how much slower an XS version that handles overloading would turn<br/> out to be.<br/><br/> premature evil<br/><br/><br/>ext/Time/Piece/Piece.xs use of &quot;strptime&quot;<br/><br/> The FreeBSD copyright statement in &quot;Time::Piece&quot; went from Matt<br/> Sergeant to blead. A patch from blead to silence a warning on Windows<br/> with the Borland C compiler was sent back in return to Matt.<br/><br/> two-way street<br/><br/><br/>&quot;glob()&quot; implementation<br/><br/> Peter Dintelmann wondered why he kept winding up with csh semantics<br/> for &quot;glob&quot; rather than bsd semantics, as the documentation suggested.<br/> Adriano Ferreira pointed out that &quot;csh_glob&quot; is implemented in terms<br/> of &quot;bsd_glob&quot; anyway.<br/><br/><br/><br/>&quot;PL_destroyhook&quot; race condition<br/><br/> Dave Mitchell had identified a potential race condition where two<br/> threads try to destroy an object and in an &quot;After you&quot;, &quot;No, after<br/> you&quot; scenario and the object would be freed but no-one would call its<br/> destructor.<br/><br/> Jerry D. Hedden thought this was an ugly state of affairs, and after<br/> mulling a long time over the code, could not see how to resolve the<br/> issue. He finally began to wonder whether the race condition could<br/> actually be provoked. So he wrote a program to try and exercise it,<br/> but didn&#39;t encounter the failure.<br/><br/> Jerry wasn&#39;t sure whether this was because there was truly no was no<br/> race condition, or that his program was not subtle enough to coax it<br/> to the surface.<br/><br/><br/><br/> Jerry also wondered whether this patch could be backported to the 5.8<br/> track, or whether it broke binary compatibility.<br/><br/><br/><br/>POSIX::access(...) returns &quot;0 but true&quot;<br/><br/> Jerry D. Hedden was having trouble with &quot;POSIX::access&quot; returning the<br/> magic value &#39;0 but true&#39; for both writable and non-writable<br/> directories, so a test was failing when it shouldn&#39;t be on Cygwin and<br/> Win32.<br/><br/><br/><br/>Perl @ 33218 (continued)<br/><br/> The current maintenance snapshot that will lead to 5.8.9 is currently<br/> stuck on Stratus VOS, since the test suite of &quot;Module::Pluggable&quot; has<br/> a file that begins with &#39;-&#39; (dash, hyphen, minus...) and this is a<br/> no-go on that platform.<br/><br/> Nicholas Clark couldn&#39;t remember what the other issues were.<br/> Consulting previous summaries would lead one to conclude that there is<br/> an unresolved issue concerning &quot;POSIX::strftime&quot; as well.<br/><br/><br/><br/> A long back-and-forth between Nicholas and Steve Hay finished up with<br/> a warnings-free build on Win32. The main issue was one of casts<br/> causing warnings.<br/><br/><br/><br/> In another thread, Jerry D. Hedden coordinated with Nicholas to quash<br/> the remaining 5.8.x build warnings under Cygwin.<br/><br/><br/><br/> From Perforce to git<br/><br/> Sam Vilain reported that he had achieved a complete Perforce-to-git<br/> migration, and it was now being updated (albeit with a slight lag)<br/> with changes in real time. He asked for people to have a hard look to<br/> see if they could find any conversion errors.<br/><br/> Nicholas enquired as to whether there would be an easy way to map a<br/> Perforce change number to a git commit (answer: yes, a couple). He was<br/> also wondering how he would be able to cherry pick patches from blead<br/> for application to the various maint tracks.<br/><br/> git along<br/><br/><br/> Shortly afterwards, Rafael announced the switch to git. John Peacock<br/> deeply regretted not having been able to complete the Perforce to<br/> Subversion project, but a new job in Real Life had eaten all his<br/> tuits.<br/><br/> One of the main issues that needs to be sorted out is a simple &quot;git<br/> for perl5 porters&quot; cheat sheet, that supply a minimum list of commands<br/> one needs to know. The other point for early adopters to remember is<br/> that the repository is likely to be torn down and rebuilt, this time<br/> encoded in UTF-8 rather than Latin-1.<br/><br/> (Note to non-native English speakers: the &quot;g&quot; in &quot;git&quot; is pronounced<br/> with a voiced velar plosive (a hard G), like &quot;give&quot; or &quot;get&quot;).<br/><br/><br/><br/>More TLC for<br/><br/> Jim Cromie continued to tweak this week, by adding comments<br/> to explain its behaviour and deobfuscating the syntax a bit. He<br/> reasoned that because it is so rarely used by people outside the inner<br/> circle that it needs to be able to stand on its own two feet a bit<br/> better. But the patch got a bit messed up and he&#39;ll probably have to<br/> do it again, since no-one actually applied it.<br/><br/><br/><br/>5.10.0 and &quot;Math::Pari&quot; (and Fedora)<br/><br/> Tom &quot;spot&quot; Callaway wondered if there was a fix for &quot;Math::Pari&quot; on<br/> 5.10, since it was broken, but it is also a dependency for a couple of<br/> &quot;Crypt::*&quot; modules. Nicholas Clark wondered what the authors had to<br/> say for themselves, having encountered comments like<br/><br/> int numargs = ((CV*)cv)-&gt;sv_any-&gt;xof_off; /* XXXX Nasty of us... */<br/><br/> Nicholas Clark was slightly miffed by the corners cut in the XS code.<br/> The extensive restructuring of the internals that went into the 5.10<br/> release was theoretically &quot;off limits&quot; to client XS code, but it turns<br/> out that the Pari code was running around stuffing pointers and ints<br/> in all sorts of places that weren&#39;t expected to hold them. This caused<br/> a variety of failures that Nicholas wasn&#39;t really inclined to fix.<br/><br/><br/><br/> In his race against time, Tom also reported that Data::Structure::Util<br/> was also failing its tests on 5.10.0. Nicholas Clark saw that this<br/> (and other) module(s) are authored by Fotango, and since Fotango no<br/> longer officially exists, they are thus all orphan modules.<br/><br/> &AElig;var Arnfj&ouml;r&eth; Bjarmason wondered what else was on Fedora&#39;s list of<br/> modules from hell, to which Tom replied that &quot;perlbal&quot; (A Perl-based<br/> proxy balancer) was also blowing black smoke, but felt that it was not<br/> a show-stopper.<br/><br/> Also problematic was &quot;Sys::Virt&quot;, &quot;PDL&quot; and &quot;Test::AutoBuild&quot;.<br/><br/> Yves Orton suggested Tom run with the slow @_ parameter passing<br/> speed-up patch, slated for 5.10.1 (and that Tom should make sure that<br/> it is clear in the output from &quot;perl -v&quot; that it is in there, to help<br/> with future bug reports from Fedora users).<br/><br/><br/><br/> Nicholas Clark did a fine piece of sleuthing work on PDL and<br/> discovered that a random number generator part of the code was not<br/> calling a function like &quot;drand48&quot;, which led to predictable results.<br/><br/> Not good if you want unpredictable results<br/><br/><br/> He also solved the &quot;Devel::Profiler&quot; 5.10.0 failure that Tom<br/> uncovered. As for &quot;B::TerseSize&quot;, Nicholas suggested Tom get in touch<br/> with Philip Gollucci.<br/><br/><br/><br/>Perl @ 33444<br/><br/> Nicholas made another snapshot for 5.8.9 and asked what else was<br/> broken apart from the Stratus VOS issues. Craig A. Berry reported that<br/> a smoke test from a patchlevel a few changes earlier was having<br/> problems with threads and ExtUtils. The latter he suggested could be<br/> marked TODO if necessary, mainly because a certain amount of test<br/> failures are for tests that weren&#39;t around in 5.8.8 in the first<br/> place.<br/><br/> Jerry D. Hedden listed a number of dual-life CPAN modules that were<br/> out of date with respect to maint. Nicholas gave them a 50/50 chance.<br/><br/> Reini Urban summarised the problems on Cygwin. The work Jan Dubois<br/> made on the compiler switches, to allow gcc to be binary compatible<br/> with VC probably won&#39;t make it in until 5.12.<br/><br/><br/><br/> Problems occurred on Mac OS X 10.5, and the resolution was made harder<br/> by the lack of &quot;strace&quot;/&quot;truss&quot; tool to analyse system calls. I think<br/> Nicholas had it all sorted out in the end.<br/><br/><br/><br/>File/Glob/t/basic.t intermittently fails test 6<br/><br/> Dominic Dunlop noted that this test would fail from time to time on<br/> darwin 9.2.0 and he couldn&#39;t see why. Nor could Nicholas. Dominic and<br/> Steve Peters had suspicions about the C implementation of &quot;glob&quot;, as<br/> some parts of it remain unchanged since the day the code was<br/> originally checked in.<br/><br/><br/><br/>Patches of Interest<br/><br/>make &quot;Archive::Extract&quot;&#39;s x.lzma test file be lzma&#39;d, not uupacktool&#39;d<br/><br/> Yitzchak Scott-Thoennes noticed that a data file that was supposed to<br/> be encoded with lzma was in fact encoded with uupack instead. So he<br/> encoded it the right way, and Rafael applied the patch.<br/><br/><br/><br/>count-only transliteration needlessly makes copy-on-write scalars normal<br/><br/> Yitzchak also made &quot;tr&quot; behave cleanly in the face of copy-on-write<br/> strings.<br/><br/> moo<br/><br/><br/>Pushing<br/><br/> Yitzchak also thought that now that the issue of the API of &quot;parent&quot;<br/> has been settled, then &quot;base&quot; could be marked as discouraged<br/><br/> not yet deprecated<br/><br/><br/>New and old bugs from RT<br/><br/>&quot;/^.../m&quot; is slower than logical alternatives (#33051)<br/><br/> Rob Kinyon (dragonchild on Perlmonks) reported a problem where one<br/> regexp was logically equivalent to another... but two orders of<br/> magnitude slower.<br/><br/> This was on perl 5.8.4. Steve Peters noted that the difference was<br/> lost in the noise on 5.10, and 5.8.8 did not appear to be affected<br/> either.<br/><br/> not any more<br/><br/><br/>pod2usage(-verbose =&gt; 0) &amp; pod2usage(-verbose =&gt; 1) (#39775)<br/><br/> Steve Peters also saw that the patch in this bug report had been<br/> applied to a version of Pod::Parser (version 1.35).<br/><br/><br/><br/>Counting bug in &quot;Test::Harness&quot; with unexpected early exit (#43267)<br/><br/> Steve Peters thought that this bug could be marked resolved, since its<br/> twin sister on the CPAN RT queue was marked as resolved over there.<br/> Andy Dougherty regretfully informed Steve that the solution given for<br/> resolving it was &quot;upgrade to &quot;Test::Harness&quot; version 3&quot;.<br/><br/> Alas, in the code freeze during the push to 5.10, Test::Harness 3 was<br/> considered too raw for inclusion, and the bug in the RT ticket<br/> concerns version 2. Andy, having taken a stab at fixing the bug in<br/> Test::Harness 2.64, suggested that if the problem was sufficiently<br/> annoying to people, then they should upgrade to &quot;Test::Harness&quot; 3<br/> (which appears to be settling down nicely).<br/><br/> Rafael hinted that &quot;Test::Harness&quot; 3 will probably be released during<br/> the 5.10 maintenance track. One of the reasons being, as Michael G.<br/> Schwern points out, it&#39;s so much nicer to work with than screen<br/> scraping test output.<br/><br/><br/><br/>make &quot;Devel::Peek::mstat&quot; always available (#46957)<br/><br/> Slaven Rezic had filed a bug report with a patch. Steve took the<br/> patch, applied it, and closed the report. The fix will be of interest<br/> to people who like compiling perl with &quot;PERL_DEBUGGING_MSTATS&quot;.<br/><br/> Slaven had also noted in the report that compiling with &quot;PLAIN_MALLOC&quot;<br/> no longer works. This was not addressed (but I imagine it&#39;s not<br/> serious).<br/><br/><br/><br/>5.9.5 fails make test on AIX 5.3 (#47415)<br/><br/> Continuing his trawl through the 1700+ unresolved bugs in the RT<br/> queue, Steve asked for &quot;Config&quot; information to help him understand<br/> what the problem was.<br/><br/><br/><br/>Use of uninitialized value in die at /opt/perl/lib/perl5/File/ <br/>line 224. (#49660)<br/><br/> Steve Peters tried to close this one as well, but Marc Lehmann replied<br/> that the problem remained, although it was very tricky to provoke the<br/> bug on demand. And the trouble is that the symptom is the removal of<br/> the source file.<br/><br/><br/><br/>Not OK: perl 5.11.0 +DEVEL on i686-linux 2.6.22-3-486 (#50080)<br/><br/> No-one begrudged Steve closing this one with some vague waving of<br/> hands, citing that patch or patches unknown had conspired to fix the<br/> issue.<br/><br/><br/><br/>prototypes sneakily break lvalue subs (#51408)<br/><br/> L. Mai filed the only new bug this week, showing how prototypes<br/> interact with lvalue subs in unexpected ways.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> 288 new + 1501 open = 1789 (+4 -2)<br/><br/><br/><br/>In Brief<br/><br/> The Google summer of code mentoring thread was wrapped up this week,<br/> with Eric Wilhelm explaining a mentor for a GSoC project had to do,<br/> and what they received in return (a T-shirt).<br/><br/> what mentoring meant<br/><br/><br/> Jesse Vincent announce the release of the source code.<br/><br/><br/><br/> Back in November 2007, Marcel Gr&uuml;nauer wrote a patch to fix the<br/> &quot;; bug within overloaded stringification. This week Nicholas<br/> Clark applied it.<br/><br/><br/><br/> In regards to the op/sprintf.t and op/write.t failures with<br/> mingw-runtime-3.14, Nicholas Clark commented that if Sisyphus (or<br/> anyone) was able to figure out a test probe to identify if the local<br/> environment was running with the buggy library, that they would be<br/> able to work around it during build configuration.<br/><br/><br/><br/> The &quot;checkpods&quot; program is going to face the sound of the chain-saw<br/> and/or be subsumed into &quot;podchecker&quot;.<br/><br/> cruft culler<br/><br/><br/> H.Merijn Brand went digging around in &quot;Devel::PPPort&quot; and &quot;perlguts&quot;<br/> to get &quot;Text::CVS_XS&quot; to run on everything from 5.005 to 5.10. Tim<br/> Bunce thought a &quot;newSVpv&quot; needed to be wrapped in a &quot;sv_2mortal&quot;, but<br/> that led to an attempt to free unreferenced scalar.<br/><br/> DDTT<br/><br/><br/> No, the list is not blocking inline patches in messages.<br/><br/> at least, not on purpose<br/><br/><br/> Jarkko Hietaniemi wondered if he was having an attack of the 64-bit<br/> perls. Three modules of his, quite different internally, were popping<br/> up with test failures on 64-bit systems.<br/><br/> the 64-bit question<br/><br/><br/>Last week&#39;s summary<br/><br/> Juerd Waalboer clarified a couple of points in the Unicode debate, and<br/> asked a couple of questions. Notably whether it was true that Perl on<br/> EBCDIC was broken.<br/><br/> Nicholas Clark replied that it was false to state that it doesn&#39;t, as<br/> in actual fact we don&#39;t have any information to confirm or refute the<br/> hypothesis that Perl runs on EBCDIC.<br/><br/> 24-29 February 2008<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation to help support the development of Perl.<br/><br/> Fri, 14 Mar 2008 15:46:25 +0000 This Week on perl5-porters - 24-29 February 2008 by David Landgren This Week on perl5-porters - 24-29 February 2008<br/><br/> &quot;Is this a bug? Or why is this the expected behaviour?&quot; -- Steffen<br/> Ullrich, playing with signal handlers.<br/><br/>Topics of Interest<br/><br/>&quot;use encoding &#39;utf8&#39;&quot; bug for Latin-1 range<br/><br/> The thread about &quot;use encoding&quot; continued this week. Juerd Waalboer<br/> gave one of the best concise explanations as to why the current model<br/> Perl uses for dealing with Unicode is broken, which is that the &quot;\x&quot;<br/> hex escape is overloaded for bytes (&quot;\x2b&quot; *versus* &quot;\x{d0b2}&quot;), and<br/> that it takes place too early, while the source is being read.<br/><br/> The result of which is that a source code file encoded in an Asian<br/> language cannot embed a latin-1 character like an e-acute.<br/><br/> Much discussion of remarkable civility followed, regarding what to do<br/> about the matter. Glenn Lindemann put forward the following ideas:<br/><br/> * Deprecate &quot;use encoding&quot;.<br/><br/> * Deprecate non-ASCII characters in 5.12 source code, unless a<br/> source encoding has been specified.<br/><br/> * Allow Unicode semantics to be applied to all character operations<br/> on strings (case conversion, caseless comparisons and so on),<br/> regardless of their internal representations.<br/><br/> * Sort out the timing of when &quot;\x&quot;, &quot;\x{}&quot; and &quot;\N&quot; take effect.<br/><br/> No-one appeared to lament the idea of letting &quot;encoding&quot; go.<br/><br/> Yves Orton pointed out that Microsoft managed to get their Unicode<br/> handling more or less right, albeit at a certain cost to their API,<br/> and regretted that Unix-like operating systems supplied the absolute<br/> strict minimum, pushing all the work onto each and every client<br/> program. Which meant that nothing really worked at all, not even the<br/> so-called shebang line.<br/><br/> Juerd and Nicholas put forward that there is a case to be made for<br/> perl to figure out itself whether a given source file is in ASCII,<br/> Latin-1 or UTF-8. It turns out that it&#39;s just about impossible to<br/> construct a sensible Latin-1 file that also turns out to be be valid<br/> UTF-8. The idea is to start out in 7-bit ASCII and carry on until a<br/> byte with the high bit set is encountered.<br/><br/> If this byte introduces a valid UTF-8 character, the rest of the file<br/> must be, too. Any invalid byte sequences thereafter trigger a fatal<br/> compile-time error. Otherwise it means it must be Latin-1, in which<br/> case similar but different rules apply which also cause the<br/> compilation to halt if encodings change mid-stream. The key issue is<br/> to determine that the encoding does indeed change.<br/><br/> EBCDIC was also mentioned in passing. Sadly, Perl no longer runs on<br/> EBCDIC due to a general lack of nurturing. Then again, if it was<br/> important, Nicholas felt that someone from IBM would have been in<br/> touch at some point.<br/><br/> for some reason I now have a splitting headache<br/><br/><br/>Interrupting &quot;system()&quot; with signal depends on signal handler<br/><br/> Steffen Ullrich noticed that an &quot;alarm&quot; signal handler that does a<br/> &quot;syswrite&quot; as opposed to a &quot;print&quot; behave differently. After diving in<br/> through pp_sys.c, he noticed that he could make the &quot;print&quot; version<br/> (which was working correctly) behave the same incorrect way, by<br/> setting $! to undef.<br/><br/> He produced a one-line patch that fixed the behaviour (hmm, did we get<br/> a test?) and Rafael applied it as change #33408.<br/><br/> handle with care<br/><br/><br/>CPAN NetBIOS broadcasts<br/><br/> Linda W was scratching her head wondering why CPAN installations on<br/> cygwin were glacially slow. After running a network trace, she<br/> discovered that what had been a path /var/cache/cpan was being<br/> interpreted as a UNC path (/cache/cpan on host //var).<br/><br/> This caused the local host to send out plaintive calls for host //var<br/> to please call home. Michael G. Schwern thought that this sounded like<br/> the same problem described in CPAN bug #32813, as did Linda.<br/><br/> Yves Orton, current maintainer of &quot;ExtUtils::Install&quot;, which is were<br/> the problem originated, pushed out a new version and Linda confirmed<br/> that it solved the problem.<br/><br/> Ken Williams was not around to comment on how hard it is to use<br/> File::Spec correctly.<br/><br/> not quite Unix, not quite Windows<br/><br/><br/>Google summer of code<br/><br/> Eric Wilhelm got the ball rolling on Perl&#39;s participation in Google&#39;s<br/> Summer of Code project. But you&#39;ve probably heard about this in other<br/> venues. All hail Eric.<br/><br/> The Perl 5 Wiki is place to go for the latest information.<br/><br/> summertime fun<br/><br/><br/><br/>Patches of Interest<br/><br/>sv.c consting goodness<br/><br/> Steven Schubiger&#39;s consting patch number 4 from the beginning of the<br/> month was applied. This lead to patches 5, 6, 7, 8 and 9, all applying<br/> ever more consting to sv.c being issued by Steven, which in turn were<br/> all applied by various porters.<br/><br/><br/><br/>no archlib in otherlibdirs<br/><br/> After some long, hard thought, Andy Dougherty remembered why Reini<br/> Urban&#39;s plan for organising site and vendor libraries on Cygwin<br/> wouldn&#39;t work in the general case. So Reini withdrew his patch but<br/> would continue to use it locally.<br/><br/><br/><br/> On the other hand, his enhancements to &quot;B::Debug&quot; made it in.<br/><br/> win some, lose some<br/><br/><br/>warning message for -M:Foo, extended and revised<br/><br/> Robin Barker finally settled on &quot;Invalid module name :Foo with -M<br/> option: contains single &#39;:&#39;&quot;, which was good enough for Rafael<br/><br/> colonphun<br/><br/><br/>More diagnostics for<br/><br/> Slaven Rezic enhanced &quot;Fatal&quot; to name the builtin that could not be<br/> overridden in its dying message.<br/><br/> if I told you I would have to kill you<br/><br/><br/>Thread patches<br/><br/> Jerry D. Hedden is doing so much work on threads at the moment, he<br/> deserves his own section.<br/><br/> First off, the patch to not install threads on non-thread builds was<br/> reverted (Michael G. Schwern killer argument being that at least that<br/> way you get a nice error message).<br/><br/><br/><br/> Then the CPAN 1.69 version of &quot;threads&quot; was synch&#39;ed with blead.<br/><br/><br/><br/> As was &quot;threads::shared&quot; 1.17.<br/><br/><br/><br/> At the end of the week, he also delivered version 1.18, which added<br/> some diagnostics to help track down what&#39;s going wrong when t/stress.t<br/> decides to go belly up.<br/><br/><br/><br/> Moving along, &quot;Thread::Semaphore&quot; 2.07 checked in.<br/><br/><br/><br/> and last but not least, &quot;Thread::Queue&quot; 2.06 did too.<br/><br/><br/><br/>Watching the smoke signals<br/><br/> It looked like t/stress.t in the threads module failed, and so Jerry<br/> asked if there was any chance of seeing what the new diagnostics had<br/> to say. Steve Hay discovered that the problem was in fact a TODO test<br/> that had started to pass, and Test::Smoke got confused and recorded it<br/> as a failure.<br/><br/> Smoke [5.11.0] 33390 FAIL(F) MSWin32 WinXP/.Net SP2 (x86/2 cpu)<br/><br/><br/>New and old bugs from RT<br/><br/>Segfault when calling &quot;-&gt;next::method&quot; on non-existing package (#51092)<br/><br/> David Landgren thought that the test that Rafael Garcia-Suarez added<br/> as part of the fix for this bug should have had the RT bug number<br/> embedded in it somewhere. In other other news, we discovered that<br/> there are 485 subscribers to perl5-porters.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> 288 new + 1500 open = 1788 (+3 -2)<br/><br/><br/><br/>New Core Modules<br/><br/> ExtUtils::Install version 1.45<br/> This was the fix for the &quot;//var&quot; problem noted by Linda W. (But<br/> stay tuned next week for exciting new developments).<br/><br/><br/><br/> ExtUtils::MakeMaker 6.44<br/> Michael G. Schwern rolled out 6.34_01 plus Yves&#39;s EU::I 1.45 as<br/> version 6.44. Other assorted bugfixes made it in, but Michael<br/> announced that he had declined to put in the fixes required to<br/> make paths with whitespace work correctly, saying that he wanted<br/> to think about a better solution.<br/><br/><br/><br/>In Brief<br/><br/> Last week, Jim Cromie had the newfound ability to hook XML analysis to<br/> a test suite (via the &quot;PERL_XMLDUMP&quot; environment variable). This week,<br/> Jim wrote a patch to test -Dmad&#39;s PERL_XMLDUMP= output. It was not<br/> applied.<br/><br/> truly madly<br/><br/><br/> On the other hand, Rafael did apply his optimisation of the<br/> &quot;OP_IS_(FILETEST|SOCKET)&quot; macros, with some &quot;OP *&quot;/&quot;int&quot; fuzz.<br/><br/><br/><br/> The exact recipe for signalling a non-met prerequisite (such that a<br/> perl build without threads should not attempt to require threads) was<br/> nailed down and codified on the CPAN Testers wiki.<br/><br/><br/><br/><br/> Salvador Fandi&ntilde;o found that the documentation made no mention of<br/> &quot;av_delete&quot; calling &quot;sv_2mortal&quot; on the returned &quot;SV&quot;. Yet &quot;av_pop&quot;<br/> and &quot;av_shift&quot; don&#39;t and so the documentation should probably point<br/> out the difference.<br/><br/> quirk quirk<br/><br/><br/> Craig Berry reported that maint-5.8 was not compiling on VMS, largely<br/> due to incorrect prototypes in re.xs. Nicholas Clark determined that a<br/> subsequent integration fixed the problem.<br/><br/> a matter of time<br/><br/><br/> Steve Peters wanted to know why quad words on Win32 weren&#39;t<br/> configured, since all the pieces were in place to allow them to be.<br/> Jan Dubois thought that it wasn&#39;t much of a problem since you really<br/> need to have &quot;IVSIZE&quot; defined to be 8 to take any advantage of them.<br/><br/> mmm, bignums<br/><br/><br/> Nicholas Clark hacked &quot;perlbug&quot; to allow it to send thank-you messages<br/> back to the porters.<br/><br/> send more money<br/><br/><br/> Nicholas also got his languages mixed up trying to write else if in C<br/> macros. Fortunately there are only four or five distinct syntaxes to<br/> master for writing else if constructs in all computer languages.<br/><br/> as if<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren. I chopped a day off this<br/> week; it makes it easy to start next week on the first of the month.<br/><br/> 17-23 February 2008<br/><br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation to help support the development of Perl.<br/><br/> Thu, 06 Mar 2008 17:05:20 +0000 This Week on perl5-porters - 17-23 February 2008 by David Landgren This Week on perl5-porters - 17-23 February 2008<br/><br/> Nicholas: So, it seems that constant folding runs in &quot;compile time&quot;,<br/> which scares me somewhat. Surely it should be running in run time?<br/><br/> Rafael: The whole point of compile time optimisation is that it runs<br/> at compile time, isn&#39;t it?<br/><br/> Nicholas: Runs *at* compile time, but (I assume should) run under run<br/> time rules. There appear to be special exceptions scattered throughout<br/> the code that certain things aren&#39;t fatal if compilation is in<br/> progress.<br/><br/> (debating the elegant simplicity of the Perl 5 internals).<br/><br/>Topics of Interest<br/><br/>&quot;pp_const&quot; cools off<br/><br/> Nicholas Clark applied Vincent Pit&#39;s patch from last week to slim down<br/> &quot;pp_const&quot; by splitting the op into two, which eliminates a costly<br/> branch.<br/><br/> S&eacute;bastien Aperghis-Tramoni reported that his web service that showed<br/> the gcov output of the Perl codebase had gone belly up (it was by<br/> poring over a gcov run that Nicholas spotted the original opportunity<br/> to optimise).<br/><br/> Abe Timmerman said that a similar offering of his own was still up,<br/> except that the perl.gcov target was currently broken, so there was<br/> nothing to show.<br/><br/> paths not taken<br/><br/><br/>To B or not to B<br/><br/> Jim Cromie and Reini Urban discussed the finer points of testing the<br/> &quot;B&quot; modules.<br/><br/><br/><br/> Reini posted some &quot;B::Debug&quot; enhancements.<br/><br/><br/><br/> Reini finished up with the delivery the delightfully named &quot;B::MAD&quot;<br/> module. He wasn&#39;t sure of the usefulness, but reasoned that some mad<br/> hacker might be able to put it to use.<br/><br/> don&#39;t worry B::Happy<br/><br/><br/>extending t/ to set the subprocess ENV<br/><br/> Jim Cromie found a simpler way to set up the environment of a test<br/> requiring a fresh perl to be launched. This was to allow<br/> &quot;PERL_XMLDUMP&quot; to be specified, in order to verify MAD output.<br/><br/> Nicholas wondered if Jim&#39;s hack was VMS-compatible. Craig A. Berry<br/> suggested that all that was needed was the correct use of &quot;local&quot;.<br/> Hilarity ensued as Yitzchak Scott-Thoennes shot down each of Jim&#39;s<br/> attempts to effect the change in a loop, which had the result of the<br/> localness (locality?) evaporating at the end of the block.<br/><br/> need a hash slice to go<br/><br/><br/> Somewhere along the way, Jim noticed a couple of warnings about unused<br/> variables when MAD is enabled.<br/><br/><br/><br/>You can&#39;t always optimise what you want<br/><br/> Nicholas Clark continued with his interesting self-contained task from<br/> last week that dealt with constant optimisations and thought it should<br/> be possible to unroll constant &quot;pack&quot;s. (like &quot;$var = pack(&quot;a2&quot;,<br/> &quot;xyz&quot;)&quot; being replaced by &quot;$var = &quot;xy&quot;&quot;). He had the source code that<br/> could more or less do it, but ran all around the codebase trying to<br/> find a place to lodge it so that it would be acted upon at the right<br/> time. He finally wound up where he started from, and realised that it<br/> wasn&#39;t possible.<br/><br/> nor do you always get what you need<br/><br/><br/>Assistance with IPC modules and perl 5.10<br/><br/> Nicholas Clark and Andy Armstrong came through with the goods to<br/> figure out what was going wrong with &quot;IPC::Shareable&quot; and<br/> &quot;IPC::ShareLite&quot; on the upcoming Fedora release. So Fedorans will soon<br/> be able use 5.10 straight out of the box.<br/><br/><br/><br/>Modulo operator and floating point numbers<br/><br/> Ken Williams considered the recent change to the documentation<br/> concerning the modulo operator and suggested some further tweaks that<br/> Rafael applied.<br/><br/> He then started thinking about moduli of floating point numbers and<br/> was surprised by the results of the current implementation. Zefram<br/> pointed out that the same issue is described in his bug #41215.<br/><br/> Ken would have liked to make things behave in a more logical manner,<br/> but Rafael was happy to let sleeping dogs lie.<br/><br/><br/><br/>Perl on Symbian OS<br/><br/> Gowtham wanted to know if the perl port that ran on Symbian 8 was<br/> usable on Symbian 9. Jarkko Hietaniemi, author of the the original<br/> port, was sceptical, given that the platform had been locked down.<br/> This might mean that Perl (as an &quot;unauthorised application&quot;) would not<br/> have the privilege of opening a TCP connection.<br/><br/> If the build toolchain has changed significantly then major work will<br/> be required to bring the port up to speed. In any event, Jarkko said<br/> that he had no more time to take care of it.<br/><br/> sounds like no<br/><br/><br/><br/>&quot;PERL_RUNTIME&quot;, or, adventures in &quot;sprintf&quot; ops<br/><br/> Having discovered the nifty f flag and its positive impact on<br/> &quot;length&quot;, Nicholas reasoned that &quot;sprintf&quot; was a likely candidate for<br/> more of the same. Except things went wrong, and had him diving all the<br/> way back to Malcolm Beattie&#39;s change #44 from 1997. He managed to sort<br/> things out and wrapped it up in change #33369.<br/><br/><br/><br/>&quot;use encoding &#39;utf8&#39;&quot; bug for Latin-1 range<br/><br/> Jarkko Hietaniemi kicked off a long thread last week, and was still<br/> bubbling along nicely as I summarised it. So the executive summary<br/> (subject to change, next week) is that &quot;use encoding&quot; is broken and<br/> its use should be discouraged.<br/><br/><br/><br/>UTF-8 problem with Perl 5.10.0<br/><br/> More UTF fun this week. Phil Harvey wrote to explain how he had been<br/> burnt by the changes to &quot;U0&quot; and &quot;C0&quot; flags for &quot;unpack&quot;, that used to<br/> allow one to sneak past the abstraction model and poke at the<br/> implementation details. This caused a number of mutually<br/> irreconcilable problems, and so the decision was made during 5.9 to<br/> make a clean break with the past.<br/><br/> it /was/ noted as an Incompatible Change<br/><br/><br/>ohloh<br/><br/> Tels discovered ohloh, and its spectacularly out-of-date idea of<br/> activity on the Perl codebase. It was slurping the contents of Sam<br/> Vilain&#39;s git repository, and choking on the complex history of the<br/> codebase. This meant that it looked as if development stopped years<br/> ago. Andy Armstrong fixed up the summary info to indicate that Perl 5<br/> is still alive and kicking.<br/><br/><br/><br/>Patches of Interest<br/><br/>Installing threads files on non-threaded Perls<br/><br/> Michael G. Schwern questioned the desire to exclude threads modules<br/> from being installed on non-threaded builds. His contention being that<br/> if someone uses the module on a non-threaded build, they get a nice,<br/> informative error message as to why things don&#39;t work.<br/><br/> If they are removed, then only a basic &quot;module not found in any of<br/> these zillion directories&quot; message is issued instead. Michael was<br/> worried that some people might go to all the effort of trying to<br/> download the threads package from CPAN, only to find out that it<br/> *still* doesn&#39;t work, and in fact cannot unless perl itself is<br/> rebuilt.<br/><br/> Jerry D. Hedden saw the logic in this line of reasoning, and reversed<br/> his stance.<br/><br/> helpful errors<br/><br/><br/> back they go<br/><br/><br/> Elsewhere on planet threads, Jerry pushed some more updates out.<br/><br/> threads 1.69<br/><br/><br/> threads::shared 1.17<br/><br/><br/> Thread::Semaphore 2.07<br/><br/><br/> Thread::Queue 2.06<br/><br/><br/>&quot;perl -M:Foo -we 1&quot;<br/><br/> Robin Barker related a discussion (and curiously, the<br/> discussion was about Perl) relating to &quot;perl -M:DProf -we 1&quot; not<br/> generating a warning. So he tweaked the getopty code in perl.c to make<br/> it do so. Jim Cromie thought that the proposed warning, so worded, was<br/> not particularly helpful.<br/><br/> -M doesn&#39;t get the colon<br/><br/><br/> <br/><br/><br/>Convert Changes file to UTF-8<br/><br/> Brendan O&#39;Dea converted Changes to UTF-8. I don&#39;t know what happened<br/> in transit, but the result was a mess by the time the message hit my<br/> inbox.<br/><br/><br/><br/>no archlib in otherlibdirs<br/><br/> Reini Urban proposed a change to the various lib paths. Rafael<br/> admitted the current mechanism was a bit ad-hoc and it reminded him<br/> that he needed to work on a 5.12 roadmap.<br/><br/> Andy Dougherty explained how things are supposed to behave currently.<br/><br/><br/><br/> bug within overloaded stringification<br/><br/> Nicholas Clark tried to apply Marcel Gr&uuml;nauer&#39;s fix to &quot;NEXT&quot; but<br/> &quot;patch&quot; failed miserably in the attempt. Nicholas blamed Apple&#39;s<br/> software.<br/><br/><br/><br/>New and old bugs from RT<br/><br/>threads still crashing (#45053)<br/><br/> Jerry D. Hedden discovered that his thread segfaults would occur<br/> regularly on a machine with 4Gb of RAM, but not on another that had<br/> only 1Gb. He wondered if it could be the symptom of some bad<br/> signed/unsigned voodoo.<br/><br/> Tels replied that he was unable to provoke any crashes on his own<br/> machine.<br/><br/><br/><br/>QNX Test failures (#49818)<br/><br/> Matt Kraai diagnosed a series of test failures he was having on QNX.<br/> Two could be traced to tests building a &quot;.pbc&quot; file and then trying to<br/> overwrite it after it had been loaded. His brutal fix for that problem<br/> was to delete the file before overwriting it, but suspected there was<br/> a better approach to the problem.<br/><br/> The second series of tests were due to bugs in QNX&#39;s &quot;atof&quot;. So the<br/> fix here would be to tweak Configure to use Perl&#39;s own implementation.<br/><br/><br/><br/>bug in regcomp code leading to panic (#50114)<br/><br/> Yves Orton stopped and suggested a couple of source code changes to<br/> try and regretted that he didn&#39;t have more time to devote to the<br/> issue. He nevertheless found the time to commit change #33324 that he<br/> hoped would resolve the problem.<br/><br/> Apparently, it did.<br/><br/> In other news, Michael Schroeder (reporter of the bug) asked why<br/> &quot;$r=qr{^bar}; &quot;foo\nbar&quot; =~ /$r/m or die&quot; dies on blead, but not on<br/> 5.8. He tracked down where in the regexp engine things had changed (no<br/> mean feat) and wondered what the reasoning was.<br/><br/> Rick Delaney explained that he had made the change to fix a related<br/> matching problem, and had not thought to add a regression test that<br/> would have caught the change that Michael tripped over.<br/><br/> Yves felt that it could be fixed for 5.10.1.<br/><br/><br/><br/>modified hints for Darwin x86 64bit (#50946)<br/><br/> Daniel Quinlan supplied a patch to the Darwin hints file to allow a<br/> 64-bit perl build. Rafael applied the patch but Nicholas warned that<br/> there may be problems, since the 64-bitness of the build would not be<br/> reflected in machine/architecture pathnames. This could lead to all<br/> sort of mixed-bitness nightmares if different builds coexisted on the<br/> machine. Unless of course Darwin just does the right thing.<br/><br/><br/><br/>&quot;pod2man&quot; needs to translate some ASCII characters (#50950)<br/><br/> Mike Ward complained that backticks and dashes were being incorrectly<br/> translated by &quot;Pod::Man&quot;.<br/><br/><br/><br/>Install Perl-5.8.7 source on Solaris 10 Sparc (#50960)<br/><br/> Elad Dotan reported having trouble building Perl on Solaris, but<br/> provided so little information that diagnosis was difficult. Andy<br/> Dougherty tried, though.<br/><br/><br/><br/>Method dispatch breaks with &quot;defined(\&amp;sub)&quot; (#51072)<br/><br/> Dagfinn Ilmari Manns&aring;ker discovered that trying to call &quot;-&gt;next::can&quot;<br/> on a package that has not (yet) been defined will cause a segfault.<br/> Rafael wrote a nifty patch to autovivify it as an empty package.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> 288 new + 1499 open = 1787 (6 more, 4 less)<br/><br/><br/><br/><br/>This is the BBC<br/><br/> Devel::LeakTrace<br/> Andreas K&ouml;nig was surprised to discover that &quot;Devel::LeakTrace&quot;<br/> was broken, and in fact had been so since change #17968 from 2002.<br/> He wasn&#39;t sure on which side the fault lay.<br/><br/><br/><br/>In Brief<br/><br/> Robin Barker discovered some C files in the test suite that needed<br/> some consting goodness applied.<br/><br/><br/><br/> The recent change #33291 had VMS falling off the wall, so John E.<br/> Malmberg and Craig A. Berry put it back together again.<br/><br/> the king&#39;s men<br/><br/><br/> Reini Urban gave the Cygwin hints a little TLC. Applied.<br/><br/><br/><br/> Steve Hay revived the discussion about automated generation on Win32<br/> configuration information, saying that he had improved the situation<br/> with some Makefile trickery, but full automation remained elusive.<br/><br/> bespoke configuration<br/><br/><br/> Porting/ really does indenting now. (Change #33352).<br/><br/><br/><br/> Jim Cromie tweaked his recent opcode generator tweaks, shaving a few<br/> more bytes from op.c.<br/><br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Last week&#39;s is here<br/><br/> This Week on perl5-porters - 10-16 February 2008<br/><br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation to help support the development of Perl.<br/><br/> Thu, 28 Feb 2008 15:38:17 +0000 This Week on perl5-porters - 10-16 February 2008 by David Landgren This Week on perl5-porters - 10-16 February 2008<br/><br/> &quot;So should we punt in this case and revert to the old warning for<br/> &quot;SvGAMAGICAL&quot;? My personal opinion is to leave it. People doing<br/> strange things should not be surprised by strange results.&quot; -- Rick<br/> Delaney, debating the Principle of Least Surprise (or something like<br/> that).<br/><br/>Topics of Interest<br/><br/>Stratus VOS patches<br/><br/> Paul Green delivered his work to make perl 5.8, 5.10 and blead work on<br/> Stratus VOS. The main sticking points are a filename that begins with<br/> a &#39;-&#39; (minus), and filenames longer than 32 characters.<br/><br/> Some of the remaining test suite failures were due to VOS&#39;s slightly<br/> funky TCP stack implementation, and Paul was slightly suspicious that<br/> one of the failures indicated a problem in VOS&#39;s implementation of<br/> UDP.<br/><br/> Martien Verbruggen explained the finer points of POSIX&#39;s &quot;ctime&quot;<br/> behaviour to help Paul understand another failure, and that %e would<br/> be the best thing to use. Unfortunately, other so-called<br/> POSIX-compliant platforms *don&#39;t* implement %e, so it can&#39;t be used in<br/> perl&#39;s test suite.<br/><br/><br/><br/> Paul later listed the remaining issues on Stratus VOS and was happy to<br/> learn that in some ways VMS is even more restrictive than VOS.<br/><br/> 20 levels!<br/><br/><br/>ext/Time/Piece/Piece.xs use of &quot;strptime&quot;<br/><br/> In the above process, Paul had a close look at &quot;strptime&quot; used in<br/> &quot;Time::Piece&quot; and thought it looked suspiciously identical to<br/> FreeBSD&#39;s own implementation, but it lacked the grace to acknowledge<br/> FreeBSD with a copyright.<br/><br/> Jerry D. Hedden demanded it be pulled from the core. People explained<br/> why this was not possible (modules check in, but they never check out)<br/> and that the module had received Larry Wall&#39;s blessing of The Right<br/> Way to do time manipulations. Other people complained that while the<br/> module was useful, the name was too cutesy by half.<br/><br/> Matt Sergeant owned up to being the responsible party, and said he&#39;d<br/> reinstate the copyright, which probably was chopped in an edit by<br/> mistake.<br/><br/> lost in the translation<br/><br/><br/>Syntax proposal for matching balanced strings<br/><br/> Johan Vromans noted that 5.10 regexp enhancements had made it much<br/> easier to write regular expressions that match balanced strings, but<br/> that it would be nice to special-case the easy problems with some<br/> syntactic sugar.<br/><br/> Abigail found three flaws in the proposal. David Nicol thought that it<br/> would be better, on the Teach A Person to Fish principle, to provide a<br/> good tutorial to help people figure out how to write the expressions<br/> themselves.<br/><br/><br/><br/> David then suggested an alternate syntax for matching balanced<br/> strings, but no code. And I think &quot;\R&quot; already means something<br/> Unicodish.<br/><br/> improved improvement proposal<br/><br/><br/>Show constant in &quot;Useless use of a constant in void context&quot;<br/><br/> Rick Delaney mentioned that he would like to see exactly which useless<br/> constant was being used in void context, rather than the current vague<br/> error message which isn&#39;t very helpful. To show he was serious, he<br/> offered a patch that did just that. Rafael thought the idea was Good<br/> and applied the patch.<br/><br/> Hugo van der Sanden listed a number of edge cases where this could<br/> lead to trouble, but Rafael thought that people who triggered the edge<br/> cases should probably know why they were triggering them, and Rick<br/> agreed.<br/><br/> the error message is the Truth<br/><br/><br/>Change 33302 breaks my Win32 build<br/><br/> Steve Hay noticed that change #33302 was falling over on Win32, with<br/> even &quot;miniperl&quot; crashing. The problem was in pp_hot.c, where an<br/> equality against &quot;cLISTOP-&gt;op_last-&gt;op_type&quot; was broken, because<br/> &quot;op_last&quot;, while not &quot;NULL&quot;, was pointing out the window. Sven<br/> Dowideit reported similar problems on Solaris.<br/><br/><br/><br/>Change 33313 causing failures<br/><br/> Jerry D. Hedden reported a new failure in t/op/pat.t that manifested<br/> itself when run with &quot;TEST&quot;, but not in the harness. Much discussion<br/> followed regarding how the TAP parser deals with garbage.<br/><br/> The failure in t/op/pat.t was resolved to most people&#39;s satisfaction.<br/> The underlying problem was a typo: &quot;$ = ~/.../&quot; rather than &quot;$ =~<br/> /.../&quot; and there was a bit of discussion about why that returns the<br/> complement of 0.<br/><br/><br/><br/>DTrace probes for bleadperl part 2<br/><br/> Sven Dowideit tried added more DTrace probes to perl, notably to track<br/> SV allocations, and module loads but was still having trouble with<br/> getting op.c to cooperate.<br/><br/><br/><br/>Shell patterns are subject to tilde expansion<br/><br/> Nicholas Clark discovered a latent bug in Configure that would<br/> manifest itself on a machine without a &quot;csh&quot; C shell installed. He was<br/> rather surprised to trace the origin of the bug all the way back to<br/> Perl 1, and defied anyone to find a more ancient bug.<br/><br/> Given the crappiness of &quot;csh&quot;, the true miracle is that no-one<br/> discovered this bug sooner.<br/><br/><br/><br/>Slowdown of &quot;sort keys %hash&quot; under &quot;use locale&quot;<br/><br/> Marcus Holland-Moritz noticed that &quot;use locale&quot; prevented a hot C<br/> routine from being cached during a sort of hash keys, and suggested a<br/> simple solution, although he was uncertain whether it could break code<br/> out in the wild.<br/><br/> Rafael thought the patch looked fine, and suggested that if a bug did<br/> indeed emerge afterwards, it would probably be due to the magic<br/> handling code (and so the fix would be made there).<br/><br/> cache dispenser<br/><br/><br/>Bug or feature in &quot;B::class()&quot;<br/><br/> Jim Cromie wondered why<br/><br/> my $start = B::main_start();<br/> $start-&gt;class;<br/><br/> produced a &quot;Can&#39;t locate object method&quot; error message. Eirik Berg<br/> Hanssen explained why and suggested an alternate syntax that would do<br/> want Jim wanted. Joshua ben Jore said that it was that way because<br/> no-one had bothered to implement it.<br/><br/> if you build it<br/><br/><br/>Testing &quot;B&quot;<br/><br/> Jim Cromie said that a full test suite for the &quot;B&quot; modules would be a<br/> great idea. In the process of improving &quot;B::Generate&quot;, he had begun<br/> made a good start on doing just that. He posted his current work in<br/> progress and asked if there was interest in having it in blead.<br/><br/> Michael G. Schwern made some very good suggestions on how to better<br/> leverage the testing infrastructure to make Jim&#39;s work easier and<br/> improve the quality of the diagnostics when things break.<br/><br/> Jimmy B Goode<br/><br/><br/>Assistance with IPC modules and perl 5.10<br/><br/> Tom Callaway wrote to say that he was preparing perl 5.10 for<br/> inclusion in the upcoming Fedora 9 release, and was having troubles<br/> with &quot;IPC::ShareLite&quot; and &quot;IPC::SharedCache&quot;. This was holding up the<br/> process and time was running out, which meant he&#39;d have to go with<br/> 5.8.<br/><br/> That these two particular modules were deemed to be on the critical<br/> path puzzled a number of the porters who had either never heard of<br/> them or had only a vague idea what purpose they served. A careful<br/> examination of the failures indicated that these two modules were in<br/> fact optional, and weren&#39;t sufficient reason to block the Fedora<br/> release.<br/><br/> Nevertheless, Tom wanted to know if and how they could be fixed. The<br/> concensus was that it was a 32/64 bit issue rearing its ugly head.<br/><br/> Dave Rolsky was of the opinion that these two modules sucked so much<br/> that no-one in their right mind should be using them.<br/><br/> memcached, memcached, memcached<br/><br/><br/>Patches of Interest<br/><br/>&quot;PERL_MAGIC_uvar_elem&quot; should be &#39;u&#39; in dump.c<br/><br/> Vincent Pit discovered an inconsistency between the magic type<br/> &quot;uvar_elem&quot; and its symbolic name. He also wondered whether it was<br/> even used any more. Rafael applied the fix and mentioned that &quot;DBI&quot;<br/> and/or &quot;Tk&quot; use it.<br/><br/><br/><br/>Is IPC/SysV/SysV.xs compiling?<br/><br/> Marcus Holland-Moritz wanted to know if Steve Peters and Jarkko<br/> Hietaniemi were still seeing black smoke compiling this module. If<br/> not, this would allow him to proceed in the release of a new version.<br/><br/><br/><br/>use svtype<br/><br/> Robin Barker straightened out the declaration of &quot;sv_type&quot; as an<br/> &quot;svtype&quot; instead of the current mish-mash of &quot;I32&quot; and &quot;U32&quot; types,<br/> and added a sprinkle of consting goodness into the mix. Applied by<br/> Rafael.<br/><br/><br/><br/>doio.c &quot;Perl_my_lstat&quot; revisited<br/><br/> Vincent Pit had a look at the implementation of &quot;my_lstat&quot; and<br/> discovered that magic was called two times too many and could generate<br/> a slew of superfluous warnings with &quot;-l undef&quot;. He corrected that and<br/> also fixed a test that was passing when it shouldn&#39;t. Steve Peters<br/> thought the change looked good enough and applied it.<br/><br/><br/><br/>Splitting OP_CONST<br/><br/> Vincent took Nicholas Clark at his word (from the pp_const, not, that,<br/> hot thread) and split &quot;OP_CONST&quot; into two separate ops. He had it<br/> running correctly on both threaded and non-threaded builds, although<br/> no-one picked it up to apply it to blead.<br/><br/> what&#39;s a semaphore<br/><br/><br/>Updating &quot;Thread::Semaphore&quot; and &quot;Thread::Queue&quot;<br/><br/> Jerry D. Hedden cast his net wider in the threads infrastructure and<br/> spent some time working with &quot;Thread::Semaphore&quot;. After a couple of<br/> false starts and doing battle with &quot;Test::More&quot; on 5.8.0, he was able<br/> to release version 2.04, which Rafael applied to blead.<br/><br/><br/><br/> Once that was out of the way, Jerry took a look at &quot;Thread::Queue&quot; and<br/> added some useful functionality and a whole pile of tests.<br/><br/><br/><br/> Jerry discovered that &quot;Thread::Semaphore&quot; will barf on non-numeric<br/> parameters, but will happily accept &quot;$sem-&gt;up(0.5)&quot; or<br/> &quot;$sem-&gt;down(-1)&quot;. Whilst these could be construed as being a semaphore<br/> that can&#39;t make up its mind and a semaphore being raised,<br/> respectively, Jerry was inclined to classify them as errors as well.<br/><br/> If no-one voices objections soon, that&#39;s probably what such<br/> shenanigans will become.<br/><br/><br/><br/>Don&#39;t install threads files on non-threaded Perls<br/><br/> H.Merijn Brand thought that all the threads files that were installed<br/> on a non-threaded build were pretty pointless, untidy and/or a waste<br/> of space. So Jerry D. Hedden patched the installer to prevent that<br/> from happening. Rafael Garcia-Suarez applied it, and H.Merijn<br/> rejoiced.<br/><br/> Then he discovered another set of thready files and wondered if they<br/> could be axed as well.<br/><br/><br/><br/>New and old bugs from RT<br/><br/>More adventures on IRIX (#33849)<br/><br/> David Cantrell announced that he had warmed up his IRIX iron, and had<br/> taken the previous suggestions and fixes out for a spin. He reported<br/> that the compilation had proceeded somewhat further, but still wound<br/> up crashing and burning.<br/><br/> Andy Dougherty, unfazed by such minor trivialities, moved onto Plan B,<br/> which involves using &quot;make minitest&quot;, to run a health check on<br/> &quot;miniperl&quot;. He warned that there may many spurious errors due to tests<br/> relying on modules that have not yet been built but nevertheless may<br/> provide some clues to what is going wrong.<br/><br/> Andy&#39;s Plan C would be to compile without &quot;-O3&quot; optimisation (his<br/> initial suspicion being that the C compiler optimiser is getting<br/> confused). Were David feeling particularly brave, he could pin-point<br/> the offending file by compiling files with personalised optimisation<br/> settings, and the resulting knowledge gleaned from the exercise could<br/> be safely stowed away in the IRIX hints file.<br/><br/> Nicholas suggested David investigate &quot;ccache&quot; if he was serious about<br/> trying this last approach.<br/><br/> the real question is, how many people still use IRIX?<br/><br/><br/>Use of inherited AUTOLOAD for non-method is deprecated (#47047)<br/><br/> Rick Delaney revived a dead bug that had slipped through the cracks in<br/> the run-up to 5.10. Steve Peters applied it, and Rafael Garcia-Suarez<br/> hastily unapplied it, since a minor detail that Rick overlooked in the<br/> implementation caused segfaults on other platforms.<br/><br/> Rafael explained that the ultimate correct fix would add a lot of<br/> make-work code and wasn&#39;t sure that the cost was worth it. Rick<br/> concurred.<br/><br/><br/><br/>&quot;%^H&quot; affecting outside file scopes (#50706)<br/><br/> Rick Delaney discovered that &quot;%^H&quot; hints could leak across file scopes<br/> and thought that this wasn&#39;t right. He then created a small patch that<br/> he thought should fix the problem. Rafael believed that Rick was<br/> right, so he applied it.<br/><br/><br/><br/>&quot;goto&quot; error? (#50742)<br/><br/> You cannot &quot;goto&quot; a subroutine declaration. This is by design.<br/><br/><br/><br/>Bug fix in malloc.c (#50856)<br/><br/> Mark Noyes patched the perl memory management helper routine<br/> &quot;getpages_adjacent&quot; to work around a bug that manifests itself on<br/> Solaris with 5.6.1 and 5.8.8. No reports as to whether this is<br/> (still)? a problem in 5.10 or blead.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> 287 new + 1498 open = 1785 (Created: 6, Closed: 5)<br/><br/><br/><br/>In Brief<br/><br/> Paul Marquess thanked Jan Dubois for spotting an omitted change to<br/> &quot;DB_File&quot;. He explained that the impact was purely cosmetic and would<br/> do something about it the next time something major was scheduled.<br/><br/><br/><br/> Rafael Garcia-Suarez applied Jerry D. Hedden&#39;s read-only variable<br/> tests from last week.<br/><br/><br/><br/> Jerry also found an unused variable in perlio.c and Rafael applied<br/> that as well.<br/><br/> less bloat<br/><br/><br/> Jerry then needed help with a &quot;threads::shared&quot; code issue that works<br/> on blead but warns on maint. Rafael solved it neatly by pointing out<br/> that the code in question would never be backported to maint since the<br/> change is technically a change in the API. And thus it could be<br/> wrapped up in &quot;#ifdef&quot;s.<br/><br/><br/><br/> Nicholas Clark isolated an interesting self contained task dealing<br/> with replacing two ops by one op, that would be a nice introduction<br/> for someone wanting to get their hands dirty working on the internals.<br/><br/> Philippe Bruhat expressed interest, but then Nicholas spoiled the fun<br/> by discovering that a one-character patch to solved the<br/> problem nicely.<br/><br/> the art is knowing which one character to add<br/><br/><br/> Robin Barker saw that the last run of &quot;make regen_header&quot; tweaked<br/> pod/perlapi.pod and posted the changes in a patch. Unapplied.<br/><br/> why is this not automatic?<br/><br/><br/> Abigail also thought that her TODO tests for issues relating to &quot;keys<br/> %+&quot; does not return the correct keys (bug #50496) had been ignored.<br/> Rafael replied that one of the non-TODO tests was also failing, so he<br/> TODOified it as well, and applied it all in change #33313.<br/><br/><br/><br/> Abigail also tweaked perlfunc.pod regarding &quot;%+d&quot; (plus) &quot;sprintf&quot;<br/> format specifiers. Accepted by Rafael.<br/><br/><br/><br/> Vincent Pit ran into some &quot;Unbalanced string table refcount&quot; errors on<br/> a non-threaded blead, that Rafael fixed with change #33322.<br/><br/> you just have to ask<br/><br/><br/> Daniel Frederick Crisman wrapped up the no link label on CPAN html<br/> debate by suggesting that the finer points of POD are best discussed<br/> on the &quot;pod-people&quot; mailing list.<br/><br/><br/><br/> Michael Schroeder asked whether Yves had been able to look at<br/> &quot;0&quot;x51)=~/0{50}/ causing a panic on PPC bug (#50114).<br/><br/> lost IRL<br/><br/><br/> In a similar vein, Jan Dubois wondered if his fix for bit-fields for<br/> VC that would solve bug #50386 had been Warnocked.<br/><br/><br/><br/> Steve Hat noticed that change #33292 to bitfields caused compiler<br/> warnings on Win32/VC6. He and Jan discussed the problem, which was<br/> caused by different types (&quot;int&quot;s and &quot;char&quot;s) being used in<br/> bit-fields. Steve cleaned everything up with change #33315.<br/><br/><br/><br/>About this summary<br/><br/> 3-10 February 2008<br/><br/><br/> This summary was written by David Landgren. The in-laws are in town,<br/> so this week&#39;s summary has even less error checking than usual. Please<br/> forgive me if there are even more typos and wordos than usual.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation to help support the development of Perl.<br/><br/> Thu, 21 Feb 2008 01:06:53 +0000 This Week on perl5-porters - 3-10 February 2008 by David Landgren This Week on perl5-porters - 3-10 February 2008<br/><br/> &AElig;var Arnfj&ouml;r&eth; Bjarmason: &quot;It would be a shame if we shipped a perl<br/> with known segfaults.&quot;<br/> Nicholas Clark (ever the pragmatist): &quot;It wasn&#39;t solved in 5.8.8<br/> so it&#39;s not a regression.&quot;<br/><br/>Topics of Interest<br/><br/>&quot;pp_const&quot; not that hot?<br/><br/> Nicholas Clark looked at an execution profile, and saw that in a given<br/> workset, &quot;pp_const&quot; is called around 200 million times, and in &quot;if&quot;<br/> statement within is taken only 3000 times. Since the decision to take<br/> it or not is known at compile time, it could be split into two<br/> discrete ops which could only be a win.<br/><br/> No takers, but definitely a nice self-contained project for someone<br/> who wants to dip their toe in the p5p waters.<br/><br/> had I infinite tuits<br/><br/><br/>New snapshot for 5.8.9 (Perl @ 33218)<br/><br/> Last Saturday (the 2nd of February), Nicholas made 65 commits in a row<br/> to the Perforce repository, thus raising the number of commits in the<br/> repository to 33218.<br/><br/> He then posted a snapshot of what will become Perl 5.8.9, alas,<br/> slightly too late on Saturday afternoon to be included in the previous<br/> summary (which cuts off at around 16:00 UTC).<br/><br/> Apart from various known issues like IRIX and C++ compilers, Nicholas<br/> was very interesting in hearing how it coped on VMS, since he<br/> integrated lots of changes from 5.10 pertaining to VMS, and wasn&#39;t<br/> sure if his selection was sufficient.<br/><br/> Jerry D. Hedden pointed out that some of errors on the Cygwin platform<br/> could be solved by backing out a change dealing with consting.<br/><br/> Andy Armstrong offered to add &quot;dtrace&quot; support (now that he&#39;s an<br/> expert having already done it for 5.10). Nicholas hoped he could<br/> backport it from the 5.10 track, assuming it gets into what will be<br/> 5.10.1.<br/><br/> Craig Berry promised to review the VMS changes. H.Merijn Brand tweaked<br/> his 5.8-dor patch to make sure it could still add the &quot;//&quot; defined-or<br/> operator to 5.8.<br/><br/> released before christmas<br/><br/><br/> Jerry asked whether he should try to fix some of the warnings that<br/> were cropping up in recent builds; Nicholas said he hoped to locate<br/> the secret patch that, if applied, would make them all go away.<br/><br/><br/><br/> Jarkko Hietaniemi buzzed Mark Lutz, who works at a large aerospace<br/> firm and has access to some some serious hardware. He reported success<br/> on an SGI but gave up on a Cray X1.<br/><br/> David Cantrell reported compilation success on a Cray YMP, albeit with<br/> a number of test failures.<br/><br/><br/><br/> Dave also mentioned that his NetBSD/alpha was perfect barring one<br/> single failure in POSIX/t/sigaction.t.<br/><br/><br/><br/>Data corruption in CPAN shell?<br/><br/> H.Merijn Brand reported problems with the CPAN shell. Andreas K&ouml;nig<br/> mentioned that Frank Wiegand had identified the cause as being a<br/> recent version of &quot;Safe&quot; and that H.Merijn should downgrade to Safe<br/> version 1.12. (Only 5.8.8 is affected, 5.10 is fine).<br/><br/> Rafael thought he had fixed it with change #33236, it being something<br/> to do with version objects being returned from Safe compartments. John<br/> Peacock identified the interaction problem between &quot;; and<br/> &quot;Safe&quot;, and suggested Rafael release his fix in Safe 1.15 and all<br/> would be well.<br/><br/> playing it safe<br/><br/><br/>Possible Y2038 solution<br/><br/> Michael G. Schwern mentioned a solution he had heard about concerning<br/> the Y2038 problem, which is bring dates beyond back to before 2038 and<br/> run it through 64-bit safe routines in order to derive the correct<br/> time zone and daylight savings information.<br/><br/> licence-friendly code<br/><br/><br/> Jesse Vincent pointed out that this approach will fail whenever<br/> timezones change, the most recent high-visibility exemplar of which<br/> was the USA&#39;s daylight savings changes in 2007.<br/><br/> Ben Morrow thought that we could only do so much without shipping a<br/> full timezone database. The conversation continued into excruciating<br/> detail about the periodicity of calendars and how to deal with<br/> daylight savings tweakages.<br/><br/><br/><br/> As part of his research, Michael asked for a table of post-2038 times<br/> from a 64 bit system. Mark Mielke provided him with enough data to<br/> keep him going 700 years.<br/><br/> my 600th birthday is on a Saturday<br/><br/><br/>64 bit &quot;localtime_r()&quot; on 32 bit &quot;time_t&quot; machines<br/><br/> Michael then delivered some experimental code to provide 64-bit time<br/> routines suitable for 32-bit hardware. Jan Dubois wondered about the<br/> licensing issues (since Michael had used code from<br/><br/> Andy Dougherty explained how to make the code more platform agnostic.<br/> Michael explained that the code needs quite a bit of work still and<br/> pointed out the areas where he was not happy. Andy thought that much<br/> of the problems could be addressed with Configure probes, and promised<br/> to get a round tuit.<br/><br/><br/><br/>perl compiler, continued<br/><br/> David Nicol wondered if Reini Urban&#39;s compiler work would allow, for<br/> example, a known IV passed to a function to be passed as a bare &quot;int&quot;,<br/> thereby removing a certain amount of indirection required to get from<br/> the pointer to an &quot;SV&quot; down to the raw &quot;int&quot;.<br/><br/><br/><br/>op/sprintf.t and op/write.t failures with &quot;mingw-runtime-3.14&quot;<br/><br/> Rob Sisyphus reported that the changes made to the MinGW runtime in<br/> order to have a C99-compliant &quot;libmingwex&quot;, and said he&#39;d file a bug<br/> with them.<br/><br/><br/><br/>Slowdown in 5.10.0 regexes with atomic patterns<br/><br/> Dave Mitchell admitted to having chopped some code out of the regexp<br/> engine that dealt with the super-linear positive cache (no, I don&#39;t<br/> know what it does) on the grounds that he couldn&#39;t figure out how it<br/> could be triggered, nor did anything in the test suite tickle it. And<br/> it got in the way of making the regexp engine non-recursive.<br/><br/> Moritz Lenz replied that fixing it up was probably not that important<br/> since the test case was rather pathological, insofar that if someone<br/> were to write such a pattern and encounter the slowdown, it would be<br/> easy to reformulate it to avoid the problem.<br/><br/> not really a bug<br/><br/><br/>OpenVMS largefile &quot;getpos&quot;/&quot;setpos&quot;<br/><br/> Hein van den Heuvel was wondering why Perl couldn&#39;t deal with large<br/> files (&gt;2GiB) out of the box, since the information returned by<br/> &quot;getpos&quot; (a.k.a. &quot;tell&quot;) is an opaque cookie that is passed to<br/> &quot;setpos&quot; (a.k.a. &quot;seek&quot;) as required. Therefore perl should just use<br/> that, and get large file handling for free.<br/><br/> Craig Berry thought that the interface was cracked open and exposed to<br/> be compatible with &quot;seek&quot; and &quot;tell&quot;. If people didn&#39;t really that, he<br/> proposed a two-line fix that restore the native VMS file positioning<br/> behaviour.<br/><br/> peeking behind the curtain<br/><br/><br/>Patches of Interest<br/><br/>&quot;win32_async_check()&quot; didn&#39;t loop enough<br/><br/> In the beginning, &quot;win32_async_check()&quot; could interact poorly with<br/> &quot;win32_msgwait&quot;, and the denizens of the Win32::GUI mailing list<br/> determined that it could go into an infinite loop and consume all<br/> available CPU. It was subsequently patched to prevent this occurring,<br/> but the balance swung the other way, and caused 30 second DDE timeouts<br/> because it didn&#39;t loop enough. Robert May provided a patch to find the<br/> middle ground, and this Rafael applied.<br/><br/> the goldilocks syndrome<br/><br/><br/>Give Win32 message windows proper window procedures<br/><br/> Robert May then provided a second patch to improve the &quot;alarm&quot; and<br/> &quot;kill&quot; implementations on Win32. Rafael applied the patch to blead,<br/> and if everything checks out correctly, it may be backportable it to<br/> 5.10.<br/><br/> wake up, time to die<br/><br/><br/>sv.c consting<br/><br/> Steven Schubiger added some consting goodness to sv.c, which Rafael<br/> applied. So he did it again, and Rafael applied that too. And then<br/> again, and still Rafael followed. But then Steven delivered a fourth<br/> patch of consting goodness, but it didn&#39;t get applied.<br/><br/> repeat as necessary<br/><br/><br/>Extend t/ routine to set subprocess ENV<br/><br/> Jim Cromie was looking at the XML output from a MAD run, and needed to<br/> be able to specify an environment variable beforehand, and so set<br/> about adding a general mechanism to<br/><br/> Nicholas cautioned about the dangers of being insufficiently<br/> shell-agnostic, and suggested a hash key/value approach to let each<br/> platform implement the initialisation of the environment.<br/><br/><br/><br/>Feature bundles are the same across all subversions<br/><br/> Rafael applied Steffen M&uuml;ller&#39;s patch that ensures that any specific<br/> feature request (such as &quot;use feature 5.10.3&quot;) gets the same set of<br/> features as &quot;use feature 5.10&quot;.<br/><br/> The result is a little drastic but there doesn&#39;t seem a way around the<br/> possible inconsistencies that may arise. So, for now, the porters<br/> promise that no new features will be added in 5.10 (that would require<br/> an extension to the &quot;feature&quot; pragma, other new, non-&quot;feature&quot;<br/> features are fair game).<br/><br/> the features remain the same<br/><br/><br/>&quot;mg_magical()&quot; sometimes turns &quot;SvRMAGICAL&quot; on when it shouldn&#39;t<br/><br/> Vincent Pit returned to his magical patch with some test cases that<br/> demonstrated the problem.<br/><br/><br/><br/>Unwanted warnings from &quot;PerlIO::scalar&quot;<br/><br/> Hugo van der Sanden explained that his caution regarding the correct<br/> use of magic in Ben Morrow&#39;s patch for &quot;PerlIO::scalar&quot; was not meant<br/> to kill the patch dead. Ben Morrow responded with what he thought was<br/> a change that resolved the issue, although he wished there was a<br/> perlmagic.pod that would explain the finer points of magic.<br/><br/> Rafael thought that the patch looked good enough to take.<br/><br/><br/><br/>Optimize &quot;OP_IS_(FILETEST|SOCKET)&quot; macros<br/><br/> Jim Cromie reworked to generate more efficient macros<br/> written to opcode.h, by relying on the property of consecutive opcode<br/> numbers. Nicholas was very impressed, as this shaved 300 bytes off the<br/> size of util.o.<br/><br/> Jim followed up with another tweak that resulted in a dozen or so<br/> bytes being saved.<br/><br/> cache dispenser<br/><br/><br/>Watching the smoke signals<br/><br/> The most recent 5.8.9-to-be smoke failure on Windows, courtesy of<br/> Steve Hay.<br/><br/> Smoke [5.8.8] 33205 FAIL(F) MSWin32 WinXP/.Net SP2 (x86/2 cpu)<br/><br/><br/> And a series of blead failures, also from Steve, the most recent of<br/> which is<br/><br/> Smoke [5.11.0] 33261 FAIL(F) MSWin32 WinXP/.Net SP2 (x86/2 cpu)<br/><br/><br/>New and old bugs from RT<br/><br/>Hints for IRIX (#33849)<br/><br/> Andy Dougherty wrapped up the compiler issues on IRIX with a patch,<br/> that Rafael applied. Now to see if it works.<br/><br/><br/><br/>Residual threads crash (#45053)<br/><br/> Jerry D. Hedden reported that change #31864, designed to resolve bug<br/> #45053 made a valiant attempt at perfection, but if you run the test<br/> script repeated, it will emit periodically the message &quot;Bad free()<br/> ignored (PERL_CORE) during global destruction.&quot;<br/><br/><br/><br/>&quot;IO::Handle&quot; method &quot;say&quot; should ignore $\ (#49266)<br/><br/> &quot;Fixed in bleadperl by change #33258&quot; -- Rafael<br/><br/><br/>&quot;Scalar::Util&quot; - documentation problem (#49434)<br/><br/> Steve Peters excised the reference to a book mentioned in the<br/> documentation that will never see the light of day.<br/><br/><br/><br/>Attributes + Unknown Error (#49472)<br/><br/> Andreas K&ouml;nig&#39;s binary search revealed that the bug (bad diagnostics)<br/> was introduced with change #31255. Nicholas helpfully reposted the<br/> entire patch to the list. Dave Mitchell took one look at it and posted<br/> change #33265 three hours later to fix it.<br/><br/><br/><br/>Segfault on &quot;perl -e &#39;split //, unpack &quot;(B)*&quot;, &quot;ab&quot;&#39;&quot; (#50256)<br/><br/> Nicholas got to the bottom of the issue: &quot;split&quot; imposes scalar<br/> context on &quot;unpack&quot;, and parens in unpack templates had, um shall we<br/> say, undefined behaviour in scalar context.<br/><br/> behavioural modification<br/><br/><br/>perlop.pod - misnomer in % operator documentation (#50364)<br/><br/> Martin Becker&#39;s documentation tweak regarding modulus and common<br/> residues was accepted.<br/><br/><br/><br/>&quot;Filter::Util::Call&quot; problem with $_ (#50430)<br/><br/> Steve Hay twiddled the filter code to make the problem go away and<br/> also didn&#39;t break anything else in the tests, but was hoping someone<br/> more skilled in the art of filters would care to comment.<br/><br/> say we just called them a failed experiment?<br/><br/><br/>&quot;keys %+&quot; does not return the correct keys (#50496)<br/><br/> Jonas Kramer reported a bug with two issues, one of which was due to<br/> POD formatting issues on his terminal that causes &quot;%-&quot; to be rendered<br/> as &quot;%?&quot;. Don&#39;t laugh, people lose satellites for less than this.<br/><br/> The other issue was confirmed to be a true bug by Abigail, who went on<br/> to write some TODO tests for t/op/pat.t lest they be forgotten.<br/><br/><br/><br/>Perl 5.10.0 segfaults on &quot;format&quot; with &quot;my&quot; variables (#50528)<br/><br/> Stephan Springl delivered a delightfully concise test program to show<br/> how to make 5.10.0 coredump. It turns out that this is actually a<br/> marginal improvement over 5.8, since the same program will run the<br/> code without crashing, but will give the wrong results.<br/><br/> Dave Mitchell figured out what the problem and suggested two lines of<br/> enquiry to explore. Unfortunately he was waiting for a new delivery of<br/> tuits and was thus unable to do anything more.<br/><br/> beware the abominable newATTRSUB<br/><br/><br/>Compiling the latest 5.8 snapshot on QNX (#50530)<br/><br/> Matt Kraai reported difficulty getting Perl 5.8 up and running on QNX.<br/> &quot;getcwd&quot; seemed to be giving grief, as do possibly unsigned &quot;time_t&quot;<br/> data types.<br/><br/> Nicholas made some suggestions which cleared up some, but not all,<br/> errors.<br/><br/><br/><br/>&quot;when( @n &amp;&amp; %n )&quot; fails to smart match (#50538)<br/><br/> brian d foy filed a bug report following his request for comments on<br/> the behaviour of &quot;&amp;&amp;&quot; in a &quot;when&quot; clause. His argument was that the<br/> documentation does not coincide with the implementation, but didn&#39;t<br/> know which one needed to be fixed.<br/><br/> could be a feature<br/><br/><br/>Storable does not store &quot;REGEXP&quot; items (#50608)<br/><br/> &quot;sand&quot; (who I suspect is really Andreas K&ouml;enig&#39;s sandbox) filed a<br/> reminder bug to point out that &quot;Storable&quot; needs to be updated to<br/> handle the new &quot;REGEXP&quot; datatype in 5.11.<br/><br/><br/><br/>CPAN shell bug on AIX 5.3 (#50612)<br/><br/> Joachim G&ouml;rner built a 5.8.8 on AIX. When he tried to run a CPAN<br/> shell, it appeared to have trouble downloading the CPAN indices,<br/> trying to rename a file that doesn&#39;t exist.<br/><br/> He pointed out that 5.8.2 works correctly on the same machine.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> 289 new + 1494 open = 1783 (10 created, 39 closed)<br/><br/> ooh, someone&#39;s been busy<br/><br/><br/><br/>This is the BBC<br/><br/> Devel-StackTrace 1.15<br/> Dave Rolsky announced a fix in the shape of 1.16, available on<br/> CPAN.<br/><br/><br/><br/>New Core Modules<br/><br/> B::Generate 1.12_04<br/> Jim Cromie made a new release that works on both 5.10 and 5.8.<br/><br/><br/><br/> ExtUtils::MakeMaker 6.43_01<br/> Michael G. Schwern released a development version of the venerable<br/> ExtUtils::MakeMaker module. Rafael and Steve Peters brought blead<br/> up to date with the latest goodies.<br/><br/><br/><br/>In Brief<br/><br/> Moritz Lenz figured out that the weird &quot;__stack_ck_chk_fail_local&quot;<br/> errors was caused by compiling with &quot;-fstack-protector&quot;. Take it out<br/> and everything is fine. Andy Dougherty said he&#39;d look at providing a<br/> better test for &quot;Configure&quot;.<br/><br/> back to the drawing board<br/><br/><br/> Jarkko Hietaniemi revived an two year old message from the depths of<br/> his outbox regarding the possibility of intercepting a possible<br/> segmentation fault with &quot;unpack &#39;P&#39;&quot;.<br/><br/><br/><br/> H.Merijn Brand reported that gcc-4.2.3, HP-UX 11.23 and blead is not a<br/> recipe for happiness.<br/><br/> back to 3.4.6<br/><br/><br/> Jerry D. Hedden asked for, and received, co-maintenance of<br/> &quot;Thread::Queue&quot;. It&#39;s now dual-lifed, and so we may expect exciting<br/> new features on CPAN.<br/><br/><br/><br/> Yamashina Hio had some more questions about POD&#39;s L&lt;&gt; codes but<br/> received no answers.<br/><br/><br/><br/> Vincent Pit saw that &quot;mg_copy&quot; ought to take an &quot;I32&quot; instead of an<br/> &quot;int&quot;, and so it was done.<br/><br/><br/><br/> Alas, Jerry D. Hedden pointed out that this unfortunately causes<br/> &quot;initialization from incompatible pointer type&quot; warnings in<br/> &quot;threads::shared&quot;. He wondered if there were 32/64-bit issues at hand,<br/> and if so, what was the best way to resolve them.<br/><br/><br/><br/> Jim Cromie added some simple tests to validate &quot;-Dx&quot; output saying<br/> that it wasn&#39;t the most important thing in the world, but it might be<br/> helpful to know if and when the output changes in subtle ways.<br/><br/> canary in a perl mine<br/><br/><br/> Jim Cromie thought Nicholas&#39;s trick was so useful, he<br/> gave it the ability to pretty-print the macro expansions.<br/><br/><br/><br/> Jerry D. Hedden wrote a patch that added a lot of tests for read-only<br/> variables.<br/><br/> unapplied<br/><br/><br/> Jos&eacute; Auguste-Etienne posted a patch to hints/ to allow builds<br/> on AIX 4.2 to succeed. Applied.<br/><br/><br/><br/> Slaven Rezic is the current Tk maintainer.<br/><br/> security patches welcome<br/><br/><br/>About this summary<br/><br/> last week&#39;s news<br/><br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation to help support the development of Perl.<br/> Thu, 14 Feb 2008 18:12:47 +0000 This Week on perl5-porters - 27 January-2 February 2008 by David Landgren This Week on perl5-porters - 27 January-2 February 2008<br/><br/> &quot;It&#39;s a very naive implementation [...]. Given the scary comments<br/> Nicholas added in that code, I&#39;d be grateful to see whether one can<br/> come up with a case where that breaks&quot; -- Rafael Garcia-Suarez,<br/> warning about warning about undef.<br/><br/>Topics of Interest<br/><br/>Integrating blead changes back to maint<br/><br/> Some of the changes regarding Safe for 5.10 crept into the 5.8<br/> maintenance track during change #33111, and Jerry D. Hedden wondered<br/> if this was a bug or a feature. Nicholas Clark cursed Perforce but<br/> felt that it could all go into 5.8 in the long run.<br/><br/> entering a zone of turbulence<br/><br/><br/> Sure enough, black smoke emerged from the chimney of Steve Hay&#39;s lab.<br/><br/> Smoke [5.8.8] 33111 FAIL(F) MSWin32 WinXP/.Net SP2 (x86/2 cpu)<br/><br/><br/> Similarly, the integration of consting goodness in change #33119 also<br/> caused grief on Cygwin. Jerry wondered if the blead changes in #32681<br/> needed to be integrated as well.<br/><br/><br/><br/>5.8.x &quot;usemymalloc&quot; failures<br/><br/> In a discussion in a bug report (see #50352 below), it will be<br/> revealed that Perl&#39;s own &quot;malloc&quot; is usually faster than the &quot;malloc&quot;<br/> delivered with the C library. Jerry D. Hedden removed the<br/> &quot;-Uusemymalloc&quot; from his Cygwin build, thereby switching from the<br/> system &quot;malloc&quot; to Perl&#39;s, thereby gaining a boost in speed for free.<br/><br/> He reported success for 5.10 and blead, but a few tests failed in 5.8.<br/> In fact, the error appears to be there as far as he was able to go<br/> back in history.<br/><br/> there was a reason for this<br/><br/><br/>MM_Win32.t failures (caused by &quot;PathTools&quot; upgrade)<br/><br/> Steve Hay noticed that the major rewrite to Win32&#39;s &quot;catdir&quot;,<br/> &quot;catfile&quot; and &quot;canonpath&quot; caused major failures in<br/> &quot;ExtUtils::MakeMaker&quot; handling on Windows. The more Steve looked, the<br/> more he found the new behaviour confusing.<br/><br/> Michael G. Schwern believed that part of the problem was the use of<br/> &quot;catdir&quot;, when in fact &quot;catpath&quot; was what was called for (regarding<br/> the handling of &quot;C:&quot; as a volume specification).<br/><br/> Ken Williams chalked it up as another case of &quot;&quot;File::Spec&quot; is just<br/> hard to use correctly&quot;.<br/><br/> but Path::Class makes it fun!<br/><br/><br/><br/>&quot;next&quot; resetting match variables - bug or feature?<br/><br/> Nicholas Clark was puzzled by ext/B/t/deparse.t issuing a warning on<br/> 5.10 but not on 5.11, and narrowed it down to what remained in a match<br/> variable at the beginning of a loop. There was a difference, depending<br/> on whether the loop had reached the end of its scope, or had been<br/> short-circuited via a &quot;next&quot;.<br/><br/> coming up next<br/><br/><br/>Make Perl Y2038 safe<br/><br/> After the initial silence following Michael G. Schwern&#39;s plea to make<br/> Perl survive 2038, the thread kicked off in earnest this past week.<br/><br/> Some people believed that it was just a question of having a 64-bit<br/> machine and 64-bit &quot;time_t&quot; datatype. To a certain extent, this is<br/> already the case for many platforms other than Unix, be they IBM<br/> mainframes, VMS minis or even Windows micros. In this case, 32-bit<br/> &quot;time_t&quot; quantities are shims over datatypes of greater precision,<br/> provided only for compatibility with Unix.<br/><br/> The real problem is that of programs that store 4-byte &quot;time_t&quot;<br/> quantities in binary files. The other problem is with &quot;localtime&quot;<br/> which is currently specified for 32 bit quantities, which means that<br/> if the system can handle the year 2050 as an epoch, it might be unable<br/> to format it a readable manner. And one nice thing that &quot;localtime&quot;<br/> does, more or less for free, is to figure out which time zone you&#39;re<br/> in.<br/><br/> Craig Berry suggested that the first step would be to plan some tests<br/> to check the results of date arithmetic that push past 2038, mark them<br/> as TODO, and then go about fixing them. It would seem evident that<br/> some %Config variables would be useful to help people determine what<br/> is implemented natively and what needs to be worked around.<br/><br/> Mark Mielke pointed out that the &quot;DateTime&quot; modules are perfectly<br/> 2038-safe, but you still run into problems if you try to map a<br/> DateTime value outside the 1970-2038 range onto an 32-bit epoch value.<br/> Unfortunately, for some people, it&#39;s just too slow.<br/><br/> Aaron Crane gave a fascinating historical overview of time handling in<br/> Unix.<br/><br/> TAI64 for attosecond precision, anyone?<br/><br/><br/>op/sprintf.t and op/write.t failures with mingw-runtime-3.14<br/><br/> Rob &quot;Sisyphus&quot; observed incorrect &quot;sprintf&quot; behaviour with the latest<br/> MinGW runtime and wondered if anyone else had encountered the problem.<br/> He was hesitant to label it a MinGW bug, since simple C programs using<br/> &quot;sprintf&quot; worked as expected.<br/><br/> Yitzchak Scott-Thoennes said that he&#39;d heard that the MinGW developers<br/> had tweaked the behaviour of &quot;vnsprintf&quot;, and that put Rob on the<br/> right track.<br/><br/> bug, many eyes, shallow<br/><br/><br/>Patches of Interest<br/><br/>Fix &quot;uc&quot;/&quot;lc&quot; warnings in<br/><br/> Now that &quot;lc(undef)&quot; issues a warning as it return an empty string,<br/> one of the first (no doubt of many) consequences was that &quot;CGI&quot;&#39;s test<br/> suite issued a couple of warnings. Lincoln Stein folded the fix into<br/> his copy of &quot;CGI&quot;.<br/><br/> old horse, new tricks<br/><br/><br/> At that point, Nicholas Clark noticed that there were some gratuitous<br/> differences between the core version and that on CPAN, and hoped that<br/> the porters and Lincoln could reconcile the differences. No word back<br/> from Lincoln as we went to press.<br/><br/> get back together again<br/><br/><br/>Unwanted warnings from &quot;PerlIO::scalar&quot;<br/><br/> Ben Morrow produced a cut-down code sample that showed a spurious<br/> warning when opening a scalar as an output stream. He proposed a<br/> patch, but Hugo van der Sanden thought it would cause an overdose of<br/> magic.<br/><br/><br/><br/>Fix regression in File/<br/><br/> Alex Davies encountered a globbing problem in &quot;File::DosGlob&quot; and was<br/> amazed to discover that things had been like that since the year 2000.<br/> Steve Hay accepted the patch.<br/><br/><br/><br/>Don&#39;t forbid brace groups with g++ 4.2.2<br/><br/> Robin Barker noticed that the restriction against using brace groups,<br/> that appeared in 2006 for versions of g++ available at the time, no<br/> longer seemed to be required for the current g++ 4.2. This in turn<br/> allowed other warnings that g++ issued over the *REFCNT_inc macros to<br/> go away. Rafael accepted the patch.<br/><br/><br/><br/>New and old bugs from RT<br/><br/>IRIX hints (#33849)<br/><br/> Andy Dougherty came back with a new attempt to teach &quot;Configure&quot; how<br/> to the the right thing on the IRIX platform.<br/><br/> over to you, Mr. Cantrell<br/><br/><br/>Safe and &quot;use encoding &#39;utf8&#39;&quot; (#48419)<br/><br/> Back in December, Ville Luolajan-Mikkola reported that trying to use<br/> &quot;Safe&quot; and &quot;encoding :utf8&quot; results in a fight, and the program loses.<br/><br/> Rafael Garcia-Suarez suggested importing the needed methods into the<br/> Safe compartment might be a suitable work-around, but he was doubtful<br/> that Safe could be fixed safely.<br/><br/> putting the accent on safety<br/><br/><br/>Newbie redirect error (#50266)<br/><br/> James Nemanich stumbled across the RT queue and filed a bug about<br/> perl, not realising that in fact the bug was in his own code. People<br/> pointed him to Perlmonks, &quot;Perl::Critic&quot;, pragmas &quot;strict&quot; and<br/> &quot;warnings&quot;, the Learn Perl mailing list (empty message to<br/> &quot;; if you want to help) and Alexandr Ciornii<br/> went as far as rewriting the original code in modern day, idiomatic<br/> Perl.<br/><br/> all part of the service<br/><br/><br/>&quot;CGITempFile&quot; causes &quot;Insecure dependency in sprintf&quot; in perl 5.10.0 <br/>(#50322)<br/><br/> Steve Hay used &quot;CGI&quot; and uncovered a bug due to the fact that in 5.10,<br/> &quot;printf&quot; format strings are now considered tainted. In the case of<br/> &quot;CGI&quot;, the routine in question reads the contents of an environment<br/> variable when composing the canonical name of the temporary file.<br/><br/> Steffen M&uuml;ller suggested a couple of fixes to resolve the issue, the<br/> first one being the least intrusive, the second one being more to his<br/> likely.<br/><br/> Tim Jenness wondered why &quot;CGI&quot; didn&#39;t use &quot;File::Spec-&gt;tmpdir&quot;<br/> instead, since this particular wheel has already been invented over<br/> there.<br/><br/> taint fun<br/><br/><br/> Lincoln Stein stopped by to say that he was going to use Steffen&#39;s fix<br/> in an upcoming 3.33 release.<br/><br/> still accepting patches<br/><br/><br/>Perl 5.10 &quot;Storable&quot; extremely slow for large trees of data (#50352)<br/><br/> Clinton Pierce had a data structure that when dumped with<br/> &quot;Data::Dumper&quot;, produced about 8Mb of output. The same structure takes<br/> less than a second to be dumped with &quot;Storable&quot;, as long as perl 5.6<br/> is used. If perl 5.10 is employed instead, the time taken balloons out<br/> to 5 to 8 seconds.<br/><br/> Naturally he wanted to know whether this was a bug. Nicholas Clark<br/> suggested he take the 2.18 version available on CPAN (which is bundled<br/> with 5.10) to see if there was any difference on 5.6 (thereby<br/> isolating the problem to the module or the core. Unfortunately Clinton<br/> was on a Windows box without a compiler. Fortunately, Steve Hay was<br/> around and he was able to compile 2.18 on 5.6, and confirmed the<br/> slowdown on both 5.8 and 5.10 (while 5.6 remained fast).<br/><br/> After some more research, Steve reported that the choice of &quot;malloc&quot;<br/> (Perl&#39;s or the C library) made a very significant difference to the<br/> time taken. In both cases, Perl&#39;s own &quot;malloc&quot; was a couple of orders<br/> of magnitude faster. He noted that Activestate built their Perl<br/> distribution on Windows with the system &quot;malloc&quot; since it was a<br/> necessary precondition for their &quot;fork&quot; emulation.<br/><br/> Curiously enough, Clinton&#39;s 5.6 installation was already using the<br/> system &quot;malloc&quot;. No-one was able to pin down the precise reason for<br/> the slowdown, although it was likely that 5.8 and 5.10&#39;s full UTF-8<br/> implementation may be a culprit.<br/><br/> fancy a strawberry?<br/><br/><br/>perlop.pod - misnomer in % operator documentation (#50364)<br/><br/> Martin Becker suggested a more mathematically precise definition of<br/> the modulus operator, and provided a patch to prove it.<br/><br/> unapplied<br/><br/><br/>unexpected &quot;exit&quot; in &quot;open3()&quot; on win32 (#50374)<br/><br/> Alex Davies reported a curious set of circumstances that would cause<br/> &quot;IPC::Open3&quot; exit when you least expected it.<br/><br/> this is a feature?<br/><br/><br/>&quot;GIMME_V&quot; broken with 5.10.0/GCC and XS (#50386)<br/><br/> Robert May reported some strife with &quot;GIMME_V&quot; always returning<br/> &quot;G_VOID&quot; regardless of context with an Activestate perl and XS<br/> compiled with gcc. On the other hand, the same code compiled with VC++<br/> 6 behaved as expected.<br/><br/> Jan Dubois explained that this was due to a difference in how gcc and<br/> VC++ laid out their bitfields. It turns out that VC++ is rather<br/> profligate in its use of memory to store a number of bitfields, and<br/> Jan promised to deliver a patch that would allow VC to be more<br/> parsimonious in its memory consumption.<br/><br/> Armed with this information, Robert was able to twiddle a switch on<br/> gcc to order it to lay out bitfields in an identical manner to VC++,<br/> which solved his immediate problem.<br/><br/> Unfortunately, a blanket compiler switch override would then cause a<br/> gcc for a Strawberry Perl to compile his XS module incorrectly, and<br/> thus Rob needed to know how one could figure out what compiler was<br/> used to build the perl within a Makefile.PL. Jan suggested probing for<br/> values in the &quot;Config&quot; hash, as well as all you ever wanted to know<br/> but were too afraid to ask about distinguishing an Activestate build<br/> of perl from a perl built directly from source.<br/><br/><br/><br/> Jan followed up with a patch to lock down the underlying sizes used in<br/> constructing bitfields.<br/><br/><br/><br/>&quot;Filter::Util::Call&quot; problem with $_ (#50430)<br/><br/> Ambrus Zsban reported an oddity with an identity source filter (that<br/> is, one that doesn&#39;t transform anything). If he removed an innocuous<br/> assignment to $_, everything stopped working.<br/><br/> deep filter voodoo<br/><br/><br/>Perl5 Bug Summary<br/><br/> 321 new + 1491 open = 1812 (15 created, 1 closed)<br/><br/><br/><br/><br/>New Core Modules<br/><br/> B-Generate 1.12_03<br/> Jim Cromie uploaded a development version of &quot;B::Generate&quot; that<br/> behaves correctly with 5.10 and 5.11 (although it segfaults on<br/> 5.8). He was hoping to be made co-maintainer of the module, and<br/> had a couple of questions for the porters, although no-one<br/> ventured their opinion.<br/><br/><br/><br/> He also had some special &quot;B&quot; portability macros fall out as a<br/> consequence of the above.<br/><br/><br/><br/>This is the BBC<br/><br/> Devel-Cover-0.63<br/> &quot;OP_SETSTATE&quot; is no longer. Paul Johnson said he&#39;d get around to<br/> fixing it.<br/><br/><br/><br/> Devel-StackTrace-1.15<br/> Non-existent documentation leaves the implementation open to<br/> interpretation. Nicholas locked the implementation down and<br/> Devel::StackTrace had bet the wrong way. Dave Rolsky released 1.16<br/> to CPAN.<br/><br/><br/><br/> Net-DNS-0.62<br/> The test file t/04-packet-unique-push.t failed in a build, but ran<br/> successfully within the debugger.<br/><br/> the worst sort of failure<br/><br/><br/>In Brief<br/><br/> John E. Malmberg commented that showing the pid when running under<br/> &quot;-Dv&quot; would be more useful if it were rendered as hex under VMS, since<br/> all the other VMS utilities do so. Craig A. Berry wondered if that<br/> just didn&#39;t make things more confusing compared to how Perl works on<br/> all the other platforms<br/><br/><br/><br/> Robin Barker&#39;s patch to silence compiler warnings about clobbering<br/> volatile C stack variables was deemed suitable by Rafael<br/> Garcia-Suarez.<br/><br/><br/><br/> Steven Schubiger&#39;s consting of util.c made it in.<br/><br/><br/><br/> He also added some consting tweaks to toke.c and universal.c, which<br/> Rafael applied.<br/><br/> Andy would approve<br/><br/><br/> He also managed to pull off a remarkable &quot;const char *const str&quot; in<br/> taint.c.<br/><br/><br/><br/> Moritz Lenz reported an issue that cropped up on Perlmonks, where a<br/> simple regexp ran 1.5 orders of magnitude more slowly on 5.10. Andreas<br/> K&ouml;nig identified the problem as being change #27903, in which Dave<br/> Mitchell removed some recursion trickery. Neither Dave nor Yves Orton<br/> were around to comment on the issue.<br/><br/><br/><br/> Yitzchak found a code example in &quot;POSIX&quot; that had drifted out of focus<br/> and suggested how to make it work again. Applied.<br/><br/> $b be banished<br/><br/><br/> Steve Hay tidied up some compiler warnings on Win32, but Nicholas<br/> Clark came up with a better technique.<br/><br/> Moritz may also have uncovered a problem building blead with a<br/> parallel make, although the jury is still out.<br/><br/><br/><br/><br/> change #33109 trumps change #33106<br/><br/><br/> Scott T. Hildreth reported a segfault with &quot;Term::ReadLine::Gnu&quot;.<br/> Rafael was inclined to think the problem was a signal handler issue<br/> and wondered if &quot;libreadline&quot; was to blame.<br/><br/><br/><br/> brian d foy was trying to clarify smart match behaviour in &quot;when&quot;,<br/> when the &quot;when&quot; contained a &quot;&amp;&amp;&quot;. He was troubled by differences in<br/> what the documentation said and what the implementation did.<br/><br/> learning perl, TNG<br/><br/><br/> Jerry D. Hedden todoified yet another &quot;threads::shared&quot; bug concerning<br/> a shared object that is attached to a shared scalar.<br/><br/><br/><br/> The bug in &quot;ExtUtils::CBuilder&quot; not honouring &quot;extra_compiler_flags&quot;,<br/> that leads to the &quot;GIMME_V&quot; problem was filed by Robert May as a<br/> ticket on the &quot;ExtUtils::CBuilder&quot; queue.<br/><br/><br/><br/><br/> Daniel Frederick Crisman spotted a typo in a test name from last<br/> week&#39;s additions from Abigail regarding the test of &quot;for reverse ...&quot;.<br/><br/><br/><br/> Daniel also identified a possible POD markup error in the Japanese POD<br/> question last week.<br/><br/> ceci n&#39;est pas une pipe<br/><br/><br/> Robert May thought that the POD in talked about side<br/> effects far too much, so he dragged out the chain-saw and removed two<br/> duplicate sections.<br/><br/> may cause drowsiness<br/><br/><br/> Reini Urban made some progress with his perl compiler project this<br/> week.<br/><br/> just in time<br/><br/><br/> Robin Barker noticed some sub-optimal POD formatting in &quot;File::Find&quot;<br/> with C&lt;{ bydepth =E&lt;gt&gt; 1 }&gt; and proposed an alternative.<br/><br/> try writing that in POD<br/><br/><br/> Nicholas Clark took a lateral thinking approach to solving the<br/> parallel make bug for &quot;SDBM_File&quot; by provoking the same error but in<br/> the &quot;POSIX&quot; module.<br/><br/> but not all the time<br/><br/><br/> Philippe Bruhat ran into a spot of bother trying to build 5.8.8 with a<br/> particularly recent version of the gcc compiler. Andy Dougherty and<br/> Andreas K&ouml;nig gave him a couple of work-arounds, and Nicholas promised<br/> to make sure 5.8.9 (coming Real Soon Now) should have the fix.<br/><br/> going by the book<br/><br/><br/> Watching the smoke signals, failure reports came in from Steve Hay for<br/> Win32, as far as change #33169. No reports from other platforms.<br/><br/>About this summary<br/><br/> last week&#39;s<br/><br/><br/> Yitzchak Scott-Thoennes clarified the panic on copying a freed scalar:<br/> I thought the magic of @ARGV was part of the problem, Yitzchak said<br/> that any array at all will suffer the same erroneous behaviour.<br/><br/><br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation to help support the development of Perl.<br/><br/><br/> Thu, 07 Feb 2008 10:16:48 +0000 This Week on perl5-porters - 20-26 January 2008 by David Landgren This Week on perl5-porters - 20-26 January 2008<br/><br/> &quot;Adding new lists of things [to remember] to a language is only a good<br/> idea if you&#39;re making money with certification.&quot; -- Juerd Waalboer, on<br/> why your program shouldn&#39;t have to plead to use new functionality.<br/><br/>Topics of Interest<br/><br/>More C for Perl programmers<br/><br/> The &quot;I know Perl, how to learn C&quot; thread continued this week with a<br/> number of book and and web site references given. The thread then<br/> veered off into a discussion of memory alignment issues, what is a<br/> word (in computer memory parlance) and other sundry technical arcana<br/> of great interest to C programmers. Many people pointed out (quite<br/> rightly) that K&amp;R is still a very good read.<br/><br/> after all these years<br/><br/><br/>Regression with autobox<br/><br/> Alexandr Ciornii discovered that &quot;Perl_ck_subr&quot; lost its public status<br/> in the API somewhere between 5.8 and 5.10. This resulted in a<br/> compilation failure on Windows for &quot;autobox&quot;, the hippest module on<br/> the block. He noted that he could provoke the same behaviour on Linux<br/> if he removed the &quot;PERL_CORE&quot; preprocessor definition. Silence ensued.<br/><br/> and I thought autobox wasn&#39;t yet core<br/><br/><br/>Make Perl Y2038 safe<br/><br/> Michael G. Schwern saw no reason why date operations involving results<br/> that pushed out beyond 2038 (and thus wrap around the 32 time_t<br/> quantity) should not just do The Right Thing. No takers.<br/><br/> hopefully I shall be retired by then<br/><br/><br/>Making perl5 crosscompilable (or adventures in &quot;autoconf&quot;)<br/><br/> Enrico Weigelt reported that he had managed to set up an<br/> &quot;autoconf&quot;-based technique for building perl. This would allow him to<br/> make it easier to cross-compile Perl. He had managed to build the core<br/> interpreter but was stuck on how to build the standard extensions.<br/><br/> The porters explained that they were unlikely to move away from the<br/> current &quot;metaconf&quot; system, since it allows the source to build build<br/> on many non-GNU, non-POSIX hosts.<br/><br/> People tried to explain how the current cross-compilation mechanism<br/> works but it appears that few people have any real experience in the<br/> matter. No &quot;autoconf&quot; experts were able to answer Enrico&#39;s questions<br/> concerning how to build extensions, either.<br/><br/> A work in progress<br/><br/><br/>Decade old regexp tainting bug?<br/><br/> Nicholas Clark uncovered an ancient bug in the regexp code. It started<br/> of with a boolean value that was able to take values other than 0 and<br/> 1, which was a nice touch. It turned out that it was then binary-or&#39;ed<br/> with a bit that happened to lie way past the most significant bit of<br/> the datatype being used to hold the boolean. Since the bit in question<br/> was to indicate that the pattern was tainted, we have a bit of a<br/> problem on our hands.<br/><br/> The first thing was able to see whether it was possible to construct a<br/> test case that could expose the flawed behaviour. Rick Delaney was<br/> first past the post with a test that demonstrated the problem, and a<br/> fix that produced the correct behaviour.<br/><br/> Ben Morrow proposed a different test, that Abigail tweaked to show<br/> that the problem existed all the way back to 5.004. This was<br/> important, for the code the Nicholas found was traced back to change<br/> #267, committed to the repository in 1997. Unfortunately, the change<br/> was a jumbo patch that changed all sorts of things in the regexp<br/> engine.<br/><br/> ye olde bugge<br/><br/><br/><br/>Dear C gurus<br/><br/> Nicholas Clark discovered that an innocuous change to perl.c created a<br/> &quot;argument &#39;flags&#39; might be clobbered by `longjmp&#39; or `vfork&#39;&quot; warning<br/> and wondered what needed to be done to the code in order to make &quot;gcc&quot;<br/> happy again. Zefram and Hugo van der Sanden explained that the &quot;flags&quot;<br/> variable needed to be made &quot;volatile&quot;. Zefram went on to explain why<br/> it was so, in sufficient detail to merit the badge of &quot;resident C<br/> guru&quot;.<br/><br/><br/><br/>&quot;Module::Build&quot; interim release<br/><br/> Ken Williams wanted to integrate the changes that were required to get<br/> 5.10 out the door back into the mainline &quot;Module::Build&quot; codebase.<br/> Most of the changes are test tweaks to skip troublesome issues on VMS.<br/><br/> Craig Berry agreed that the VMS porters ran out of time in the run-up<br/> to 5.10, and it would be nice to go back and tidy up the loose ends.<br/><br/> mopping up<br/><br/><br/>Unshifting PL_curstack is a no-no?<br/><br/> Nicholas Clark was up to his elbows as usual, grovelling around in<br/> pp.c and pp_hot.c, seeing if you could shift elements off<br/> &quot;PL_curstack&quot;. Presumably to make things go faster. After watching<br/> things blow up for a while, he concluded that what he wanted to do<br/> couldn&#39;t be done.<br/><br/> not that I really understood anything<br/><br/><br/>Binding operators, void context, and documentation<br/><br/> Kaye Offer wondered why &quot;$foo =~ /(bar)/;&quot; in void context does not<br/> warn, but &quot;$foo !~ /(bar)/;&quot; does. Aristotle Pagaltzis and Rafael<br/> Garcia-Suarez did a pretty good job of explaining why thing were the<br/> way they were.<br/><br/> it&#39;s a feature<br/><br/><br/>Reviving the perl compiler<br/><br/> Reini Urban announced that he had taken a look at the perl compiler<br/> that had been removed from the 5.10.0 release. He lavished sufficient<br/> care upon it to get to compile again, although there were problems<br/> with the test suite.<br/><br/> Reini thought that the simple stack-based op-tree could be JITted<br/> easily into machine code and was looking at the GNU lightning library.<br/> He wanted to know if anyone else had had a look at this approach<br/> before.<br/><br/> Nicholas Clark explained that overloaded or tied SVs make JITting<br/> *really* hard, and that some of the ops were so high-level that<br/> JITting them would produce copious amounts of machine instructions<br/> which in turn would make a mess of a CPU instruction cache.<br/><br/> Joshua ben Jore pointed to Marc Lehmann&#39;s Faster project, that takes a<br/> Perl routine and turns it into C.<br/><br/><br/><br/>Floats to strings issue<br/><br/> Jerry D. Hedden asked why &quot;Configure&quot; probes for alternatives to<br/> &quot;sprintf&quot; that produce identical behaviour to &quot;sprint(&quot;%g&quot;)&quot;, and why<br/> not just use &quot;sprintf&quot; and be done with it. Andy Dougherty explained<br/> that some platforms, such as Solaris, have alternate functions<br/> available in the system C library that offer much better performance.<br/> In such cases, &quot;Configure&quot; favours them over &quot;sprintf&quot;.<br/><br/> only the best<br/><br/><br/>Updating &quot;Runops::Switch&quot; - problem testing &quot;OP_SAY&quot;<br/><br/> Jim Cromie discovered that &quot;Runops::Switch&quot; needed a tweak to<br/> recognise the new &quot;say&quot; in 5.10 and made a preliminary patch to get it<br/> to work. Rafael upgraded the module in any event, but Jim&#39;s patch<br/> reminded Jan Dubois that people should never link directly to the<br/> &quot;Perl_pp_*&quot; routines, since they are not part of the public API.<br/><br/><br/><br/>&quot;perl5.6.2 -e &#39;delete $ENV{PATH}&#39;&quot; segfault on Solaris 10<br/><br/> Ralf Hack provided a recipe for people to follow, should they be stuck<br/> on a modern Solaris with an old perl, and attempt to delete<br/> environment variables.<br/><br/> one day this might happen to *you*<br/><br/><br/>Win32 precision configuration<br/><br/> Following on from change #33049 when warnings about loss of precision<br/> were tweaked, Nicholas Clark noticed that the win32/config.bc file<br/> failed the Don&#39;t Repeat Yourself principle, and wondered whether it<br/> would be possible to have it generated automatically.<br/><br/> Steve Hay mumbled something about keeping things in sync and having a<br/> mind to write a script to do it, but not actually having got around to<br/> doing something about it.<br/><br/> low itch factor<br/><br/><br/>&quot;struct context&quot; now 12.5% smaller than 5.10<br/><br/> Nicholas Clark was as pleased as Punch after pulling out an &quot;IV&quot; and a<br/> pointer from &quot;struct context&quot;. And after thinking about it a bit more,<br/> thought of another possible restructuring to save a bit more space.<br/> Benjamin Smith took Nicholas&#39;s second idea and coded a patch to<br/> implement it, and in the process discovered another improvement that<br/> Nicholas missed initially.<br/><br/> At the end, Nicholas applied all the discovered slimming goodness to<br/> blead.<br/><br/> nest scopes with impunity<br/><br/><br/>&quot;lc(undef)&quot; is not &quot;undef&quot;: bug or feature?<br/><br/> Alberto Sim&otilde;es was a little surprised to learn that &quot;lc(undef)&quot;<br/> returns the empty string, and does not warn when doing so. Abigail<br/> reminded people that Perl&#39;s &quot;undef&quot; is not like SQL&#39;s &quot;null&quot; with its<br/> capacity to turn everything it touches to &quot;null&quot;. Perl will turn<br/> &quot;undef&quot; into zero or the empty string as appropriate and will warn<br/> when it does so, if you ask for it.<br/><br/> Jonathon Rockway noticed that &quot;\L&quot;, &quot;\u&quot; and the like also behaved the<br/> same way. Michael G. Schwern bet the contents of a capture variable<br/> that &quot;\L&quot; and &quot;lc&quot; were implemented using the same underlying opcode,<br/> which was confirmed by a quick glance at toke.c.<br/><br/> Rafael Garcia-Suarez added some code to make things warn, along with a<br/> few regression tests as change #33088. He hoped that people would bang<br/> on it and see if anything breaks.<br/><br/> in that case<br/><br/><br/>A warning I&#39;d like to see<br/><br/> David Nicol wished that a warning would be issued when map was fed a<br/> reference to an array, instead of an array. This reminded Aristotle<br/> Pagaltzis that this was exactly the thing that Mark-Jason Dominus&#39;s<br/> proposal a few weeks ago was designed to approach: raising a warning<br/> when a reference is directly stringified or numified.<br/><br/> Juerd Waalboer pointed out &quot;map&quot; takes a list, and an arrayref is<br/> merely a one element list. In fact, you cannot do anything other than<br/> give a list to map. It just might not contain what you thought it<br/> should.<br/><br/><br/><br/>Extra stricture for hard refs in 5.12<br/><br/> Following on from the above thread, Aristotle then restarted the<br/> &quot;references should not stringify&quot; discussion, which covered more or<br/> less the same ground as it did last month. Michael G. Schwern summed<br/> it up pretty well &quot;there are times when you just want an object to<br/> stringify, usually for debugging purposes, and there are times when<br/> you don&#39;t, usually for production purposes.&quot;<br/><br/> At the moment, no-one knows how to reconcile these differences,<br/> although Ben Morrow revealed a clever use of &quot;Hash::Util::Fieldhash&quot;.<br/><br/><br/><br/>Not a pad error<br/><br/> Elsewhere in his wanderings around the codebase, Nicholas Clark caught<br/> sight of an oddity in &quot;pp_enteriter&quot; (that sets up a &quot;foreach&quot; loop).<br/> He thought that be undoing an 8 year old change by Gurusamy Sarathy,<br/> it should be possible to provoke the bug the change was designed to<br/> fix. But, rather surprisingly, the code continued to work anyway.<br/><br/> Dave Mitchell&#39;s work on lexical and closure cleanups for 5.10 turned<br/> out to simplify matters considerably which in turn allows Nicholas to<br/> chop out a certain amount of redundant checks.<br/><br/> unexpected bonus<br/><br/><br/>Patches of Interest<br/><br/> Robin Barker had a look a &quot;Devel::DProf&quot; and noticed a certain amount<br/> of cruft that he was able to prune, some that had been lying around<br/> since 1999. Applied.<br/><br/> all gone<br/><br/><br/><br/><br/> He then took a couple of stabs at making a warning about a volatile<br/> declaration go away. Unapplied.<br/><br/><br/><br/><br/> Steven Schubiger did some consting goodness of his own, and added a<br/> bit to util.c. Applied.<br/><br/> it&#39;s all good<br/><br/><br/>Watching the smoke signals<br/><br/> Steve Hay was busy smoking Perl this week, and both 5.8 and 5.11 were<br/> complaining during the compilation stage and falling apart in the<br/> tests.<br/><br/> Smoke [5.8.8] 33008 FAIL(F) MSWin32 WinXP/.Net SP2 (x86/2 cpu)<br/><br/><br/> Smoke [5.11.0] 33018 FAIL(F) MSWin32 WinXP/.Net SP2 (x86/2 cpu)<br/><br/><br/> Jarkko Hietaniemi reported a failure compiling with C++ on a Tru64<br/> Alpha. Steve Peters couldn&#39;t find any problems when using g++, but<br/> thankfully Solaris&#39;s C++ compiler obligingly fell over, which allowed<br/> him to compose a first patch to get IPC::SysV up and running again.<br/><br/> Jarkko followed up with an improved patch to do the same on Tru64.<br/> Rafael applied this, which then caused Solaris to break again, so<br/> Steve had to go back and tweak the tweak.<br/><br/> Smoke [5.11.0] 33016 FAIL(XM) OSF1 V5.1 (EV6/4 cpu)<br/><br/><br/>New and old bugs from RT<br/><br/>&quot;state&quot; variable not available (#49522)<br/><br/> Dave Mitchell worked out what the problem was with Abigail&#39;s state<br/> variables, tracing it to a problem with the &quot;Svf_PADSTALE&quot; flag, which<br/> meant, in the context of state variables, that the variable had not<br/> been initialised, rather than having gone out of scope. A few lines of<br/> code, some tests, and the job was done.<br/><br/> affairs of state<br/><br/><br/>&quot;strict&quot; now uses &quot;caller&quot;, unintended interaction with &quot;Safe&quot; (#50084)<br/><br/> Simon Cozens reported that he had heard from the Postgresql developers<br/> running into trouble embedding Perl in Pg. Their simple recipe that<br/> worked in 5.8 no longer works in 5.10, as &quot;strict&quot; makes use of<br/> &quot;caller&quot; and the latter is not in the default list of permitted<br/> operations.<br/><br/> Probably not a major deal, but probably something that needs to be<br/> documented.<br/><br/> playing it safe<br/><br/><br/>Bug in regcomp code leading to panic (#50114)<br/><br/> &quot;mls&quot; provided a one-liner that produces a panic in 5.10 with a<br/> regular expression. The report went as far to identify the offending<br/> code and make a suggestion as to how it might be fixed.<br/><br/><br/><br/>&quot;enc2xs -C&quot; scans the current directory (#50116)<br/><br/> &quot;mls&quot; also suggested that &quot;enc2xs&quot; (part of the &quot;Encode&quot; distribution,<br/> to add new encodings to perl) should not search &quot;.&quot; when &quot;-C&quot; is used.<br/><br/><br/><br/>panic: attempt to copy freed scalar (#50142)<br/><br/> Johan Vromans posted the nth bug report concerning a problem with an<br/> explicit shift of @ARGV within a subroutine. Dave Mitchell explained<br/> that it was a long-standing bug due to the fact that items weren&#39;t<br/> reference counted on the stack, and that perl really ought to start<br/> doing the right thing.<br/><br/><br/><br/>&quot;File::Temp&quot; and unsafe shell characters (#50146)<br/><br/> Ed Avis was alarmed to discover that if you move into a directory<br/> named `rm -rf /`, ask &quot;File::Temp&quot; to create a file in said directory<br/> and open the file, you can be in a lot of trouble if it&#39;s the<br/> super-user that&#39;s running the script.<br/><br/> To counter this, Ed felt that &quot;File::Temp&quot; should ensure that anything<br/> it returned to client code should be filtered to strip out shellish<br/> meta-characters.<br/><br/> Mark Overmeer pointed out that the problem doesn&#39;t exist with the<br/> 3-arg form of &quot;open&quot; and that maybe the best solution was to deprecate<br/> the 2-arg form in 5.12.<br/><br/> shell game<br/><br/><br/>&quot;-W&quot; and spurious &#39;will not stay shared&#39; message (#50160)<br/><br/> Eric Promislow had some code that developed a tricky regexp with a<br/> &quot;(??{...})&quot; construct and wondered why it issued a &quot;will not stay<br/> shared&quot; warning. Dave Mitchell explained that one should always use<br/> package variables with the &quot;??{...}&quot; construct, at least until 5.12 at<br/> the earliest.<br/><br/><br/><br/>&quot;pos&quot; is much slower with &quot;progressive match&quot; and unicode (#50250)<br/><br/> Heinz Knutzen discovered that a simple loop involving a &quot;pos&quot; was<br/> about 2000 times slower in 5.10 compared with 5.8.8. Dave Mitchell<br/> profiled the code and discovered that &quot;Perl_utf_length&quot; was soaking up<br/> an inordinate number of cycles. This led him to conclude that there<br/> was something broken in the UTF-8 length cache code.<br/><br/><br/><br/>Segfault on &quot;perl -e &#39;split //, unpack &quot;(B)*&quot;, &quot;ab&quot;&#39;&quot; (#50256)<br/><br/> mauke reported this crash on 5.10.0 (and it looks like it was there in<br/> 5.8.8 as well). No-one ventured a reason as to why.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> 317 new + 1482 open = 1799 (11 created this week)<br/><br/><br/><br/><br/>This is the BBC<br/><br/> PadWalker<br/> A recent change (#33030) by Nicholas Clark broke PadWalker. But<br/> PadWalker being what it is, no-one was really surprised.<br/><br/><br/><br/>In Brief<br/><br/> Jerry D. Hedden made the &quot;installperl&quot; target not complain about<br/> finding &quot;perl&quot; in the build directory.<br/><br/><br/><br/> H.Merijn Brand reported good results with his &quot;Configure&quot; and<br/> metaunits work. He was down to 16 warnings, and the promise of several<br/> files that could be removed from the branch once everything was<br/> wrapped up. Andy Dougherty rejoiced.<br/><br/> and we all breathed a sigh of relief<br/><br/><br/> Andy Dougherty suggested a pre-5.005-compatible patch to &quot;Configure&quot;<br/> to get the 5.8.9 snapshot to compile on IRIX. Alas, David Cantrell<br/> reported no joy.<br/><br/><br/><br/> Elsewhere in the push to bring on 5.8.9, Alexey Tourbin noticed that a<br/> recent change was causing tests to fail in &quot;Term::ReadLine::Gnu&quot;<br/><br/><br/><br/> Steven Schubiger had a &quot;make test&quot; fail with copious reports of<br/> &quot;undefined symbol: __stack_chk_fail_local&quot;. No-one ventured a reason<br/> as to what or why things blew up.<br/><br/> try make distclean<br/><br/><br/> Yamashina Hio wrote some POD in English which was fine, but the same<br/> POD in Japanese failed to produce correct text for link references.<br/> No-one was able to provide any clues.<br/><br/><br/><br/> Nicholas Clark made t/op/inc.t happy again, regarding the overflowing<br/> of an integer following an increment (change #33049)<br/><br/><br/><br/> Andreas K&ouml;nig reported that the All Perl Changes (APC) repository now<br/> deals with 5.10 correctly, and all sorts of tarballs of assorted<br/> versions of Perl are available.<br/><br/> and there was much rejoicing<br/><br/><br/> Regarding the BBC and &quot;Apache::DB&quot;, Richard Foley wondered if there<br/> was a parallel with the problems he was having with other modules with<br/> Apache on 5.10, such as &quot;B::TerseSize&quot;.<br/><br/><br/><br/> Abigail added some regression tests to t/cmd/for.t to ensure that &quot;for<br/> reverse ..&quot; does not break one day.<br/><br/><br/><br/> Jerry D. Hedden wrote a patch tp suppress imprecision warnings in<br/> t/op/64bitint.t. Applied by Nicholas.<br/><br/><br/><br/> Jan Dubois pointed out that &quot;socketpair()&quot; *is* available on Win32,<br/> and has been for quite some time (as in, prior to 5.8).<br/><br/> only the documentation was buggy<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> In last week&#39;s summary, I explained that Moritz Lenz was disappointed<br/> that a regexp would not recurse into an interpolated &quot;qr//&quot;. In actual<br/> fact it does, and Moritz was really wishing that it wouldn&#39;t.<br/> Apologies to those confused by my confusion.<br/><br/> Aristotle Pagaltzis also noticed that my short linkifier has no<br/> error checking, and it spewed garbage into last week&#39;s summary.<br/><br/> the code dies screaming<br/><br/><br/> last week&#39;s<br/><br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation to help support the development of Perl.<br/><br/> Thu, 31 Jan 2008 14:44:52 +0000 This Week on perl5-porters - 13-19 January 2008 by David Landgren This Week on perl5-porters - 13-19 January 2008<br/><br/> &quot;Shifting something that&#39;s not a number shouldn&#39;t produce a number.&quot;<br/> -- Abigail<br/><br/>Topics of Interest<br/><br/>&quot;grep&quot; and smart match should warn in void context<br/><br/> Larry Wall remarked last week that Zefram&#39;s suggestion regarding the<br/> propagation of context from &quot;grep&quot;s and &quot;map&quot;s was how he deal with<br/> the matter. Nicholas spelled out his understanding of the matter.<br/> Zefram ventured further into the internals than he had ever been<br/> before and succeeded in returning with a patch to implement warnings<br/> in void context.<br/><br/> Abigail thought that the exercise was a bit of a witch hunt but Larry<br/> was thought that it was unlikely that people had used the syntax<br/> intentionally, so the weight of backwards compatibility was not so<br/> great, in this particular case.<br/><br/><br/><br/>&quot;+Inf&quot;, &quot;-Inf&quot; and &quot;NaN&quot; (and maybe -0.0 for good measure)<br/><br/> In the thread about the latest &quot;Math::Complex&quot; release, Jarkko<br/> Hietaniemi had noted that some platforms will dump core if you try to<br/> perform floating point arithmetic on a value set to infinity. Nicholas<br/> Clark wondered whether it was worth probing for the behaviour of these<br/> special quantities at configuration time, in order to Do The Right<br/> Thing on as many platforms as possible.<br/><br/> Zefram suggested peeking at &quot;Data::Float&quot;, which can already isolate<br/> exotic floating point values in pure Perl. Craig Berry pointed out<br/> that it wasn&#39;t so much a problem of arithmetic *per se*, since just<br/> about everything in use today implements IEEE 754 floats. It&#39;s not<br/> even a problem of exception handling, since that is governed by the<br/> IEEE standard as well.<br/><br/> The tricky part is determining what exception handling is enabled by<br/> default on a given platform, and what can be turned on if you ask for<br/> it politely. His gave some pointers to additional resources on the web<br/> regarding the matter.<br/><br/> there&#39;s a point to all this<br/><br/><br/>Inconsistent bigint behaviour (with ranges)<br/><br/> Moritz Lenz ran into difficulties using the range (&quot;$x .. $y&quot;)<br/> operator appearing to use floating point numbers instead of integers<br/> (and hence, bigints). Tels was quick to point out that this was due to<br/> a long-standing bug in perl: one cannot overload the &quot;..&quot; operator.<br/> The &quot;bigint&quot; package could do so if it were possible, but alas, the<br/> implementation is not there yet.<br/><br/> want your 15 minutes of fame?<br/><br/><br/> Jerry D. Hedden wrote a patch to make the range operator behave in a<br/> slightly more sane manner, and this was applied by Rafael.<br/><br/><br/><br/>Implementation of &quot;rand()&quot; in Perl 5.8.8<br/><br/> Dennis Williams wanted to implement &quot;rand&quot; in Java and wondered how it<br/> was defined (having become lost after wading through some 18000 lines<br/> of the Configure shell script.<br/><br/> Robin Barker told him how Configure chooses the best available<br/> implementation. Bennett told him how to find out what was chosen.<br/><br/><br/><br/>&quot;Inf&quot; &gt;&gt; 1<br/><br/> Abigail was rather surprised to discover that left- or right-shifting<br/> infinity returns merely a really huge number, rather than infinity.<br/> And shifting &quot;NaN&quot; produces zero.<br/><br/> Zefram explained that infinity only really works when dealing with<br/> floating point numbers, and bit-shifting a floating point number would<br/> probably do no good to anyone. And the shift operators force integer<br/> context anyway. Tels was happy to report that &quot;bigint&quot; gets it right.<br/><br/> Yitzchak Scott-Thoennes argued that it made sense to allow infinity to<br/> be shifted down among the integers. David Nicol did not agree with<br/> this and suggested that the way things were currently made some sort<br/> of sense.<br/><br/> Zefram came back and said that it was probably too late to try and be<br/> more strict on the matter: no doubt there&#39;s someone out there who&#39;s<br/> relying on the property that 3 &gt;&gt; 1 == 1. Roland Giersig wondered what<br/> Inf &gt;&gt; Inf and Inf &lt;&lt; Inf should return, to which Zefram made a<br/> reasonable proposition.<br/><br/> and I thought they said Perl was for text processing<br/><br/><br/> Continuing in a numerical recipes vein, Nicholas reported that he had<br/> committed a change that will generate a warning if code tries to<br/> increment or decrement an integer beyond the last possible integer<br/> representation.<br/><br/> at the end of the line<br/><br/><br/> Unfortunately, Andreas K&ouml;nig was able to foil this plan with the<br/> careful application of the &quot;-O2&quot; optimisation switch. This caused<br/> &quot;t/op/inc.t&quot; to begin to fail. Nicholas Clark couldn&#39;t see a way to<br/> sneak a couple of instructions past the compiler to make it do the<br/> right thing. Jerry D. Hedden also found that it warned about things<br/> that we really don&#39;t care about.<br/><br/> back to the drawing board<br/><br/><br/>MIME types for module data<br/><br/> Mark Overmeer wondered if there was some overall MIME type available<br/> for Perl that would allow module slinging around private data sets in<br/> a more orderly manner. Zefram gave an example of what an officially<br/> sanctioned IANA MIME type would look like. Mark wondered if you would<br/> have to pay a visit to IANA for each module.<br/><br/> is this free as in beer?<br/><br/><br/>Onto perl 5.8.9 (Perl @ 32984)<br/><br/> Nicholas Clark took a snapshot of the maintenance track to see how it<br/> would fare as a putative 5.8.9. He was hoping such a thing could be<br/> released before the German Perl Workshop, 5.10.1 or Christmas.<br/><br/> Windows is behaving pretty well at the moment, thanks to Steve Hay&#39;s<br/> tireless smoking. Other platforms were doing less well: VMS was grumpy<br/> although Craig Berry and John E. Malmberg were on hand to smooth over<br/> the rough bits.<br/><br/> David Cantrell noted severe breakage on a Cray, a Silicon Graphics<br/> IRIX box and NetBSD/Alpha as well.<br/><br/> in need of TLC<br/><br/><br/> In fact, IRIX cannot compile 5.10.0, for that matter.<br/><br/><br/><br/> Jerry D. Hedden also wondered about how the maint patch level should<br/> be defined in patchlevel.h.<br/><br/><br/><br/>C for Perl programmers?<br/><br/> Michael G. Schwern asked how a Perl programmer who knows no C might go<br/> about picking it up. A number of techniques were suggested, and books<br/> proposed.<br/><br/><br/><br/>What we all want<br/><br/> [Note from the summariser: I have seriously overrun my time budget for<br/> this week. The following discussions are about major changes that<br/> people want to see in 5.12. The first items are continuations of<br/> threads from last week. The new threads have been summarised].<br/><br/> am I a method call?<br/><br/><br/> anonymous packages<br/><br/><br/> named parameters<br/><br/><br/> method declaration<br/><br/><br/> saner behaviour for `length`<br/><br/><br/> Direct BigInt (and BigRat) support<br/><br/><br/>allowing trailing naked blocks in prototyped sub calls<br/><br/> Aristotle Pagaltzis wanted &quot;foo 1, 2, 3, 4 { say @_ }&quot; to do something<br/> nifty, given an appropriate &quot;foo&quot; routine. Rafael nodded and said it<br/> would be nice to have.<br/><br/><br/><br/>named parameters + prototypes + methods + aliases<br/><br/> The thread on naming subroutine parameters continued on this week with<br/> all sorts of syntax ideas and semantic considerations bandied about.<br/><br/> Rafael brought it down to earth with the restating of the aliasing<br/> syntax that has been proposed in the TODO list for a long time. The<br/> best aspect of his proposal was that it was simple enough to stand a<br/> reasonable chance of being implemented.<br/><br/><br/><br/>Empty attributes<br/><br/> As part of the named parameters thread, Peter Scott wondered why &quot;my<br/> $x := 24&quot; compiled and ran normally. It turns out that it&#39;s being<br/> parsed as an empty attribute list. So it&#39;s allowed, but it does<br/> absolutely nothing. Peter wondered why it was so. No-one was able to<br/> give an explanation. Rafael thought it was a parser bug until Peter<br/> pointed to the tests that pin down the behaviour.<br/><br/> time for an archeological expedition<br/><br/><br/>Recurse into current &quot;qr//&quot;<br/><br/> Moritz Lenz has started to play with the new &quot;(?R)&quot; recursive sub<br/> pattern and was saddened to discover that it couldn&#39;t recurse across a<br/> &quot;qr&quot; boundary.<br/><br/> Yves Orton didn&#39;t dismiss the idea out of hand, but said that it<br/> didn&#39;t weigh much against his current list of priorities. The best<br/> chance of it happening would depend on what Dave Mitchell and he<br/> planned to do to the regexp engine in the future.<br/><br/> maybe we&#39;ll get it for free<br/><br/><br/>Tail calls for methods<br/><br/> Yuval Kogman noted that it was difficult to do tail recursion cleanly<br/> in Perl, and suggested that with a dash of &quot;tailcall&quot; syntactic sugar,<br/> it would allow the compilation phase to do the right thing. Part of<br/> the problem concerns what to do with &quot;caller&quot;, which was covered in a<br/> thread a few weeks ago.<br/><br/> Jim Cromie restated his op mashup idea, of combining adjacent<br/> &quot;leavesub&quot;/&quot;entersub&quot; ops. Nicholas Clark thought that it could be<br/> prototyped using an external XS module.<br/><br/><br/><br/>A working SUPER<br/><br/> Johann Vromans lamented that &quot;SUPER&quot; referred to the superclass(es) of<br/> the package, and not that or those of the object. Stevan Little<br/> thought that the new MRO infrastructure in 5.10 may be of some help.<br/><br/> Some people mentioned &quot;NEXT&quot; as coming close, but a common theme was<br/> that it was too slow. At the end of the week, no real concensus had<br/> been reached.<br/><br/> that&#39;s really super, super-girl<br/><br/><br/>Clean up dereferencing syntax for slices<br/><br/> Curtis &quot;Ovid&quot; Poe proposed a simplification for slicing arrays and<br/> hashes. Everyone agrees the current syntax, especially when references<br/> come into the picture, is pretty horrendous.<br/><br/> Ricardo Signes found the fatal flaw, and so Ovid suggested a more<br/> alien syntax with a sigil after the arrow, which made Ricardo wonder<br/> if it couldn&#39;t be done with an autoboxed method, at the expense of a<br/> bit of verbiage.<br/><br/> Zefram found the fatal flaw in that idea: if the thing being sliced is<br/> a blessed reference then the method resolution may call something<br/> else.<br/><br/> back to the drawing board<br/><br/><br/>Patches of Interest<br/><br/>Double free error in 5.10.0<br/><br/> Gerard Goossen proposed a patch to fix the &quot;s///ge&quot; / &quot;FREETMPS&quot;<br/> problem. Unapplied.<br/><br/><br/><br/> Nicholas wondered if there was another way to achieve the goal.<br/><br/><br/><br/>2..Inf and beyond<br/><br/> The thread continued this week, with the more pragmatic porters<br/> pointing out that one should really use a while(1) loop and increment<br/> a counter variable each time through the loop. Michael G. Schwern said<br/> that was okay if you were used to procedural languages, but if all you<br/> had ever known were Perl ranges it would be nice if they did the right<br/> thing.<br/><br/> At the end of thread, people started to coalesce upon the idea of an<br/> new internal type that would provide a direct connection to a<br/> bigintish datatype, be it a fast C library like GMP or a slower<br/> pure-Perl implementation.<br/><br/><br/><br/>perlintern.pod: &quot;PAD_CLONE_VARS&quot;&#39;s parameter list mangled<br/><br/> Steven Schubiger supplied a small apidoc patch, which was applied.<br/><br/><br/><br/>New and old bugs from RT<br/><br/>Outdated &quot;Test::Harness::Straps&quot; (#49504)<br/><br/> Imacat offered to take over the maintenance of &quot;Test::Harness::Straps&quot;<br/> (insofar as this involves watching over a dying patient and waiting<br/> until it is safe to pull the plug on the life support systems, and<br/> made an impassioned plea defending her approach to smoke testing CPAN<br/> modules.<br/><br/> Apart from that, the thread devolved into your standard argument<br/> regarding &quot;Module::Build&quot; *versus* &quot;ExtUtils::MakeMaker&quot;. Everyone<br/> remained very polite, more credit to the porters, but the reader must<br/> forgive the summariser for not going into more detail than saying that<br/> the versions of the CPAN shell bundled with older releases of Perl are<br/> the root of many problems @@@FIXME@@@<br/><br/> One new item to come out the discussion, however, was Michael G.<br/> Schwern&#39;s observation that &quot;Module::Build&quot;&#39;s auto-generated README was<br/> pretty hopeless, yet it would be a Simple Matter Of Programming to<br/> make it do a better job.<br/><br/> hey! Module::Build is bundled with 5.10<br/><br/><br/> do your part for useful READMEs<br/><br/><br/>&quot;open &#39;:locale&#39;&quot; now works (#49646)<br/><br/> Rafael Garcia-Suarez and Mashrab Kuvatov sorted out what the problem<br/> was and fixed it up, and the thread painted the bikeshed green.<br/><br/><br/><br/>glibc error using &quot;Tie::File&quot; on 5.10 (#49724)<br/><br/> Testcase needs to be slimmed down before anything can be done to<br/> diagnose the problem.<br/><br/> come and look on my screen<br/><br/><br/>Regular expression delimiter sensitivity (#49800)<br/><br/> Someone reported a regular expression changing behaviour when run<br/> outside or inside the debugger.<br/><br/> is ? a wise choice for a regexp delimiter?<br/><br/><br/>Encode &quot;from_to()&quot; does not return on invalid conversion (#49830)<br/><br/> Someone spotted some new behaviour in the version of &quot;Encode&quot; bundled<br/> with 5.10. Paging Dan Kogai.<br/><br/><br/><br/>XS OVERLOAD keyword causes incorrect C code generation (#49844)<br/><br/> Salva Fandi&ntilde;o reported a problem using the &quot;OVERLOAD&quot; clause in an XS<br/> file. Torsten Sch&ouml;nfeld reported that an equivalent bug report was<br/> filed against the &quot;ExtUtils::ParseXS&quot; queue, but had received no<br/> replies.<br/><br/><br/><br/>Bad rounding on &quot;int(log())&quot; (#49872)<br/><br/> Roland Giersig ran into problems with integer truncation of<br/> calculations involving logarithms, and was surprised by some of the<br/> results. People explained that it was due to floating point<br/> imprecision (as usual).<br/><br/> fuzzing around<br/><br/><br/>&quot;gmtime()&quot;/&quot;localtime()&quot; do not use &quot;time()&quot; (#49914)<br/><br/> Well they sort of do, but Abe Timmerman discovered that if you<br/> override &quot;time&quot;, the &quot;gmtime&quot; and &quot;localtime&quot; routines will happily<br/> ignore the override, and continue to use the underlying code that<br/> returns the epoch.<br/><br/> time time time, see what&#39;s become of me<br/><br/><br/>Ambigous Configure run/make error (#49946)<br/><br/> Stefan Schlotterbeck-Macht was seriously Warnocked after getting stuck<br/> trying to cross-compile Perl onto avr32-linux platform.<br/><br/> hints wanted<br/><br/><br/>Perl 5.10 @ISA bug (#49952)<br/><br/> Andrei Galea uncovered some @ISA behaviour modification in 5.10 when<br/> using &quot;Tk&quot;.<br/><br/> hairy inheritance<br/><br/><br/>perl fails to compile in &quot;B::C&quot; (#49974)<br/><br/> A cautionary tail: if you &quot;rsync&quot; the latest source, you must ensure<br/> that you do so with the &quot;--delete&quot; switch. Sometimes dead wood makes a<br/> log jam.<br/><br/> we gave it the axe<br/><br/><br/>Perl5 Bug Summary<br/><br/> 14 new + 1474 open = 1788 (created 8, closed 0)<br/><br/><br/><br/><br/>This is the BBC<br/><br/> Getopt::Euclid 0.1.0<br/> The current state of blead made one &quot;Getopt&quot; module fail, this one<br/> by Damain Conway.<br/><br/> that&#39;s ok, there are plenty of others<br/><br/><br/>In Brief<br/><br/> Robin Barker had some consting goodness applied to regexp.h<br/><br/><br/><br/> H.Merijn Brand tried building perl on Cygwin and ran into trouble.<br/> Reini Urban stepped up to help him out, offering a few suggestions<br/> every Cygwin blead smoker needs to know.<br/><br/><br/><br/> Jerry D. Hedden had a pile of taint test fixes for Cygwin, and this<br/> made all the tests pass. This made Nicholas Clark happy.<br/><br/><br/><br/> David Landgren wondered whether &quot;is&quot; behaved correctly for tied<br/> objects when one needs to write &quot;ok($x == 1)&quot; instead of &quot;cmp_ok($x,<br/> &#39;==&#39;, 1)&quot; but received no reply.<br/><br/> fringe benefits<br/><br/><br/> Jan Dubois noted that &quot;File::GlobMapper&quot;, part of the &quot;IO::Compress&quot;<br/> infrastructure, should not be marked as an alpha release (since it&#39;s<br/> now in 5.10). Paul Marquess agreed, and promised to push out a new<br/> version, *sans* the message of doom.<br/><br/> good thing it&#39;s dual-lifed<br/><br/><br/> S&eacute;bastien Aperghis-Tramoni found a small bug in microperl regarding<br/> uconfig.h; Steve Peters regenerated it into a healthy state.<br/><br/><br/><br/> Steven Schubiger thought that the documentation for &quot;sv_cmp_locale&quot;<br/> should not say &quot;see also &quot;sv_cmp_locale&quot;&quot;. Not applied.<br/><br/> recursion: see recursion<br/><br/><br/> Salvador Fandi&ntilde;o wondered if the new hints infrastructure could help<br/> solve the bug regarding overloading constants not propagating into<br/> string &quot;eval&quot;s.<br/><br/> gotta perlbug id?<br/><br/><br/> Jan Dubois reported that &quot;Compress::Zlib&quot; 1.42 was failing tests on<br/> both blead and maint, and pointed to an older thread on the matter.<br/> Nicholas Clark backed the change out of maint.<br/><br/><br/><br/> &quot;Text::Balance&quot; received a better version number in maint.<br/><br/><br/><br/> Nicholas also suggested that distinguishing between &quot;use warnings&quot; and<br/> &quot;use warnings &#39;all&#39;&quot; would allow the porters to ease the restrictions<br/> in adding new warnings to maintenance releases.<br/><br/> it never used to do that!<br/><br/><br/> Johan Vromans complained about smoke runs complaining about<br/> inconsistent test results between TEST and harness. Some tests are<br/> known to be very sensitive to timing issues and system load. So the<br/> tests should either go, or be marked as informational (and thus<br/> insufficient grounds for aborting a launch).<br/><br/> all systems go<br/><br/><br/> While hacking on kurila, Gerard Goossen spotted what he thought may be<br/> a latent bug in the routine &quot;do_openn&quot; in doio.c, and thought someone<br/> more intimate with the code should see if it was a problem.<br/><br/><br/><br/> He also proposed a patch, not applied, that would cause &quot;-DT&quot; to<br/> report forced tokens (during tokenisation).<br/><br/> what you always wanted to know<br/><br/><br/> Andrea K&ouml;nig produced a patch for &quot;YAML::Syck&quot; to make it aware of the<br/> 5.11 native REGEXP type. Audrey Tang took the patch and pushed version<br/> 1.01 out the door. Michael G. Schwern thought the patch was a bit<br/> clunky, but Nicholas pointed out that the way it was written prevents<br/> dead code from forming in 5.10 and below.<br/><br/><br/><br/> Jerry D. Hedden uncovered a problem with a target needed for<br/> &quot;suidperl&quot;. Even though the resulting binary is vaguely deprecated,<br/> Nicholas Clark managed to get thing running smoothly again.<br/><br/> until the next time it breaks<br/><br/><br/> Jerry noted that the change didn&#39;t make it past the door.<br/><br/><br/><br/> David Cantrell wanted to be able to &quot;lchown&quot; in perl 5.12, so Yitzchak<br/> wrote a patch to do it for him.<br/><br/><br/><br/> Nicholas Clark had a bit of trouble fiddling with version numbers in<br/> &quot;Test::Harness&quot;, as there are now three active branches in the<br/> repository.<br/><br/> head, explodes<br/><br/><br/> Johnathon Rockway related a question from the &quot;perl-qa&quot; mailing list,<br/> as it relates to &quot;is_deeply&quot; and &quot;qr//&quot; on 5.11<br/><br/><br/><br/> Nicholas saw how &quot;itersave&quot; in used &quot;struct block_loop&quot;, but wondered<br/> why, and whether it was ever, or still, necessary.<br/><br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> last week&#39;s, reduced to clear<br/><br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation to help support the development of Perl.<br/><br/> Thu, 24 Jan 2008 15:47:56 +0000 This Week on perl5-porters - 6-12 January 2008 by David Landgren This Week on perl5-porters - 6-12 January 2008<br/><br/> &quot;Um, I think you caused me negative work. I rather wanted &quot;dtrace&quot;<br/> support and it seemed that because of you I didn&#39;t have to write it.&quot;<br/> -- Nicholas Clark, on the joys of having other people do your work for<br/> you.<br/><br/>Topics of Interest<br/><br/>Ever more strict<br/><br/> In the continuing &quot;strict by default in 5.12&quot; thread, Glenn Linderman<br/> made a most pertinent remark: Perl 6 has staked the &quot;strict be<br/> default&quot; claim. Perl 5 may approach the same place, but will have to<br/> do so more slowly. Not that it shouldn&#39;t be done, we need not burden<br/> ourselves with bad practices forever, but deprecation cycles and<br/> dealing with dormant CPAN modules and code in the DarkPAN means it<br/> will take time.<br/><br/> The other contentious issue (should extra strictures be activated from<br/> a &quot;feature&quot; pragma) was addressed by Abigail, who put forward the<br/> argument that &quot;feature&quot; should be considered no more than a message<br/> from the programmer to the interpreter indicating that constraints<br/> regarding backwards compatibility are hereby waived.<br/><br/> advancing, unmasked<br/><br/><br/> the darkpan, defined<br/><br/><br/>&quot;~~&quot; changing behaviour after using &quot;==&quot;<br/><br/> brian d foy was puzzled upon learning that smart matching suffered<br/> from action at a distance, and wondered if it was all documented.<br/> David Landgren explained that it was a problem due to the &quot;IOK&quot; flag<br/> being set, which caused the smart matching code to use numishness,<br/> rather than stringiness as a basis for matching.<br/><br/> Zefram rightly pointed out that this was exactly the sort of problem<br/> that prevented Perl from being able to be used in very large projects.<br/> Nicholas Clark asked himself what would happen if the IOK flag was not<br/> set during a numish comparison, were the number not truly numeric. And<br/> so now blead does just that.<br/><br/> no more action at a distance<br/><br/><br/>&quot;dtrace&quot; and Perl<br/><br/> Andy Armstrong added dtrace support to perl to probe subroutine entry<br/> and exit points and was happy to announce that it incurs no measurable<br/> performance hit.<br/><br/> Nicholas Clark made a number of comments regarding the patch: things<br/> that need to be done and the ways to do it. He went ahead and cleared<br/> up the nits and applied it all.<br/><br/> the patch itself<br/><br/><br/> The main issue with the patch was dealing with &quot;Configure&quot;, partly<br/> because not many people have strong &quot;Configure&quot;-fu (and H.Merijn Brand<br/> was busy using his fu to attend to some sorely needed work on it).<br/><br/> Andy Dougherty helped out with a rough sketch of what needed to be<br/> done. Bryan Allen of generously provided shell access to a<br/> Solaris box to get the kinks sorted out.<br/><br/> dtrace sees delight<br/><br/><br/> Once that was more or less under control, the next question to ask was<br/> what probes should we have? The following items were put forward:<br/><br/> * Creation and destruction of SVs.<br/><br/> * Interpreter set-up and tear down.<br/><br/> * Module loading (&quot;use&quot; and &quot;require&quot;).<br/><br/> * Filesystem access.<br/><br/> * opcode arguments<br/><br/> One of things that needs to be addressed is that in order to trace the<br/> stack (C&#39;s or Perl&#39;s, really), a so-called ustack helper is what&#39;s<br/> needed, but these are fiendishly difficult to write. For a start, much<br/> of dtrace runs in the kernel, not in userland.<br/><br/> Much of the more esoteric discussion was cross-posted from the<br/> dtrace-discuss mailing list, where talk of ustacks certainly appeared<br/> to give them The Fear.<br/><br/><br/><br/> In the process of producing &quot;dtrace&quot; support, Andy ran into trouble<br/> with getting the shellish idiom of if-not-condition-then correct.<br/><br/> H.Merijn Brand showed one way to do it, Zefram, another.<br/><br/><br/><br/>grep and smart match should warn in void context<br/><br/> The discussion continued this week as to whether or not this would be<br/> a good idea. Michael Schwern started to jot down the history of why<br/> &quot;map in void context&quot; played such an important part in the history of<br/> Perl.<br/><br/> we have a wiki, man<br/><br/><br/> Abigail maintained that it would be insane to start warning about a<br/> construct that has not previously triggered a warning, even if the<br/> construct was not considered to be a best practice (in which case a<br/> Perl::Critic policy would be more suitable).<br/><br/> Zefram put forward a suggestion that was endorsed by Larry Wall.<br/><br/> should we, should we not<br/><br/><br/>&quot;; needs some version comparison code somewhere<br/><br/> Rafa&euml;l Garcia-Suarez waved his hands vaguely at the new error that<br/> comes out of &quot;bleadperl -e &#39;use 5.10.1&#39;&quot; and hoped something could be<br/> done about it. Steffen M&uuml;ller showed how difficult it would be to<br/> solve the general case.<br/><br/> The only sane approach is for bleadperl to track feature sets in the<br/> current maintenance release. No new features could be added to 5.10.x<br/> after 5.12.0 comes out. Dave Mitchell thought add new features to a<br/> maintenance track was a bad idea anyway.<br/><br/> still waiting for patches<br/><br/><br/>First pass at META.yml support for the core<br/><br/> Adam Kennedy took his &quot;YAML::Tiny&quot; module and made it even tinier by<br/> throwing everything that is not required to parse a META.yml file. He<br/> named it &quot;Parse::CPAN::Meta&quot; so that it doesn&#39;t say &quot;YAML&quot; on the tin.<br/> The idea being is that it will permit richer semantics in dealing with<br/> module requirements. This could come in handy for dual-lifed modules<br/> and modules that depend on external libraries.<br/><br/> &AElig;var Arnfj&ouml;r&eth; Bjarmason found a minor YAML remnant in the test suite.<br/><br/> ain&#39;t what it used to be<br/><br/><br/>Segmentation violations with ithreads and regexps<br/><br/> Nicholas Clark was wondering what change caused a particular language<br/> construct to go boom! and asked Andreas K&ouml;nig to fire up his magic<br/> binary search patch locator to find the offending change.<br/><br/> Andreas wasn&#39;t around, but Marcus Holland-Moritz was, and in about an<br/> hour had identified change #30755 as being the culprit. This enabled<br/> Nicholas to make the required correction.<br/><br/> homing in<br/><br/><br/> Following that (if it&#39;s the same bug we&#39;re talking about) Dave<br/> Mitchell, Yves Orton and he kicked the problem around for a little<br/> while, and they appeared to arrive at the right solution by the end of<br/> the week.<br/><br/> stirring up trouble with re &#39;eval&#39;<br/><br/><br/>&quot;for (2..Inf)&quot;<br/><br/> Michael G. Schwern had a chance encounter with a C-style &quot;for&quot; loop,<br/> and realising that the range operation (&quot;..&quot;) used a lazy<br/> implementation, noted that it was a Simple Matter Of Programming to<br/> get &quot;for my $var (2..Inf)&quot; to Do The Right Thing. So he coded a quick<br/> and dirty patch (with a test!) to prove that it could be done. Much of<br/> the discussion that followed, apart from mentioning Ruby and &quot;bc&quot;<br/> involved what to do when adding 1 to an integer value overflows.<br/><br/> from her to eternity<br/><br/><br/> Jerry D. Hedden picked up the patch and ran with it, delivering a<br/> whole pile of code, documentation and tests to implement the whole<br/> show. Michael made a number of good comments, so Jerry returned to the<br/> lab and cooked up a fresh patch.<br/><br/> One sticking point was whether the range should stop or not, when the<br/> value outgrew the maximum size of an integer. Yves thought that if<br/> that was a problem, people should really be using &quot;while (1)&quot;.<br/><br/> But even that approach is flawed, since after a few billion or<br/> quintillion loops any integer-based counter will begin to lose<br/> precision (after it is upgraded to a float following the overflow an<br/> integer). And transparently switching over to &quot;Math::BigInt&quot; would be<br/> Really Hard.<br/><br/> I do it my way<br/><br/><br/>What do we want to see in 5.12?<br/><br/> A number of porters described the innovations they would like to see<br/> in perl 5.12, the next major release after 5.10. Nicholas Clark<br/> commented that a lot of the suggestions had high niftiness values, but<br/> noted that the difference between suggesting and implementing will<br/> impose its own natural selection of what gets done.<br/><br/>Deprecated items removed in 5.12<br/><br/> Firstly, a number of items were marked as deprecated in 5.10 and thus<br/> may be removed from 5.12. All that could be recalled for the moment<br/> was the &quot;-P&quot; command-line switch and unnamed &quot;package;&quot; declarations<br/> (which actually disappeared in 5.10).<br/><br/> all gone<br/><br/><br/>Am I a method call?<br/><br/> Ricardo Signes wanted support from the language to let him know if the<br/> routine had been called as a method. Currently, there is no mechanism<br/> that lets you do this in the general case. One possible approach is to<br/> do it by extending &quot;caller&quot;.<br/><br/> Given that &quot;caller&quot; already returns an impossible-to-remember list of<br/> values, Mark Jason Dominus wondered whether the last element should be<br/> a hashref, or whether an alternate hashified &quot;caller&quot; hashref should<br/> be made available. This suggestion attracted significant discussion,<br/> which evolved into calls for having &quot;autobox&quot; brought into core.<br/> Nicholas Clark warned against making that decision lightly.<br/><br/> just so long as the hashref is purple<br/><br/><br/>Method declaration<br/><br/> Michael G. Schwern proposed a &quot;method foo&quot; declaration, that would<br/> work like a &quot;sub foo&quot;, except that it fetches the $self object from @_<br/> for free.<br/><br/> The open issues are, can you call it as a bare subroutine, what if you<br/> don&#39;t like using the name $self, what about class methods, and should<br/> $self be removed from @_ or should it remain?<br/><br/><br/><br/> and it&#39;s on the wiki<br/><br/><br/>Lexical named subroutines<br/><br/> Ricardo also suggested named lexical subroutines, to be used in<br/> situations such as comparator routines for &quot;sort&quot;, while avoiding<br/> namespace pollution.<br/><br/> Dave Mitchell pointed out the problems this would have in terms of<br/> closures. He sketched out two possible implementations and pointed out<br/> the flaws in both of them.<br/><br/> Nicholas Clark recalled that Mark Jason Dominus was believed to be in<br/> the possession of a list of examples of the corner cases that would<br/> need to be addressed in any such proposal. Dave thought he could come<br/> up with one of his own at a pinch.<br/><br/> just a spoonful of sugar<br/><br/><br/>Anonymous packages<br/><br/> Ricardo also mentioned a conversation with Matt Trout concerning the<br/> issue of creating anonymous packages. Currently it can be hacked<br/> together using &quot;Package::Generator&quot; or &quot;Class::Mix&quot;. In any event,<br/> more thought needs to go into what the syntax should be.<br/><br/> heh, inherit from *that*<br/><br/><br/>Named parameters<br/><br/> Michael then kicked off a very large thread by p5p standards,<br/> proposing real honest-to-goodness named parameters. One point he<br/> stressed was that what ever solution is implemented, it doesn&#39;t have<br/> to be perfect. We could apply the 80/20 rule and strive for a simple<br/> solution that is satisfactory 80% of the time.<br/><br/> Then the difficulties began to surface: should the parameters that are<br/> named be removed (or not) from @_ (see also: the method declaration<br/> thread). Should the parameters be aliases (fast, but dangerous) or<br/> copies (slow and safe, and conforms to the Principle of Least<br/> Surprise). What happens if not enough parameters are passed. Can we<br/> have defaults? How does this tie in with prototype specifications?<br/><br/> One useful item to come out of the discussion was a post from Juerd<br/> Waalboer who stepped of with a review of subroutine signatures in Perl<br/> 6, and is worth stealing from it for Perl 5. Another point is that,<br/> one way or another, we&#39;ll need better support for aliases in the<br/> language. Solve that problem, and named parameters are a piece of<br/> cake.<br/><br/><br/><br/> also wikified<br/><br/><br/>Saner behaviour for &quot;length&quot;<br/><br/> Aristotle Pagaltzis put forward an elegant suggestion to deal with<br/> &quot;length(undef)&quot;. Rather than issuing a warning, it should quietly<br/> return &quot;undef&quot;. Rafa&euml;l Garcia-Suarez liked the idea so much that he<br/> tried to implement, but was stumped by a number of strange failures in<br/> the test suite.<br/><br/> Nicholas Clark picked up where he left off, and discovered that it is<br/> horrendously hard to get it to work correctly with tied variables.<br/> After a number of patches, the implementation was satisfactory, and in<br/> the process, Nicholas uncovered a bug involving (drum roll) UTF-8.<br/><br/> how long is a string<br/><br/><br/>Patches of Interest<br/><br/> Marcus Holland-Moritz&#39;s refactoring of PL_opargs generation in<br/> from last week was applied. As was Jerry Hedden&#39;s File::Temp<br/> cleanup and his &quot;~~&quot; is not a feature documentation tweak. The<br/> perlcommunity.pod patch from brian d foy was also applied, despite<br/> being in a yucky diff format. &quot;\X&quot; is equivalent to an atomic group<br/> made it too.<br/><br/> see last week for URLs<br/><br/>Change backticks into more readable &quot;qx()&quot;<br/><br/> Jari Aalto put forward the sensible suggestion of using &quot;qx()&quot; instead<br/> of backticks (`) since it&#39;s to confuse with an apostrophe, and some<br/> non-English keyboards make it quite difficult to generate.<br/><br/> Tels fell of his chair since he didn&#39;t even know that &quot;qx()&quot; existed,<br/> but made up for it by spotting an leftover ` in Jari&#39;s patch.<br/><br/> told you they were hard to see<br/><br/><br/>No more big slowdown in 5.10 @_ parameter passing<br/><br/> Rick Delaney picked up the gauntlet and delivered a patch to fix the<br/> issue identified by Dave Mitchell, where the &quot;OPpASSIGN_COMMON&quot; wound<br/> up being set in error. The amazing part was that Rick didn&#39;t even<br/> believe there was a performance problem, but fixed it anyway. When the<br/> benchmarks were run, it was clear there was a net gain.<br/><br/> Dave the M, right as usual<br/><br/><br/>Getting &quot;Data::Dumper&quot; to dump the new-fangled REGEXPs<br/><br/> Yves updated &quot;Data::Dumper&quot; to handle blessed regexes in blead, but<br/> cautioned that the code was probably still too raw for previous<br/> releases.<br/><br/> a blessing in disguise<br/><br/><br/> That gave Jerry D. Hedden some grief, until he tracked down the reason<br/> for the failure.<br/><br/> that&#39;s not supposed to happen<br/><br/><br/> Jerry has been building perls for quite a while without including the<br/> XS component of &quot;re&quot;. Yves Orton thought a perl without &quot;re&quot;, since it<br/> was a pragma.<br/><br/> Jerry revised the patch two more times to get it into shape.<br/><br/> running light<br/><br/><br/> During the discussion, Yves Orton noticed that &quot;regexp_pattern&quot; really<br/> belonged in universal.c.<br/><br/> So Jerry made the move, wrote the appropriate changes and their<br/> attendant tests and this enabled other tests to be moved around and<br/> simplified some additional housework in &quot;Data::Dumper&quot;. All applied by<br/> Rafa&euml;l.<br/><br/> moving to new digs<br/><br/><br/>&quot;ARRAY(0x...)&quot; is not very helpful in sprintf.t diagnostics<br/><br/> Yitzchak Scott-Thoennes noticed that op/sprintf.t could produce<br/> meaningless messages on failure, and changed this to make it start<br/> making sense again. Applied by Nicholas Clark.<br/><br/><br/><br/>Smoke report for 5.11.0 (delivered manually...)<br/><br/> Steve Hay upgraded his smoking kit to the latest CPAN version, and<br/> discovered to his dismay that it could no longer mail the smoke<br/> results. He proffered a patch to get things going again.<br/><br/> still smoking<br/><br/><br/>&quot;B::Deparse&quot; fixes for implicit smart matching in &quot;given&quot;/&quot;when&quot;<br/><br/> Florian Ragwitz thought that the results of deparsing a switch<br/> statement were suboptimal and offered a patch to make things better.<br/> Rafa&euml;l applied the patch, and added a test too.<br/><br/> given a patch<br/><br/><br/>Remove &quot;AutoLoader::can&quot;<br/><br/> A thread in late November about slowness in &quot;can&quot; for AutoLoader was<br/> put on hold during the freeze for 5.10.0. Rafa&euml;l dug out the final<br/> patches and applied them. Steffen M&uuml;ller said he&#39;d push a new version<br/> out to CPAN.<br/><br/> picking up where we left off<br/><br/><br/>Exclude .svn and _darcs from &quot;IPC::SysV&quot;&#39;s Makefile.PL libscan<br/><br/> Andy Armstrong had been working on &quot;IPC::SysV&quot; and noticed that the<br/> droppings left over by revision control messed things up and proposed<br/> a patch to fix things up again.<br/><br/> A debate followed as to how, when and where to solve the problem and<br/> at the end of the day, the appropriate repositories received the<br/> appropriate patches.<br/><br/> repository droppings<br/><br/><br/>Move the &quot;reg_stringify&quot; logic to &quot;Perl_sv_2pv_flags&quot;<br/><br/> &AElig;var Arnfj&ouml;r&eth; Bjarmason moved the stringification of regexps into sv.c<br/> following Nicholas Clark&#39;s work of raising regexps into first class<br/> objects. &AElig;var explained that this would not break the pluggable<br/> interface for the regexp engine.<br/><br/> Nicholas smoothed over some of the rough bits and applied it to blead.<br/><br/> just another SV<br/><br/><br/>Porting/manicheck<br/><br/> Robin Barker noticed that the last patch to manicheck broke its &quot;-x&quot;<br/> and &quot;-m&quot; command line switches. So he fixed it. Applied by Rafa&euml;l.<br/><br/> switched on<br/><br/><br/>tru64: poison stack, write protect string constants<br/><br/> Jarkko Hietaniemi desired bad code to die a quick death by way of a<br/> segmentation fault, Steve Peters complied.<br/><br/> 0xfff58005fff58005: segmentation fault *and* NaN<br/><br/><br/>Watching the smoke signals<br/><br/>Smoke [5.11.0] 32864 FAIL(F) MSWin32 Win2003 SP2 (x86/1 cpu)<br/><br/> There was a problem with platforms that were able to fork, or merely<br/> pretend to, or cannot. This was corrected, and Steve Hay recommended<br/> that for dual-lifed modules that need to test forking, the best<br/> practices may be found in Test/Simple/t/fork.t and IO/t/io_pipe.t.<br/><br/> there is no fork<br/><br/><br/>New and old bugs from RT<br/><br/>forking on Tru64 (alpha-dec-osf) (#3387)<br/><br/> A bug involving a child reading from a file and looping back to the<br/> beginning and reading again, and again was posted nearly eight years<br/> ago (hence the low bug id). The problem was kicked around for a while,<br/> but no-one was able to figure out what was going wrong.<br/><br/> And there the bug slumbered from many years, until Franz Fischer<br/> revived it a few days ago, having run into the same behaviour on<br/> HP-UX.<br/><br/> better luck this time<br/><br/><br/> let&#39;s do the time warp<br/><br/><br/>Segfault with complicated regex inside &quot;map&quot; (#24898)<br/><br/> Abigail posted this bug four years ago, and noting that the problem<br/> was still present, created a TODO test for it.<br/><br/> Yves Orton wondered if the problem occurred outside of a &quot;map&quot; but<br/> Abigail listed a number of variations on theme that produced an<br/> interesting variety of segfaults, valgrind errors or memory<br/> exhaustion, and some that worked just fine.<br/><br/> I told you map in void context was evil<br/><br/><br/>&quot;CHECK{}&quot;, &quot;INIT{}&quot; in (#45627)<br/><br/> Peter Dintelmann reported a bug that was actually due to a<br/> misunderstanding of the documentation, so Rafa&euml;l tried to improve<br/> that.<br/><br/> it&#39;s the way it is<br/><br/><br/>&quot;pp_ftrread&quot; appears to use the wrong access mode for &quot;-x&quot; (#49003)<br/><br/> Jason Hord filed a bug last month the behaviour of &quot;-x&quot; when using the<br/> &quot;filetest&quot; pragma and attached a patch to fix it up. This week, Rafa&euml;l<br/> applied the patch.<br/><br/> hooray for bug reports with patches<br/><br/><br/>&quot;B::Deparse&quot; fails to deparse a reference to an anonymous hash (#49298)<br/><br/> Rafa&euml;l committed a fix that he thought should fix the bug that David<br/> Leadbeater reported last week.<br/><br/> anon deparsing is go<br/><br/><br/>&quot;Scalar::Util&quot; documentation problem (#49434)<br/><br/> Ben Okopnik pointed out that the documentation in this module refers<br/> to a book that never has, and probably never will be published.<br/><br/> a tad optimistic<br/><br/><br/>Attributes and Unknown Error (#49472)<br/><br/> &quot;mz&quot; reported a significant regression in the clarity of error<br/> messages between 5.8.8 and 5.10.0 when attributes are involved. No<br/> takers as yet.<br/><br/><br/><br/>Outdated &quot;Test::Harness::Straps&quot; (#49504)<br/><br/> Imacat from Taiwan, who runs a very tight testing ship, reported that<br/> the &quot;Test::Harness::Straps&quot; shipped with 5.10.0 is quite far behind<br/> the current CPAN version. Furthermore, upgrading the module copies it<br/> to the site directory, hence shadowed by the older core version.<br/> Michael G. Schwern fixed this.<br/><br/> Imacat also asked Michael to bundle a Makefile.PL, to enable a vanilla<br/> 5.8.8 distribution (sans &quot;Module::Build&quot; to install THS automatically<br/> in a CPAN shell.<br/><br/> Michael was a little more reluctant to take on this additional<br/> technical debt, but Andreas K&ouml;nig thought he had little choice.<br/><br/><br/><br/>&quot;state&quot; variable not available (#49522)<br/><br/> Abigail uncovered a curious omission in the implementation of &quot;state&quot;<br/> variables, and wrote a TODO test to help with the search for the<br/> solution.<br/><br/> here you see it, there you don&#39;t<br/><br/><br/>&quot;syswrite&quot; layer forgets to encode (#49548)<br/><br/> Mark Overmeer wrote a small test case showing that &quot;syswrite&quot; failed<br/> to honour encoding directives.<br/><br/><br/><br/>&quot;constant&quot; overloading (#49594)<br/><br/> Goro Fuji noted that &quot;overload::constant&quot; doesn&#39;t work if the constant<br/> in question contains escaped characters. Michael G. Schwern<br/> hypothesised that the presence of a backslashed character caused the<br/> code to run down the wrong path.<br/><br/> the high road be shorter, but the low road prettier<br/><br/><br/>open &#39;:locale&#39; does not work under locale with modifier (#49646 and #49648)<br/><br/> Mashrab Kuvatov filed a bug regarding problems with locales, UTF-8 and<br/> Cyrillic. Rafa&euml;l trimmed down the test case, saw the problem, but<br/> wanted to obtain some reference material on how to read encoding<br/> definitions.<br/><br/><br/><br/>Use of uninitialized value in die at /opt/perl/lib/perl5/File/ <br/>line 224. (#49660)<br/><br/> Marc Lehmann ran into a bug with &quot;File::Copy&quot; but couldn&#39;t reproduce<br/> it (although unfortunately the effect was to remove the file being<br/> copied).<br/><br/> ouch<br/><br/><br/>Perl5 Bug Summary<br/><br/> 310 new + 1470 open = 1780 (8 created, 4 closed). Robin Barker<br/> wondered where his #49302 bug went.<br/><br/><br/><br/> overview<br/><br/><br/>New Core Modules<br/><br/> Math-Complex 1.43<br/> Black smoke emerged from 1.42, reasons why &quot;ok($a == $b)&quot; may be<br/> needed instead of &quot;cmp_ok($a, &#39;==&#39;, $b)&quot; were given, long doubles<br/> were overlooked and so Jarkko Hietaniemi pushed out a new version.<br/><br/><br/><br/>In Brief<br/><br/> Andreas K&ouml;nig identified the source of H.Merijn Brand&#39;s double free<br/> error in 5.10.0<br/><br/> it says &quot;rgs@stencil&quot; on the tin<br/><br/><br/> And Moritz Lenz&#39;s bugs in extended regexp features were Warnocked.<br/><br/> perlbug it<br/><br/><br/> H.Merijn continued to plough through his &quot;Configure&quot; and metaunits<br/> work and was happy to report that he was down to a mere 193 warning<br/> messages.<br/><br/> a mere SMOP<br/><br/><br/> Jari Aalto wanted an URL for Perl documentation. Two were given.<br/><br/> a vast program<br/><br/><br/> Nicholas Clark was Warnocked over a parallel make bug in &quot;SDBM_File&quot;<br/><br/> because no-one uses it?<br/><br/><br/> Craig Berry noticed that the latest REGEXP patches produced black<br/> smoke on VMS. Robin Barker and Nicholas Clark vied to produce the best<br/> patch to resolve the problem and at the end of the day VMS and Craig<br/> were happy again.<br/><br/><br/><br/> Yves Orton complained that development version numbers, warnings, XS<br/> and MakeMaker don&#39;t mix. The concensus is that using underscore in a<br/> version number to signify the beta release of a module to PAUSE blows<br/> chunks, and a much better idea would be to have something in META.yml.<br/><br/> a call for metadata<br/><br/><br/> Nicholas welcomed Marcus Holland-Moritz&#39;s correction of an 8 year old<br/> bug, and wondered how much perl 4 code still remained in the code<br/> base, as this could lead to the possibility of correcting an 18 year<br/> old bug.<br/><br/> Andy Dougherty thought that much of doio.c dated back to Perl 4 and<br/> significant parts of sv.c could be traced all the way back to Perl 1.<br/><br/> layer upon layer upon layer<br/><br/><br/> Coverity was a great help to the development of perl 5.10, helping pin<br/> down a number of questionable C practices. Andy Lester asked for<br/> volunteers to say good things about the product.<br/><br/> scratch my back<br/><br/><br/> Max &quot;Corion&quot; Maischein made perl build again on Win32 when the path<br/> contains whitespace.<br/><br/> under program files<br/><br/><br/> Patrick Rutkowski ran into a problem with &quot;typedef&quot; definitions in XS<br/> code written in C++. Jan Dubois had already dealt with the problem in<br/> the past and show Patrick what to do.<br/><br/><br/><br/> Ask Bj&oslash;rn Hansen encountered some weird behaviour when @INC contained<br/> &quot;./&quot; (that is, with a trailing slash). Andy Armstrong noted that the<br/> perl in question was from a Red Hat distribution, and wondered if one<br/> of their own patches was interfering with normal @INC behaviour.<br/><br/><br/><br/> The latest version of the smoking harness for the perl core fell<br/> apart, and some fixes were made. Further improvements may be<br/> necessary.<br/><br/> sync early, sync often<br/><br/><br/> Gerard Goossen released kurila 1.7, an experimental fork of the perl<br/> codebase, the aim of which is wto see what would happen if one were to<br/> free one&#39;s self completely of any notions of backwards compatibility.<br/><br/> where does a kurila sit?<br/><br/><br/> Rick Delaney&#39;s patch from last week to allow the clearing of @ISA from<br/> XS was applied.<br/><br/> assign with impunity<br/><br/><br/> Robin Barker had some more consting goodness applied to POSIX.xs<br/><br/> strtoul() and helper<br/><br/><br/> as well as &quot;Compress::Raw::Zlib&quot; and &quot;Filter::Util::Call&quot; from a short<br/> time back.<br/><br/><br/><br/> Nicholas Clark&#39;s change to assert that these are the regexps you were<br/> looking for came to grief on Jerry D. Hedden&#39;s machine. A revised<br/> patch appears to have fixed the problem.<br/><br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> last week&#39;s<br/><br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation to help support the development of Perl.<br/><br/><br/> Wed, 16 Jan 2008 06:26:03 +0000 This Week on perl5-porters - 30 December 2007-5 January 2008 by David Landgren This Week on perl5-porters - 30 December 2007-5 January 2008<br/><br/> &quot;That&#39;s now twice in this thread that I&#39;ve been accused of favouring<br/> languages that I actually dislike [...] . I think the Java model of<br/> exception signatures is awful.&quot; Zefram (I hope you know this will go<br/> down on your permanent record).<br/><br/>Topics of Interest<br/><br/>Exception roles, take 1<br/><br/> Ricardo Signes wrapped up the year with a first cut at doing exception<br/> roles in Perl (the idea being that one would manage errors with some<br/> formal mechanism, anything, than matching $! with regexps).<br/><br/> Zefram quoted lisp back at him for more background on handling error<br/> conditions.<br/><br/><br/><br/> The discussion continued in the new year, with people discussing how<br/> to avoid creating elaborate Exception hierarchies that would wind up<br/> looking like Java.<br/><br/> ewww<br/><br/><br/>Lexicals used only once should warn (redux I)<br/><br/> This thread from last week, err month, um year continued in full swing<br/> this week. There are two main points to come out of it. Firstly, given<br/> the following statement:<br/><br/> my $opaque = xyzzy();<br/><br/> if $opaque appears nowhere else in the current scope, it is not<br/> possible to determine at compile time whether or not its purpose is to<br/> hold a reference to an acquired resource (and thus cannot be<br/> considered &quot;unused&quot;).<br/><br/> Secondly, and in light of the above, is it worth expending so much<br/> effort to hunt down and carp about truly unused lexicals? From a<br/> purist&#39;s point of view, the answer is yes, but from a pragmatist&#39;s<br/> point of view, the better solution lies in a &quot;lint&quot;-like analysis.<br/><br/><br/><br/>Lexicals used only once should warn (redux II)<br/><br/> Another part of the thread from last week reminded Fergal Daly how<br/> much he would like, in a loop like<br/><br/> for my $x (@list) { ... }<br/><br/> to obtain a trace that not only shows the call stack, but also shows<br/> the value of $x. Even knowing that the loop was in the Nth iteration<br/> would be better than nothing. chromatic suspected that if code were<br/> written to handle that, it would come in handy for dealing with<br/> tail-call optimisations.<br/><br/> That reminded Yves Orton about a &quot;$^SUB&quot; variable which would provide<br/> a hinting mechanism to the compiler, thereby side-stepping the issue<br/> of introducing unnecessary slowdowns in the general case, and putting<br/> the onus on the programmer to get things right.<br/><br/><br/><br/> RAII: not an Italian TV station<br/><br/><br/>&quot;sub 2007{ ... goto &amp;2008 }&quot;<br/><br/> David Nicol broke out of the monster warnings thread and wondered<br/> about tail recursion the light of RAII. The trouble is that an opaque<br/> scalar in @_ holding a resource lock would get wiped out during the<br/> tail recursion call. He was of the opinion that tail recursion could<br/> not be done automatically by the compiler, but that it could be<br/> possible to set it up yourself, if one was able to set up a new @_<br/> explicitly, just before transfer.<br/><br/> finding the right syntax<br/><br/><br/> In the new year, Aristotle Pagaltzis cautioned against diddling with<br/> @_ since it is built for speed and thus behaves oddly in a number of<br/> edge cases. Better to invent some sort of syntax that looks like a<br/> regular function call, and deals with @_ itself away from prying eyes.<br/><br/> Jim Cromie pondered whether some sort of &quot;pp_goto&quot;/&quot;pp_entersub&quot;<br/> mashup would do the trick.<br/><br/><br/><br/>Optimising opcodes<br/><br/> Rafa&euml;l Garcia-Suarez, Nicholas Clark and Paul Johnson continued to<br/> ponder ways to obtain line number information for warning messages if<br/> all the nullops were thrown away.<br/><br/> pointer games<br/><br/><br/>Negated smart match<br/><br/> Ron Blaschke wanted to know why there was no &quot;!~~&quot; negated smart match<br/> operator. There&#39;s one in Perl 6. In Perl 5.10, it gets parsed as the<br/> slightly useless &quot;!~ ~&quot;. In the meantime, one can get by with &quot;!($thud<br/> ~~ @qux)&quot;.<br/><br/> one way to do it<br/><br/><br/>strictly by default<br/><br/> The debate continued over how and when strict would be enabled by<br/> default in future versions of Perl. The key was to specify some sort<br/> of &quot;use 5.12&quot; pragma or a feature, but there was disagreement over<br/> whether they should behave the same, or differently.<br/><br/><br/><br/>SV leak<br/><br/> Nicholas Clark looked at some code in &quot;XS_PerlIO_get_layers&quot; and<br/> realised that it was probably leaking &quot;SV&quot;s. This made him wonder if<br/> other XS code committed the same sin.<br/><br/> Marcus Holland-Moritz seemed to think so, and committed change #32816<br/> it. And then committed #32817 when he realised that the routine&#39;s<br/> &quot;dTARGET&quot; was now unused.<br/><br/> Vincent Pit had a look around and came up with a number of other<br/> places where the same kind of misbehaviour was occurring. He whipped<br/> up a patch, that Marcus applied.<br/><br/><br/><br/>Handling of SET magic in &quot;mX?PUSH&quot; macros<br/><br/> After the above adventure, Marcus noted that there was no need to<br/> handle the setting of magic in the &quot;mPUSH&quot; family of macros, since<br/> they are creating new mortals that cannot have any magic on them<br/> (yet). Which makes for less make-work code.<br/><br/><br/><br/>MRO and &quot;av_clear&quot;<br/><br/> Torsten Sch&ouml;nfeld was having problems with perl 5.10 and XS code<br/> diddling @ISA to change package hierarchies. As it happens, Torsten<br/> was using the &quot;av_clear&quot; API call to clear out @ISA.<br/><br/> The problem is that @ISA has a certain amount of magic associated with<br/> it. Rick Delaney had a look at what Torsten was trying to do, and once<br/> he understood what was needed, was able to cook up a patch and toss in<br/> a couple of regression tests to wrap things up.<br/><br/> introducing magic_clearisa()<br/><br/><br/>When will perl 5.10 be stable?<br/><br/> Alberto Sim&otilde;es asked why stable.tar.gz refers to 5.8.8 and not 5.10.0.<br/> A long discussion ensued. Most people were happy to accept that it is<br/> probably premature to label 5.10.0 to be stable, but it&#39;s going to<br/> happen sooner or later. So when?<br/><br/> Michael G. Schwern suggested adopting Debian&#39;s<br/> stable/testing/unstable/experimental labels. The main problem was that<br/> people had difficulty trying to match Perl releases into the above<br/> four categories. Dave Mitchell came up with an alternative eminently<br/> pragmatic approach.<br/><br/> 5.8 is the new 5.6<br/><br/><br/>&quot;SvOOK()&quot; now doesn&#39;t (ab)use &quot;SvIVX&quot;<br/><br/> Nicholas Clark, looking more closely at how macros expand, put forward<br/> an alternative technique to deal with strings that get clipped from<br/> the beginning. Instead of recopying the string, perl has always kept<br/> the string as is, and moved a pointer forwards to point to the new<br/> beginning.<br/><br/> Until now, the macro expanded to some bit-twiddling and possibly a<br/> function call. By rearranging things, Nicholas was able to get rid of<br/> the function call, but wondered if there was a way to trip things up<br/> because of that.<br/><br/> After having played with it a bit more, Nicholas determined that it<br/> was simpler to store an offset.<br/><br/> ook!<br/><br/><br/>Solving the &quot;~~&quot; changing behaviour after using &quot;==&quot;<br/><br/> Following on from the thread from last week where Gabor Szabo reported<br/> that smart match could return a differing results from the same<br/> inputs, Nicholas changed the behaviour in bleadperl so that &quot;42x&quot; (a<br/> numeric value with trailing garbage) never gets the IOK or NOK flags<br/> set. Thus solving the problem neatly.<br/><br/> It turns out that doing so didn&#39;t break the test suite, but the<br/> question to ask is whether there were no tests for it. In which case,<br/> careful analysis will be required to see whether it is safe to<br/> backport to the 5.10 line.<br/><br/><br/><br/>Patches of Interest<br/><br/>&quot;mg_magical()&quot; sometimes turns &quot;SvRMAGICAL&quot; on when it shouldn&#39;t<br/><br/> Vincent Pit detected problems in the chain of magic whereby different<br/> ordering of magic would produce different results. Steve Peters wanted<br/> to see some tests.<br/><br/><br/><br/>refactor &quot;PL_opargs&quot; generation in and fix &quot;helem&quot;<br/><br/> Marcus Holland-Moritz was in the mood for adding a new op flag, and<br/> suffered considerable pain when he gazed upon, as well as<br/> some 8-year old code contributed by Ilya Zakharevich which he thought<br/> was a &quot;can&#39;t happen&quot; scenario.<br/><br/> In tightening things up, he discovered a dormant bug that meant that<br/> &quot;helem&quot; had an incorrect specification so he corrected it.<br/><br/> all applied<br/><br/><br/>Loading a &quot;loadable object&quot; with a non-standard file extension<br/><br/> One of things that was pushed for in 5.10 was to embed<br/> platform-specific decisions into when it was generated<br/> during the build of Perl instead of deferring things until run-time.<br/> The move proved to be a shade too aggressive and broke established<br/> behaviour in 5.6 and 5.10.<br/><br/> Jan Dubois restored the old behaviour with a patch that was applied by<br/> Rafa&euml;l.<br/><br/><br/><br/>Clean up &quot;File::Temp&quot; test file<br/><br/> Jerry D. Hedden fixed up a leaking temporary file in<br/> lib/File/Temp/t/fork.t. Applied by Rafa&euml;l.<br/><br/><br/><br/>Clean up lib/B<br/><br/> He also ensured that the &quot;realclean&quot; target removed lib/B. Not<br/> applied.<br/><br/><br/><br/>&quot;~~&quot; is not a feature<br/><br/> Jerry also redelivered a Warnocked patch which, happily, was applied<br/> the second time around.<br/><br/> if at first you do not succeed<br/><br/><br/>&quot;File::Temp::_gettemp&quot; should ignore dir -w test on Cygwin<br/><br/> Jari Aalto could not install CPAN modules on Cygwin because of a<br/> pointless check to see whether the directory was writable (which it<br/> always is). Applied.<br/><br/><br/><br/>This is the BBC<br/><br/> &quot;Params::Validate&quot; and &quot;Clone&quot;<br/><br/> Andreas K&ouml;nig, Rafa&euml;l Garcia-Suarez, Nicholas Clark and Steve Peters<br/> had a closer look at this failure and tried to figure what could be<br/> done to blead to reduce the breakage. To a certain extent, however,<br/> some changes have been advertised for a long time, patches have been<br/> sent to authors of problematic modules, but few distributions have<br/> seen new releases.<br/><br/> not much we can do<br/><br/><br/>New and old bugs from RT<br/><br/>&quot;say&quot; behaves as just &quot;print&quot; on tied filehandle (#49264)<br/><br/> Ambrus Zsb&aacute;n noticed that &quot;say&quot; on a tied filehandle lacks the &quot;\n&quot;<br/> tacked on the end, and traced the problem as far as pp_hot.c but<br/> didn&#39;t know how to fix it.<br/><br/> Schwern weighed in with a first cut at a patch. Graham Barr saw that<br/> it leaked. Rafa&euml;l and Nicholas started debating internals, discussing<br/> hitherto unknown macros (at least to the summariser). Something was<br/> applied, in any event<br/><br/> say can you see<br/><br/><br/>&quot;IO::Handle&quot; method &quot;say&quot; should ignore $\ (#49266)<br/><br/> Ambrus, on a roll, found another edge case where &quot;say&quot; misbehaved.<br/> This was either ignored, or solved by the same patch that fixed bug<br/> #49264.<br/><br/> say it ain&#39;t so<br/><br/><br/>&quot;B::Deparse&quot; fails to deparse a reference to an anonymous hash (#49298)<br/><br/> David Leadbeater noticed that &quot;B::Deparse&quot; was incapable of dealing<br/> with coderef that returns a reference to an anonymous array or hash.<br/> Rafa&euml;l muttered something about someone having to teach something<br/> about something, and then did just exactly that.<br/><br/> special ops<br/><br/><br/>&quot;[[:print:]]&quot; *versus* &quot;\p{Print}&quot; (#49302)<br/><br/> According to the documentation, any &quot;[[:...:]]&quot; and &quot;\p{Is....}&quot; pair<br/> should match the same thing. Robin Barker showed that this was not<br/> always the case.<br/><br/><br/><br/> segfault in 5.10 (and earlier) (#49322)<br/><br/> A bug report from Will Coleda showed that<br/><br/> @r=eval {@c=(@n=(1,2) &amp;&amp; ($n[1],$n[0]))};<br/> @r=eval {@c=(@n=(1,2) &amp;&amp; ($n[1],$n[0]))};<br/><br/> will crash on any number of different versions of Perl.<br/><br/> so that&#39;s pretty sick code<br/><br/><br/> Steve Peters noted that in 5.10... it still dumps core, but with a new<br/> error message!<br/><br/> progress at last<br/><br/><br/>Segfault with with &quot;tie&quot; and &quot;STDOUT&quot; (#49366)<br/><br/> Steve Peters noted that if you are not careful when creating &quot;tie&quot;d<br/> objects that print, and the thing tied is &quot;STDOUT&quot;, perl goes into a<br/> loop of infinite recursion and dumps core (after exhausting its C<br/> stack). Ways to have interpreter deal with the situation more<br/> gracefully foundered on the problem of determining the maximum stack<br/> size in C.<br/><br/> and portably, while you&#39;re at it<br/><br/><br/>Perl5 Bug Summary<br/><br/> Ticket Counts: 310 new + 1470 open = 1780 (8 created, 4 closed this<br/> week)<br/><br/><br/><br/>New Core Modules<br/><br/> Math-Complex 1.38<br/> documentation and test tweaks, courtesy Jarkko Hietaniemi (applied)<br/><br/><br/> Sys-Syslog 0.24<br/> tests that skip, courtesy S&eacute;bastien Aperghis-Tramoni (applied)<br/><br/><br/> constant 1.15<br/> tests that behave on 5.8.[0-3], also S&eacute;bastien, also applied<br/><br/><br/> ExtUtils-MakeMaker 6.43_01<br/> lots of bug fixes, courtesy Michael G. Schwern<br/><br/><br/>In Brief<br/><br/> Nicholas Clark thought that having &quot;gcc -pedantic&quot; on by default would<br/> be useful more for debugging builds than production builds.<br/><br/><br/><br/> Jan Dubois traced a perl 5.10 failure on Linux 2.4 to a bug report and<br/> its corresponding patch. Even so, he couldn&#39;t see why it caused the<br/> failure, but an environment variable tweak to the system provided a<br/> reasonable work-around.<br/><br/> more fun with glibc<br/><br/><br/> Nicholas responded to Larry&#39;s remarks about the fact that the Perl 5<br/> smart match was not quite the same as the Perl 6 smart match. The<br/> problem is that there is insufficient cross-pollination between the<br/> two development camps. Certainly, there have been no patches from Perl<br/> 6 developers to adjust the Perl 5 implementations of Perl 6 ideas to<br/> keep them in line with the functionality du jour.<br/><br/> obscured by crowds<br/><br/><br/> Vincent Pit thought that &quot;DEBUG_S&quot; should meet the thin end of a<br/> chainsaw.<br/><br/> remnants of 5.005 threads<br/><br/><br/> After having manually expanded macros once too often, Nicholas finally<br/> got fed up enough to write a short Perl program to automate the task.<br/><br/> good laziness<br/><br/><br/> Rafa&euml;l killed the v-string portability warning in 5.10, declaring that<br/> it would no longer be present in 5.10.1.<br/><br/> no-one shed a tear<br/> 500 Can&#39;t connect to (connect: Operation not permitted)<br/><br/> Robin Barker&#39;s consting goodness to &quot;Compress::Raw::Zlib&quot; and<br/> &quot;Filter::Util::Call&quot; were applied.<br/><br/><br/><br/> S&eacute;bastien Aperghis-Tramoni delivered some small documentation tweaks,<br/> applied.<br/><br/><br/><br/> Marcus Holland-Moritz eliminated some magic numbers in &quot;NewOp()&quot;<br/> calls. Code that invents new ops is likely to break.<br/><br/> but code that invents new ops is unlikely<br/><br/><br/> Michael G. Schwern tweaked t/ to make it resistant to changes<br/> to $\, $&quot; and $,.<br/><br/> no more havoc<br/><br/><br/> The &quot;strict by default for 5.12&quot; discussion got bogged down in details<br/> of whether it should be a feature and how should it really be enabled<br/> but sometimes we don&#39;t unless we do although maybe we might if we<br/> should.<br/><br/> or words to that effect<br/><br/><br/>About this summary<br/><br/> get last week&#39;s here<br/><br/><br/> This summary was written by David Landgren. It does not exactly cover<br/> the entire week, as I want to move from Monday through Sunday to<br/> Sunday through Saturday. So some threads will be dealt next week.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation to help support the development of Perl.<br/><br/><br/> Fri, 11 Jan 2008 05:49:22 +0000 This Week on perl5-porters - 22 December 2007-29 December 2007 by David Landgren This Week on perl5-porters - 22 December 2007-29 December 2007<br/><br/> &quot;Remember, everyone is a beginner, but only for a small time.&quot; --<br/> Abigail, on why you can&#39;t please everyone, everywhere, all the time.<br/><br/>Topics of Interest<br/><br/> The summaries are back! I had meant to get this out earlier this week,<br/> but the season&#39;s festivities got the better of me. Enjoy! -- David<br/><br/>Consting goodness done to excess<br/><br/> Robin Barker, in a remarkable coincidence of increasing the<br/> summariser&#39;s burden, went about adding &quot;const&quot; goodness to XS modules<br/> in the core distribution.<br/><br/> MIME::Base64 and Digest::MD5 (not applied)<br/><br/><br/> Compress::Raw::Zlib and Filter::Util::Call (not applied)<br/><br/><br/> Cwd and ExtUtils::ParseXS (applied, with slight turbulence)<br/><br/><br/> IO (not applied)<br/><br/><br/> Storable (applied)<br/><br/><br/> Digest::SHA (applied)<br/><br/><br/> Not to mention the judicious application of a &quot;NUM2PTR&quot; macro<br/> (applied)<br/><br/><br/><br/>&quot;grep&quot; and smart match should warn in void context<br/><br/> Michael G. Schwern wondered why a &quot;grep&quot; operation performed in void<br/> context produced no warnings. The idea being that since a grep is a<br/> filtering operation over a list, you either want to get back some, all<br/> or none of the list, or possibly the number of elements that matched.<br/> But to want nothing at all was either stupid, an error, or some sort<br/> of obfuscation.<br/><br/> Nicholas Clark asked Michael to write some TODO tests to nail down the<br/> desired behaviour, but Michael went one better and produced a first<br/> cut at a patch to do what he wanted.<br/><br/> Yitzchak Scott-Thoennes wasn&#39;t against the idea, but wanted to make<br/> sure there was a simple way to disable the warning message, just in<br/> case. Rather than introduce a new &quot;void&quot; keyword, Michael pointed out<br/> that &quot;scalar grep foo(), list()&quot; works just as well.<br/><br/> obfuscated map, anyone?<br/><br/><br/>Big slowdown in 5.10 @_ parameter passing<br/><br/> Yves Orton forwarded a message from the DBIx-Class mailing list, where<br/> they had discovered with horror that<br/><br/> my ($x, $y, $z) = @_;<br/><br/> has become unacceptably slow in 5.10 (whereas a semantically<br/> equivalent code block using &quot;shift&quot; ran as swiftly as ever). Dave<br/> Mitchell discovered that the optimiser had become confused, and was<br/> running the list assignment through the code path that spends the<br/> extra cycles that makes sure that<br/><br/> ($x, $y) = ($y, $x)<br/><br/> works as expected. That is, extra care has to be taken when there are<br/> variables common to both sides of the assignment, otherwise things get<br/> clobbered.<br/><br/> wish they had taken 5.10 for a spin earlier<br/><br/><br/> Paul Johnson identified the patch responsible. No solution as yet.<br/><br/> it was just a teeny bug fix<br/><br/><br/>Should lexicals used only once warn?<br/><br/> Nicholas Clark asked innocently whether it would make sense to have<br/> the interpreter warn about lexical variables that were defined and<br/> then never used afterwards. A volley of reasons as to why this would<br/> not be a good idea followed, and ten days later the thread was still<br/> bubbling along nicely. Lots of nice idioms in there worth pondering; I<br/> liked Hugo van der Sanden&#39;s resource lock trick.<br/><br/> don&#39;t call us, we&#39;ll call you<br/><br/><br/>Extra warnings for beginners<br/><br/> Gabor Szabo kicked off a slightly shorter thread as to whether it<br/> would help to have extra warnings that would help beginners not fall<br/> prey to some types of simple errors. A concensus formed rather rapidly<br/> that this would not be a Good Idea.<br/><br/> use brain;<br/><br/><br/>&quot;Configure -Dunknown_config_var&quot; should exit with error<br/><br/> Jim Cromie wrote a simple patch to make &quot;Configure&quot; do sanity checking<br/> on its command line. Andy Dougherty explained just how hard it was to<br/> do such a thing correctly, as hints files complicate the picture.<br/><br/> H.Merijn Brand began to work on the scripts used to build the<br/> Configure file itself, and pulled his hair out over the bizarro coding<br/> style used. Jim Cromie was worried that if H.Merijn and Andy were<br/> simultaneously unable to work on shepherding the configuration<br/> infrastructure, The Perl project would be seriously stalled.<br/><br/> bus fault in undisclosed location<br/><br/><br/>Optimising opcodes<br/><br/> Jim Cromie had been wondering whether all the null op-codes left<br/> behind after the optimiser was done with an op-tree could cause cache<br/> misses due to bloat, as the CPU ran ahead of the data pipeline.<br/> Nicholas Clark wanted to find out whether adding another pass that<br/> threw away the dead ops, rearranging the ops into a more sensible<br/> order and storing them with a slab allocator would be a win.<br/><br/> Paul Johnson pointed out that one consequence would be that some error<br/> messages would no longer be able to relate to line number, as<br/> currently that information is stored in the very nullops that Nicholas<br/> was proposing to throw away.<br/><br/> need some running code for concensus<br/><br/><br/> Later on in the week, Jim returned with a patch to move op-sibling<br/> pointers out of OPs, the theory being that it reduces the optree&#39;s<br/> cache footprint by 20%. Unfortunately the MJD advice about getting the<br/> wrong answer as fast as possible applies, since the patch (which Jim<br/> admits is a work in progress) causes things to dump core.<br/><br/> it&#39;s a start<br/><br/><br/>Storable for bytecode?<br/><br/> Since the decision to jettison the Perl compiler for 5.10, perl no<br/> longer has a bytecode loader. Nicholas observed that &quot;Storable&quot; can<br/> serialise stuff, so, how much effort would it take before it could<br/> store an optree? And, at that point, would we have a byteloader? First<br/> up, Storable doesn&#39;t do regular expressions or typeglobs or... a whole<br/> lot of things it turns out, all of which are vital for an optree.<br/> Nicholas wondered whether it was feasible, easy or impossible.<br/><br/> Hugo said that the first step (this no doubt applies to the above<br/> thread of optimising opcodes as well) would be to overhaul the<br/> optimiser to separate the manditory fixups (that if absent, would<br/> cause the code to be unrunnable) from the true optimisations.<br/><br/> chromatic thought that a more promising avenue would be to remove the<br/> pessimisation in Perl 5 that makes the interpreter to poke at<br/> everything incessantly in case there&#39;s some sort of magic behaviour<br/> lying in ambush to do something completely different.<br/><br/> the last frontier<br/><br/><br/>APC now includes perl-5.10<br/><br/> Philippe M. Chiasson updated the APC (All Perl Changes repository) to<br/> include the 5.10 track. Since it has been over five years since the<br/> 5.8 track was created, there was considerable head-scratching on how<br/> to do a couple of things that had been lost in the mists of time.<br/><br/> Philippe was hoping that Sarathy could chip in with what he recalled<br/> of the process.<br/><br/> write it down for 5.12<br/><br/><br/>Array ~~ Any<br/><br/> Michael G. Schwern caught wind of a thread on Perlmonks discussing the<br/> behaviour in something like<br/><br/> 42 ~~ [&#39;foo&#39;, 15]<br/><br/> warning, which some people find rather unsettling, about &quot;foo&quot; not<br/> being numeric. Michael wondered if something could be done about the<br/> matter.<br/><br/> JFDWIM<br/><br/><br/>Smart matching with objects<br/><br/> Ricardo Signes thought that smart matching and objects didn&#39;t mix very<br/> well as things stand, and suggested that objects participate in smart<br/> matching only if they overload &quot;~~&quot;. This is a pretty reasonable<br/> suggestion, as it gives the object the power to decide how it smart<br/> matches, rather than the operator blindly assume that anything behind<br/> the implementation curtain is fair game.<br/><br/> Tels was surprised to learn that it was even possible to overload &quot;~~&quot;<br/> and began to wonder whether &quot;Math::BigInt&quot; objects and their relatives<br/> needed to do so. (Answer: yes, probably).<br/><br/> Michael thought that the path of least resistance would be to make a<br/> smart match against an object die, unless the class had overloaded<br/> &quot;~~&quot;. Ricardo was a little squeamish at first, but realised that it<br/> solves future backward-compatibility concerns nicely: no need to<br/> suffer the result of a poor choice in what tricksy dwimmery &quot;~~&quot; the<br/> porters could invent on the spur of the moment to deal with a<br/> not-smart-match-aware object.<br/><br/> Larry Wall chipped in to point out that the smart match, as<br/> implemented in Perl 5 today, is now considered a misfeature in Perl 6,<br/> and there smart match behaves differently. That is, the match is<br/> determined solely by the nature of the RHS argument. Which means that<br/> if Perl 5 wants to borrow from the future and implement Perl 6 ideas,<br/> we need to track things more closely.<br/><br/> electing to match<br/><br/><br/>&quot;~~&quot; changing behaviour after using &quot;==&quot;?<br/><br/> In a similar vein, Gabor Szabo reported being tripped up by two<br/> scalars being smart matched, then tested for numeric equality, and<br/> then watching a subsequent smart match return a different result. This<br/> was in spite of the fact that the scalars had not changed value.<br/><br/> No-one had a really good answer, but Mark-Jason Dominus thought it<br/> reminded him of a heisenproblem with &quot;vec&quot; a few years back which in<br/> his recollection wound up labelled as, at best, a misfeature.<br/><br/><br/><br/> In the final thread of the week concerning smart matching, Jerry D.<br/> Hedden patched the documentation to indicate that &quot;~~&quot; is not a<br/> feature.<br/><br/> it just is (unapplied)<br/><br/><br/>Localising $@ in a &quot;BEGIN&quot; block<br/><br/> ... prevents perl from noticing errors in the block. As related by<br/> Yves Orton, following a thread on Perlmonks. No-one ventured a reason<br/> as to why.<br/><br/> looks like a bug<br/><br/><br/>Always to use strict<br/><br/> Steffen M&uuml;ller, whose post for some reason isn&#39;t showing up on Xray<br/> (and thus we point you to the first follow-up in the thread),<br/> suggested that it would be a really great idea to enable &quot;use strict&quot;<br/> by default for 5.11 (and hence 5.12).<br/><br/> While I was expecting a flamefest, surprisingly, everyone was more or<br/> less in agreement, although a push to enable &quot;use warnings&quot; as well<br/> had Abigail wringing her hands in dismay.<br/><br/> there is no strict<br/><br/><br/> Steffen cooked up a first cut at a patch to implement the desired<br/> behaviour, but Rafa&euml;l declined it, explaining that it felt a bit too<br/> hackish and suggested a better approach.<br/><br/> the heat is on<br/><br/><br/>Weird BEGIN block CV assignment behaviour<br/><br/> Peter Scott reported a question seen on c.l.p.m concerning typeglobs,<br/> &quot;BEGIN&quot; blocks and comments, for which he had no satisfactory answer.<br/> Nicholas and Dave Mitchell weren&#39;t able to do much better apart from<br/> some sympathetic waving of hands.<br/><br/><br/><br/>Regexps are people, too<br/><br/> Ricardo dreamt about the possibility letting an object knowing when it<br/> was being used in a regexp context, which would allow it to be used<br/> with ease in pattern matches and substitutions, and splits.<br/><br/> my life is made of patterns<br/><br/><br/> So Nicholas set about making regexps orange (no, don&#39;t ask). As part<br/> of the fallout, Jerry D. Hedden noticed that it caused threads tests<br/> to fail and proposed a patch to fix it.<br/><br/><br/><br/> Jerry then fixed the &quot;orange&quot; regexps in threads.<br/><br/><br/><br/> The shaking up of the code base in this way uncovered something else<br/> we weren&#39;t testing for, so Nicholas added a test:<br/><br/><br/><br/> And that brought us first class regexps (like &quot;ARRAY&quot; and &quot;HASH&quot;),<br/> rather than &quot;Regexp&quot; objects. Nicholas tried to change it to &quot;REGEXP&quot;<br/> but too many things broke. The underlying implementation structure is<br/> nothing more (for the moment) than a PVMG (a thing of magic) with a<br/> pointer to the regexp structure. The quest was on to see what could be<br/> hoisted out of the latter structure (such as reference counting) into<br/> the PVMG, since it had a slew of unused elements begging to be used.<br/><br/> Yves Orton liked the idea, and felt that it could go quite some way in<br/> reducing the complexity of the regexp engine. Nicholas continued to<br/> chip away at now-obsolete infrastructure code... until his monitor<br/> gave up the ghost.<br/><br/> There was idle chatter about renaming the REGEXP type to REGEX, RULE<br/> and PATTERN. ORANGE and PLUM also got a look in.<br/><br/> he makes it look so easy<br/><br/><br/>When &quot;strict &#39;refs&#39;&quot; is not strict enough<br/><br/> Mark-Jason Dominus penned a thoughtful critique of why he thought<br/> strict &#39;refs&#39; was not good enough. it was well-written enough to be<br/> summarised as: &quot;stringifying a reference is probably an error&quot;. If you<br/> really need to do so, you should be explicit about it. Having it done<br/> implicitly is probably unwise.<br/><br/> Michael S. made a couple of pertinent remarks as to why things had to<br/> be the way they were.<br/><br/><br/><br/>Patches of Interest<br/><br/> Jan Dubois&#39;s 64-bit fix for &quot;Time::Local&quot; was applied.<br/><br/><br/><br/> And his patch to bring blead up to 5.11 on Win32 was also applied.<br/><br/><br/><br/> Vincent Pit found a two year old typo in op.c (using &quot;&amp;&amp;&quot; instead of<br/> &quot;&amp;&quot;) and offered a patch. Nicholas applied it.<br/><br/><br/><br/>Obsolete &quot;Nullxx&quot; macros<br/><br/> Jan Dubois spotted some now-obsolete Nullxx macros in &quot;x2p&quot; and took<br/> out the axe. Applied by Marcus.<br/><br/><br/><br/> Elsewhere in the tree, Jim Cromie found a couple of Nullstrs that had<br/> been missed in the initial cull. Also applied by Marcus.<br/><br/><br/><br/> One of these changes may have been the reason why Jerry D. Hedden had<br/> to fix cygwin.c again.<br/><br/><br/><br/>Loss of context with &quot;return do { my $x; 1}&quot; constructs<br/><br/> Some years back, Vincent Pit reported a bug (#38809) that reveals how<br/> &quot;return do {my $x; 1}&quot; returns undef, yet &quot;return do {1}&quot; returns 1<br/> (except in taint mode).<br/><br/> It&#39;s all slightly confusing until you look at the output from<br/> &quot;B::Concise&quot;, which shows how the result from the &quot;do&quot; block gets<br/> discarded. Vincent Pit proposed a simple brute-force patch that does<br/> better, pointing out that a more subtle approach would be better, and<br/> requested comments (but received none) on the matter.<br/><br/><br/><br/>Replace &quot;FH&quot; by &quot;my $fh&quot; in &quot;open&quot;<br/><br/> Gabor thought it would be a good idea to use lexical filehandles in<br/> the documentation instead of globs. Michael G. Schwern thought so too.<br/><br/><br/><br/> He also suggesting listing where $_ is used. This was applied.<br/><br/><br/><br/> He followed up with another patch which received a lot more attention<br/> and came back with a revised version. Not yet applied.<br/><br/> <br/>Http://<br/><br/>Factor out duplicate code in &quot;struct xpv*&quot;<br/><br/> Marcus Holland-Moritz was puzzled, because with a short amount of<br/> work, he removed 377 lines of code and reduced the duplication of some<br/> hard-to-keep-in-sync code. He wondered if it was so blindingly obvious<br/> that no-one had spotted it before, or whether it was that way because<br/> of some impossibly subtle edge case.<br/><br/> On the downside, some struct members need to be wrapped in macros. On<br/> the other hand, some structures become identical, for instance,<br/> &quot;XPVIV&quot; and &quot;XPVUV&quot; are defined the same way.<br/><br/> Nicholas Clark was worried that the extra macroification might cause<br/> cranky compilers, such as the one on AIX, to have a fit. H.Merijn<br/> Brand took the patch for a spin on an AIX machine he had handy and<br/> gave it a clean bill of health.<br/><br/> Marcus discovered that there are 63 macros in the codebase that expand<br/> to more than 533 bytes, the grand-daddy of them all being<br/> &quot;REXEC_TRIE_READ_CHAR&quot; weighing in at 3697. In the end the patch was<br/> applied.<br/><br/><br/><br/>Watching the smoke signals<br/><br/>Smoke [5.11.0] 32712 FAIL(m) MSWin32 WinXP/.Net SP2 (x86/2 cpu)<br/><br/> Steve Peters looked at one of Steve Hay&#39;s smoke failures, and thought<br/> that it would be fixed by change #32713.<br/><br/><br/><br/>Smoke [5.11.0] 32718 FAIL(M) OSF1 V5.1 (EV6/4 cpu)<br/><br/> Jarkko Hietaniemi wondered if some recent change had broken the<br/> ability to compile the source with a C++ compiler (other than g++).<br/><br/> and after all that effort<br/><br/><br/>New and old bugs from RT<br/><br/>&quot;pod2html&quot;: Various markup errors with (nested) definition lists (#45211)<br/><br/> Steve Peters applied a patch that came from Debian.<br/><br/><br/><br/>&quot;CGI::Util::escape&quot; broken for iso-8859-1 data (#49055)<br/><br/> Slaven Rezic reported that this was broken in 5.10. &AElig;var Arnfj&ouml;r&eth;<br/> Bjarmason traced the problem down to the change in &quot;pack&quot; formats.<br/><br/><br/><br/>&quot;SIGTERM&quot; not terminating child process (#49073)<br/><br/> Jerry D. Hedden noted that a &quot;SIGTERM&quot; was not killing its child<br/> properly, resulting in a failure in &quot;Time::HiRes&quot;&#39;s test suite.<br/><br/><br/><br/>$_[0] seems to get reused inappropriately (#49115)<br/><br/> schmorp filed a report that boils down to being yet another &quot;Bizarre<br/> copy of ARRAY in sassign at Carp/;-type bug.<br/><br/> need to get to the bottom of this<br/><br/><br/>&quot;\R&quot; doesn&#39;t backtrack into &quot;\r\n&quot; (#49149)<br/><br/> Abigail discovered the above behaviour, but Yves was of the opinion<br/> that the Unicode specification pretty much imposes it.<br/><br/><br/><br/>$REGMARK not available in REPLACEMENT (#49190)<br/><br/> Abigail also reported that $REGMARK is not available on the right hand<br/> side of an &quot;s///&quot; expression.<br/><br/><br/><br/> So naturally, Yves fixed it.<br/><br/><br/><br/>nested closures keep scalars alive (#49208)<br/><br/> schmorp reported a bug (on 5.8) regarding closures holding into<br/> scalars for too long, thus preventing them from being destructed<br/> before the end of the program.<br/><br/> hmm...<br/><br/><br/> Dave Mitchell confirmed that the correct, desired behaviour is seen on<br/> 5.10<br/><br/> one reason to make the switch<br/><br/><br/>Perl5 Bug Summary<br/><br/> 307 new, 1465 open makes 1772 tickets (ouch). 28 created this week, 6<br/> closed.<br/><br/><br/><br/>New Core Modules<br/><br/> constant 1.14<br/> S&eacute;bastien Aperghis-Tramoni pushed out a new version of &quot;constant&quot;<br/> and then a second version followed hot on its heels (1.14), with<br/> the actual fix that 1.13 was supposed to contain.<br/><br/> this is the one<br/><br/><br/> SelfLoader 1.13_01<br/> Steffen M&uuml;ller made himself co-maintainer of SelfLoader,<br/> dual-lifed it, and pushed a development version out to CPAN.<br/><br/> pull yourself in<br/><br/><br/> Prior to this, Andreas K&ouml;nig reported that the previous version<br/> was unhappy on 5.6.x<br/><br/> what does &#39;&lt;&amp;&#39; on open do, anyway?<br/><br/><br/>This is the BBC<br/><br/> Andreas K&ouml;nig runs a smoke rig that checks as many CPAN modules in the<br/> shortest time possible against the most recent version of bleadperl,<br/> to see what breaks. Hence, Blead Breaks CPAN, or BBC.<br/><br/> 32013 broke Apache::DB (0.13)<br/><br/><br/> 32707 broke Data::Alias, Devel::Declare anD autobox<br/><br/><br/> 32734 broke Params::Validate and Clone<br/><br/><br/> (The final item was reported by Steve Peters).<br/><br/>In Brief<br/><br/> Michael discovered that blockless greps run as fast as blocky greps,<br/> but both are about twice as slow as using a smart match.<br/><br/> The color of surprise<br/><br/><br/> Tels had some Warnocked &quot;Math::BigInt&quot;, Ubuntu and &quot;Module::Install&quot;<br/> woes<br/><br/><br/><br/> Marcus readied himself for the push to &quot;IPC::SysV&quot; 2.0<br/><br/> if all goes according to plan<br/><br/><br/> Nicholas responded to a May 2005 thread and replaced the C-level<br/> assert mechanism in the &quot;perl&quot; source by the standard C library assert<br/> mechanism.<br/><br/> not dead yet<br/><br/><br/> He also noticed with some dismay that there was no simple, elegant<br/> method for detecting the building of modules under the core. The<br/> &quot;PERL_CORE=1&quot; signal was used in just about every way imaginable.<br/><br/> Build a better core trap<br/><br/><br/> Continuing, we find that he considers &quot;gcc -pedantic&quot; to be a mixed<br/> blessing, since it unfortunately disables a few important things like<br/> inlining macros, which kill performance.<br/><br/> Bondage &amp; discipline and speed: choose 1<br/><br/><br/> Andy Lester reported on 5.10 coverage on the tech web sites<br/><br/><br/><br/><br/> Sam Vilain, who has been working on getting the entire perl source<br/> history into a &quot;git&quot; repository reported that its tag for 5.004_05<br/> returned the wrong set of files and in tracking down the reason,<br/> discovered that &quot;Module::CoreList&quot; was probably wrong and issued a<br/> patch to fix it (unapplied).<br/><br/><br/><br/> Jim Cromie, noticing that the Perforce repository was close to change<br/> 32768, or 2**15, tries to flog it off to someone willing to donate<br/> TPF, only to discover that H.Merijn Brand had carelessly burnt it<br/> several hours previously on a minor whitespace tweak.<br/><br/> changes 33333 and 34567 still up for grabs<br/><br/><br/> Ricardo proposed real exceptions for 5.12, picking up on some topics<br/> that were discussed in the run up to 5.10. None of the few people who<br/> answered were against the idea.<br/><br/> something to be pursued<br/><br/><br/> Gabor encountered a surprising test failure when building with a<br/> nonsensical path, as in &quot;sh Configure -Dprefix==/path/to/perl&quot;. (Note<br/> the &quot;==&quot;). As the failure was somewhere in ExtUtils, Schwern sighed<br/> and said he&#39;d have a look at it.<br/><br/><br/><br/> Marcus discovered a 8 year old bug (or at least a performance drain),<br/> and quietly committed a patch to fix it.<br/><br/> UTF-8 file to UTF-8 scalar now 8% faster!<br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren as part of the<br/> Winter of Code project. Thanks Vienna!<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation to help support the development of Perl.<br/><br/> Sat, 05 Jan 2008 08:35:10 +0000 This Week on perl5-porters (2-8 December 2007) by Michael G Schwern &quot;The Plan would be to release 5.10.0 on the 18th of December. Why the 18th?<br/>Read perlhist.&quot;<br/>-- Rafael Garcia Suarez<br/><br/><br/>About this summary<br/>------------------<br/><br/>This is a trial run of a resumption of &quot;This Week On perl5-porters&quot;, written<br/>by myself, to see what&#39;s involved. has made monies available to pay<br/>the p5p summarizer, and if they accept this trial I will continue writing them<br/>for the next year.<br/><br/>Because I haven&#39;t gotten the formatting issues worked out yet, and because I<br/>like to embed links, and because I didn&#39;t realize this mailing list existed<br/>until after I&#39;d already written and formatted the summary, this weeks&#39; summary<br/>is only available as HTML.<br/><br/><br/><br/><br/>-- <br/>There will be snacks.<br/><br/> Mon, 10 Dec 2007 17:28:17 +0000 This Week on perl5-porters (4-10 December 2006) by David Landgren This Week on perl5-porters - 4-10 December 2006<br/><br/> &quot;This comment in mg.c scares me: &quot;/* Not sure why the av can get freed<br/> ahead of its sv, but somehow it does */&quot;&quot; -- Marc Lehmann, uncovering<br/> ancient evil.<br/><br/>Topics of Interest<br/><br/>madly duplicated files<br/><br/> Dave Mitchell performed some stellar file refactoring to bring Misc<br/> Attribute Decoration under control. As a result, the only extra file<br/> is a two-liner madly.c file.<br/><br/> preprocessor does the rest<br/><br/><br/>How to create a new Config setting?<br/><br/> Steve Hay wanted to add a new Config variable to indicate that perl<br/> was simply capable of emulating a &quot;fork&quot;. This would eliminate the<br/> need for some exceptionally hairy boolean logic that no-one gets<br/> right, and thus is subject to error.<br/><br/> He knew how to create new entries in the &quot;win32&quot; config files, but<br/> wasn&#39;t sure how to move on from there. H.Merijn Brand explained that<br/> the process was semi-automated, although he had spent time improving<br/> it recently so that less manual work was required.<br/><br/> Craig Berry noted that it would be nice to set this up for VMS as<br/> well, since that platform lacks Unix-style &quot;fork&quot; semantics, but he<br/> was happy to punt with an &quot;undef&quot; for the time being.<br/><br/><br/><br/>Undo VOS breakage caused by change #28892<br/><br/> There is an array of data that the regular expression engine uses, but<br/> if debugging is enabled, the core needs to know about it as well. And<br/> since a debugging build is the exception, and we don&#39;t want to bloat<br/> the core for no reason, the array is hosted either the extension or<br/> the core, depending on whether &quot;-DDEBUGGING&quot; is defined.<br/><br/> Paul Green discovered that a recent patch from Yves Orton failed to<br/> build on Stratus VOS, because the linker ended up failing to link the<br/> array to anything in a debugging build. Yves explained it all very<br/> well, so hopefully Paul will be able to concoct something that<br/> satisfies the VOS linker.<br/><br/><br/><br/>Latest Perl in Cygwin is 5.8.7<br/><br/> Adriano Ferreira wondered why the latest available Perl for Cygwin was<br/> not 5.8.8. (hint: the current maintainer stepped down and asked for<br/> volunteers to take over. Does this sound familiar?)<br/><br/> Slaven Rezic said that he had succeeded in building some of the<br/> trickier modules such as &quot;Tk&quot;, and so he and H.Merijn Brand swapped<br/> notes.<br/><br/><br/><br/> In other Cygwin news, Jan Dubois tweaked Makefile.PL to get it to<br/> compile Win32.xs.<br/><br/><br/><br/>Do we care about old &quot;dmake&quot;s for building perl on Win32?<br/><br/> Following on from Steve Hay&#39;s desire to drop old &quot;make&quot; support on<br/> Win32, David Landgren asked whether it would be possible for an<br/> explanatory error message to be issued if an old &quot;dmake&quot; was pressed<br/> into service, to give the luckless programmer a pointer to the<br/> documentation that tells them what to do.<br/><br/> Steve tweaked the &quot;Makefile&quot; and therefore showed that it was<br/> possible, except that the message doesn&#39;t explain what to do to fix<br/> the problem.<br/><br/><br/><br/>&quot;fields&quot; pragma in blead prohibits reblessing<br/><br/> Andreas K&ouml;nig noticed that one can no longer bless a &quot;fields&quot; object<br/> into another package (noticed by the fact that a CPAN module,<br/> &quot;Danga::Socket&quot;, now fails its test suite).<br/><br/> Dan Kogai, the module in question&#39;s author offered a workaround to<br/> repair the breakage, but remained puzzled as to why the error<br/> (&quot;Modification of a read-only value&quot;) was occurring.<br/><br/><br/><br/>Deadlock in ext/threads/shared/t/cond.t on bleadperl<br/><br/> Jan Dubois saw regular deadlocks in a &quot;threads&quot; test on Win32, and<br/> wondered if it was related to the hangs that Steve Hay sees in his<br/> test smokes. Steve Hay in turn thought that this particular problem<br/> started showing up around the time threads 1.53 was released.<br/><br/> Jerry D. Hedden thought that the problem is probably quite deep and<br/> has only come to light now that multi-CPU boxes are more common, and<br/> thus are really testing the threads implementation instead of just<br/> pretending. If fact, he figured out how the test was failing, but<br/> didn&#39;t know how to track down the culprit that would explain why.<br/><br/><br/><br/>Regexp test coverage teaser<br/><br/> Nicholas had a long conversation with himself after looking at<br/> S&eacute;bastien Aperghis-Tramoni&#39;s coverage reports and noticing that only<br/> the UTF-8 variant of a section of code in the regexp engine was<br/> visited by the test suite.<br/><br/> He wanted to find a non-UTF-8 pattern to shed light on the other side<br/> of the path. He managed to find one, but felt that the fact that it<br/> used &quot;re &#39;eval&#39;&quot; was cheating a bit. He then thought of a better way,<br/> but tripped over a bug in a &quot;study&quot;&#39;ed variable.<br/><br/> Yves Orton said he&#39;d take a look at things when he had some time.<br/><br/><br/><br/>Patches of Interest<br/><br/>User pragmas now accessible from &quot;B&quot;<br/><br/> Joshua ben Jore taught the &quot;B&quot; modules how to deal with user pragmas.<br/> Steve Hay and Yves Orton taught the patch to play nicely on Windows,<br/> and Rafa&euml;l Garcia-Suarez fixed up the tests.<br/><br/><br/><br/>&quot;; gets confused by slices<br/><br/> Bo Lindbergh produced a patch to stop &quot;; getting confused<br/> between package and lexical variables when slices are involved.<br/> Nicholas Clark chided him for copying code, so Bo came back with a<br/> fully-refactored improvement that Rafa&euml;l applied.<br/><br/> New! Improved!<br/><br/><br/>New and old bugs from RT<br/><br/>Perl coredumps on nested &quot;s///e&quot; (#40274)<br/><br/> Appears fixed in blead, probably when the regular expression engine<br/> went re-entrant.<br/><br/><br/><br/>perlio forgets buffering settings on EAGAIN (#41043)<br/><br/> Marc Lehmann tracked down a problem concerning buffering in PerlIO.<br/><br/><br/><br/>&quot;bignum&quot; returns NaN when raising integer value to negative power (#41050)<br/><br/> E. Culver noted that if &quot;bignum&quot; is in force, 10 ** -1 returns Nan<br/> (instead of 0.1).<br/><br/> brand new mathematics<br/><br/><br/>perldoc: deal with 2nd etc. arguments (#41054)<br/><br/> Sean M. Burke asked if anyone wanted to take over the maintenance of<br/> &quot;perldoc&quot;, since he no longer had the time to devote the attention it<br/> requires. Which is in fact not a whole lot.<br/><br/> Apply within<br/><br/><br/>Nested closures drop outer lexical scope (#41057)<br/><br/> Marcus Holland-Moritz noted that a bug, as reported by Aaron D.Ball,<br/> is FIB.<br/><br/> Fixed In Blead<br/><br/><br/>make rebuilds perl every time (#41058)<br/><br/> Marc Lehmann noted that &quot;gcc 4.1.2 20061115 (prerelease) (Debian<br/> 4.1.1-20)&quot; would rebuild perl every time &quot;make&quot; was run. Neither Andy<br/> Dougherty nor Rafa&euml;l were able to reproduce the problem.<br/><br/> works for me, alas<br/><br/><br/>weak references cause corruption, crashes etc. (#41061)<br/><br/> Marc also noted that any time he tried to use weak references in any<br/> non-trivial program, it would crash in any number of different and<br/> entertaining ways. Try as he might he was not able to produce a small<br/> test case, but offered some suggestions as to where to look.<br/><br/> sort of like<br/><br/><br/>perl segfaults when &quot;map&quot; arguments get freed (#41062)<br/><br/> Marc filed a third report concerning &quot;map&quot; that I was happy to report<br/> as FIBbed.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> A stasis, of sorts. Still stuck at 1501 open tickets.<br/><br/><br/><br/><br/>New Core Modules<br/><br/> * &quot;Test::Simple/More/Builder/Builder::Tester&quot; version 0.66 escaped<br/> from the Schwerniverse.<br/><br/><br/><br/>In Brief<br/><br/> Time::HiRes is happy again. One has to tread lightly on XS code that<br/> is still able to run on 5.004.<br/><br/><br/><br/> A truly satisfactory approach to install missing<br/> &quot;Compress/IO/{Base,Zlib}&quot; has not been found, but the current solution<br/> is good enough.<br/><br/> something special<br/><br/><br/> Robin Barker explained precisely why integer exponentiation may return<br/> a floating point result.<br/><br/><br/><br/> Adriano Ferreira had a problem with &quot;@{%hash}{@idx}&quot;, since %hash is<br/> now evaluated in scalar context for a slice. The construct was always<br/> iffy at best, now it is an error.<br/><br/> less deviance<br/><br/><br/> Yitzchak Scott-Thoennes ensured that &quot;-DDEBUGGING=both&quot; sets &quot;-g&quot;,<br/> because it would be a pity if it didn&#39;t.<br/><br/><br/><br/> Jim Cromie took a stab at refactoring dump.c to remove some<br/> cut-and-paste code and asked for some XS mavens to make sure he hadn&#39;t<br/> made any drastic mistakes.<br/><br/> Warnocked<br/><br/><br/> Yves supplied a few more tweaks to make it easier to create regexp<br/> engine plug-ins, which were applied, with a few tweaks.<br/><br/><br/><br/> Jerry D. Hedden realised that &quot;Perl_save_destructor&quot; is not a mathom,<br/> since it is required by &quot;Opcode&quot;. Rafael unmathomised it.<br/><br/> Back from the cemetary<br/><br/><br/> Jan Dubois moved some files around between win32/ext/Win32 and<br/> ext/Win32, which made sense, but had some surprising cascade effects.<br/><br/><br/><br/> Andy Lester forwarded a message containing information about the<br/> Klocwork analysis of Perl, but Jonathan Rockway pointed out that a<br/> password is needed to pass the gate.<br/><br/> Let me in<br/><br/><br/> John E. Malmberg issued an extensive followup to Craig A. Berry&#39;s<br/> remakes on the patch to provide VMS xterm support for the debugger.<br/><br/><br/><br/> Ilya Zakharevich delivered the missing link for building perl on OS/2.<br/><br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren. Sorry about being later<br/> than usual. Too many end of year parties, and I&#39;d sooner drink wine<br/> and scoff oysters than write summaries.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation to help support the development of Perl.<br/><br/>-- <br/>&quot;It&#39;s overkill of course, but you can never have too much overkill.&quot;<br/> Sat, 16 Dec 2006 04:46:34 +0000 This Week on perl5-porters (27 November-3 December 2006) by David Landgren This Week on perl5-porters - 27 November-3 December 2006<br/><br/> &quot;So I don&#39;t really have an answer for you. When faced with a similar<br/> situation, I punted and did a PerlIO_fdopen(fileno(stdio)) instead of<br/> a PerlIO_importFILE(stdio). This way you know you are creating a<br/> unixio layer which gets ref counted properly.&quot; -- Craig A. Berry,<br/> somewhere in the sprawling PerlIO layers saga.<br/><br/>Topics of Interest<br/><br/>&quot;PerlIO::Scalar&quot; buffering<br/><br/> H.Merijn Brand wondered if he had uncovered a problem with performing<br/> IO to a scalar, since at the end of a series of operations where the<br/> scalar should have been emptied, a lone newline character remained.<br/><br/><br/><br/>Whither 5.8.9<br/><br/> Jerry D. Hedden wondered if there was going to be a 5.8.9 release, and<br/> if so would arrive before 5.10.0. H.Merijn Brand confirmed that a<br/> 5.8.9 release is going to happen some time, and it&#39;s likely to escape<br/> from the lab before 5.10. No dates have been set for either event as<br/> yet.<br/><br/> when it&#39;s ready<br/><br/><br/>Old &quot;dmake&quot;s for building perl on Win32...<br/><br/> Steve Hay noticed that recent changes to the Makefiles for Windows are<br/> no longer understood by the older make programs floating around in the<br/> Windows world. He felt that the best approach was to update the README<br/> to explain the fix, in the unlikely event that someone encounters it,<br/> and to move on.<br/><br/> time to go<br/><br/><br/>... and archaic Visual C++ compilers<br/><br/> Steve also noted that the compiler writers at Microsoft have played<br/> the compiler command line switch fandango in recent versions, and now<br/> warnings are emitted when certain deprecated switches are used. To get<br/> things into shape means drawing the line at VC++ 5.0. This equates to<br/> roughly a 10 year old compiler. The Makefile states that things should<br/> be compatible all the way back to 2.0, but Steve has his doubts.<br/><br/> Nicholas Clark pointed out that if people really need to use a pre-5.0<br/> compiler, all they have to do is change the new-name switch back to<br/> old-name, and things should work. Steve updated README.win32 to note<br/> this point.<br/><br/><br/><br/>Trouble with PERLIO_INIT/PERLIO_TERM changes<br/><br/> Steve Hay and Jarkko Hietaniemi tried to make sense of the ongoing<br/> PerlIO problems, in that reference counts were going too far negative<br/> and bad things were happening as a result. And the code was a bit too<br/> twisty for people to understand exactly what was happening. My eyes<br/> sort of glazed over on this thread.<br/><br/> It eventually wound up being filed as a bug, see below.<br/><br/><br/><br/> Also, in another thread, Steve also wondered whether<br/> PerlIO_importFILE() needed to do a &quot;refcnt_inc&quot;. Craig A. Berry showed<br/> him how to test the hypothesis. One thing that came out of it is that<br/> Steve noticed that the code was leaking file descriptors.<br/><br/><br/><br/> Similarly, Yves Orton found a segfault on Windows due to one of the<br/> many changes that were attempted this week to come to grips with these<br/> issues. Rafa&euml;l was pretty sure about which patch was the problem, and<br/> when Yves reverted it, his build succeeded in starting the test suite.<br/><br/><br/><br/>&quot;PathTools&quot; now at<br/><br/> Ken Williams announced that he&#39;d thrown up &quot;File::Spec&quot; and &quot;Cwd&quot;, on<br/> a Subversion repository, and asked if there were any volunteers who<br/> wanted to poke around at them. Philippe Bruhat bravely stepped<br/> forward.<br/><br/><br/><br/>Change #26513 breaks &quot;Devel::SmallProf&quot;<br/><br/> Nicholas Clark found that the addition of an assertion to ensure an AV<br/> is always non-null made &quot;Devel::SmallProf&quot; curl up and die, and didn&#39;t<br/> what to do about it.<br/><br/><br/><br/> In the new month, the thread continued: Gisle Aas observed that the<br/> problem went away of the build was configured with &quot;usethreads&quot;.<br/> Rafa&euml;l Garcia-Suarez realised that the heart of the problem lay in<br/> toke.c, and made the appropriate change there.<br/><br/><br/><br/>Minor patch for &quot;;<br/><br/> Christophe Grosjean patched what he thought was a minor problem in<br/> &quot;Benchmark&quot;, but was really quite a significant bug when you think<br/> about it: &quot;cmpthese&quot; used to ignore child process times, which led to<br/> the fascinating outcome that a process that spawned an external<br/> command appeared to be faster than something done in native Perl.<br/><br/> Highly illogical<br/><br/><br/>Patches of Interest<br/><br/>Abstract mempool header testing<br/><br/> Jarkko did a bit of work on memory pools, (that approximates the<br/> conditions of Win32 on Unix), where memory allocation (especially in<br/> threads) is a much trickier issue. Nicholas Clark gave a clear<br/> explanation of how the mechanisms present in the source code fitted<br/> together, and Jan Dubois completed the picture.<br/><br/> Based especially upon Jan&#39;s information, Jarkko produced a patch to<br/> attempt to clear up some PerlIO problems. Jan, however, thought that<br/> the code in question traded one set of problems (the mempool<br/> allocations) for another (leaking stuff from the opcode tree instead),<br/> and explained how to fix that problem<br/><br/><br/><br/> As the month rolled over into December, Yves Orton took a stab at the<br/> matter, pointing to a couple of spots in the code that he felt relied<br/> on flawed assumptions. The patches went back and forth, and I lost<br/> track of which patch undid what, and which ones were reverted.<br/><br/> Jan Dubois suggested one strategy for getting things straightened out,<br/> and Jarkko coded it up as a patch. This seemed to fix things<br/> sufficiently well that Steve Hay was able to unrevert a previously<br/> reverted patch with everything still behaving itself.<br/><br/> Yves was most impressed, but also confused, and asked if there was<br/> some documentation that explained The Big Picture. Steve Hay did his<br/> best to illuminate the part of the canvas that he understood, hoping<br/> that Jan Dubois would chip in and complete as necessary. And so he<br/> did. Jan gave a thorough best expos&eacute; on the issue of mempools here:<br/><br/><br/><br/> Now all we need is for someone to draw a diagram of the myriad ways in<br/> which one may allocate memory in perl. The thread in the December,<br/> from the top:<br/><br/><br/><br/>Building 5.8.8 on OS/2<br/><br/> Ilya Zakharevich delivered a patch to get 5.8.8 compiling again on<br/> OS/2. There are still some tests that fail, and Ilya promised to<br/> address them in a future patch.<br/><br/><br/><br/>&quot;perl5db&quot; on &quot;miniperl&quot;<br/><br/> Similarly, Ilya noticed that no longer worked with<br/> &quot;miniperl&quot;, due to a reliance on &quot;IO::Handle&quot;, which was not yet fully<br/> operational at that stage of the build process. So he tweaked things<br/> to handle this situation gracefully.<br/><br/><br/><br/>&quot;Test::Class&quot; and blead<br/><br/> A test in &quot;Test::Class&quot; tested for a bogus regular expression, and was<br/> supposed to die. The funny part was that thanks to Yves Orton&#39;s<br/> tireless efforts, what used to be a meaningless string of characters<br/> is now a legal pattern, so the pattern matches and the test fails.<br/><br/> So Nicholas Clark made the pattern even more bogus, to force the<br/> pattern to fail again. Which judging by Yves&#39;s prodigious output,<br/> should see the test safe for a least three weeks.<br/><br/> NO CARRIER<br/><br/><br/>MacOSX debugger fork support<br/><br/> received some more patching goodness from Bo Lindbergh to<br/> allow the debugger to be fired up in a separate terminal window on Mac<br/> OS/X.<br/><br/><br/><br/>Make &quot;B::Lint&quot; use &quot;Module::Pluggable&quot;<br/><br/> Joshua ben Jore was one of the first people to take advantage of<br/> &quot;Module::Pluggable&quot;&#39;s new promotion to core, and rewrote &quot;B::Lint&quot; to<br/> make use of it. He was immensely pleased, since it meant that he was<br/> able to rip out the previous clumsy efforts.<br/><br/> The street finds its own uses for things<br/><br/><br/>No code specified for -.<br/><br/> Jarkko discovered that an &#39;e&#39; was dropped in the message &quot;No code<br/> specified for -e&quot; if in fact there was no code.<br/><br/> dash before e except after p<br/><br/><br/>Perl regexp structures bifurcation<br/><br/> Yves Orton continued to deliver a stream of changes to introduce a<br/> higher level of abstraction to the regular expression engine. This is<br/> part of his ongoing work to permit pluggable engines.<br/><br/><br/><br/>&quot;\R&quot; means something else in POSIX<br/><br/> Yves discovered that not only does the Unicode consortium care about<br/> regular expressions, they even published a specification on the<br/> matter. Yves read the spec, and learnt that they recommend using &quot;\R&quot;<br/> as a best-practice sequence for specifying a generic line-break<br/> marker.<br/><br/> This unfortunately clashes with &quot;\R&quot; as a relative back-reference<br/> assertion in Perl&#39;s regular expression, but since we are still not out<br/> of beta, Yves was quite happy to cast around for a different unused<br/> character. After looking around at what was left of the alphabet, he<br/> settled in &quot;\g&quot; (as in group). He implemented a generalised syntax<br/> with curly braces, so that now &quot;\g1&quot; or &quot;\g{1}&quot; is the same as the<br/> existing &quot;\1&quot;, and conversely, that &quot;\g-1&quot; and &quot;\g{-1}&quot; as a<br/> replacement for the now-defunct &quot;\R1&quot; syntax. (Yves, if you&#39;re reading<br/> this, doesn&#39;t that mean you could drop &quot;\k&lt;foo&gt;&quot; and subsume it into<br/> &quot;\g&lt;foo&gt;&quot;? You have 15 minutes to write the patch).<br/><br/> Yves also thought that implement &quot;\R&quot; shouldn&#39;t be too difficult<br/> either, noting in passing that Philip Hazel will be delivering it in<br/> the next release of PCRE.<br/><br/> 14 minutes and counting<br/><br/><br/>New and old bugs from RT<br/><br/>Segfault due to a semicolon inside an array reference (#40995)<br/><br/> Shlomi Fish discovered that a semi-colon, such as in &quot;[ $i-&gt;func2();<br/> ]&quot; gets the tokeniser in a tizz. Rafa&euml;l noted that this misbehaviour<br/> was fixed in blead.<br/><br/><br/><br/>Setting $0 invalidates environment shown by &quot;ps&quot; (#41008)<br/><br/> Alexander Bluhm noted that assigning to $0 causes unwanted<br/> side-effects on OpenBSD, and suggested a patch to fix things up.<br/> Rafa&euml;l took it and applied it to &quot;blead&quot;.<br/><br/><br/><br/>&quot;(?(COND))&quot; in pattern matching not working properly (#41010)<br/><br/> Karl Williamson discovered a bug where an alternation (&quot;(a|b)&quot;) did<br/> not match the same thing as a character class (&quot;[ab]&quot;). What was worse<br/> was that the original program, when it didn&#39;t crash, the values of<br/> other assorted variables in the program mysteriously changed. Yves<br/> Orton figured out what the problem was, and developed a patch to fix<br/> things up.<br/><br/> Applied<br/><br/><br/>&quot;backslash-G&quot; does not appear to work in a while loop (#41011)<br/><br/> Jim Woodworth filed what he thought was a bug, but Dr. Ruud suspected<br/> that he was a victim of crypto-context.<br/><br/><br/><br/>Changing $0 on darwin leads to excessive padding in &quot;ps&quot; (#38868)<br/><br/> The week continued in a $0 vein, with Darwin also causing trouble.<br/> Chris Dolan sorted things out with the help of the C preprocessor.<br/><br/> You were expecting \0?<br/><br/><br/>Regexp optimizer loses its hopes too soon (#39096)<br/><br/> Yves Orton explored the reasons why the optimiser was ignoring obvious<br/> shortcuts and pointed out why a naive solution wouldn&#39;t work, and the<br/> problems that a generalised solution would have to consider.<br/><br/> It used to be simple<br/><br/><br/>&quot;LD_LIBRARY_PATH&quot; changes not exported to Dynaloader,Perl 5.8.8 On <br/>Solaris 8 (#40655)<br/><br/> A mysterious person reported that this bug was resolved.<br/><br/> Private and Confidential<br/><br/><br/>SIGSEGV with &quot;pos()&quot; in regexp (#40989)<br/><br/> Yves Orton noted that this bug no longer existed in &quot;blead&quot;. This is<br/> no doubt a pleasing side-effect of all the work that the engine has<br/> received in recent times, although he was hard pressed to say which<br/> change would have been responsible. By extension, he didn&#39;t expect the<br/> fix to be backported to &quot;maint&quot;.<br/><br/> One more reason<br/><br/><br/> Yves noted that bug #39893 was probably another facet of the same<br/> problem.<br/><br/><br/><br/>&quot;File::Glob&quot; braces with character classes erratic behaviour (#41027)<br/><br/> Kolano discovered some inconsistencies with globs, curly braces and<br/> character classes.<br/><br/><br/><br/>Nested closures result in scoping related segmentation fault (#41028)<br/><br/> ... and they are fixed in blead.<br/><br/><br/><br/>&quot;PerlIOUnix_refcnt_dec()&quot; croaks in bleadperl since #29065 (#41030)<br/><br/> Steve Hay reported that since change #29065, his<br/> &quot;Win32-SharedFileOpen&quot; croaked with a strange error from somewhere<br/> within PerlIO. He traced the problem to a couple of patches, thinking<br/> that while they were not incorrect, perhaps there was an underlying<br/> bug which had only now been exposed as a result.<br/><br/><br/><br/>MSWin32: can&#39;t disable crlf trans. on STDxxx using :raw or binmode (#41034)<br/><br/> Vaclav Ovsik reported a problem with end-of-line markers on Windows.<br/> He was not able to disable end-of-line translations on files opened by<br/> default (such as &quot;STDOUT&quot; and &quot;STDERR&quot;, but files opened afterwards<br/> were just fine.<br/><br/><br/><br/>Perl5 Bug Summary<br/><br/> We almost crept under the 1500 barrier this week.<br/><br/> Once more into the breech<br/><br/><br/><br/><br/>New Core Modules<br/><br/> * &quot;IPC::Cmd&quot; achieved core status this week. Steve Hay tweaked it<br/> slightly to fix a test problem on Windows.<br/><br/><br/><br/> * &quot;threads&quot; moved onto version 1.53. This corrected some of the<br/> problems that Steve Hay was experiencing with his smoke machine,<br/> but now he saw that the test suite was hanging on a different<br/> test.<br/><br/><br/><br/> * &quot;File::Fetch&quot; made it to the core. Johan Vromans wondered why this<br/> functionality was not added to &quot;LWP::UserAgent&quot;. The reason is<br/> that &quot;File::Fetch&quot; is a wrapper for any number of command-line<br/> tools and protocols than can be used to fetch a file (such as<br/> &quot;rsync&quot;, &quot;LWP&quot; itself, &quot;curl&quot;, &quot;wget&quot; and the like).<br/><br/><br/><br/>In Brief<br/><br/> Nicholas Clark taught the Aho-Corasick regexp patch how to behave in<br/> the presence of threads.<br/><br/><br/><br/> H.Merijn Brand discovered that &quot;PerlIO::Scalar&quot; ignores &quot;format&quot; and<br/> &quot;write&quot;, preferring instead to send the output to &quot;STDOUT&quot;, instead of<br/> the associated variable.<br/><br/> The last user of formats in the world<br/><br/><br/> &quot;Time::Piece&quot; is back from the future.<br/><br/><br/><br/> David Landgren discovered that a literal before &quot;\k&lt;foo&gt;&quot; (a named<br/> back reference) can really ruin a conference talk. Yves Orton resolved<br/> the problem in 20 minutes, give or take a few.<br/><br/><br/><br/> The 5.8.3 &quot;sprintf&quot; patch made its way into the Mac OS X Security<br/> Update 2006-007.<br/><br/><br/><br/> Paul Marquess independently rediscovered the joy of testing<br/> filehandles with threaded 5.6.x perls, and decided to give it a wide<br/> berth.<br/><br/><br/><br/><br/> Bo Lindbergh proposed adding lexical scope to &quot;SelfLoader&quot;, complete<br/> with patch, but elicited no comments.<br/><br/><br/><br/> Gabor Szabo and Abe Timmerman talked about the broken pages on<br/><br/><br/> In November<br/><br/><br/> and in December<br/><br/><br/> Yves Orton had some unhappy results with &quot;Time::HiRes&quot;. After an<br/> incredibly long thread, everything was sorted out.<br/><br/><br/><br/> Johan Vromans was worried that adding &quot;Module::Load::Conditional&quot; to<br/> the core would be like unleashing Pandora&#39;s box.<br/><br/><br/><br/> Yves Orton wanted to know whether &#39;twas better to merge bugs or set up<br/> dependencies.<br/><br/> Whatever lowers the count most<br/><br/><br/> Jarkko tried in vain to sort out the UTF-8 -related failures that have<br/> been occurring in the smokes since August. Nicholas Clark explained<br/> the difficulties.<br/><br/><br/><br/> Jarkko added some things to think about in &quot;perltodo&quot;.<br/><br/> Nick&#39;s movie<br/><br/><br/> Jim Cromie noticed that the &quot;install&quot; target misses<br/> &quot;Compress/IO/{Base,Zlib}&quot;. The ideal solution involves using a more<br/> orthodox directory layout for the modules: &quot;Configure&quot; gets too<br/> confused otherwise.<br/><br/><br/><br/> Rob &quot;Sisyphus&quot; puzzled over integer exponentiation under<br/> &quot;-Duse64bitint&quot; on Cygwin, wondering why the same result could be<br/> stored as an NV (a float) or an IV (an integer). Nicholas Clark could<br/> no longer remember why, only that it was a conscious design decision<br/> not to do integer exponentiation.<br/><br/><br/><br/>About this summary<br/><br/> This summary was written by David Landgren.<br/><br/> Weekly summaries are published on and posted on a<br/> mailing list, (subscription: The<br/> archive is at Corrections<br/> and comments are welcome.<br/><br/> If you found this summary useful, please consider contributing to the<br/> Perl Foundation to help support the development of Perl.<br/><br/>-- <br/>&quot;It&#39;s overkill of course, but you can never have too much overkill.&quot;<br/><br/> Thu, 07 Dec 2006 18:19:32 +0000 This Fortnight on perl5-porters - (13-26 November 2006) by David Landgren This Fortnight on perl5-porters - 13-26 November 2006<br/><br/> [we could] not increment the reference count (and hope the SV is still<br/> around when the lvalue subroutine is called) -- Gerard Goossen<br/><br/> Hope and programming don&#39;t mix well usually. -- Rafa&euml;l Garcia-Suarez<br/><br/>Topics of Interest<br/><br/>Installing Perl still shouldn&#39;t feel like a rite of passage<br/><br/> The thread continued unabated this last fortnight, with a lot of<br/> discussion on how to improve INSTALL. The document attempts to address<br/> a number of conflicting requirements, which means that it won&#39;t be<br/> easy to get right.<br/><br/><br/><br/>Failures while attempting to install Plagger with &quot;blead&quot;<br/><br/> Steve Peters continued to analyse the reasons why Plagger failed to<br/> build on &quot;blead&quot;. It turns out that some prerequisites also fail on<br/> 5.8.8, so it&#39;s not as if it&#39;s completely &quot;blead&quot;&#39;s fault.<br/><br/> Stress testing stress<br/><br/><br/>Change 24714 broke &quot;Term::ReadLine::Gnu&quot; TODO<br/><br/> Andreas K&ouml;nig found that &quot;Term::ReadLine::Gnu&quot; was whacked on &quot;blead&quot;,<br/> which was due to what Nicholas Clark categorised as an over-ambitious<br/> patch to copy SVs lazily in &quot;sv_setsv()&quot;.<br/><br/><br/><br/>The _ prototype does not work correctly on sub x (_) x;<br/><br/> &AElig;var Arnfj&ouml;r&eth; Bjarmason was the first person to notice a problem with<br/> the new _ (underscore) prototype (that indicates that the routine<br/> operates on $_ by default).<br/><br/> If one defines a routine, such as:<br/><br/> sub odd (_) {<br/> return $_ % 2<br/> }<br/><br/> ... then calling &quot;odd&quot; (as opposed to &quot;odd()&quot;) bypasses the<br/> pass-the-$_ mechanism. Rafa&euml;l Garcia-Suarez fixed this up straight<br/> away.<br/><br/> still in beta<br/><br/><br/>Memory leak with &quot;s///&quot; and hashes<br/><br/> Rafa&euml;l was puzzled by a leak with substitutions and hashes and<br/> wondered if the problem was something to do with shared keys. Dave<br/> Mitchell realised that the problem was something else entirely, and<br/> reduced Rafa&euml;l&#39;s original problematic code down to a one-liner.<br/><br/> Dave&#39;s code showed that the problem was that as soon as one executed a<br/> regular expression with an alternation (that is, &quot;/a|b/&quot;), a few SVs<br/> were leaked each time. Yves Orton sighed, and admitted that it was<br/> probably all his fault.<br/><br/> Dave pinpointed exactly where in the code they were leaking from. This<br/> was enough to help Yves, and he supplied a fix in short order. Which<br/> worked, and was thus applied.<br/><br/> And they lived happily unallocated ever after<br/><br/><br/>How do I check a valid mail address?<br/><br/> Aaron Sherman took a look at the stock answer to this question (in<br/> perlfaq8) and dusted it down and made a few improvements. The change<br/> was promptly accepted by Rafa&euml;l.<br/><br/> For some strange reason, the thread then devolved into a long<br/> discussion about locales, Unicode and escaping characters that don&#39;t<br/> need to be escaped.<br/><br/><br/><br/>Testing bleadperl with &quot;Pod::Coverage&quot;<br/><br/> Steve Peters noticed that &quot;Pod::Coverage&quot; thought that lots of<br/> routines weren&#39;t documented in &quot;blead&quot;. The routines in question were<br/> all constant routines, and, thanks to Nicholas Clark&#39;s efforts to<br/> reduce the amount of memory they use, they are now so small that they<br/> escape &quot;Pod::Coverage&quot;&#39;s attention entirely. Nicholas suggested one<br/> way of fixing this.<br/><br/>&#39;threads&#39; failures<br/><br/> Jerry D. Hedden cooked up a torture test to provoke race conditions<br/> more easily with threads. The results exceeded his wildest dreams (or<br/> nightmares, take your pick).<br/><br/> Dave Mitchell gave Jerry some assistance, and after a while Jerry<br/> found the root of the problem that was responsible for nearly all the<br/> errors. Once this was fixed, only a couple remained, but Jerry had a<br/> feeling he knew why they were occurring.<br/><br/><br/><br/>&quot;PL_perlio_fd_refcnt&quot; and &quot;PERL_TRACK_MEMPOOL&quot;<br/><br/> Jan Dubois reported that things were still not playing nicely in<br/> PerlIO land when the right combination of configuration parameters was<br/> found. The problem was that the underlying memory allocation routine<br/> was receiving a pointer to a block of memory allocated by a<br/> higher-level allocation wrapper.<br/><br/> The higher level code is needed when threads come into play, where<br/> more detailed knowledge about which thread asked for the allocated<br/> memory becomes more important (especially on Win32). Jarkko Hietaniemi<br/> had an idea of how it could be fixed.<br/><br/><br/><br/> Jerry hacked around a bit more, and found that a detached thread was<br/> destructing itself after the main script had already ended, but didn&#39;t<br/> know how to pin it down in more detail. After stepping through the<br/> code he found a wonderful comment &quot;/* FIXME: treaddead ??? */&quot; in the<br/> routine at the top of the call stack.<br/><br/> Evidently he was onto something, and supplied a patch to fix it up,<br/> which Rafa&euml;l dutifully applied.<br/><br/><br/><br/> Having pondered the metaphysical issues of FIXME comments in code for<br/> a while, Jerry grepped the source to see if there were any others<br/> lying in ambush... and discovered dozens.<br/><br/> He wondered whether it was worth going through the list and adding<br/> items to the TODO list as needed. Warnocked.<br/><br/><br/><br/>Fix linker error on Win32<br/><br/> Recent code changes to &quot;blead&quot; caused linker failures on Win32. Both<br/> he and Yves Orton independently discovered the fix. So Rafa&euml;l applied<br/> the change, but Steve continued to note a crash in<br/> ext/XS/APItest/t/svsetsv.t.<br/><br/> Steve finally managed to get things straightened out with some<br/> particularly devious macro trickery.<br/><br/> pay no attention to the man behind the preprocessor<br/><br/><br/>&quot;bignum&quot; breaks &quot;Getopt::Long&quot;<br/><br/> It&#39;s not so much that one breaks the other, it&#39;s just that politely<br/> ignoring each other can only get you so far. H.Merijn Brand uncovered<br/> a number of problems when he needed 64 bit integers on a 32-bit CPU,<br/> so he just added &quot;-Mbignum&quot; to the command-line, and was faintly<br/> surprised when things fell apart.<br/><br/> There followed a long thread about implicit assumptions, containers<br/> and content, the uselessness of &quot;ref($foo) eq &#39;REF&#39;&quot;. In the middle,<br/> Yves Orton proposed a patch to fix things up, and a nice overview of<br/> why it&#39;s so difficult to write code that asks &quot;can I use this<br/> reference as an array?&quot;.<br/><br/><br/><br/> Tels discovered that &quot;Benchmark&quot; fails under &quot;-Mbignum&quot; and filed bug<br/> #40917. Sadahiro Tomoyuki determined what the problem was and came up<br/> with a fix, which Steve Peters applied.<br/><br/><br/><br/>lvalue &quot;substr&quot; using mortals<br/><br/> Gerard Goossen returned to a problem he raised in August:<br/><br/><br/><br/> with a patch that he proposed to fix the behaviour. Rafa&euml;l had quick<br/> look at Gerard&#39;s idea, but wondered if it wasn&#39;t just sweeping the<br/> underlying problem under the carpet until the end of the scope. Gerard<br/> explained that he saw there were two alternatives available and how to<br/> make them work.<br/><br/> Unfortunately, after a little thought, he realised that the first<br/> alternative couldn&#39;t work. Rafa&euml;l found another couple of problems<br/> with it as well, and hinted that the second alternative was possibly<br/> too fragile. It remains to be seen whether some sort of weak reference<br/> might do the trick.<br/><br/><br/><br/>Config on &#39;other OS&#39;s<br/><br/> H.Merijn Brand did some house-keeping on Configure. First he refreshed<br/> the MC units.<br/><br/><br/><br/> and then went through to see which new variables that had been added<br/> to Configure in recent times had no sensible defaults for them. The<br/> platforms included Plan 9, Win32, VMS, Symbian and a few others.<br/><br/> He also wrote some code to ensure that changes in the future will come<br/> up on the radar much more quickly, rather than having to remember to<br/> do run some quickly-forgotten script, A number of porters pitched in<br/> and filled out most of the missing blanks.<br/><br/><br/><br/>&quot;Class::MethodMaker&quot; breaks somewhere between 5.9.3 and 5.9.4<br/><br/> Steffen Schwigon noticed that this module, a pre-requisite for several<br/> dozen modules on CPAN alone, fails on &quot;blead&quot;, from 5.9.4 onwards.<br/> Rafa&euml;l traced this to a change that outlawed the lvalue use of<br/> &quot;GvNAME&quot;.<br/><br/> Steve Peters fixed things up, and started to work on getting ppport up<br/> to speed on the matter.<br/><br/><br/><br/>Can gcc&#39;s &quot;ar&quot; command use a file to list the objects to add?<br/><br/> Steve Hay was trying to teach &quot;ar&quot; to look at a file and use its<br/> contents as a list of object names to add to a library, all for the<br/> sake of reducing the length of a command line.<br/><br/> Nicholas Clark wondered if &quot;miniperl&quot; was usable at this point, in<br/> which case it could be used to furnish basic &quot;xargs&quot; functionality.<br/><br/><br/><br/> detecting forked debugger on VMS<br/><br/> John E. Malmberg was back in town, hacking perl on VMS. He was having<br/> trouble with the debugger, and he and Craig A. Berry thrashed out the<br/> issues.<br/><br/><br/><br/> Later on he committed a patch, which provided some nifty functionality<br/> for running the debugger in a separate terminal windows. Craig A.<br/> Berry thought the patch was promising, although he had a couple of<br/> reservations about the implementation. Nevertheless, he applied the<br/> patch and promised to take the debugger out for a spin.<br/><br/><br/><br/>28325/6 breaks &quot;DateTime::Format::Strptime&quot;<br/><br/> Andreas Knig isolated the change that caused<br/> &quot;DateTime::Format::Strptime&quot; to start falling over. Yves Orton<br/> realised that this was a symptom of a bug in the regular expression<br/> engine, made the appropriate fix, and added a test to make sure it<br/> stays fixed.<br/><br/><br/><br/> The patch caused something else to fall over in the test suite. This<br/> turned out to be because Yves forgot to include all the relevant<br/> pieces needed.<br/><br/><br/><br/> Andeas also caught the problem, leading Nicholas to comment that<br/> t/harness needs to become fussier, since it misses things on Win32<br/> (where Yves develops) that only show up under &quot;TEST&quot; on Unix.<br/><br/><br/><br/>Configure silence for 5005threads<br/><br/> Even though 5.005 threads have been completely excised from the 5.10<br/> codebase, the Configure infrastructure still knows about it, since it<br/> is used to generate the final &quot;Configure&quot; scripts for both &quot;maint&quot; and<br/> &quot;blead&quot;. He did manage, however, to make it shut up.<br/><br/><br/><br/>New development release in sight<br/><br/> Rafa&euml;l announced that he wanted to push 5.9.5 out the door, and asked<br/> the porters what they were working on, and what they thought would be<br/> ready soon.<br/><br/> Dave Mitchell admitted that he had broken a few things recently but<br/> was unlikely to find the time in the next few weeks to attempt the<br/> repairs.<br/><br/> Steve Peters wanted to make directory handles more useful, but was<br/> stuck on a problem with pipes hanging on OpenBSD, and was having<br/> trouble ruling Perl out before filing a bug with the OpenBSD kernel<br/> hackers.<br/><br/> H.Merijn Brand mentioned that there were a few &quot;Configure&quot; issues he<br/> wanted to look into, and possibly an edit or two to the README/INSTALL<br/> issues as raised by Michael G. Schwern. H.Merijn&#39;s &quot;Configure&quot; issues<br/> reminded Andy Dougherty about a problem with locales, GNU&#39;s make and<br/> Solaris, but lacked a Solaris box to check it out.<br/><br/> Yves Orton mapped out his priorities, mainly bug fixes and making<br/> semi-broken things work sanely. One big item was that he wanted to get<br/> the regular expression engine to a state where custom engines could be<br/> dropped in, that would allow, for instance, test coverage analysis of<br/> regular expressions, or otherwise hacking on the engine without being<br/> forced to relink perl.<br/><br/> Steve Hay wants to get Visual C++ support finished, and resolve the<br/> bug that prevents mod_perl 1.x from building successfully. When<br/> Nicholas Clark mentioned the probable cause of the problem, it<br/> reminded Rick Delaney about diddling %INC to force a module to be<br/> reloaded (something that &quot;mod_perl&quot; likes doing a lot). And that was<br/> enough for Nicholas to track down the offending code, and fix it.<br/><br/> Jos I. Boumans provided the list of what modules need to go into core<br/> in order for CPANPLUS to be added in.<br/><br/> Philip M. Gollucci noted that there were still some 5.005 threads<br/> remnants dotted about in the code. Steve Hay thought that it was just<br/> harmless detritus, since the 5.005 threads implementation code had<br/> been removed over four years ago. Steve Hay thought that it should be<br/> cleaned up completely, if only to avoid further confusion in the<br/> future.<br/><br/> Andy Dougherty cautioned that further cleaning would only add to the<br/> difficulty of merging &quot;blead&quot; back into &quot;maint&quot;. H.Merijn agreed,<br/> saying that the current state of affairs was pretty much optimal.<br/><br/><br/><br/>io_sock.t failure with VC8<br/><br/> Steve Hay discovered that this test reads its own source code, and saw<br/> that it managed to read only 4096 bytes of code and thus flunked the<br/> test. Steve thought the number was a little too coincidental to have<br/> been left to chance, and wondered where to start looking.<br/><br/> my lucky number<br/><br/><br/> Steve Hay fixed up problems in posix.t with &quot;strftime&quot; hanging when<br/> VC8 was used to build Perl. He traced it down to the fact that the C<br/> run-time library didn&#39;t recognise %D as a valid format, and things<br/> went downhill from there.<br/><br/><br/><br/> He also tidied up the warnings about deprecated CRT function names in<br/> VC8, and updated &quot;perltodo&quot;, because what he did was at best a<br/> stop-gap measure, and someone needs to come up with something better.<br/><br/><br/><br/>&quot;qr//&quot; benchmark<br/><br/> Tels ran some benchmarks on compiled regexps and wondered what the<br/> numbers meant. A long discussion followed, developing on the concepts<br/> of implementing a &quot;rule&quot; feature for Perl 5, how compiled regexps<br/> behave, how to deal with combining precompiled regexps and best<br/> practices for building a big precompiled expression from a number of<br/> smaller fragments.<br/><br/><br/><br/>Patches of Interest<br/><br/>static linkage for perl.exe for win32<br/><br/> A number of porters agreed that this would be useful, and in the end<br/> the necessary changes were committed to Win32&#39;s Makefile.<br/><br/><br/><br/>Regex Utility Functions and Substitution Fix (XML::Twig core dump)<br/><br/> Yves recent work to teach the regular expression optimiser about<br/> lookahead assertions threw some other assumptions about target lengths<br/> off. So he whipped up a patch to straighten things out. Bundled in<br/> with the patch were assorted improvements he&#39;d made to the engine here<br/> and there.<br/><br/><br/><br/>Assorted goodness added to the regular expression engine<br/><br/> Now that the regular expression has a new recursion syntax (via<br/> &quot;(?1)&quot;), Yves has been exercising them by converting old-style<br/> &quot;(??{...}&quot; recursion patterns over to it, and in doing so discovered a<br/> fundamental limitation, in that some times you want to recurse back to<br/> a capture buffer that&#39;s relative to the current location, not the<br/> beginning. So he extended &quot;(?1)&quot; to allow &quot;(?-1)&quot;, and made it work,<br/> too.<br/><br/> A new feature in every box<br/><br/><br/> He also closed out bug #19049 and added relative backreferences, which<br/> means you can say &quot;/foo (\w+) bar (\w+) \R1/&quot; and the reference count<br/> runs backwards from the current point, leftwards, to the nth capture<br/> group.<br/><br/> I for one will find this handy<br/><br/><br/> He also fixed up &quot;/a++b/&quot; by teaching the optimiser to look for &quot;ab&quot;<br/> before bringing the heavy artillery to bear.<br/><br/><br/><br/> He also added &quot;regmust()&quot; to, which exposes to the client<br/> code what the optimiser considers to be the floating and anchored<br/> strings of a potential match.<br/><br/><br/><br/> In other news, Ybes also reorganised the flags of the &quot;regexp&quot; struct<br/> into two fields, one internal, and one external and applied a<br/> consistent naming convention.<br/><br/> Separation of interest<br/><br/><br/>New and old bugs from RT<br/><br/>search position reset after &quot;local&quot; save/restore (#1716)<br/><br/> Yves Orton went travelling back in time to have a look at some really<br/> olde bugs. This earliest bug was an issue of magic. Yves thought that<br/> there should be some way of getting things to work correctly for &quot;pos&quot;<br/> at least.<br/><br/> This reminded Dave Mitchell that he had been meaning to get around to<br/> looking at how &quot;local&quot; and magic play together (or not), and told Yves<br/> that it was probably on his personal TODO list. Ironically, the sig<br/> attached to the reply was &quot;Never do today what you can put off till<br/> tomorrow.&quot;<br/><br/> Magic, murder and the weather<br/><br/><br/>Undefining signals (#2383)<br/><br/> Rafa&euml;l also retired another ancient bug: assigning &quot;undef&quot; to a signal<br/> handler now restores the default handler.<br/><br/><br/><br/>segfault on big regexp (#3689)<br/><br/> Yves found another bug report concerning core dumping badness over a<br/> regular expression that Steve Peters missed a while back when he<br/> closed out several zillion bugs,and noted that it was fixed in<br/> &quot;blead&quot;.<br/><br/><br/><br/>misplaced HERE mark in regexp error (#4360)<br/><br/> Yves explained that attempts to use variable width look-behind<br/> assertions (which aren&#39;t currently implemented in Perl, although Yves<br/> will no doubt implement them next week) cause the HERE mark to point<br/> at the wrong place.<br/><br/> This is because by the time the parser has figured out that there is<br/> indeed a variable width look-behind assertion, it no lacks the neurons<br/> to remember *where* it actually occurred. Yves suggested that the best<br/> way forward would be to drop the HERE marker in this context.<br/><br/> He should know<br/><br/><br/>Regexp replaces using large replacement variables fails (#6006)<br/><br/> Yves classified this bug a more of a parsing issue than a regular<br/> expression issue (the fact that &quot;${10}&quot; doesn&#39;t behave as it should<br/> (like $10)). He added a TODO test for someone else to address.<br/><br/><br/><br/>&quot;\G&quot; with &quot;/h&quot; results in infinite loop in 5.6 and later (#6893)<br/><br/> Yves thought that this bug stank, since it involved people playing<br/> around with things that the regular expression engine would rather<br/> keep to itself. He fixed the problem, but this caused a test in<br/> &quot;Text::Balanced&quot; to fail. But then again, as the man page of that<br/> module says, &quot;There are undoubtedly serious bugs lurking somewhere in<br/> this code&quot;.<br/><br/><br/><br/> With another round of patching, he managed to get thing into good<br/> shape.<br/><br/><br/><br/>bug in &quot;s/\s$word\s/ /gi&quot; and $&amp; (#18209)<br/><br/> Yves could not reproduce this problem, either in &quot;maint&quot; or &quot;blead&quot;.<br/> Just to be on the safe side, he wrote a test case to make sure someone<br/> finds out about it if it ever comes back again.<br/><br/><br/><br/>&quot;(a|b)*&quot; cannot match a string longer than &quot;2**15-1&quot; characters (#18268)<br/><br/> Yves confirmed that this was indeed a hard limit of the regular<br/> expression engine and couldn&#39;t see how it could be fixed, so he added<br/> a couple of tests to the test suite, and marked them TODO.<br/><br/><br/><br/>&quot;/(.*)[bc]/&quot; 10000 times slower in 5.8.0 vs 5.6.1 (#22395)<br/><br/> This was caused by an over-pessimisation in change #14115. Yves<br/> optimised the common case to make it go 10000 time faster again.<br/><br/><br/><br/> He also made another regular expression go speedy fast again (bug in<br/> regexp &quot;m/(.*?)b/ig&quot;) (#25822)<br/><br/><br/><br/>&quot;Encode::is_utf8&quot; on tainted UTF8 string returns false (#32687)<br/><br/> Rafa&euml;l fixed up the tainting logic of &quot;blead&quot;&#39;s copy of &quot;Encode&quot; and<br/> suggested to Dan Kogai that he incorporate the change in his own<br/> version.<br/><br/> Paging Dan &quot;Mr. Encode Maintainer&quot; Kogai, white courtesy phone<br/><br/><br/>$^R undefined on matches involving backreferences (#36909)<br/><br/> Yves also fixed this bug. H.Merijn yearned to clean up the white space<br/> as well, thought about what Dave Mitchell might say, and decided to do<br/> nothing.<br/><br/><br/><br/> The above change also fixed a bug your humble summariser uncovered a<br/> couple of years ago. Now it&#39;s fixed. Yay Yves! ($^R value lost in<br/> (?:...)? constructs, bug #32840)<br/><br/><br/><br/>Regexp stack overflow in 5.8.7 (#37230)<br/><br/> Brian Candler posted a bug report in September concerning a regular<br/> expression used to parse a particularly devious line in an Apache log<br/> file. Yves was pretty sure that the problem was resolved in &quot;blead&quot;.<br/><br/><br/><br/>&quot;Cwd::chdir()&quot; and handles (#38466)<br/><br/> Ken Williams was astonished to learn that &quot;chdir&quot; may operate on file<br/> handles. He updated the &quot;PathTools&quot; distribution.<br/><br/> &quot;Holy crap, chdir() can accept a filehandle? I had no idea.&quot;<br/><br/><br/>segfault in regex on a very long string (#40654)<br/><br/> Stas Bekman checked in to see what the status is with this bug.<br/> Answer: fixed in &quot;blead&quot;, still fails in latest &quot;maint&quot;.<br/><br/><br/><br/>perlop &quot;=&gt;&quot; (#40854)<br/><br/> Dr. Ruud asked a fairly innocent question about bareword hash keys and<br/> the fat comma operator, and this generated a certain amount of<br/> traffic. John Peacock correctly identified the issue as being the fact<br/> that the leading zero of the bareword was triggering octal<br/> interpretation.<br/><br/><br/><br/>&quot;find2perl -ls&quot; very slow on some LDAP-based &quot;getpwent&quot; systems (#40867)<br/><br/> David Dyck found that &quot;find2perl&quot;&#39;s propensity to warm its caches<br/> caused massive slowdowns on big LDAP directories, and wondered if<br/> there would be any problems in adopting a lazy caching strategy.<br/> Rafa&euml;l saw no problem.<br/><br/> do not do today...<br/><br/><br/>&quot;pod2xxx&quot; requires &quot;Pod::*&quot; parsers to reset state (#40899)<br/><br/> espie uncovered a problem with Pod::Man *et al.* using a single POD<br/> parser object to parse multiple files, which causes problems. Earlier<br/> files with POD errors influence the rendering of subsequent files.<br/> (This issue reared its head a few months back, when Russ Alberry was<br/> working on the podlators distribution).<br/><br/><br/><br/>Record reads and :encoding don&#39;t mix (#40901)<br/><br/> Christopher J. Madsen discovered that reading fixed-length records<br/> (for instance, with &quot;$/ = \10&quot;) and &quot;:encoding&quot; don&#39;t play well<br/> together. Especially when converting between EBCDIC and UTF-8.<br/><br/> why am I not surprised?<br/><br/><br/>&#39;Aho-Corasick&#39; regex patch (28373) not thread-safe (#40954)<br/><br/> Jerry D. Hedden found, much to Yves&#39;s dismay, that the Aho-Corasick<br/> patch was not thread-safe. When Yves looked at what needed to be done<br/> he threw up his hands in horror and wondered if there wasn&#39;t a better<br/> way of abstracted the differences between threaded an unthreaded<br/> builds.<br/><br/> The main problem is that the op-tree (which also contains regops) is<br/> shared among all threads, so detached threads tend to have more<br/> problems with heavy objects hanging off the op-tree. Dave Mitchell<br/> said that he had plans for a &quot;copy-on-retrieve&quot; technique for this<br/> problem, which would mean that a lot of these sorts of issues with<br/> threads would suddenly disappear.<br/><br/><br/><br/> Similarly, Jerry also found that &quot;Perl_op_clear&quot; is not thread-safe<br/> (#40965).<br/><br/><br/><br/>&quot;Date::Parse&quot; mysteriously lowercasing text when an unrelated variable <br/>is used. (#40957)<br/><br/> Mumia W. encountered a curious bug involving sorts, closures and &quot;lc&quot;<br/> which resulted in some very strange action at a distance.<br/><br/> and there was great puzzlement<br/><br/><br/>Build fails with &quot;-DNO_MATHOMS&quot; (#40963)<br/><br/> Jerry D. Hedden found that you can&#39;t build perl without mathoms,<br/> despite what it says on the tin.<br/><br/><br/><br/>MSWin32: can&#39;t disable crlf trans. on STDxxx using :raw or binmode (#40964)<br/><br/> Vaclav Ovsik built a perl with his bare hands on Win32, and noticed<br/> that he couldn&#39;t disable line-endings translations through the PerlIO<br/> layer.<br/><br/><br/><br/>SIGSEGV with &quot;pos()&quot; in regexp (#40989)<br/><br/> Christian Mittag had the decency to produce one of the tiniest<br/> programs possible to provoke a core dump, with the following code:<br/><br/> $_=&quot;a\x{111}\x{111}a\t&quot;;<br/> s/\t/pos;&#39; &#39;;/eg;<br/><br/> Unfortunately no-one leapt to his rescue.<br/><br/> won&#39;t you come on down to my<br/><br/><br/>Perl5 Bug Summary<br/><br/> For the first time in a quite some time, a significant reduction in<br/> the number of open bugs was observed. Yay! Congratulations to everyone<br/> who helped out.<br/><br/> 5 o