14 years agoFixed typo: "effecting data" -> "affecting data".
Dan Dascalescu [Tue, 18 May 2010 22:12:19 +0000]
Fixed typo: "effecting data" -> "affecting data".

14 years agoMerge branch 'vincent/rvalue_stmt_given' into blead
Vincent Pit [Wed, 19 May 2010 20:59:58 +0000]
Merge branch 'vincent/rvalue_stmt_given' into blead

14 years agoperldelta entries for my changes in 5.13.1.
Nicholas Clark [Wed, 19 May 2010 19:02:59 +0000]
perldelta entries for my changes in 5.13.1.

14 years agoadd reminder about updating epigraphs.pod to RMG
David Golden [Wed, 19 May 2010 16:30:31 +0000]
add reminder about updating epigraphs.pod to RMG

14 years agothe proper term is epigraph, not epigram
David Golden [Wed, 19 May 2010 16:27:52 +0000]
the proper term is epigraph, not epigram

14 years agodocument historical release epigrams
David Golden [Wed, 19 May 2010 16:20:40 +0000]
document historical release epigrams

14 years agoActually note that Shell.pm is deprecated for 5.13 and 5.14, so we can
Jesse Vincent [Tue, 18 May 2010 16:17:24 +0000]
Actually note that Shell.pm is deprecated for 5.13 and 5.14, so we can
remove it in 5.15 in the Spring of 2011.

14 years agoShell.pm was missing its deprecation warning in 5.12. So it can't be
Jesse Vincent [Tue, 18 May 2010 16:15:41 +0000]
Shell.pm was missing its deprecation warning in 5.12. So it can't be
removed in 5.14.

Revert "Remove Shell from the core distribution. Get it from CPAN now."

This reverts commit 28d302d426b73ed76fdcc816dd51bb1a8f93332b.

14 years agoMerge branch 'blead' of ssh://perl5.git.perl.org/gitroot/perl into blead
Jesse Vincent [Tue, 18 May 2010 15:55:15 +0000]
Merge branch 'blead' of ssh://perl5.git.perl.org/gitroot/perl into blead

* 'blead' of ssh://perl5.git.perl.org/gitroot/perl:
  Fix groups.t test on AIX
  further fix for RT #23810
  use the correct format codes in warnings from gmtime/localtime
  Better perldiag heading for "\cX" deprecation warning
  PATCH: Clean up EBCDIC handling of \cX
  [perl #41530] s/non-utf8/is-utf8/ fails.
  Fix for README.aix and XL C/C++ V11

14 years agoAdding Chris Williams as our November 2010 sucker
Jesse Vincent [Tue, 18 May 2010 15:54:01 +0000]
Adding Chris Williams as our November 2010 sucker

14 years agoFix groups.t test on AIX
Rainer Tammer [Sun, 16 May 2010 09:37:57 +0000]
Fix groups.t test on AIX

'id -a' doesn't work, so try it without the -a if that fails.

14 years agofurther fix for RT #23810
David Mitchell [Mon, 17 May 2010 23:54:50 +0000]
further fix for RT #23810

The fix for #23810, 27e904532594b7fb, introduced a regression, spotted by
Nicholas as RT #75146.

Basically, in S_doeval() if the yyparse() fails due to dying (rather than
just bailing out with with a syntax error, say), then the topmost EVAL
context will have been popped. My improved error handling code mostly
understood the difference, but forgot that in the die case, PL_eval_root
will have been restored to its previous value by the CX pop, and thus
its value shouldn't be messed with.

14 years agouse the correct format codes in warnings from gmtime/localtime
Tony Cook [Tue, 23 Feb 2010 13:35:35 +0000]
use the correct format codes in warnings from gmtime/localtime

14 years agoBetter perldiag heading for "\cX" deprecation warning
Rafael Garcia-Suarez [Mon, 17 May 2010 09:47:48 +0000]
Better perldiag heading for "\cX" deprecation warning

14 years agoPATCH: Clean up EBCDIC handling of \cX
Karl Williamson [Wed, 12 May 2010 17:50:19 +0000]
PATCH: Clean up EBCDIC handling of \cX

The function perl_ebcdic_control() is unnecessary, as the toCTRL macro
that calls it can be changed to just map EBCDIC to ASCII first, and then
doing the normal procedure.

This means that EBCDIC and ASCII will no longer diverge.  Currently,
EBCIDIC gives a syntax error for inputs outside its domain, whereas the
ASCII version accepts some of them.

14 years ago[perl #41530] s/non-utf8/is-utf8/ fails.
Karl Williamson [Tue, 11 May 2010 16:57:41 +0000]
[perl #41530] s/non-utf8/is-utf8/ fails.

When the replacement is in utf8, there was failure to upgrade the result
when the source and the pattern weren't in utf8.  This simply checks
that when there is a match that will lead to the replacement being done.
It then does the upgrade.  If this led to changes in the source, we redo
the match because pointers to saved buffers could have changed.  There
may be other cases where we don't need to redo the match, but I don't
know the code well-enough to easily figure it out.

14 years agoFix for README.aix and XL C/C++ V11
Rainer Tammer [Fri, 14 May 2010 07:53:51 +0000]
Fix for README.aix and XL C/C++ V11

Hello,
I have attached a small doc fix for README.aix. It contains information
regarding the new XL C/C++ V11 compiler. This patch is only for bleed.
I have already posted the correct fix for maint-5.12.

Thanks.

Bye
  Rainer

From f66807e32b4c01bb58b61cb3e48d89da9c2c4bd7 Mon Sep 17 00:00:00 2001
From: Rainer Tammer <tammer@tammer.net>
Date: Fri, 14 May 2010 09:48:25 +0200
Subject: [PATCH] FIX to README.aix for V11 compiler

Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>

14 years agoPerl 5.12.1 now includes Safe.pm 2.27. Module::CoreList should say so
Jesse Vincent [Thu, 13 May 2010 20:00:26 +0000]
Perl 5.12.1 now includes Safe.pm 2.27. Module::CoreList should say so

14 years agoNew release date for 5.12.1 in light of the new RC
Jesse Vincent [Thu, 13 May 2010 19:58:51 +0000]
New release date for 5.12.1 in light of the new RC

14 years agoMerge branch 'blead' of ssh://perl5.git.perl.org/gitroot/perl into blead
Jesse Vincent [Thu, 13 May 2010 17:04:37 +0000]
Merge branch 'blead' of ssh://perl5.git.perl.org/gitroot/perl into blead

* 'blead' of ssh://perl5.git.perl.org/gitroot/perl:
  Return 0 (with a warning) for sprintf("%.0g") and sprintf("%.0f")
  Updating list of DOSish perls in perlport.pod.
  Add Porting/checkpodencoding.pl to MANIFEST
  separate the 0755 from the . $TAINT0. this silences the warning "Dot after octal literal is concatenation".
  Clarify that mail to perlbug also goes to p5p

14 years agoCorrecting the release date of 5.12.1
Jesse Vincent [Thu, 13 May 2010 17:04:10 +0000]
Correcting the release date of 5.12.1

14 years agoReturn 0 (with a warning) for sprintf("%.0g") and sprintf("%.0f")
Nicholas Clark [Thu, 13 May 2010 11:04:55 +0000]
Return 0 (with a warning) for sprintf("%.0g") and sprintf("%.0f")

There is special case code in the sprintf implementation, for simple %f and %g
formats, conditionally compiled in only when NVs are doubles. Under long
doubles, these are handled by the general purpose code, which always returns
0 if the argument is missing. Note that sprintf(" %.0g"), ie a leading space,
sufficient to bypass the special case code, would return the string " 0".

The special case code used to return an empty string, meaning that the
behaviour of sprintf("%.0g") and sprintf("%.0f") was inconsistent between a
perl built with doubles, and a perl with long doubles, and the behaviour of
sprintf("%.0g") and sprintf(" %.0g") was inconsistent.

5b98cd54dff3b163 fixed #62874 - the special case code did not warn, but
changed behaviour to return 0. d347ad18ecf3da70 undid the behaviour change,
viewing it as a regression. However, the tests added in 5b98cd54dff3b163
expose the inconsistency in behaviour between doubles and long doubles.

There should be no inconsistency, hence the only logically consistent
conclusion is that the special case implementation was wrong - it cannot
give results inconsistent with the general code. Hence this commit changes
it to return 0 (with a warning). This is achieved by simply skipping the
special case code, if there are insufficient arguments.

14 years agoUpdating list of DOSish perls in perlport.pod.
Curtis Jewell [Wed, 12 May 2010 12:55:56 +0000]
Updating list of DOSish perls in perlport.pod.

14 years agoAdd Porting/checkpodencoding.pl to MANIFEST
H.Merijn Brand [Tue, 11 May 2010 05:54:51 +0000]
Add Porting/checkpodencoding.pl to MANIFEST

14 years agoseparate the 0755 from the . $TAINT0. this silences the warning "Dot after octal...
Richard Soderberg [Wed, 28 Apr 2010 21:44:47 +0000]
separate the 0755 from the . $TAINT0. this silences the warning "Dot after octal literal is concatenation".

14 years agoClarify that mail to perlbug also goes to p5p
Ævar Arnfjörð Bjarmason [Sun, 9 May 2010 12:38:29 +0000]
Clarify that mail to perlbug also goes to p5p

The wording added in 64a8e22bd3 didn't clarify that mail to perlbug is
also forwarded to perl5-porters. Make this section clearer so that it
now explains that perlbug is just perl5-porters + RT tracking.

See the discussion after Craig A. Berry's comment in RT #73914 for
reference.

14 years agoPATCH [perl #74978] dot after } breaks \N{}
Karl Williamson [Sat, 8 May 2010 20:06:10 +0000]
PATCH [perl #74978] dot after } breaks \N{}

The problem is that a dot can come between the braces in \N{foo.bar},
but when searching for it, I didn't stop looking at the right brace, so
it generated an error inappropriately.

This is essentially a minimum patch; efficiency could be improved
slightly with a little more work.

14 years agoNote in comment that many \N{...} tests won't work here
Karl Williamson [Sat, 8 May 2010 19:38:27 +0000]
Note in comment that many \N{...} tests won't work here

14 years agoComment where to find file's format
Karl Williamson [Sat, 8 May 2010 19:12:53 +0000]
Comment where to find file's format

14 years agoperldelta item on PL_restartjmpenv
Zefram [Wed, 5 May 2010 19:41:28 +0000]
perldelta item on PL_restartjmpenv

14 years agoperldelta item on $[ usage
Zefram [Wed, 5 May 2010 19:35:43 +0000]
perldelta item on $[ usage

14 years agoperldelta item on B::Deparse package+label fix
Zefram [Wed, 5 May 2010 19:32:33 +0000]
perldelta item on B::Deparse package+label fix

14 years agoperldelta item on reliable exception handling
Zefram [Wed, 5 May 2010 19:26:01 +0000]
perldelta item on reliable exception handling

14 years agoperlunifaq, uniintro: fix for 80 col display
Karl Williamson [Wed, 5 May 2010 18:16:48 +0000]
perlunifaq, uniintro: fix for 80 col display

14 years agoperlunicode: fix for 80 col display
Karl Williamson [Wed, 5 May 2010 18:15:14 +0000]
perlunicode: fix for 80 col display

14 years agoperlreref: missing info, 80 col display
Karl Williamson [Wed, 5 May 2010 18:13:02 +0000]
perlreref: missing info, 80 col display

The \p{Posix...} classes had not gotten added yet to the ref pod; there
were some reformattings to make things display properly in an 80 column
window.

14 years agoperlrecharclass: Clarify \p{Punct}, fix for 80 col
Karl Williamson [Wed, 5 May 2010 18:11:02 +0000]
perlrecharclass: Clarify \p{Punct}, fix for 80 col

While not strictly wrong, the hre was missing info for what \p{Punct}
does.

14 years agoperlrebackslash: fix for 80 col display
Karl Williamson [Wed, 5 May 2010 18:09:47 +0000]
perlrebackslash: fix for 80 col display

14 years agoperlre: fix for 80 col display
Karl Williamson [Wed, 5 May 2010 18:08:53 +0000]
perlre: fix for 80 col display

14 years agoperlport: fix 80 col display; broken link
Karl Williamson [Wed, 5 May 2010 18:07:42 +0000]
perlport: fix 80 col display; broken link

14 years agoFix to display ok in 80 columns
Karl Williamson [Wed, 5 May 2010 18:06:18 +0000]
Fix to display ok in 80 columns

14 years agoFix perlebcdic for for 80 column tty; fix C<>s
Karl Williamson [Wed, 5 May 2010 18:03:16 +0000]
Fix perlebcdic for for 80 column tty; fix C<>s

Two C<>'s were unclosed

14 years agoAdd =encoding utf8 to all core non-ASCII POD files + test script
Ævar Arnfjörð Bjarmason [Tue, 30 Mar 2010 14:09:24 +0000]
Add =encoding utf8 to all core non-ASCII POD files + test script

It's now possible to run:

    perl Porting/checkpodencoding.pl

To check if the core contains any naughty POD that uses non-ASCII
without declaring an encoding.

With this patch all the POD in core (except POD tests we're ignoring)
has a correct =encoding directive. The script also flags problems in
lib/* and cpan/* which aren't being fixed as part of this commit.

14 years agoRT #34604 didn't honour tied overloaded values
David Mitchell [Sat, 8 May 2010 20:25:47 +0000]
RT #34604 didn't honour tied overloaded values

A tied hash lookup could return an overloaded object but sort wouldn't
notice that it was overloaded because it checked for overload before doing
mg_get().

14 years agoadd SV_SKIP_OVERLOAD flag to sv_2*v_flags fns
David Mitchell [Sat, 8 May 2010 16:23:56 +0000]
add SV_SKIP_OVERLOAD flag to sv_2*v_flags fns

While trying to coerce an SV into a string or whatever, stop if you
suddenly discover it's overloaded (this may not happen until after you've
called it's get magic)

14 years agoadd flags arg to sv_2nv (as sv_2nv_flags)
David Mitchell [Sat, 8 May 2010 16:06:45 +0000]
add flags arg to sv_2nv (as sv_2nv_flags)

14 years agoModify Module::CoreList docs to state the availability of the removed_from() functions.
Chris 'BinGOs' Williams [Sat, 8 May 2010 13:40:24 +0000]
Modify Module::CoreList docs to state the availability of the removed_from() functions.

14 years agoBackport patch from CPANPLUS-0.9004 to cpanp-run-perl
Chris 'BinGOs' Williams [Sat, 8 May 2010 11:57:00 +0000]
Backport patch from CPANPLUS-0.9004 to cpanp-run-perl

  This resolves RT #55964 and RT #57106 relating to the failure to
  install distributions that use Module::Install::DSL

  The addition of a BEGIN {} block to cpanp-run-perl resolves the
  issue.

14 years agoBump Module::Corelist for cherrypicking to maint-5.12
Jesse Vincent [Fri, 7 May 2010 17:59:36 +0000]
Bump Module::Corelist for cherrypicking to maint-5.12

14 years agoMake t/op/sprintf.t test multiple warnings
Vincent Pit [Thu, 6 May 2010 20:20:10 +0000]
Make t/op/sprintf.t test multiple warnings

14 years agoStop returning 0 for sprintf("%.0g")
Vincent Pit [Thu, 6 May 2010 20:14:31 +0000]
Stop returning 0 for sprintf("%.0g")

And also from throwing two "Missing argument" warnings for this construct.

This was a regression introduced by 5b98cd54dff3b16344eab33ce6b09fb6fb1b89c2.

14 years agoReally test special sprintf formats
Vincent Pit [Thu, 6 May 2010 20:35:14 +0000]
Really test special sprintf formats

14 years agoMake sv_vcatpvfn() complain when special formats "%s" and "%.0f" can't find their...
Vincent Pit [Thu, 6 May 2010 18:28:58 +0000]
Make sv_vcatpvfn() complain when special formats "%s" and "%.0f" can't find their argument

This fixes [RT #62874] : printf does not print a warning when a lone %s conversion is used

14 years agoChange perlgpl.pod to GPL 1 to match README
David Golden [Thu, 6 May 2010 13:36:59 +0000]
Change perlgpl.pod to GPL 1 to match README

The README and Copying files are specific that Perl is licensed
under Artistic or GPL 1 (or later).  For whatever reason, perlgpl.pod
was created with GPL 2.  This commit changes it back to GPL 1 for
consistency with the actual license.

It also standardizes the introduction to both perlgpl and perlartistic
for consistent language explaining the dual license.

14 years agoMove code to after the variable declarations.
Nicholas Clark [Thu, 6 May 2010 09:16:02 +0000]
Move code to after the variable declarations.

Currently we only compile the top level code with "extreme warnings", so code
in ext/ isn't subject to -Wdeclaration-after-statement, hence why this was
missed. Now that dual life modules have been evicted from ext/, we could
probably consider notching up the warnings for all code in ext/.

14 years agoMerge branch 'blead' of ssh://perl5.git.perl.org/gitroot/perl into blead
Jesse Vincent [Wed, 5 May 2010 23:22:23 +0000]
Merge branch 'blead' of ssh://perl5.git.perl.org/gitroot/perl into blead

* 'blead' of ssh://perl5.git.perl.org/gitroot/perl:
  bump PerlIO::scalar version
  RT 43789: "in memory" files don't call STORE

14 years agobump PerlIO::scalar version
David Mitchell [Wed, 5 May 2010 21:58:50 +0000]
bump PerlIO::scalar version

14 years agoRT 43789: "in memory" files don't call STORE
David Mitchell [Wed, 5 May 2010 21:39:24 +0000]
RT 43789: "in memory" files don't call STORE

The code in PerlIO-scalar that implements the open $fh, '>' \$buffer
feature did not, apart from accidentally, support get/set magic and thus
tied buffers. This patch remedies that: mostly by just blindly sprinkling
SvGETMAGIC/SvSETMAGIC about, rather than doing any deep analysis and
understanding of the code. One main change I did was to add a
PerlIOScalar_read() function, rather than rely on the default behaviour
(which implements it in terms of PerlIOScalar_get_ptr() etc), since that
approach had a tendency to call FETCH multiple times

14 years agoRevert "New deprecation warning: Dot after %s literal is concatenation"
Jesse Vincent [Wed, 5 May 2010 18:40:59 +0000]
Revert "New deprecation warning: Dot after %s literal is concatenation"

This reverts commit 6fb472bab4fadd0ae2ca9624b74596afab4fb8cb.

Zefram asked me to revert this as he's going to be doing something more
pluggable

14 years agoRevert "Fix tests and add one more test for the deprecation warning added in last...
Jesse Vincent [Wed, 5 May 2010 18:40:45 +0000]
Revert "Fix tests and add one more test for the deprecation warning added in last change"

This reverts commit c4deb7365787eb01845a9d0e371e343169530659.

Zefram asked me to revert this as he's going to be doing something more
pluggable

14 years agoRevert "Deprecation warnings should always be mandatory since 5.12.0"
Jesse Vincent [Wed, 5 May 2010 18:40:26 +0000]
Revert "Deprecation warnings should always be mandatory since 5.12.0"

This reverts commit a7e260e62a5e47961e908363da32ef16f41301b2.

Zefram asked me to revert this as he's going to be doing something more
pluggable

14 years agoRevert "tweak "0x123.456" deprecation"
Jesse Vincent [Wed, 5 May 2010 18:35:25 +0000]
Revert "tweak "0x123.456" deprecation"

This reverts commit 1183a10042af0734ee65e252f15bd820b7bbe686.

Zefram asked me to revert this as he's going to be doing something more
pluggable

14 years agoWhen saving ints, if the value is small enough save it with the type.
Nicholas Clark [Sat, 20 Feb 2010 19:39:37 +0000]
When saving ints, if the value is small enough save it with the type.

This uses a new type, SAVEt_INT_SMALL.

14 years agoWhen saving I32s, if the value is small enough save it with the type.
Nicholas Clark [Sat, 20 Feb 2010 19:20:09 +0000]
When saving I32s, if the value is small enough save it with the type.

This uses a new type, SAVEt_I32_SMALL.

14 years agoIf we're going to introduce an @@ array, we'll want to be able to parse $#@ too
Rafael Garcia-Suarez [Fri, 22 May 2009 14:47:22 +0000]
If we're going to introduce an @@ array, we'll want to be able to parse $#@ too

14 years agoGive an error message if bison is not found at all
Leon Brocard [Tue, 4 May 2010 18:58:36 +0000]
Give an error message if bison is not found at all

14 years agoFor SAVEt_I16, save the value with the type.
Nicholas Clark [Sat, 20 Feb 2010 18:54:58 +0000]
For SAVEt_I16, save the value with the type.

14 years agonote in perldelta that local @tied not tied now
David Mitchell [Tue, 4 May 2010 13:43:56 +0000]
note in perldelta that local @tied not tied now

14 years agomake 'local $tied' untied
David Mitchell [Tue, 4 May 2010 13:37:04 +0000]
make 'local $tied' untied

When localising a tied scalar, don't make the scalar tied

14 years agomake local @tied, %tied, untied
David Mitchell [Tue, 4 May 2010 12:22:13 +0000]
make local @tied, %tied, untied

Fix for RT #7938, #7939: when localising an array or hash, don't make the
new aggregate tied.

The old behaviour of { local @tied; ... } was equivalent to:

    {
my $saved = \@tied;
*tied = [];
tied(@tied) = tied(@$saved)  # if tied() were an lvalue function
...
*tied = $saved;
    }

This patch simply removes the 'tied(@tied) = ...' step

14 years agodie() no longer propagates outside of a Safe compartment
Rafael Garcia-Suarez [Tue, 4 May 2010 13:36:47 +0000]
die() no longer propagates outside of a Safe compartment

so mark the test for that as a TODO. We'll decide later what behaviour
is desirable here. Note that it warns instead.

14 years agoFix parameter name for die_unwind() in embed.fnc
Rafael Garcia-Suarez [Tue, 4 May 2010 13:13:44 +0000]
Fix parameter name for die_unwind() in embed.fnc

14 years agoMerge remote branch 'zefram/zefram/reliable_exception' into blead
Rafael Garcia-Suarez [Tue, 4 May 2010 13:02:08 +0000]
Merge remote branch 'zefram/zefram/reliable_exception' into blead

Conflicts:
pp_ctl.c

14 years agoMake tests pass with open pragma in effect
Rafael Garcia-Suarez [Tue, 4 May 2010 10:22:36 +0000]
Make tests pass with open pragma in effect

14 years agoSilence a couple of false positive "may be used uninitialized" gcc warnings
Vincent Pit [Tue, 4 May 2010 08:43:07 +0000]
Silence a couple of false positive "may be used uninitialized" gcc warnings

14 years agoFor SAVEt_I8, save the value with the type.
Nicholas Clark [Sat, 20 Feb 2010 18:35:23 +0000]
For SAVEt_I8, save the value with the type.

14 years agofix a couple of var types
David Mitchell [Mon, 3 May 2010 22:51:34 +0000]
fix a couple of var types

these errors were introduced in my trie-allocation patch,
2e64971a6530d2645969bc489f564bfd3ce64993

14 years agoUpdate AUTHORS/checkAUTHORS
Jesse Vincent [Mon, 3 May 2010 21:35:49 +0000]
Update AUTHORS/checkAUTHORS

14 years agoshift; optimization
Ruslan Zakirov [Mon, 3 May 2010 21:08:46 +0000]
shift; optimization

14 years agoFor SAVEt_BOOL, save the value with the type.
Nicholas Clark [Sat, 20 Feb 2010 17:40:04 +0000]
For SAVEt_BOOL, save the value with the type.

14 years agoPOD tweak to 'require' in perlfunc relating to putting Perl code in @INC
Chris Williams [Mon, 3 May 2010 18:52:34 +0000]
POD tweak to 'require' in perlfunc relating to putting Perl code in @INC

14 years agotweak "0x123.456" deprecation
Zefram [Fri, 30 Apr 2010 19:23:59 +0000]
tweak "0x123.456" deprecation

Some improvements to the deprecation added in commit
6fb472bab4fadd0ae2ca9624b74596afab4fb8cb:

- warning message includes the word "deprecated"
- warning is in "syntax" category as well as "deprecated"
- more systematic tests
- dot detected more efficiently by incorporation into existing switch
- small doc rewording
- avoid the warning in t/op/taint.t

14 years agoReinstate some documentation about quotemeta
Rafael Garcia-Suarez [Mon, 3 May 2010 13:38:57 +0000]
Reinstate some documentation about quotemeta

(that was removed in 8bdbc703cb0af3faf2163ebce618944c51f180a0)

14 years agotries: don't allocate memory at runtime
David Mitchell [Mon, 3 May 2010 12:57:58 +0000]
tries: don't allocate memory at runtime

This is an indirect fix for
    [perl #74484] Regex causing exponential runtime+mem usage

The trie runtime code was doing more SAVETMPS than FREETMPS and was thus
growing a large tmps stack on heavy backtracking. Rather than fixing this
directly, I rewrote part of the trie code so that it no longer needs to
allocate memory in S_regmatch (it still does in find_byclass()).

The basic issue is that multiple branches in the trie may trigger an
accept state; for example:

    "abcd" =~ /xyz/abcd.*X|ab.*Y|/

here, words (branches) 2 and 3 are accept states. The original approach
was, at run time, to create a list of accepted word numbers and the
character positions of the end of each of those words. Then run the rest
of the pattern for each word in the list in turn (in word index order).
This requires memory for the list to be allocated and freed.

The new approach involves creating extra info at compile time; in
particular, for each word, a pointer to the previous accepted word (if
any) in the state tree. For example for the above pattern, part of the
state tree may be

      q    b    c    d
    1 -> 2 -> 3 -> 4 -> 5
            (#3)       (#2)

(e.g. at state 1, if the next char is 'a', we transition to state 2).
Here, state 3 is an accept state with word #3, and 5 is an accept state
with word #2. So we build a table indexed by word number, which has
wordinfo[2] = 3, wordinfo[3] = 0, thus building the word chain 2->3->0.

At run time we run the trie to completion, and remember the word
associated with the longest accept state (word #2 above). Then by following
back the chain of .prev fields, we can produce a list of all accepting
words. We then iteratively find the smallest-numbered (ie LH-most) word in
the chain, and run with it. On failure and backtrack, we find the
next-smallest and so on.

Since we are no longer recording the end-position of each word in the
string, we have to recalculate this for each backtrack. We initially
record the end-position of the shortest accepting word, and given that we
know the length of each word, we can calculate the new position each time
as an offset from that first word. Depending on unicode and folding, that
calculation can be cheap or expensive.

This algorithm is optimised for the typical case where there are a small
number (<= 2) accepting states.

This patch creates a new compile-time array, trie->wordinfo[], indexed by
word number, which contains relevant info about each word. This also
supersedes the old trie->newword[] array, whose function of recording
"overspills" of multiple words per accept state, is now handled as part of
the wordinfo[].prev chain.

14 years ago[perl #74856] Fix POD syntax in perlapi
Father Chrysostomos [Mon, 3 May 2010 12:52:01 +0000]
[perl #74856] Fix POD syntax in perlapi

14 years agoPlease don't use any of your git aliases in perlrepository.pod
Vincent Pit [Mon, 3 May 2010 09:59:24 +0000]
Please don't use any of your git aliases in perlrepository.pod

14 years agoFor SAVEt_ALLOC, store the number of save stack entries used with the type.
Nicholas Clark [Sat, 20 Feb 2010 17:19:53 +0000]
For SAVEt_ALLOC, store the number of save stack entries used with the type.

14 years agoPATCH: Make perluniprops.pod platform neutral
karl williamson (via RT) [Sat, 1 May 2010 16:35:34 +0000]
PATCH: Make perluniprops.pod platform neutral

# New Ticket Created by  karl williamson
# Please include the string:  [perl #74830]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=74830 >

This is accomplished by changing mktables which generates it

>From d114f6f25c763ecbd00d6271462e5d5c272457e7 Mon Sep 17 00:00:00 2001
From: Karl Williamson <khw@khw-desktop.(none)>
Date: Sat, 1 May 2010 09:22:32 -0600
Subject: [PATCH] Add missing comma to generated pod

Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>

14 years agoFor SAVEt_REGCONTEXT, store the number of save stack entries used with the type.
Nicholas Clark [Sat, 20 Feb 2010 11:55:23 +0000]
For SAVEt_REGCONTEXT, store the number of save stack entries used with the type.

14 years agoPermit array assignment to steal temps and copy shared hash key scalars.
Nicholas Clark [Sun, 2 May 2010 20:04:32 +0000]
Permit array assignment to steal temps and copy shared hash key scalars.

Scalar assignment to array elements already does this. (As does all other
scalar assignment, and list assignment to hashes.) Prior to 4c8f17b905f2
(change 7867) list assignment to arrays did steal temps.

14 years agoBetter fix for RT #2140 (list assignment with duplicated temporaries)
Nicholas Clark [Sun, 2 May 2010 19:23:29 +0000]
Better fix for RT #2140 (list assignment with duplicated temporaries)

4c8f17b905f2 (change 7867) took the approach of a special case in sv_setsv()
when PL_op indicated that the current OP was OP_AASSIGN. The problem is in one
part of pp_aassign, where it was using sv_mortalcopy() on values that were
correctly marked as temporaries, but also still needed later. Hence a more
targetted solution is to avoid that call, and to instead use API calls that
will not steal temporaries.

14 years agoFix c6bf6a65 - 64 bit big endian builds were broken.
Nicholas Clark [Sun, 2 May 2010 15:19:00 +0000]
Fix c6bf6a65 - 64 bit big endian builds were broken.

14 years agoBump version of Carp
Rafael Garcia-Suarez [Sun, 2 May 2010 11:40:54 +0000]
Bump version of Carp

14 years ago[perl #74808] Carp.pm POD error
Gene Sullivan [Sun, 2 May 2010 11:39:54 +0000]
[perl #74808] Carp.pm POD error

The documentation incorrectly states that the $Carp::Verbose
variable makes cluck generate stack backtraces.  cluck
already generates stack backtraces.  It should say that
the variable makes croak generate stack backtraces.

14 years agoReduce Errno memory usage by around 55%.
Nicholas Clark [Sun, 2 May 2010 09:43:15 +0000]
Reduce Errno memory usage by around 55%.

Use Proxy Constant Subroutines rather than full-fat subroutines, and simplify
the implementation of the tied hash methods.

14 years agoRemove unused %errno and $AUTOLOAD from the generated Errno.pm
Nicholas Clark [Sun, 2 May 2010 08:27:09 +0000]
Remove unused %errno and $AUTOLOAD from the generated Errno.pm

14 years agoFor SVt_CLEAR, store the pad offset with the type.
Nicholas Clark [Sat, 20 Feb 2010 13:36:21 +0000]
For SVt_CLEAR, store the pad offset with the type.

This saves 1 slot on the save stack for each lexical encountered at run time.

14 years agoMake Term::ReadLine::findConsole fall back to STDIN if /dev/tty can't be opened
Gisle Aas [Sun, 2 May 2010 05:49:10 +0000]
Make Term::ReadLine::findConsole fall back to STDIN if /dev/tty can't be opened

14 years agoRemove the lexical $len and associated calculation, which is never used.
Nicholas Clark [Sat, 1 May 2010 20:34:11 +0000]
Remove the lexical $len and associated calculation, which is never used.

14 years agoOn the save stack, store the save type as the bottom 6 bits of a UV.
Nicholas Clark [Sat, 20 Feb 2010 12:21:52 +0000]
On the save stack, store the save type as the bottom 6 bits of a UV.

This makes the other 26 (or 58) bits available for save data.