This Fortnight on perl5-porters - 3-16 April 2006

  The porters concentrate on the Coverity reports, cleaning up a
  collection of crazy, curious and crufty code constructs.

Topics of Interest

Even more recursion removed from the regex engine

  Dave Mitchell continued his quest to improve the regexp engine. In
  this batch of changes, he used slab allocations to deal with the
  hassle of saving the context required for dealing with backtracking.

  With a couple of other improvements, the performance is now back to
  where it was when the engine used a recursive approach, so the
  efficiency is the same now as it was then. More importantly, he also
  removed the final recursion path triggered by "(??(..code..})"
  assertions. This opens the way to a number of other improvements.

  The only downside is that at the moment it looks like the changes are
  so extensive that it is unlikely to be backported to "maint".

    Watch this space
    http://xrl.us/kw8f

  Andy Lester later scavenged a bit of unused code in regexec.c, which
  made Dave realise that the code was only unused because he had
  accidentally deleted some other code that referred to it. So he
  reverted Andy's change and restored the code he had removed.

    Whatever gets you there
    http://xrl.us/kw8g

Empty keys in %Config

  Brendan O'Dea forwarded a wacky bug from Debian, in that %Config has
  some place-holders for paths to programs like tail(1) or sendmail(1),
  but Configure never probes for them, so they are left empty. One would
  have to run something like

    Configure -Dtail=/usr/local/bin/tail

  and then write code like

    my $tail = $Config{tail} || '/usr/bin/tail';

  in order to make any use of it, and thus wanted to know what the idea
  was. Despite his best "Configure"-fu, H.Merijn Brand was at a loss to
  explain why these (but not all) values were empty, because it was set
  up to in fact probe for them.

  Andy Dougherty provided the missing pieces of the puzzle, which was
  sufficient for H.Merijn to figure out what was happening, and how to
  fix it.

    H.Merijn gets some more -fu
    http://xrl.us/kw8h

  Some time prior to the above thread, H.Merijn made a plea to get
  people to test "Configure", as it has received a good working over
  recently, and some things may have been broken in the process.

    Test this
    http://xrl.us/kw8i

Coverity defect scan of Perl

  A while back, Coverity announced that it had applied its source code
  analysis tool to a number of high-profile open source projects. At the
  outset, Perl had a very favourable ratio of defects to lines of source
  code.

  Nicholas Clark noted with dismay that a number of other projects (PHP,
  PostgreSQL and Samba) had since addressed every single reported
  defect, thereby pushing Perl to the back of the pack. Benjamin Holzman
  and Andy Dougherty went looking to see what they could do.

    "Issue" is probably more accurate than "defect"
    http://xrl.us/kw8j

    The current state of play
    http://scan.coverity.com/

Acting upon the Coverity findings

  Andy Lester started working through the warnings produced by the
  Coverity source code analysis tool. The first thing he dealt with was
  some dubious "#ifdef"s dealing with "SOCKS5"-specific code,

    Clean socks
    http://xrl.us/kw8k

  and tightened up some code in pp.c that should be clearer to both
  humans and source code analysis tools,

    Everyone's a winner
    http://xrl.us/kw8m

  and tidied up some code in pp.c that, while not officially *wrong*,
  was certainly of dubious merit.

    Barely legal
    http://xrl.us/kw8n

  Jarkko fixed locale.c,

    http://xrl.us/kw8o

  and since he enjoyed it so much, he did it again,

    http://xrl.us/kw8p

  and then examined another issue that arose when you set "$/ = \0", and
  documented that as well,

    One less undocumented feature
    http://xrl.us/kw8q

  and continued by adding "NULL" guards to calls to "IoIFP" in pp_sys.c,

    http://xrl.us/kw8r

  not to mention a similar problem concerning formats, also in pp_sys.c,

    Little wonder this was never encountered
    http://xrl.us/kw8s

  and added an "assert" in perlio.c, which should be sufficient for
  Coverity to understand what is going on. Alas, Nicholas noted that it
  doesn't appear to believe perl's special home-grown "assert". So
  Jarkko added a comment that should be understandable by a human (and
  tough beans for Coverity),

    http://xrl.us/kw8t

  Andy then guarded a pointer dereference, by ensuring that it points to
  something useful (that is, something other than "NULL") in regcomp.c,

    http://xrl.us/kw8u

  attempted to indicate that "listsv" is never "NULL", elsewhere in the
  same file,

    http://xrl.us/kw8v

  but amended it following a suggestion by Nicholas.

    http://xrl.us/kw8w

  In regexec.c, Jarkko moved a "NULL" check in the hope that it would
  allow Coverity to make better sense of the code,

    http://xrl.us/kw8x

  but that appeared insufficient, and so he hoisted the check even
  further up in the routine, blowing away Andy's delicate "const"ing
  work in the process,

    Real Men don't use const
    http://xrl.us/kw8y

  and added another "NULL" check. Dave Mitchell thought that this was
  slightly pointless, for if the variable in question really was "NULL"
  at that time, then the pattern was in such trouble that stopping to
  check whether the variable contains "NULL" is just rearranging the
  deck-chairs.

    http://xrl.us/kw8z

  Jarkko then plugged up a leaking file handle in
  ext/XS/Typemap/Typemap.xs. Unfortunately, the obvious one line fix was
  also incredibly wrong, causing bad things to happen, which left Jarkko
  and Nicholas scratching their heads.

  Tim Jenness recalled that there was a discussion on this issue a few
  years back, and the gist of the problem is that when a handle is
  created in XS, the core takes over and claims the responsibility of of
  closing it for you. A mechanism to prevent this delegation from
  occurring is available for XS authors who need it, but it is not ideal
  in the general case, as it prevents useful DWIMmery from taking place,
  such as (surprise!) closing the file.

    Too clever, or not clever enough
    http://xrl.us/kw82

  Jarkko carried on and clarified a pointer aliasing issue, by removing
  a temporary alias hanging around in perlio.c,

    http://xrl.us/kw83

  and another temporary in the same file that caused Coverity to think
  there was a resource leak.

    http://xrl.us/kw84

  and yet another problem of allocated but unused memory, also in
  perlio.c. This time Jarkko tried to edit the diff after generation,
  but was caught out by Coverit^WNicholas, who applied the change that
  Jarkko meant to make in the first place.

    http://xrl.us/kw84

  Coverity fussed over a section of code in doop.c that in fact only
  scratched the surface of the main problem. Jarkko added a slew of
  tests to bop.t and fixed the real problem in the code.

    http://xrl.us/kw85

  Yitzchak Scott-Thoennes followed up on ext/Filter/Util/Call/Call.c
  where calling "filter_read(-1)" would indeed produce spectacular
  badness. The solution probably lies in removing the signedness from
  the variable used, but in any event, some sort of sanity checking
  should be added.

    http://xrl.us/kw86

  Yitzchak also found a problem with "NULL" in ext/Socket/Socket.c, and
  wondered whether the code was over-engineered, and chopping out a
  conditional would improve matters. Again, a defensive approach to bad
  data will be required.

    http://xrl.us/kw87

  Yitzchak also prodded Nicholas into making a change to clear up an
  issue in ext/IO/IO.c. While it appears out that many of these issues
  are in fact "Can't Happen" problems from within perl, since they are
  guarded against elsewhere, it may wind up helping the development of
  XS modules, since garbage values may be caught earlier, rather than a
  core dump 20000 statements later on.

    http://xrl.us/kw88

  Benjamin Holzman came back with a fix for what is probably a "Can't
  Happen" bug in "Storable",

    http://xrl.us/kw8n

  and another safety check in pp_sys.c that could only be triggered by
  XS code going out to lunch.

    http://xrl.us/kw89

  Andy Dougherty looked at toke.c and found that Coverity incorrectly
  flagged some code in a loop as dead when in fact it could be reached
  the second time around. He therefore wanted to add a Coverity-friendly
  message to signal that it was legitimately "ENOTABUG" so that Coverity
  would not count it as a defect in the following round.

  Two possibilities are available, either a C comment that adheres to a
  specific format à la "lint", or adding an entry to their on-line
  database.

  He wondered whether, as a matter of policy, the comment should appear
  in the source (thus making a visible reference to what is, at the end
  of the day, a commercial product, and therefore giving them a
  sprinkling of mindshare), or just using the database. He favoured the
  comment approach.

  Andy Lester voted against the idea, arguing that tools come and go,
  but comments tend to remain (and worse, drift out of date). John
  Peacock voted for, arguing that if Coverity were to disappear
  tomorrow, we could always "grep" the codebase to strip them out.

  Hugo van der Sanden remarked that he had regularly spent time chasing
  through the source to determine whether a possible path between two
  points of code existed, and thought that Coverity was probably unable
  to perform the required gymnastics to arrive at a similar conclusion.
  Be that as it may, an occasional comment in the source, explaining
  these matters to future porters, would not go amiss. If Coverity can't
  figure it out, that's their problem.

  Adam Kennedy was against the comment idea too, offering the hypothesis
  of what was not a bug initially, becoming a real bug in six months
  time due to an innocuous change elsewhere, but the report being
  suppressed due to the initial Coverity comment. This reminds me of
  advice from Klortho, #11922: You don't suppress error messages, you
  dumbass, you PAY ATTENTION and try to understand them.

    The correct use of comments
    http://xrl.us/kw9a

  Andy D. then found what was probably a genuine problem, at least as
  far as clarity of intent is concerned, in utf8.c.

    http://xrl.us/kw9b

  Andy also looked at an issue in hv.c, which he traced to change #24810
  made by Nicholas last year, but the simple fix would create a visible
  change in behaviour from the public API, and the complex fix was too
  much for him to deal with without assistance.

  It turns out that Coverity was right, and Nicholas resolved it with
  change #27761, adding a regression test that exercised some code which
  until now had always remained unvisited by the test suite.

    Bonus statement coverage improvement
    http://xrl.us/kw9c

  After his initial call to arms, Nicholas had a closer look at some of
  the defects. One in particular caught his eye made his wonder whether
  the problem was not in fact a bug in Coverity's analysis, and whether
  it should be reported to Coverity. David Landgren noted that on the
  "postfix-users" mailing list, Wietse Venema had announced a new
  release of Postfix, that in part dealt with Coverity findings, many of
  which were false positives.

    Wietse's thoughts on Coverity
    http://comments.gmane.org/gmane.mail.postfix.user/139710

A first cut at "state" variables

  For a long time, the only technique for creating static variables in
  functions à la C was to use the dubious (and now, deprecated) "my $var
  if 0" construct. (The officially sanctioned approach is to use an
  outer ("BEGIN" or bare) block and hoist the variable outside the
  function).

  This situation started to change this week, when Rafael Garcia-Suarez
  landed his first draft to add "state" variable to perl. Now you can do
  the following:

    $ bleadperl -le 'sub f { state $x = 10; print $x++ } f; f; f'
    10
    11
    12

  This will be available via "use feature 'state'". I thought it was
  nifty. A couple of people threw up their hands in horror.

  In order to proceed, what is needed are more tests, and to implement
  state arrays and hashes as well.

    A little rough around the edges
    http://xrl.us/kw9d

Underscores in version numbers

  Jan Dubois kicked off an interesting thread concerning underscores in
  version numbers, the problems they pose, how to work around those
  problems, what happens with dual-lifed modules, the CPAN indexer and a
  mythical script belonging to Randal that checks if the universe is in
  sync.

    I never know which version I'm going to be
    http://xrl.us/kw9e

Benchmarking "perlbench"

  Jim Cromie presented some benchmarks concerning his work to replace
  "S_new_HE" with "Perl_new_body" and asked for some advice as to how to
  proceed, and received none.

    http://xrl.us/kw9f

  Following on from these efforts, Jim looked at benchmarking the same
  executable against itself five times. He was happy that the overall
  averages all came out to 100%, but many individual tests showed
  variations of up to 2%.

  Jim felt that this constituted a threshold noise factor, below which
  differences are worthless. Jim then wondered whether different CPUs
  and platforms would have different thresholds, and whether such
  information should be collected in a more systematic manner.

    Benchmarking perlbench
    http://xrl.us/kw9g

Doing battle with old AIX compilers

  Jarkko discovered that AIX's "xlc" C compiler will do the following:

    #define FOO(n) printf("n = %d\n", n)
    FOO(10); # expands to "10 = 10\10"

  which is, while apparently legal, also quite useless. He therefore
  patched a couple of files to work around the breakage this introduces.
  Lukas Mai cited the C standard, chapter and verse (ISO 9899:1999, page
  152, footnote 144) that indicates that the above compiler behaviour is
  indeed incorrect.

  Nick Ing-Simmons said that it used to be legal, but ANSI/ISO tightened
  the specification in a latter revision to the standard, and the
  compiler is adhering to the previous standard. H.Merijn Brand pointed
  out that other "old" compilers continue to be supported as capable of
  compiler perl, and offered some insights into the issues surrounding C
  compilers on AIX.

    What could you do with a macro like that?
    http://xrl.us/kw9h

"open(FH, ...)" in not like "open FH, (...)"

  Ken Williams was trying to concoct a multi-argument open function to
  avoid using backticks, and the attendant shell-quoting problems, but
  was having trouble sneaking it past 5.005. It wouldn't actually have
  to run on 5.005, but everything Ken tried resulted in compile-time
  errors, or else if it was accepted by 5.005, it didn't do anything
  useful on 5.6+.

  Mike Guy offered a venerably ancient technique that would possibly
  still work with punched cards, and had an added bonus of separating
  out the "open" and "fork" into discrete steps, thereby permitting
  fine-grained error checking.

    Revise your classics
    http://xrl.us/kw9i

Looking for cut-and-paste programming

  Jarkko launched "cpd" (cut-and-paste-detector) at a recent copy of
  "blead" to see what would happen. Andy Lester was so impressed he
  wanted a Makefile "cpd" target so that he could see how it was
  invoked. Jarkko deferred, saying that the tool is still a little
  fragile, being unable to parse perl's source code completely. At the
  moment he's working with the author to shake out the remaining bugs.

    Stand back
    http://xrl.us/kw9j

  Andy then took the chainsaw to dump.c. which had acquired some
  duplicated code in the process of incorporating Larry Wall's MAD work.

  (In case I haven't mentioned it already, MAD stands for Misc Attribute
  Decoration and is the process of hanging sufficient information off
  the op-tree to be able to recover the source code afterwards. Up until
  now, the compilation phase has simply been required to produce
  bytecode for the run-time interpreter, and it's usually impossible to
  figure out by inspecting the bytecode to figure out what the original
  Perl source would have looked like (think: peep-hole optimisations).

  Being able to go from source code to bytecode back to source code is
  an important step in getting Perl 6 to run Perl 5 code).

    http://xrl.us/kw9k

  The first time through, the patch didn't stick, so Andy did it again.

    http://xrl.us/kw9m

    CPD project page
    http://pmd.sourceforge.net/cpd.html

Measuring code complexity

  Jarkko finished with a discussion on code complexity, noting that
  Coverity gives you the McCabe Cyclomatic Complexity, the Halstead
  Effort and the Halstead Error Estimate. The results of for perl seem
  about right: "Perl_keyword" in toke.c is as complex as the following
  thirteen most complex functions combined (featuring such family
  favourites as "Perl_magic_get", "Perl_is_gv_magical" and
  "S_looks_like_bool").

  Yitzchak wanted to know whether macros were expanded or not in
  calculating the indices, because in a codebase with such heavy uses of
  macros as perl's, the differences in perceived complexity are
  significant. Jarkko thought that they weren't. Anything that attempted
  to resolve the macros in sv.c would blow a fuse.

    Statistician's delight
    http://xrl.us/kw9n

Patches of Interest

Wrapping up the "IO::Socket" tests on "Win32"

  Yves Orton polished his patch to make the "IO::Socket" tests pass on
  "Win32". Jim Cromie updated concise-xs.t, because the "B::Concise"
  tests picked up the API changes that Yves introduced.

    All sockets are go
    http://xrl.us/kqp4

  In another sub-thread on this topic, Nick Ing-Simmons circled back to
  the problem of how to determine whether a Windows perl can "fork" or
  not. The problem is one of semantics: yes, perl on Windows can "fork",
  but without creating a new process, or allocating a new memory space,
  so it hardly counts as a POSIX "fork", even if it looks the same at a
  certain distance.

  For this reason, the $Config{d_fork} should not be used on "Win32".
  Andy Dougherty nevertheless maintained that *something* in %Config
  should be available, such as a putative $Config{d_pseudofork} key, the
  idea being that people shouldn't have to grovel through
  $Config{ccflags} to try to determine whether particular combination of
  flags present or absent means that a specific feature or behaviour is
  available.

    So I guess we need a meta $Config{some_sort_of_fork}
    http://xrl.us/kw9o

Overridable filetest operators

  Salvador Fandiño pitched his patch to add "/", "^" and 1 as prototypes
  for user function to allow them to mimic accurately the built-in
  functions.

    Warnocked
    http://xrl.us/kw9p

Renaming variables in some mg.c routines

  Andy Lester noted that in a couple of routines, nothing is ever read
  from the "mg" parameters that are passed in, and worse, are used by
  the code to stash intermediate calculations. So Andy marked them as
  Unused, and declared some new local variables whose names better
  reflect their purpose.

    Refactoring at its finest
    http://xrl.us/kw9q

New and old bugs from RT

"chr(65535)" should be allowed in regexes (#38293)

  Back in January, Marc Lehmann filed a bug report concerning the
  possibilities available for matching (or not) "chr(65535)".
  Sadahiro-san, resident UTF-8 guru, examined the problem in depth,
  uncovered a number of inconsistencies surrounding such Unicode
  code-points and wrote a patch to clean it up. Said patch includes
  tests (yay!) to ensure the problem doesn't come back, and more tests
  (double yay!) for a related bug (#37836).

  Rafael wondered whether perlunicode.pod should be updated to document
  more precisely what happens when "use warnings 'utf8'" is in force,
  but Tomoyuki answered that it would probably be better to rework perl
  to deal with Unicode non-characters more reasonably, as per the
  standard.

    http://xrl.us/kw9r

  At the same time, Ilya Zakharevich ran into this exact problem on
  "comp.lang.perl.misc".

    It's a small world
    http://xrl.us/kw9s

"/(??{ "(PAT)" })/" doesn't set $1 (#37407)

  Dominic Dunlop returned to this bug, noting that

    my $dot = qr{ () }x;
    "" =~ /(??{ $dot })/x;

  no longer dumps core on "blead", but then again it doesn't dump core
  for 5.8.6 or 5.8.8 either. On the other hand,

    "a" =~ /(??{ "(a)" })/

  which was Abigail's original problem in the bug report doesn't capture
  the 'a' into $1. Hugo thought that, given the documentation, this was
  not a bug: the implementation just isn't up to this sort of caper.

  Dominic thought that the documentation should be tightened up to
  explain more precisely how "(??{})" currently behaves. Abigail
  conceded the point, but offered a specific real world example where
  the ability would come in handy (matching shortened IPv6 addresses).

    http://xrl.us/kw9t

Memory leak occurs when an "eval" statement exits by a signal (#38854)

  Itsuro Oda reported a problem when dying via a "SIGALRM" handler in an
  "eval" block, with a nice short test case to show the good and the
  bad.

    Warnocked
    http://xrl.us/kw9u

Failing to build lib/File/Basename.pm (#38891)

  Cliff Liu tried to build perl, and it failed with some peculiar errors
  when building lib/File/Basename.pm.

    http://xrl.us/kw9v

Those bleeding greedy quantifiers (#38906)

  Japhy found an odd corner-case in the regexp engine where greediness
  and quantifiers get confused and located the likely culprit in
  regexec.c. "Animator" took a stab at resolving the problem, which is
  no mean feat considering it was h(?:er|is) first attempt at patching
  the regexp engine. Dave Mitchell took it and cleaned it up for "blead"
  and included Japhy's original test-case bug snippets.

    http://xrl.us/kw9w

Perl5 Bug Summary

  The week before last (twenty less than the previous week, all hail
  Steve Peters):

    http://xrl.us/kw9x

  Last week (six more closed):

    http://xrl.us/kw9y

    The remaining 1537 are here
    http://rt.perl.org/rt3/NoAuth/perl5/Overview.html

New Core Modules

  *       ExtUtils-Install version 1.38 uploaded by Yves Orton. This
          handles the problems on Win32 dealing with the unlinking of
          open files, and also adds an "INSTALL.SKIP" directive that
          users of revision control systems should appreciate.

          Following a query from Rafael, Yves explained the difference
          between "INSTALL.SKIP" and "MANIFEST.SKIP".

            http://xrl.us/kw9z

  *       H.Merijn Brand uploaded The latest and greatest "dor" patch
          (the "$var //= $eigenvalue" trick from Perl 6) for application
          to to the current "maint" snapshot. Not exactly a module, but
          hard to live without once you've grown used to it.

            http://xrl.us/kw92

In Brief

  The "use sort 'stable'" sorting in reverse bug was fixed by Robin
  Houston.

    http://xrl.us/kw93

  Jarkko Hietaniemi patched "ext/IO/t/io_unix.t" to fall back and use
  /tmp should the current working directory have permissions too
  restrictive to allow sockets to be created.

    http://xrl.us/kw94

  The issue with "pow" failures on AIX, and how to work around it, was
  sorted out.

    http://xrl.us/kw95

  Jim Cromie supplied a long update to his current obsession (arenas for
  op-codes), and a patch to sv.c.

    http://xrl.us/kw96

  Nicholas Clark noted that a better strategy for testing "Perl_ss_dup"
  is required, as it never gets called on Unix, as its main use is in
  association with the pseudo-forking code on Windows.

    http://xrl.us/kw97

  Hugo van der Sanden fixed a problem setting %ENV keys to "undef" that
  was causing the test suite to emit a faint burning smell.

    http://xrl.us/kw98

  Jerry D. Hedden reposted his patch to sync "blead"'s "threads" with
  CPAN. Rafael found that it did not compile on older versions of HP-UX
  (that is, 10.20, unsupported by HP for a couple of years now). This
  will be cleaned up in a subsequent patch.

    http://xrl.us/kw99

  More changes here:

    http://xrl.us/kxaa

  Jan Dubois patched threads.pm to overload the "!=" operator as "==" is
  overloaded to allow threads to be compared by thread id, since
  overload.pm cannot (or does not) implicitly derive "!=" from "==".

    http://xrl.us/kxab

  In doing so, tidied up the placement of the documentation for "~~"
  (smart match).

    http://xrl.us/kxac

  Joshua ben Jore arranged things so that "foreach (...)" isn't a
  "B::Lint" warning anymore. Hugo and Rafael both commented on the
  proposal, and Joshua defended his position with ease.

    http://xrl.us/kxad

  Steve Hay was struggling with the "PERL_UNUSED_DECL" change (27649)
  breaking threaded builds on Win32 with gcc-3.4.2.

    In space no-one can hear you scream
    http://xrl.us/kxae

  Ravi Sastry had a problem with lib/ExtUtils/t/Constant.t on z/OS.
  Sadahiro-san, resident EBCDIC guru, spotted an suspect ASCIIism in a
  complemented character class and spelt it out longhand. A conversation
  on the finer points of EBCDICisms ensued, and Ravi finally got it
  working to his satisfaction.

    http://xrl.us/kxaf

  Continuing on z/OS, Mohammad Haseen had problems with
  "-DPERL_EXTERNAL_GLOB", which dictates to perl whether it should
  handle globbing itself or defer to an external process.

    http://xrl.us/kxag

  He was also having problems with lib/ExtUtils/t/Embed.t. Nick
  Ing-Simmons was suspicious of the compiler switches used, and
  suggested some work-arounds.

    http://xrl.us/kxah

  Nick Ing-Simmons carefully explained the advantages and differences of
  dynamic versus static builds of Perl.

    http://xrl.us/kxai

  Upcoming versions of Solaris will permit 32-bit processes to open more
  than 256 "stdio" file handles. Alan Burlison sent in a pre-emptive
  patch to allow "gcc" to deal with the change.

    Your standard preprocessor trickery
    http://xrl.us/kxaj

  Dominic Dunlop went through RT looking for tickets involving postponed
  regexes "(??{...})" and found nine. He then summarised the situation
  of each one.

    http://xrl.us/kxak

  Yann Combarnous offered a patch to silence an "uninitialized value"
  warning in CGI.pm (bug #38865).

    http://xrl.us/kxam

  Chris Dolan identified a problem with changing $0 on Darwin leads to
  excessive padding in "ps" (bug #38868)

    http://xrl.us/kxan

  Jan Dubois posted a patch to ease the combination of UTF-16 with
  ":crlf". Nick Ing-Simmons started to have second thoughts on the
  approach.

    http://xrl.us/kxao

  John E. Malmberg published an RFC concerning UTF-8 file specifications
  on VMS. Steve Hay wanted the same for "Win32". Nicholas Clark helped
  John finalise his patch.

    http://xrl.us/kxap

  Steffen Ullrich posted a bug showing how to crash perl by having $1
  bound to an out-of-scope variable. (bug #38869)

    http://xrl.us/kxaq

  Joshua ben Jore is a sick person. He uses emacs for a start. On top of
  that, he h(ij)?acked his syntax checking minor mode to refuse to save
  the file if it doesn't lint cleanly. Download his code, and you can
  too!

    http://xrl.us/kxar

  Dan Kogai was happy to discover that search.cpan.org now groks the
  "=encoding" directive, which improved the presentation of his modules
  there. Tels rushed off to add Unicode examples to his POD.

    http://xrl.us/kxas

  In between bouts of jousting with Coverity, Andy still found some time
  to deliver some consting goodness in regcomp.c. Dave applied most of
  it, but held back on one part as he's about to let more regcomp.c
  improvements escape from the basement.

    http://xrl.us/kxat

  Philip M. Gollucci ran into trouble, due to the recent changes
  concerning "PERL_UNUSED_DECL" when compiling Apache's "apreq". It is
  apparently something to do with ppport.h, but his diff appeared to
  rewrite ppport.h in its entirety, so I'm not sure anyone knew what to
  do with it.

    http://xrl.us/kxau

  Torsten Foertsch was having problems with "("x"x32769)=~/\A(.)\1*\z/s
  and print "$1\n"" and wondered what to do about it. Hugo explained
  what was going wrong, and realised in passing that the diagnostics.pm
  diagnostic needs a bit of work, following on from Dave's
  recursive-to-iterative transformation of the regexp engine.

    http://xrl.us/kxav

  Jerry D. Hedden took a third attempt at synching "blead" with CPAN's
  "threads". Rafael put it through the wringer and came up with some
  problems in conjunction with "PERL_TRACK_MEMPOOL" and offered advice
  as to where things could be breaking. Rafael made a couple of other
  comments on the changes and finished with a word of thanks, because
  few people have had the courage to venture into this code and attempt
  to clean it up.

    http://xrl.us/kxaw

  Andy tweaked the "FIT_ARENA" macros. Jim Cromie explained that what
  Andy had done was to re-merge a macro that H.Merijn had previously
  split apart into two, but could no longer recall what necessity had
  driven H.Merijn to do such a thing.

    http://xrl.us/kxax

  Linda Walsh tweaked Benchmark.pl to remove spurious warning that
  occurs when the ":hireswallclock" option is used.

    http://xrl.us/kxay

  Jan Dubois taught "Pod::Html::depod()" how to deal with multi-line
  strings and update the test suite to boot,

    http://xrl.us/kxaz

  and also fixed up anchor generation in "Pod::Html" for "=item item 2".

    http://xrl.us/kxa2

  Hervé Guillemet had a problem with nested closures losing their
  references to outer variables, noted in bug (#38895). Yitzchak
  explained that the problem had been fixed in "blead", but that the
  change was unlikely to make it back to "maint", and offered a simple
  technique to route around the damage.

    http://xrl.us/kxa3

  Andy Lester made a simple, but elegant improvement to mg.c to make it
  clearer what was being returned in "Perl_magic_scalarpack", and
  elsewhere to split the use of variable that had been pressed into use
  in two distinct roles into two separate variables. This is has been
  pretty much the overall aim of Andy's refactorisations over the past
  months; it's only now that he's starting to get there.

    http://xrl.us/kxa4

  H.Merijn implemented a trick in "Configure" to introduce a new
  "-DEBUGGING" switch that would be an improvement over "-DDEBUGGING".
  Many people appeared to appreciate the concept.

    http://xrl.us/kxa5

  Slaven Rezic tweaked "perlfaq8" via bug report #38901 to improve how
  to discover if I'm running interactively or not.

    http://xrl.us/kxa6

  Jerrad Pierce looked at "Module::Corelist" through the lens of perl
  4.036 and came up with a number of additions for it, arguing that it
  would have a certain educational value. Rafael remained somewhat
  unconvinced.

    http://xrl.us/kxa7

  Nicholas Clark revived and old thread started by Jos I. Boumans
  concerning a Bug or Limitation of Filehandles in "pp_require".

    http://xrl.us/kxa8

  This then segued into code references in @INC and source filters. Nick
  Ing-Simmons mentioned a truly mind-boggling use that he had put it to.

    http://xrl.us/kxa9

  So Nicholas went ahead and changed what he said he'd change, but then
  discovered "Filter::Simple" error messages getting mangled inside
  "require" (#38920).

    http://xrl.us/kxba

  Andy Lester cached a pointer dereference to a bitfield, in the hope of
  improving the performance of "is_list_assignment" in op.c. Nicholas
  knew from bitter experience that it is hard to outsmart compilers
  these days, but applied the patch anyway.

    Take 1
    http://xrl.us/kxbb

    Take 2
    http://xrl.us/kxbc

  Andy finished by removing an unused variable in a macro.

    http://xrl.us/kxbd

Feedback from the previous summary

  H.Merijn Brand carefully explained just what it takes to pull a
  "Configure" script out the constituent pieces,

    http://xrl.us/kxbe

  bug #34349 is still open,

    http://xrl.us/kxbf

  I flipped a bit concerning the layer problem Jan Dubois found,

    http://xrl.us/kxbg

  and Jerry Hedden explained that thread stack size sizing is even
  trickier than first thought.

    http://xrl.us/kxbh

About this summary

  This summary was written by David Landgren. Last week I was in England
  on holiday. As I was wandering around Salisbury cathedral, I kept
  thinking "Hmm, I hope there won't be too much traffic on p5p this
  week". HA!

  If you want a bookmarklet approach to viewing bugs and change reports,
  there are a couple of bookmarklets that you might find useful on my
  page of Perl stuff:

    http://www.landgren.net/perl/

  Weekly summaries are published on http://use.perl.org/ and posted on a
  mailing list, (subscription: [EMAIL PROTECTED]). The
  archive is at http://dev.perl.org/perl5/list-summaries/. Corrections
  and comments are welcome.

  If you found this summary useful or enjoyable, please consider
  contributing to the Perl Foundation to help support the development of
  Perl.
--
"It's overkill of course, but you can never have too much overkill."

Reply via email to