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.