This Week on perl5-porters - 26 June-2 July 2006

  "But having it match what perl6 will do is even more important than
  having it make perfect sense, IMO.", Yitzchak Scott-Thoennes,
  thinking about forwards compatibility.

Topics of Interest

"exit" and "die" in threads

  Following on from the threads 1.33 conversation last week that was
  given short shrift in last week's summary (sorry Jerry), Jerry D.
  Hedden put forward a proposal to nail down the semantics of what
  happens when a thread calls "exit" (and more to the point, what to do
  about everything that might want to clean up after itself). Throw in a
  "__WARN__" and/or "__DIE__" handler or two, and you're starting to
  talk about some serious fun.

  Jan Dubois and Rafael Garcia-Suarez commented on a number of points
  that Jerry raised, and while Rafael didn't agree with a few things, he
  was quick to point out that he didn't have any definite opinions one
  way or another, only that he wanted the best possible solution to come
  out the discussion.

  Dave Mitchell wondered whether it wouldn't be possible to add an
  "exit" method to the threads class, which would apply only to the
  thread, leaving the core "exit" to behave as usual.

    In through the out door
    http://xrl.us/ot6z

  Jerry the checked with the porters to see whether everyone agreed to
  what he thought threads should do. Jan and Liz Mattijsen gave their
  assent.

    http://xrl.us/ot63

  Just to be really certain, Jerry then posted a consensuality matrix,
  to get people who had made suggestions to sign off, or explain what
  they disagreed about. The moral of the story is that calling "exit()"
  as a thread method ends the thread, but calling "exit()" ends
  everything, modulo some differences in opinion over how much to warn
  about and when.

    fluid neon origami trick
    http://xrl.us/ot65

  Jerry went about modifying the threads module to do all this and ran
  into problems with too many "ENTER"s and not enough "LEAVE"s and the
  like. Jan said that he had no time to look closely, but eyeballed
  Jerry's code, sketched out a brief idea of what needed to be done.
  Jerry picked it up and ran with it, and straightened out all the
  problems.

    Balancing act
    http://xrl.us/ot68

  By the end of the week, Jerry had the new implementation up and
  running to his satisfaction, except for a nagging problem of "die"
  messages not being captured by the test harness, thus polluting the
  output.

    Weaving in and out
    http://xrl.us/ot7b

  Dave Mitchell listed the available possibilities:

    New month, new thread
    http://xrl.us/ot7e

The last remaining eval leaks

  After having looked over the stellar achievements of Dave Mitchell in
  removing "eval" leaks (caused when the "eval"'ed code fails), Nicholas
  Clark listed the remaining known leaks and asked for help in trying to
  identify the code paths taken (which would help in figuring out how to
  plug them).

  Dr. Ruud suggested taking a look at a tool called "MemProf". Dominic
  Dunlop answered the question with a question, and offered another leak
  to add to the list.

    Lost property
    http://xrl.us/ot7g

Did You Know This Worked?

  chromatic posted a short, sharp snippet of C, showing how easy it is
  to insert your own XS code into an existing op code, which opens up
  all sorts of interesting possibilities.

    http://xrl.us/ot7j

Is $A::::B::C a bug or feature?

  Continuing in the I-didn't-know-Perl-could-do-that vein, Chip
  Salzenberg discovered that this meant that "C" is inside package
  "::B::" which in turn is inside "A", and thought it was all rather
  evil.

  Sadahiro Tomoyuki traced the change down to somewhere between 5.004_04
  and 5.004_05, when "scan_words" in toke.c was modified to permit this,
  some time back in 2003. No-one appeared to remember the reason.

    http://xrl.us/ot7m

Questions regarding smart match and scalar upgrades in Perl 5

  Steve Peters was going over the new smart match ("~~") operator from
  Perl 6, that Robin Houston added to "blead" last year, and making sure
  it was well tested. He wrote a couple of tests, was puzzled by the
  results, and wondered whether the problem lay with the implementation,
  or with the documentation.

  Yitzchak Scott-Thoennes analysed Steve's reasoning, but no firm
  conclusions were made.

    http://xrl.us/ot7o

"Win32API::File" now in core

  Steve Hay announced that he had set things up to make "Win32API::File"
  a first-class dual-lifed module, in "blead" and on CPAN. He called on
  Jan Dubois to see whether Jan needed or wanted to do anything about
  "libwin32". There was discussion of moving files from
  "win32/ext/Win32" to "ext/Win32", which would ease the building of
  perl on Cygwin.

    It just got bigger
    http://xrl.us/ot7q

  Some discussion followed as to whether or not it would make it in time
  for 5.8.9.

    http://xrl.us/ot7r

Patches of Interest

vms.c - null termination of string missing.

  John E. Malmberg offered a short patch to correct a function that
  failed to append a null character to strings, which gave the
  underlying C library indigestion since it was expecting one. Rafael
  applied.

    Overshooting yourself in the foot
    http://xrl.us/ot7s

  Similarly, Jarkko Hietaniemi taught "cflags.SH" to scan the gcc
  warning flags only once:

    http://xrl.us/ot7t

Adding "splint" support

  Andy Lester set about adding "splint" (a "lint"-like tool) support for
  the porters. First off he created some embed.pl enhancements:

    http://xrl.us/ot7u

  And then followed with some Makefile "splint" support. It doesn't
  quite do everything that it should, and Andy called upon other people
  (hi Jarkko!) for help.

    http://xrl.us/ot7w

Dispatches from the "const"ing front

  Elsewhere in the code base, Andy tweaked DProf.xs to only compile a
  small static function if in fact it was actually required in the
  current configuration.

    http://xrl.us/ot7z

  He then turned his attention to ye cruftey olde mathoms.c. Just
  because they're obsolete doesn't mean they can't be squeaky clean.

    http://xrl.us/ot73

  And for dessert, Andy tidied up mg.c, by localising a variable here
  and there, and encapsulating "Perl_*" calls in macros.

    http://xrl.us/ot76

Removing an inconsistent close $fh

  Vadim Konovalov wanted to clean up win32/buildext.pl by removing an
  explicit "close", since just nearby is a similar "open" that also
  omits the "close".

  Yves Orton that a better idea was to rewrite the code, because it's a
  complete mess. (Amd it isn't particularly big, either).

    Innovations in brace placement
    http://xrl.us/ot78

Watching the smoke signals

Smoke [5.9.4] 28420 FAIL(FMm) OSF1 V5.1 (EV6/4 cpu)]

  Jarkko noted some failures had been cropping up in recent smokes, but
  didn't feel they were specific to the platform (Tru64) he was running.

  Nicholas Clark explained what the issues were. One was a simple test
  design issue that anybody with a reasonable grasp of designing tests
  should be able to figure out. Alas, no-one had volunteered to have a
  look. Jarkko asked for more background.

    Background check
    http://xrl.us/nf28

  The other issue was one of "eval" leaks, and Jarkko courageously
  deferred to Dave Mitchell as the likely fixer of that.

    Snot funny
    http://xrl.us/ot8b

Smoke [5.9.4] 28452 FAIL(F) MSWin32 WinXP/.Net SP2 (x86/2 cpu)

  Anno Siegel looked at one of Steve Hay's smokes, and wondered how one
  was supposed to interpret the results. H. Merijn Brand explained the
  general case, and Steve explained what was going wrong in this
  particular case.

    Inconsistent test results (between TEST and harness)
    http://xrl.us/ot8d

Smoke [5.9.4] 28456 FAIL(c) Solaris 2.10 (i386/1 cpu)

  H.Merijn looked at one of Abe Timmerman's failing Solaris smokes and
  traced it down to a change he'd made to "Configure" following on from
  a suggestion from Andy Dougherty. Andy thanked H.Merijn for the catch
  and noted that the entire hack was no longer needed anyway, since the
  original problem (one of 64-bit tests) has since been fixed.

    http://xrl.us/ot8g

New and old bugs from RT

problem on installing DBI module (#39527)

  Jan Dubois wrote to say that it is possible to install "DBD::Oracle"
  for ActiveState, at the price of also downloading many megabytes of
  Oracle libraries.

    But alas, only for 5.6
    http://xrl.us/ot8j

Pattern Match fails for specific length string (#39583)

  The code was corrected to handle this problem, and Yves folded the
  original bug report into the test suite. Yves then went on to rewrite
  the regexp display code, since, up until now, control characters have
  always been invisible, which makes it much harder to understand bug
  reports when control characters are present.

    She's lost control
    http://xrl.us/ot8m

nl_langinfo ==> Installation problems (#39625)

  Jaymax was having problems upgrading 5.8.2 to 5.8.8. "miniperl" was
  dying with a "Undefined symbol "nl_langinfo"" error. No takers as yet.

    http://xrl.us/ot8p

Using nonsensical key in %SIG should generate a warning (#39630)

  Nik thought that he would have saved a lot of time if perl complained
  about trying to use keys in %SIG that don't refer to valid signal
  handlers. Rafael thought that the problem might be because that the
  code in question was not, in fact, running with warnings enabled.

    Ask no questions, tell no lies
    http://xrl.us/ot8s

@ISA is not mentioned in "perlvar" (#39633)

  Sebastian Schmidt kicked off a long thread about whether or not @ISA
  should be referenced in "perlvar" or not. The main dissent was due to
  the fact that @ISA isn't particularly special as far as perl is
  concerned, it merely has lots of cultural conventions associated with
  it.

  Nevertheless, it was agreed that "perlvar" should in fact list all
  extraordinary variables, with "L<>" references to the appropriate
  pages if a better definition already existed elsewhere.

    http://xrl.us/ot8u

gcc 3.3 has problems with "__attribute__((unused))" (#39634)

  John Gardiner Myers was having some trouble compiling "Encode::Detect"
  with the GNU C++ compiler. Andy Dougherty realised that "blead" had
  already solved this problem and proposed a couple of patches to get
  things going. John, however, had another patch that he thought was
  better. After looking at it, Andy did too. He tidied it up slightly,
  and suggested that it was fit for inclusion to both "blead" and
  "maint".

    http://xrl.us/ot8y

Configure (on Solaris 64-bit) fails (#39636)

  Marc Esser was having trouble configuring perl on Solaris 10. After a
  getting Marc to try a few things, Andy Dougherty believed that he had
  isolated the problem in some incorrect hints for Solaris.

    http://xrl.us/ot82

filetest problem with "STDIN"/"STDOUT" on Windows (#39637)

  Paul Marquess reported that he had had some problems with not being
  able to apply "-r" to "\*STDIN" and get a sensible result back on
  Windows.

    Par for the course
    http://xrl.us/ot84

"perldoc -f waitpid" has wrong code example (#39639)

  Alexander Gernler mentioned that he thought the snippet explaining
  "waitpid" was wrong, and that it should use a "do/while" loop and not
  a "do/until" loop. Rafael agreed, and Salvador Fandiño and Dr. Ruud
  made a few suggestion about making the snippet truly cross platform
  (well, and least Unix and Windows).

    Zombie-free zone
    http://xrl.us/ot87

XSUB.h in perl v5.8.8 with gcc 3.4.6 (#39644)

  Jon V. had a weird compilation error. Rafael suspected that some
  errant header was defining a symbol standing in for a function or
  something, as a number.

    http://xrl.us/ot9a

"DynaLoader" corrupts %ENV (#39647)

  Daniel Pfeiffer as having trouble with a Solaris 2.10 box coming to
  grief with environment variables eating all available memory. Rafael
  had trouble reproducing it. So did Daniel for that matter.
  Unfortunately, there's not much to go on.

    http://xrl.us/ot9c

"require" and "List::MoreUtils" seg fault (#39650)

  Darin McBride had some code worked if "List::MoreUtils" was "use"d,
  but dumped core if it was "require"d. Rafael saw that the problem lay
  in the module building an iterator as a closure to traverse an array,
  but couldn't see off-hand why it should fail.

    http://xrl.us/ot9f

perl crashes with simple regex (#39652)

  Another back-tracking stack-blowing pattern.

    FITNR
    http://xrl.us/ot9h

Regex performance with UTF-8 strings (#39654)

  Peter J.Holzer discovered that taking a simple byte string and
  upgrading it to UTF-8 makes the match go three times slower when the
  target remains byte-encoded. Or, to put it another way, if the
  polarity of the target and regexp are reversed, performance is awful.

  Even Yves admitted to being scared at the amount of effort required to
  make the engine do the right thing. It's doable, and he's thought
  about it on occasion. Sadahiro Tomoyuki gave Peter a tip that helped
  in improve the performance in his particular case.

    Fruit at the top of the tree
    http://xrl.us/ot9k

  Yves went onto to explain far more than you ever wanted to know about
  UTF-8, and just how much effort it takes to move to the next character
  in a string. Juerd suggested a number of optimisations that, if
  implemented, may improve performance. Yves went down the list and
  pointed out that nearly all of Juerd's ideas *are* already implemented
  in the engine in some way or another.

  In other sub-thread, Sadahiro caught a naughty macro that lacked a
  parenthesised argument, which Rafael fixed in blead.

    It ain't easy
    http://xrl.us/ot9n

Perl5 Bug Summary

    + 13 - 7 = 1499
    http://xrl.us/ot9q

    Ooh, nice RT upgrade
    http://rt.perl.org/rt3/NoAuth/perl5/Overview.html

New Core Modules

  *   ExtUtils::Install version 1.41 released by Yves Orton. No change
      in functionality, merely a tweak to the versions to get "blead"
      and "CPAN" in sync.

        Do the bump
        http://xrl.us/ot9r

In Brief

  Rafael announced that he was removing references to "5005threads" in
  the "perlguts" documentation.

    The end of the line
    http://xrl.us/ot9t

  Steve Hay showed the best settings to get the most out of "malloc" on
  the Win32 platform.

    http://xrl.us/ot9v

  Andy Lester noted that the Coverity defect scan of the codebase had
  risen from 35 to 40 in two weeks.

    Misfeature creep
    http://xrl.us/ot9y

  Alan Burlison pointed to Data Race Detection Tool (or DRDT) from Sun,
  which is a tool designed to help track down data race issues with
  threads.

    Might be handy
    http://xrl.us/ot93

  Sébastien Aperghis-Tramoni posted a small precision about "\Q \E"
  inside "m//x", after having spent too much time trying to figure out
  why his code wasn't doing what he expected.

    DWIM or RTFM
    http://xrl.us/ot95

  Brendan O'Dea put forward a modest proposal remove "x2p/*", that is,
  the awk-to-perl and sed-to-perl scripts, arguing that no-one uses them
  anymore. Neither Rafael nor H.Merijn were in favour of such a move.

    http://xrl.us/ot98

  Craig A. Berry tidied up some POD typos.

    http://xrl.us/ouaa

About this summary

  This summary was written by David Landgren.

  Last week's unfinished opus attracted a comment from Nicholas Clark
  asking how other open-source languages deal with the day to day
  housekeeping, and he even received an answer!

    http://xrl.us/ouad

  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, please consider contributing to the
  Perl Foundation to help support the development of Perl.
--
Much of the propaganda that passes for news in our own society is given to immobilising and pacifying people and diverting them from the idea that they can confront power. -- John Pilger


Reply via email to