This Week on perl5-porters - 11-20 November 2005

  The crackdown. A number of bugs were fixed this week, possibly
  obsolete code was scrutinised, Hugo patched the regexp engine and Perl
  on Windows was improved.

"h2ph" finds "gcc"'s include directory

  Brendan O'Dea posted a patch to use the "gcc" command line switch
  "--print-libgcc-file-name" to locate the "gcc" include directory. The
  previous technique of parsing "gcc -v" no longer works on version 4.

  H.Merijn Brand wanted to know when "--print-libgcc-file-name" was
  introduced (otherwise things would start failing for older gcc
  compilers). Brendan said that he had reached as far back as 2.95, and
  the switch was supported. Abe Timmerman chipped in with a justifiably
  ancient 2.7.2.2 gcc compiler that also supported the switch.

  Jason Vas Dias pointed to bug #37582 that he had filed on the issue,
  and that the patch had been applied by Steve Peters as change #26074.

    Brendan's patch
    http://xrl.us/iiau

    Jason's patch
    https://rt.perl.org/rt3/Ticket/Display.html?id=37582

Eliminating discrete arenaroots

  Jim Cromie issued a reworked, tested on threaded and unthreaded, patch
  to remove the fifteen different type-specific arenaroots, and asked
  people to have a smoke. Nicholas Clark went over the patch very
  carefully and made a number of suggestions, and Jim proposed a
  revision of the patch, which Nicholas applied as #26139.

  After looking at Nicholas's reworking of the patch, Jim added a number
  of corrections to the comments in the code, and then posted a series
  of benchmark results showing that the patch should have made things go
  faster (with the usual proviso about statistics).

  Later in the week, Jim came back with another patch that gathered the
  arenas into a linked list. This has some upsides and some downsides,
  but notably, it allows the possibility of exposing the arena to allow
  performance tuning.

    The elimination
    http://xrl.us/iiav

    Benchmark results
    http://xrl.us/iiaw

    RFC - linked list of arenas
    http://xrl.us/iiax

A better warning in maint

  Yitzchak Scott-Thoennes asked whether change #22807, which makes "$^O
  !~ /xxx/" emit the warning "Useless use of negative pattern binding
  (!~ in void context)" instead of "Useless use of not in void context"
  should be applied to maint. Nicholas yelped in pain and whispered
  something about perl 5.10. Yitzchak sympathised, and went through his
  own blead patches, evaluating which ones were worthy (safe enough) to
  be applied to maint.

    The question
    http://xrl.us/iiay

    Yitzchak's list
    http://xrl.us/iiaz

"h2xs" and backwards compatibility

  Steven Schubiger voiced his disquiet over the way h2xs ties the Perl
  version of the module to the module of perl installed on the author's
  machine (even when it might run perfectly well on any number of prior
  versions).

  Rafael Garcia-Suarez agreed that the orginal design decisions was
  probably incorrect and Nicholas remembered a previous thread on the
  matter, which Steven tracked down. Sébastien Aperghis-Tramoni was
  annoyed by modules that failed to install on 5.8.5 because they
  required 5.8.7, and wondered if it wouldn't be better to focus on the
  branch version (that is, 5.8), rather than relying on the subversion
  (the x in 5.8.x), and offered a patch. And also pointed out that
  "XSLoader" is backwards-compatible as far back as "5.005_04".

  Rafael declined to pick up the patch, pointing out that there is no
  way of ensuring that code that runs on 5.8.x will run on 5.8.x-1 and
  lower.

  This latter point prompted David Nicol to ask whether any
  documentation existed relating feature to version, and when the
  feature moved from absent, to experimental, to robust.

    Doubts over h2xs
    http://xrl.us/iia2

    2001, a Perl odyssey
    http://xrl.us/iia3

Abigail and the regexp engine

  Abigail posted some code where it was expected that "'A B' =~
  /^(.)\s+.$(?(1))/" should match. In 5.005 it used to work, but from
  5.6.0 and beyond it fails.

  Andreas König tried to track down the patch that caused the change in
  behaviour, but "gcc" got in the way. In fact, depending on whether he
  used version 3.2.3 or 4.0.3 the pattern matched, or didn't,
  respectively.

  Hugo van der Sanden burnt a precious tuit or two and rummaged around
  in the regexp engine internals and made a one-line change that fixed
  the problem, but said that he didn't have time to study the
  ramifications implied by the patch and noted that ""intuit_start" is
  probably the least maintainable piece of code in perl".

    Now why would you want to do a thing like that?
    http://xrl.us/iia4

Tracking down a Win32 smoke failure

  One of Steve Hay's boxes phoned home with a smoke failure. After first
  ignoring it and hoping it would just go away of its own accord, Steve
  had a closer look and noticed that it was a real bug, and only
  occurred when "PERL_IMPLICIT_SYS" was defined. Unfortunately, this
  particular "#define" is needed by ActivePerl, and Steve tracked the
  change in behaviour down to patch #26108. A three line change to tweak
  stacks in "BEGIN" blocks.

  Nicholas shrunk the problem down to a neat

    #!./perl -w

    BEGIN {
      $SIG{INT} = sub {exit(0)};
      kill 'INT', $$;
    }

  which causes a little known routine named "S_unwind_handler_stack" to
  blow up. After a certain amount of detective work, he was able to show
  quite clearly *why* the code was failing, but was at a loss as to
  *how* to fix it.

  Steve Hay pointed to a thread from last year where Jan Dubois posted a
  patch that seemed promising at the time, but for whatever reason was
  never polished and applied to blead.

  Jan spoke up and offered a bit more detail about how the patch worked,
  and what it needed in order to be complete. The next day he came back
  with a much better version. Stever Peters applied it and all the tests
  passed. Yay Jan!

    Smoke issues forth
    http://xrl.us/iia5

    The offending patch
    http://public.activestate.com/cgi-bin/perlbrowse?patch=26108

    "free to wrong pool", circa January 2004
    http://xrl.us/iia6

Is "STRANGE_MALLOC" still useful?

  Nicholas wondered about the different code paths taken depending on
  whether "STRANGE_MALLOC" is defined. He wondered whether it would be
  safe to assume that "malloc"/"realloc"/"free" work correctly these
  days, and that by chainsawing it out we would escape some
  no-longer-needed complexity?

  Andy Dougherty supplied a valuable history lesson, explaining why
  things came to be the way they are. And concurring that at this point
  in time, it could possibly get the axe, but it would be important to
  try out a couple of big applications to see how they fare.

    Compare the simple code path to the complex code path
    http://xrl.us/iia7

    Sarathy's 1995 summary of the problem
    http://xrl.us/iia8

When errors are reported on the wrong line

  David Hillman crafted a detailed bug report concerning errors being
  reported on the wrong line (which of course tends to drive people
  insane when they try debugging it).

  Dave Mitchell, noting the relative frequency with which these sorts of
  bug reports tend to appear, wondering what the cost benefit ratio
  would be of using up more memory per op in order to keep accurate
  track of the current line.

  Jim Cromie came up with what he termed a rather ugly solution to the
  matter. Then again, beauty is in the eye of the beholder. Dave
  Mitchell followed up with some preliminary numbers on the memory cost.
  The concensus is that a certain amount of memory could be traded for
  the peace of mind it would bring.

    The bug report
    http://xrl.us/iia9

    An ugly fix
    http://xrl.us/iiba

Sun Studio compiler for Linux

  Steve Peters tweaked hints/linux.sh to get the Sun Studio compilers
  for Linux up and running. The results are promising, although the
  patch, in Steve's own opinion, needs work.

  He also used it to take a look at Jarkko Hietaniemi's "valgrind"
  finding from last month.

    The tweak
    http://xrl.us/iibb

    Problems with sprintf()
    http://xrl.us/iibc

    Jarkko's valgrind discovery last month
    http://xrl.us/iibd

Perl 5 Bug Summary

  The current number of open issues stands at 1508.

    The bugs at the beginning of the week
    http://xrl.us/iibe

    The Bug Summary
    http://rt.perl.org/rt3/NoAuth/perl5/Overview.html

In brief

  "abs2rel("/foo/bar", "/foo/bar")" should return '.' or something else
  sensible, according to Ken Williams (and not an empty string). After
  asking around if anything other than "File::Spec" relied on the
  behaviour, Ken went ahead and fixed the problem in "Path::Class".

    http://xrl.us/iibf

  "local" and "thread::shared" don't mix. "dean" filed bug #37671
  showing how localising variables bound to shared variables can cause
  the shared variable to become undefined. At least in version 5.8.4.

    http://xrl.us/iibg

  "Compress::Zlib" should now build nicely on Win32 environments, now
  that Paul Marquess has fixed a lurking "binmode" bug.

    http://xrl.us/iibh

  Recent "const"ing changes to the codebase had broken "perlbug"'s
  ability to grok patchlevel.h. Yitzchak filed a patch to make it work
  again and threw some compatibility future-proofing into the bargain.

    http://xrl.us/iibi

  Dynamically appending code to an existing file. Jos I. Boumans wants
  to do this from time to time, and showed several techniques for
  implementing it, however, only two methods work. Looking at
  "pp_require" in pp_ctl.c, it looks as if the code is going straight to
  the file, rather than going through a higher layer. Jos asked if this
  could or should be fixed, or nailed down in the documentation. No
  takers.

    http://xrl.us/iibj

  Another source of segmentation faults killed. Peter Dintelmann
  followed on from last week and continued to nail segfaults. He noted
  that executing the code snippet "PerlIO::get_layers undef" would end
  in grief and patched universal.c to make it work correctly (or rather,
  not crash). Applied by Steve Peters as #26144.

    http://xrl.us/iibk

  Vadim Konovalov supplied a patch make WinCE compile blead and wondered
  whether ./wince shouldn't be made a subdirectory of the ./win32
  directory in the source tree. H.Merijn made a few remarks about the
  patch, basically prodding Vadim to give himself and Rainer a bit more
  credit in the README.

    http://xrl.us/iibm

  When in doubt, use brute force. "fbriere" noted a cute bug: if you
  require a module that dies when it is loaded, it fails the first time.
  But the second time, it succeeds!

    http://xrl.us/iibn

  Andy Lester took a preliminary run through the codebase and axed the
  ancient RCS commit comments in the source. (These days the codebase is
  managed in a Perforce repository).

    http://xrl.us/iibo

About this summary

  This summary was written by David Landgren.

  Information concerning bugs referenced in this summary (as #nnnnn) may
  be viewed at http://rt.perl.org/rt3/Ticket/Display.html?id=nnnnn

  Information concerning patches to maint or blead referenced in this
  summary (as #nnnnn) may be viewed at
  http://public.activestate.com/cgi-bin/perlbrowse?patch=nnnnn

  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