Change 34264 by [EMAIL PROTECTED] on 2008/09/04 10:18:56

        Integrate:
        [ 34057]
        Subject: Re: Patches / git
        From: Andy Armstrong <[EMAIL PROTECTED]>
        Date: Mon, 16 Jun 2008 01:13:25 +0100
        Message-Id: <[EMAIL PROTECTED]>
        
        [ 34080]
        Subject: Re: [perl #24174] perl-5.8.0-55 exit bug
        From: Michael G Schwern <[EMAIL PROTECTED]>
        Date: Mon, 13 Oct 2003 05:13:48 -0700
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 34081]
        Subject: [PATCH] Documentation on taint/environment interactions for 
perlrun.pod
        From: Paul Fenwick <[EMAIL PROTECTED]>
        Date: Tue, 24 Jun 2008 13:53:19 +1000
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 34083]
        URL for End-Of-Life and OS/Arch documentation
        Small enhancements
        
        [ 34089]
        Subject: Re: [perl #56348] [PATCH] glob() with spaces - documentation 
unclear
        From: Paul Fenwick <[EMAIL PROTECTED]>
        Date: Thu, 26 Jun 2008 11:41:45 +1000
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 34137]
        Fix for #56874: maybe small error in perlxs.pod example
        
        [ 34160]
        Note the possibility of sharing arenas between types.
        
        [ 34166]
        Small typo fix
        
        [ 34189]
        Note that I TODID most of parallel testing in the core.
        
        [ 34197]
        Purge C<n_a> thoughtcrime from the pods.
        
        [ 34221]
        Subject: [perl #57646] Weird non-equivalence between $::{'a'} = sub {} 
and *::a = sub {} 
        From: "Bram via RT" <[EMAIL PROTECTED]>
        Date: Wed, 06 Aug 2008 01:24:22 -0700
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 34223]
        Subject: Re: [perl #58218] backwards logic in perluniintro (5.10.0) 
        From: "Dr.Ruud" <[EMAIL PROTECTED]>
        Date: Sat, 23 Aug 2008 10:07:45 +0200
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 34237]
        Subject: [PATCH] Perl TODO related to threads::shared done
        From: "Jerry D. Hedden" <[EMAIL PROTECTED]>
        Message-ID: <[EMAIL PROTECTED]>
        Date: Wed, 27 Aug 2008 14:49:55 -0400
        
        Message-ID: <[EMAIL PROTECTED]>
        
        Subject: [PATCH] perltodo.pod cleanup for nonxs installation
        From: "Jerry D. Hedden" <[EMAIL PROTECTED]>
        Date: Thu, 28 Aug 2008 08:40:15 -0400
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 34239]
        Subject: [PATCH] clear docs on exists wrt autovivification
        From: Moritz Lenz
        Date: August 26, 2008 11:23
        
        [ 34240]
        Note the task TODO of splitting the linker from the compiler.
        
        [ 34241]
        The tasks needed to get smart match fixing underway for 5.10.1
        
        [ 34242]
        Tweaks and reflowing for the cc/linker split.
        
        [ 34243]
        Add the URL for annotated svn of S03.
        
        [ 34258]
        Subject: Re: Change 34166: Small typo fix
        From: Paul Johnson <[EMAIL PROTECTED]>
        Message-ID: <[EMAIL PROTECTED]>
        Date: Thu, 31 Jul 2008 18:45:10 +0200

Affected files ...

... //depot/maint-5.10/perl/README.hpux#4 integrate
... //depot/maint-5.10/perl/pod/perlcall.pod#2 integrate
... //depot/maint-5.10/perl/pod/perlembed.pod#2 integrate
... //depot/maint-5.10/perl/pod/perlform.pod#2 integrate
... //depot/maint-5.10/perl/pod/perlfunc.pod#9 integrate
... //depot/maint-5.10/perl/pod/perlmod.pod#2 integrate
... //depot/maint-5.10/perl/pod/perlrun.pod#4 integrate
... //depot/maint-5.10/perl/pod/perlsub.pod#2 integrate
... //depot/maint-5.10/perl/pod/perltodo.pod#14 integrate
... //depot/maint-5.10/perl/pod/perluniintro.pod#2 integrate
... //depot/maint-5.10/perl/pod/perlxs.pod#4 integrate

Differences ...

==== //depot/maint-5.10/perl/README.hpux#4 (text) ====
Index: perl/README.hpux
--- perl/README.hpux#3~33884~   2008-05-20 08:07:58.000000000 -0700
+++ perl/README.hpux    2008-09-04 03:18:56.000000000 -0700
@@ -43,7 +43,15 @@
 Application DVD/CD's are available on
 
http://www.software.hp.com/cgi-bin/swdepot_parser.cgi/cgi/displayProductInfo.pl?productNumber=PERL
 for both PA-RISC and IPF (Itanium Processor Family). They are built
-with the HP ANSI-C compiler.
+with the HP ANSI-C compiler by ActiveState.
+
+To see what version is included on the DVD (assumed here to be mounted
+on /cdrom), issue this command:
+
+  # swlist -s /cdrom perl
+  # perl           D.5.8.8.B  5.8.8 Perl Programming Language
+    perl.Perl5-32  D.5.8.8.B  32-bit 5.8.8 Perl Programming Language with 
Extensions
+    perl.Perl5-64  D.5.8.8.B  64-bit 5.8.8 Perl Programming Language with 
Extensions
 
 =head2 Using perl from HP's porting centre
 
@@ -252,6 +260,23 @@
   ia64 hp server rx2600
   # /usr/contrib/bin/machinfo
 
+=head2 HP-UX versions
+
+Not all architectures (PA = PA-RISC, IPF = Itanium Processor Family)
+support all versions of HP-UX, here is a short list
+
+  HP-UX version  Kernel  Architecture
+  -------------  ------  ------------
+  10.20          32 bit  PA
+  11.00          32/64   PA
+  11.11  11i v1  32/64   PA
+  11.22  11i v2     64        IPF
+  11.23  11i v2     64   PA & IPF
+  11.31  11i v3     64   PA & IPF
+
+See for the full list of hardware/OS support and expected end-of-life
+http://www.hp.com/go/hpuxservermatrix
+
 =head2 Building Dynamic Extensions on HP-UX
 
 HP-UX supports dynamically loadable libraries (shared libraries).
@@ -390,10 +415,11 @@
 
 Above mentioned distributions are depots. H.Merijn Brand has made prebuilt
 gcc binaries available on http://mirrors.develooper.com/hpux/ and/or
-http://www.cmve.net/~merijn/ for HP-UX 10.20, HP-UX 11.00, and HP-UX 11.11
-(HP-UX 11i) in both 32- and 64-bit versions. These are bzipped tar archives
-that also include recent GNU binutils and GNU gdb.  Read the instructions
-on that page to rebuild gcc using itself.
+http://www.cmve.net/~merijn/ for HP-UX 10.20, HP-UX 11.00, HP-UX 11.11
+(HP-UX 11i v1), and HP-UX 11.23 (HP-UX 11i v2) in both 32- and 64-bit
+versions. These are bzipped tar archives that also include recent GNU
+binutils and GNU gdb.  Read the instructions on that page to rebuild gcc
+using itself.
 
 On PA-RISC you need a different compiler for 32-bit applications and for
 64-bit applications. On PA-RISC, 32-bit objects and 64-bit objects do
@@ -648,6 +674,6 @@
 
 =head1 DATE
 
-Version 0.8.2: 2008-05-16
+Version 0.8.3: 2008-06-24
 
 =cut

==== //depot/maint-5.10/perl/pod/perlcall.pod#2 (text) ====
Index: perl/pod/perlcall.pod
--- perl/pod/perlcall.pod#1~32694~      2007-12-22 01:23:09.000000000 -0800
+++ perl/pod/perlcall.pod       2008-09-04 03:18:56.000000000 -0700
@@ -904,8 +904,7 @@
         /* Check the eval first */
         if (SvTRUE(ERRSV))
         {
-           STRLEN n_a;
-            printf ("Uh oh - %s\n", SvPV(ERRSV, n_a));
+            printf ("Uh oh - %s\n", SvPV_nolen(ERRSV));
             POPs;
         }
         else
@@ -947,8 +946,7 @@
 
     if (SvTRUE(ERRSV))
     {
-       STRLEN n_a;
-        printf ("Uh oh - %s\n", SvPV(ERRSV, n_a));
+        printf ("Uh oh - %s\n", SvPV_nolen(ERRSV));
         POPs;
     }
 

==== //depot/maint-5.10/perl/pod/perlembed.pod#2 (text) ====
Index: perl/pod/perlembed.pod
--- perl/pod/perlembed.pod#1~32694~     2007-12-22 01:23:09.000000000 -0800
+++ perl/pod/perlembed.pod      2008-09-04 03:18:56.000000000 -0700
@@ -313,7 +313,6 @@
 
    main (int argc, char **argv, char **env)
    {
-       STRLEN n_a;
        char *embedding[] = { "", "-e", "0" };
 
        PERL_SYS_INIT3(&argc,&argv,&env);
@@ -334,7 +333,7 @@
 
        /** Treat $a as a string **/
        eval_pv("$a = 'rekcaH lreP rehtonA tsuJ'; $a = reverse($a);", TRUE);
-       printf("a = %s\n", SvPV(get_sv("a", FALSE), n_a));
+       printf("a = %s\n", SvPV_nolen(get_sv("a", FALSE)));
 
        perl_destruct(my_perl);
        perl_free(my_perl);
@@ -357,9 +356,8 @@
 from I<eval_pv()> instead.  Example:
 
    ...
-   STRLEN n_a;
    SV *val = eval_pv("reverse 'rekcaH lreP rehtonA tsuJ'", TRUE);
-   printf("%s\n", SvPV(val,n_a));
+   printf("%s\n", SvPV_nolen(val));
    ...
 
 This way, we avoid namespace pollution by not creating global
@@ -406,7 +404,7 @@
  {
      dSP;
      SV* retval;
-     STRLEN n_a;
+
 
      PUSHMARK(SP);
      eval_sv(sv, G_SCALAR);
@@ -416,7 +414,7 @@
      PUTBACK;
 
      if (croak_on_error && SvTRUE(ERRSV))
-       croak(SvPVx(ERRSV, n_a));
+       croak(SvPVx_nolen(ERRSV));
 
      return retval;
  }
@@ -431,10 +429,9 @@
  I32 match(SV *string, char *pattern)
  {
      SV *command = newSV(0), *retval;
-     STRLEN n_a;
 
      sv_setpvf(command, "my $string = '%s'; $string =~ %s",
-             SvPV(string,n_a), pattern);
+             SvPV_nolen(string), pattern);
 
      retval = my_eval_sv(command, TRUE);
      SvREFCNT_dec(command);
@@ -453,10 +450,9 @@
  I32 substitute(SV **string, char *pattern)
  {
      SV *command = newSV(0), *retval;
-     STRLEN n_a;
 
      sv_setpvf(command, "$string = '%s'; ($string =~ %s)",
-             SvPV(*string,n_a), pattern);
+             SvPV_nolen(*string), pattern);
 
      retval = my_eval_sv(command, TRUE);
      SvREFCNT_dec(command);
@@ -477,10 +473,9 @@
  {
      SV *command = newSV(0);
      I32 num_matches;
-     STRLEN n_a;
 
      sv_setpvf(command, "my $string = '%s'; @array = ($string =~ %s)",
-             SvPV(string,n_a), pattern);
+             SvPV_nolen(string), pattern);
 
      my_eval_sv(command, TRUE);
      SvREFCNT_dec(command);
@@ -497,7 +492,6 @@
      AV *match_list;
      I32 num_matches, i;
      SV *text;
-     STRLEN n_a;
 
      PERL_SYS_INIT3(&argc,&argv,&env);
      my_perl = perl_alloc();
@@ -532,7 +526,7 @@
      printf("matches: m/(wi..)/g found %d matches...\n", num_matches);
 
      for (i = 0; i < num_matches; i++)
-       printf("match: %s\n", SvPV(*av_fetch(match_list, i, FALSE),n_a));
+       printf("match: %s\n", SvPV_nolen(*av_fetch(match_list, i, FALSE)));
      printf("\n");
 
      /** Remove all vowels from text **/
@@ -540,7 +534,7 @@
      if (num_matches) {
        printf("substitute: s/[aeiou]//gi...%d substitutions made.\n",
               num_matches);
-       printf("Now text is: %s\n\n", SvPV(text,n_a));
+       printf("Now text is: %s\n\n", SvPV_nolen(text));
      }
 
      /** Attempt a substitution **/
@@ -784,7 +778,6 @@
      char *args[] = { "", DO_CLEAN, NULL };
      char filename[BUFFER_SIZE];
      int exitstatus = 0;
-     STRLEN n_a;
 
      PERL_SYS_INIT3(&argc,&argv,&env);
      if((my_perl = perl_alloc()) == NULL) {
@@ -810,7 +803,7 @@
 
             /* check $@ */
             if(SvTRUE(ERRSV))
-                fprintf(stderr, "eval error: %s\n", SvPV(ERRSV,n_a));
+                fprintf(stderr, "eval error: %s\n", SvPV_nolen(ERRSV));
         }
      }
 

==== //depot/maint-5.10/perl/pod/perlform.pod#2 (text) ====
Index: perl/pod/perlform.pod
--- perl/pod/perlform.pod#1~32694~      2007-12-22 01:23:09.000000000 -0800
+++ perl/pod/perlform.pod       2008-09-04 03:18:56.000000000 -0700
@@ -62,9 +62,9 @@
   
    @    start of regular field
    ^    start of special field
-   <    pad character for left adjustification
+   <    pad character for left justification
    |    pad character for centering
-   >    pad character for right adjustificat
+   >    pad character for right justification
    #    pad character for a right justified numeric field
    0    instead of first #: pad number with leading zeroes
    .    decimal point within a numeric field

==== //depot/maint-5.10/perl/pod/perlfunc.pod#9 (text) ====
Index: perl/pod/perlfunc.pod
--- perl/pod/perlfunc.pod#8~33946~      2008-05-28 16:09:01.000000000 -0700
+++ perl/pod/perlfunc.pod       2008-09-04 03:18:56.000000000 -0700
@@ -1730,8 +1730,7 @@
 
 Given an expression that specifies a hash element or array element,
 returns true if the specified element in the hash or array has ever
-been initialized, even if the corresponding value is undefined.  The
-element is not autovivified if it doesn't exist.
+been initialized, even if the corresponding value is undefined.
 
     print "Exists\n"   if exists $hash{$key};
     print "Defined\n"  if defined $hash{$key};
@@ -2343,8 +2342,14 @@
 EXPR is omitted, C<$_> is used.  The C<< <*.c> >> operator is discussed in
 more detail in L<perlop/"I/O Operators">.
 
+Note that C<glob> will split its arguments on whitespace, treating
+each segment as separate pattern.  As such, C<glob('*.c *.h')> would
+match all files with a F<.c> or F<.h> extension.  The expression
+C<glob('.* *')> would match all files in the current working directory.
+
 Beginning with v5.6.0, this operator is implemented using the standard
-C<File::Glob> extension.  See L<File::Glob> for details.
+C<File::Glob> extension.  See L<File::Glob> for details, including
+C<bsd_glob> which does not treat whitespace as a pattern separator.
 
 =item gmtime EXPR
 X<gmtime> X<UTC> X<Greenwich>
@@ -5137,10 +5142,18 @@
 =item sleep
 
 Causes the script to sleep for EXPR seconds, or forever if no EXPR.
+Returns the number of seconds actually slept.  
+
 May be interrupted if the process receives a signal such as C<SIGALRM>.
-Returns the number of seconds actually slept.  You probably cannot
-mix C<alarm> and C<sleep> calls, because C<sleep> is often implemented
-using C<alarm>.
+
+    eval {
+        local $SIG{ALARM} = sub { die "Alarm!\n" };
+        sleep;
+    };
+    die $@ unless $@ eq "Alarm!\n";
+
+You probably cannot mix C<alarm> and C<sleep> calls, because C<sleep>
+is often implemented using C<alarm>.
 
 On some older systems, it may sleep up to a full second less than what
 you requested, depending on how it counts seconds.  Most modern systems

==== //depot/maint-5.10/perl/pod/perlmod.pod#2 (text) ====
Index: perl/pod/perlmod.pod
--- perl/pod/perlmod.pod#1~32694~       2007-12-22 01:23:09.000000000 -0800
+++ perl/pod/perlmod.pod        2008-09-04 03:18:56.000000000 -0700
@@ -94,18 +94,9 @@
 package mentioned earlier is named C<%OUTER::INNER::>.
 
 The value in each entry of the hash is what you are referring to when you
-use the C<*name> typeglob notation.  In fact, the following have the same
-effect, though the first is more efficient because it does the symbol
-table lookups at compile time:
+use the C<*name> typeglob notation.
 
     local *main::foo    = *main::bar;
-    local $main::{foo}  = $main::{bar};
-
-(Be sure to note the B<vast> difference between the second line above
-and C<local $main::foo = $main::bar>. The former is accessing the hash
-C<%main::>, which is the symbol table of package C<main>. The latter is
-simply assigning scalar C<$bar> in package C<main> to scalar C<$foo> of
-the same package.)
 
 You can use this to print out all the variables in a package, for
 instance.  The standard but antiquated F<dumpvar.pl> library and

==== //depot/maint-5.10/perl/pod/perlrun.pod#4 (text) ====
Index: perl/pod/perlrun.pod
--- perl/pod/perlrun.pod#3~33803~       2008-05-10 08:10:17.000000000 -0700
+++ perl/pod/perlrun.pod        2008-09-04 03:18:56.000000000 -0700
@@ -1164,6 +1164,9 @@
 C<win32> layer which is expected to be enhanced and should eventually be
 the default under Win32.
 
+The PERLIO environment variable is completely ignored when perl
+is run in taint mode.
+
 =item PERLIO_DEBUG
 X<PERLIO_DEBUG>
 
@@ -1188,6 +1191,9 @@
 files before looking in the standard library and the current directory.
 If PERL5LIB is defined, PERLLIB is not used.
 
+The PERLLIB environment variable is completely ignored when perl
+is run in taint mode.
+
 =item PERL5DB
 X<PERL5DB>
 
@@ -1195,6 +1201,9 @@
 
        BEGIN { require 'perl5db.pl' }
 
+The PERL5DB environment variable only used when perl is started with
+a bare B<-d> switch.
+
 =item PERL5DB_THREADED
 X<PERL5DB_THREADED>
 
@@ -1217,6 +1226,11 @@
 interfere with the proper functioning of other programs (which usually
 look in COMSPEC to find a shell fit for interactive use).
 
+Before Perl 5.10.0 and 5.8.8, PERL5SHELL was not taint checked
+when running external commands.  It is recommended that
+you explicitly set (or delete) C<$ENV{PERL5SHELL}> when running
+in taint mode under Windows.
+
 =item PERL_ALLOW_NON_IFS_LSP (specific to the Win32 port)
 X<PERL_ALLOW_NON_IFS_LSP>
 

==== //depot/maint-5.10/perl/pod/perlsub.pod#2 (text) ====
Index: perl/pod/perlsub.pod
--- perl/pod/perlsub.pod#1~32694~       2007-12-22 01:23:09.000000000 -0800
+++ perl/pod/perlsub.pod        2008-09-04 03:18:56.000000000 -0700
@@ -1034,7 +1034,7 @@
     sub myreverse (@)       myreverse $a, $b, $c
     sub myjoin ($@)         myjoin ":", $a, $b, $c
     sub mypop (\@)          mypop @array
-    sub mysplice ([EMAIL PROTECTED]@)     mysplice @array, @array, 0, @pushme
+    sub mysplice ([EMAIL PROTECTED]@)     mysplice @array, 0, 2, @pushme
     sub mykeys (\%)         mykeys %{$hashref}
     sub myopen (*;$)        myopen HANDLE, $name
     sub mypipe (**)         mypipe READHANDLE, WRITEHANDLE

==== //depot/maint-5.10/perl/pod/perltodo.pod#14 (text) ====
Index: perl/pod/perltodo.pod
--- perl/pod/perltodo.pod#13~34247~     2008-09-03 09:58:09.000000000 -0700
+++ perl/pod/perltodo.pod       2008-09-04 03:18:56.000000000 -0700
@@ -23,6 +23,55 @@
 
 =head1 Tasks that only need Perl knowledge
 
+=head2 Smartmatch design issues
+
+In 5.10.0 the smartmatch operator C<~~> isn't working quite "right". But
+before we can fix the implementation, we need to define what "right" is.
+The first problem is that Robin Houston implemented the Perl 6 smart match
+spec as of February 2006, when smart match was axiomatically symmetrical:
+L<http://groups.google.com/group/perl.perl6.language/msg/bf2b486f089ad021>
+
+Since then the Perl 6 target moved, but the Perl 5 implementation did not.
+
+So it would be useful for someone to compare the Perl 6 smartmatch table
+as of February 2006 
L<http://svn.perl.org/viewvc/perl6/doc/trunk/design/syn/S03.pod?view=markup&pathrev=7615>
+and the current table 
L<http://svn.perl.org/viewvc/perl6/doc/trunk/design/syn/S03.pod?revision=14556&view=markup>
+and tabulate the differences in Perl 6. The annotated view of changes is
+L<http://svn.perl.org/viewvc/perl6/doc/trunk/design/syn/S03.pod?view=annotate> 
and the diff is
+C<svn diff -r7615:14556 http://svn.perl.org/perl6/doc/trunk/design/syn/S03.pod>
+-- search for C<=head1 Smart matching>. (In theory F<viewvc> can generate that,
+but in practice when I tried it hung forever, I assume "thinking")
+
+With that done and published, someone (else) can then map any changed Perl 6
+semantics back to Perl 5, based on how the existing semantics map to Perl 5:
+L<http://search.cpan.org/~rgarcia/perl-5.10.0/pod/perlsyn.pod#Smart_matching_in_detail>
+
+
+There are also some questions that need answering:
+
+=over 4
+
+=item *
+
+How do you negate one?  (documentation issue)
+http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-01/msg00071.html
+
+=item *
+
+Array behaviors
+http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2007-12/msg00799.html
+
+* Should smart matches be symmetrical? (Perl 6 says no)
+
+* Other differences between Perl 5 and Perl 6 smart match?
+
+=item *
+
+Objects and smart match
+http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2007-12/msg00865.html
+
+=back
+
 =head2 Remove duplication of test setup.
 
 Schwern notes, that there's duplication of code - lots and lots of tests have
@@ -54,31 +103,12 @@
 (This probably impacts much more than the core: also the Test::Harness
 and TAP::* modules on CPAN.)
 
-The core regression test suite is getting ever more comprehensive, which has
-the side effect that it takes longer to run. This isn't so good. Investigate
-whether it would be feasible to give the harness script the B<option> of
-running sets of tests in parallel. This would be useful for tests in
-F<t/op/*.t> and F<t/uni/*.t> and maybe some sets of tests in F<lib/>.
-
-Questions to answer
-
-=over 4
-
-=item 1
-
-How does screen layout work when you're running more than one test?
-
-=item 2
-
-How does the caller of test specify how many tests to run in parallel?
-
-=item 3
-
-How do setup/teardown tests identify themselves?
-
-=back
-
-Pugs already does parallel testing - can their approach be re-used?
+All of the tests in F<t/> can now be run in parallel, if C<$ENV{TEST_JOBS}>
+is set. However, tests within each directory in F<ext> and F<lib> are still
+run in series, with directories run in parallel. This is an adequate
+heuristic, but it might be possible to relax it further, and get more
+throughput. Specifically, it would be good to audit all of F<lib/*.t>, and
+make them use C<File::Temp>.
 
 =head2 Make Schwern poorer
 
@@ -148,14 +178,6 @@
 some architecture-independent dual-life modules from lib/ to ext/, if this
 has no negative impact on the build of perl itself.
 
-However, we need to make sure that they are still installed in
-architecture-independent directories by C<make install>.
-
-=head2 Improving C<threads::shared>
-
-Investigate whether C<threads::shared> could share aggregates properly with
-only Perl level changes to shared.pm
-
 =head2 POSIX memory footprint
 
 Ilya observed that use POSIX; eats memory like there's no tomorrow, and at
@@ -356,6 +378,54 @@
 
 Make F<pod/roffitall> be updated by F<pod/buildtoc>.
 
+=head2 Split "linker" from "compiler"
+
+Right now, Configure probes for two commands, and sets two variables:
+
+=over 4
+
+=item * C<cc (cc.U)>
+
+This variable holds the name of a command to execute a C compiler which
+can resolve multiple global references that happen to have the same
+name.  Usual values are F<cc> and F<gcc>.
+Fervent ANSI compilers may be called F<c89>.  AIX has F<xlc>.
+
+=item * ld (dlsrc.U)
+
+This variable indicates the program to be used to link
+libraries for dynamic loading.  On some systems, it is F<ld>.
+On ELF systems, it should be C<$cc>.  Mostly, we'll try to respect
+the hint file setting.
+
+=back
+
+There is an implicit historical assumption from around Perl5.000alpha
+something, that C<$cc> is also the correct command for linking object files
+together to make an executable. This may be true on Unix, but it's not true
+on other platforms, and there are a maze of work arounds in other places (such
+as F<Makefile.SH>) to cope with this.
+
+Ideally, we should create a new variable to hold the name of the executable
+linker program, probe for it in F<Configure>, and centralise all the special
+case logic there or in hints files.
+
+A small bikeshed issue remains - what to call it, given that C<$ld> is already
+taken (arguably for the wrong thing now, but on SunOS 4.1 it is the command
+for creating dynamically-loadable modules) and C<$link> could be confused with
+the Unix command line executable of the same name, which does something
+completely different. Andy Dougherty makes the counter argument "In parrot, I
+tried to call the command used to link object files and  libraries into an
+executable F<link>, since that's what my vaguely-remembered DOS and VMS
+experience suggested. I don't think any real confusion has ensued, so it's
+probably a reasonable name for perl5 to use."
+
+"Alas, I've always worried that introducing it would make things worse, 
+since now the module building utilities would have to look for 
+C<$Config{link}> and institute a fall-back plan if it weren't found."
+Although I can see that as confusing, given that C<$Config{d_link}> is true
+when (hard) links are available.
+
 =head1 Tasks that need a little C knowledge
 
 These tasks would need a little C knowledge, but don't need any specific
@@ -538,6 +608,14 @@
 C<MAGIC> is allocated/deallocated more often, but in turn, is also something
 more externally visible, so changing the rules here may bite external code.
 
+=head2 Shared arenas
+
+Several SV body structs are now the same size, notably PVMG and PVGV, PVAV and
+PVHV, and PVCV and PVFM. It should be possible to allocate and return same
+sized bodies from the same actual arena, rather than maintaining one arena for
+each. This could save 4-6K per thread, of memory no longer tied up in the
+not-yet-allocated part of an arena.
+
 
 =head1 Tasks that need a knowledge of XS
 

==== //depot/maint-5.10/perl/pod/perluniintro.pod#2 (text) ====
Index: perl/pod/perluniintro.pod
--- perl/pod/perluniintro.pod#1~32694~  2007-12-22 01:23:09.000000000 -0800
+++ perl/pod/perluniintro.pod   2008-09-04 03:18:56.000000000 -0700
@@ -653,8 +653,8 @@
 For example,
 
     use Encode 'decode_utf8';
-    eval { decode_utf8($string, Encode::FB_CROAK) };
-    if ($@) {
+    
+    if (eval { decode_utf8($string, Encode::FB_CROAK); 1 }) {
         # $string is valid utf8
     } else {
         # $string is not valid utf8

==== //depot/maint-5.10/perl/pod/perlxs.pod#4 (text) ====
Index: perl/pod/perlxs.pod
--- perl/pod/perlxs.pod#3~33729~        2008-04-22 11:51:34.000000000 -0700
+++ perl/pod/perlxs.pod 2008-09-04 03:18:56.000000000 -0700
@@ -950,10 +950,9 @@
           time_t timep = NO_INIT
        PREINIT:
           char *host = "localhost";
-         STRLEN n_a;
         CODE:
          if( items > 1 )
-              host = (char *)SvPV(ST(1), n_a);
+              host = (char *)SvPV_nolen(ST(1));
          RETVAL = rpcb_gettime( host, &timep );
         OUTPUT:
           timep
@@ -1094,8 +1093,8 @@
           time_t  timep;
           bool_t x;
         CODE:
-          ST(0) = sv_newmortal();
           if( rpcb_gettime( host, &timep ) ){
+               ST(0) = sv_newmortal();
                sv_setnv( ST(0), (double)timep);
           }
           else{
@@ -1242,10 +1241,9 @@
        PROTOTYPE: $;$
        PREINIT:
           char *host = "localhost";
-         STRLEN n_a;
         CODE:
                  if( items > 1 )
-                      host = (char *)SvPV(ST(1), n_a);
+                      host = (char *)SvPV_nolen(ST(1));
                  RETVAL = rpcb_gettime( host, &timep );
         OUTPUT:
           timep
End of Patch.

Reply via email to