platform/upstream/perl.git
10 years agore_intuit_start(): simplify ml_anch evaluation
David Mitchell [Fri, 27 Dec 2013 23:23:12 +0000 (23:23 +0000)]
re_intuit_start(): simplify ml_anch evaluation

rather than enumerating all the anchor flag combos where ml_anch *isn't*
true, enumerate the flags for which is *is* true. This is slighly simpler
logic, and involves once less negation, which makes it easier to
understand.

10 years agotest for single-line ^ within /m
David Mitchell [Fri, 27 Dec 2013 23:16:23 +0000 (23:16 +0000)]
test for single-line ^ within /m

This combo doesn't appear to be tested anywhere; specifically, adding this
in re_intuit_start() didn't trigger the assertion when run against the
test suite:

    if (prog->extflags & RXf_ANCH_BOL)
        assert(!multiline);

10 years agoeliminate RXf_ANCH_SINGLE
David Mitchell [Fri, 27 Dec 2013 22:28:31 +0000 (22:28 +0000)]
eliminate RXf_ANCH_SINGLE

This macro defines two flag bits:

    #define PREGf_ANCH_SINGLE         (PREGf_ANCH_SBOL|PREGf_ANCH_GPOS)

but is only used twice in core (and not on CPAN),
don't really add any value, but increases cognitive complexity.

10 years agore_intuit_start(): add comments to a block of code
David Mitchell [Fri, 27 Dec 2013 22:12:31 +0000 (22:12 +0000)]
re_intuit_start(): add comments to a block of code

explain what it does!

10 years agore_intuit_start(): refactor an if/else block
David Mitchell [Fri, 27 Dec 2013 22:06:36 +0000 (22:06 +0000)]
re_intuit_start(): refactor an if/else block

change

    if (X) { do nothing } else if (Y) { Z }

to
    if (!X && Y) { Z }

10 years agore_intuit_start(): rationalise ml_anch var
David Mitchell [Thu, 26 Dec 2013 22:47:33 +0000 (22:47 +0000)]
re_intuit_start(): rationalise ml_anch var

Make ml_anch bool rather than I32, since that's all its used for.
Also, unconditionally initialise it to zero then only set where needed.
This eliminates an else branch that just sets it to zero.

10 years agore_intuit_start(); eliminate max_shift var
David Mitchell [Thu, 26 Dec 2013 22:29:39 +0000 (22:29 +0000)]
re_intuit_start(); eliminate max_shift var

I introduced this var a few commits ago, but after a bit of refactoring,
I can now eliminate it and just use its antecedents directly.

10 years agore_intuit_start(): merge two similar code branches
David Mitchell [Thu, 26 Dec 2013 22:00:24 +0000 (22:00 +0000)]
re_intuit_start(): merge two similar code branches

When the check string is anchored at a fixed offset from the start
of the string (e.g. /^..abc/), there are two similar code branches
that do a quick memNE() reject - the difference being whether SvTAIL() is
true, i.e. whether the pattern ends with $ and may match a \n.

Merge the common bits of the two branches. Technically this makes the
non-SvTAIL() branch slightly less efficient, since it will always retrieve
SvCUR(check) even when its not needed, but in practice it will already be
in the cache since we have to access SvPVX(check), and the I-cache misses
will have been reduced by reducing the code size.

It also removes one label.

10 years agore_intuit_start(): factor out some common code
David Mitchell [Thu, 26 Dec 2013 20:54:08 +0000 (20:54 +0000)]
re_intuit_start(): factor out some common code

3 assignments are done at the end of both branches of an if/else;
factor them out after the end.

10 years agoregexp.h: document the fields of reg_substr_datum
David Mitchell [Mon, 16 Dec 2013 14:18:58 +0000 (14:18 +0000)]
regexp.h: document the fields of reg_substr_datum

In particular, specify that the various offset fields are char rather
than byte counts.

10 years agoRT#120692 slow intuit with long utf8 strings
David Mitchell [Fri, 13 Dec 2013 16:35:14 +0000 (16:35 +0000)]
RT#120692 slow intuit with long utf8 strings

Some code in re_intuit_start() that tries to find the range of chars
to which the BM substr find can be applied, uses logic that is very
inefficient once utf8 was enabled. Basically the code tries to find
the maximum end-point where the substr could be found, by taking the
minimum of:

    * start + prog->check_offset_max + length(substr)
    * end   - prog->check_end_shift

Except that these values are in char lengths and need to be converted to
bytes before calling fbm_instr(). The code formerly involved scanning the
whole of the remaining string to determine how many chars it had.
By doing the calculation a different way, we can avoid this.

This makes the following two regexps each take milliseconds rather than
10s of seconds:

        my $s = 'ab' x 1_000_000;
        utf8::upgrade($s);
        1 while $s =~ m/\Ga+ba+b/g;
        $s=~ /^a{1,2}x/ for  1..10_000;

10 years agore_intuit_start(): re-indent a block of code
David Mitchell [Fri, 13 Dec 2013 13:40:15 +0000 (13:40 +0000)]
re_intuit_start(): re-indent a block of code

(whitespace-only changes)

A block of code had a confusing mixture of 4- and 2-space indents.
Re-indent to be consistently 4 chars. Also, wrap some long lines
and add a few blank lines for clarity.

10 years agoregcomp utf8 len cache panic
David Mitchell [Tue, 10 Dec 2013 17:17:06 +0000 (17:17 +0000)]
regcomp utf8 len cache panic

Compiling this regex:

    /\x{100}[xy]\x{100}{2}/

caused this:

    panic: sv_len_utf8 cache 1 real 2

This was due to the code in S_study_chunk() mixing up char and byte
lengths when updating the utf8 length cache on a utf8 string that
had been extended by repeatedly duplicating the last n chars.

(The second test is for an issue introduced during an initial attempt to
fix this).

10 years agoperldelta updates
Tony Cook [Fri, 7 Feb 2014 09:52:47 +0000 (20:52 +1100)]
perldelta updates

10 years agomerge basic zefram/purple_signatures into blead
Zefram [Thu, 6 Feb 2014 18:53:09 +0000 (18:53 +0000)]
merge basic zefram/purple_signatures into blead

10 years agot/run/locale.t: Rmv test that isn't generally valid
Karl Williamson [Thu, 6 Feb 2014 17:48:57 +0000 (10:48 -0700)]
t/run/locale.t: Rmv test that isn't generally valid

The return from setlocale() on a new locale is documented in Linux as
opaque, even though the Linux smokers we have return the name of the
new locale.  It turns out that VMS actually does return something
different, and this test fails there.  So, the test is testing for
something that just happens to be currently true on many of our systems;
hence isn't general, and hence shouldn't be tested for.

And, the test isn't necessary, as we can infer from the other tests in
the file that a locale passed via the environment actually takes hold,
as we do so for a locale which has a comma radix, and test that the
radix is correctly set.

10 years agoFix typo in perldelta.pod
Matthew Horsfall [Thu, 6 Feb 2014 15:34:16 +0000 (07:34 -0800)]
Fix typo in perldelta.pod

-----------------------------------------------------------------

10 years agoMake a literal "{" fatal after \b and \B in regexes
Karl Williamson [Thu, 6 Feb 2014 05:06:02 +0000 (22:06 -0700)]
Make a literal "{" fatal after \b and \B in regexes

These have been deprecated since v5.14.

10 years agoAdd tests
Karl Williamson [Thu, 6 Feb 2014 04:59:23 +0000 (21:59 -0700)]
Add tests

These are for commit 421e43ba3017755892f18a5690b66a6ed8717fa9

10 years agoutil.c: Add comment.
Karl Williamson [Sat, 30 Nov 2013 23:53:32 +0000 (16:53 -0700)]
util.c: Add comment.

I wonder if we need to worry about compatibility with a 1994 libc?

10 years agoDynaLoader: On Android, define DLOPEN_WONT_DO_RELATIVE_PATHS
Brian Fraser [Thu, 6 Feb 2014 01:38:41 +0000 (22:38 -0300)]
DynaLoader: On Android, define DLOPEN_WONT_DO_RELATIVE_PATHS

Android's linker will actually do relative paths just fine; the problem
is that it won't search from the current directory, only on
/vendor/lib, /system/lib, and whatever is in LD_LIBRARY_PATH.
While the core handles that just fine, bits of CPAN rather rightfully
expect this to work:

use lib 'foo'            # puts foo/ in @INC
use My::Module::In::Foo; # calls dlopen() with foo/My/Module/...
                         # which will likely fail

So we take this route instead.

10 years agoCBuilder::Android: fix ->link() to respect wantarray.
Brian Fraser [Wed, 5 Feb 2014 10:37:32 +0000 (07:37 -0300)]
CBuilder::Android: fix ->link() to respect wantarray.

10 years agoFix more tests to work on systems that don't define LC_ALL and friends
Brian Fraser [Wed, 5 Feb 2014 10:34:52 +0000 (07:34 -0300)]
Fix more tests to work on systems that don't define LC_ALL and friends

10 years agodquote_static.c: White-space only
Karl Williamson [Wed, 5 Feb 2014 22:42:35 +0000 (15:42 -0700)]
dquote_static.c: White-space only

Outdent code whose surrounding block was removed by the previous commit

10 years agoForbid "\c{" and \c{non-ascii}
Karl Williamson [Wed, 5 Feb 2014 21:54:47 +0000 (14:54 -0700)]
Forbid "\c{" and \c{non-ascii}

These constructs have been deprecated since v5.14 with the intention of
making them fatal in 5.18.  This wasn't done; and is being done now.

10 years agohandy.h Special case toCTRL('?') for EBCDIC
Karl Williamson [Sat, 13 Apr 2013 17:41:04 +0000 (11:41 -0600)]
handy.h Special case toCTRL('?') for EBCDIC

There is no change for ASCII platforms.  For EBCDIC ones, toCTRL('?")
and its inverse are special cased to map to/from the APC control
character, which is the outlier control on these platforms.  The reason
to special case this is that otherwise toCTRL('?') would map to a
graphic character, not a control.  By outlier, I mean it is the one
control not in the single block where all the other controls are placed.
Further, it corresponds on two of the platforms with 0xFF, which is
would be an EBCDIC rub-out character corresponding to an ASCII rub-out
(or DEL) 0x7F, which is what toCTRL('?') maps to on ASCII.  This is an
outlier control on ASCII not being a member of the C0 nor C1 controls.
Hence this make '?' mean the outlier control on both platforms.

10 years agoB.pm: Bump version
Karl Williamson [Wed, 5 Feb 2014 21:56:50 +0000 (14:56 -0700)]
B.pm: Bump version

10 years agoAllow blead to compile under some g++
Karl Williamson [Wed, 5 Feb 2014 20:01:45 +0000 (13:01 -0700)]
Allow blead to compile under some g++

Various platforms are refusing to compile blead with g++ [perl #121151]
This patch, suggested by Tony Cook seems to work.  There may be a better
way to do it, so I'm not closing the ticket, but this gets things
working again.

10 years agofix Module::CoreList::is_core version comparision
David Golden [Wed, 5 Feb 2014 19:16:19 +0000 (14:16 -0500)]
fix Module::CoreList::is_core version comparision

10 years agofix Module::CoreList::is_core default perl version
David Golden [Wed, 5 Feb 2014 19:08:10 +0000 (14:08 -0500)]
fix Module::CoreList::is_core default perl version

10 years agoFix regression in floating mandatory string optimisation
Yves Orton [Wed, 5 Feb 2014 17:39:30 +0000 (01:39 +0800)]
Fix regression in floating mandatory string optimisation

In 304ee84bde82d4eee33b0d0ff03080b360eae72b I introduced a regression
where floating mandatory strings which were at known offsets started
being treated as though they were allowed "anywhere".

This patch fixes the bug, and adds tests to make sure it does not come
back.

See also discussion in Perl RT #121182.

https://rt.perl.org/Public/Bug/Display.html?id=121182

10 years agoEliminate stupid macro
Yves Orton [Wed, 5 Feb 2014 16:56:23 +0000 (00:56 +0800)]
Eliminate stupid macro

Years ago I was lazy. False laziness. Today I undo that laziness. Sigh

10 years agoFile::Spec: Mopre extensive fix for #120593
Brian Fraser [Wed, 5 Feb 2014 06:36:15 +0000 (03:36 -0300)]
File::Spec: Mopre extensive fix for #120593

The original fix only handled '.', this one handles all relative
paths.

10 years agot/uni/fold.t: use &LC_ALL with & to avoid strict errors
Brian Fraser [Wed, 5 Feb 2014 06:29:13 +0000 (03:29 -0300)]
t/uni/fold.t: use &LC_ALL with & to avoid strict errors

10 years agosv,c, sv_cmp_locale_flags: flags is unused if locales are disabled
Brian Fraser [Wed, 5 Feb 2014 02:35:57 +0000 (23:35 -0300)]
sv,c, sv_cmp_locale_flags: flags is unused if locales are disabled

10 years agosv.c: Remove leftover ifdef from the %vd format
Brian Fraser [Tue, 4 Feb 2014 21:32:36 +0000 (18:32 -0300)]
sv.c: Remove leftover ifdef from the %vd format

10 years agoAdded missing prototypes.
Brian Fraser [Tue, 4 Feb 2014 04:00:40 +0000 (01:00 -0300)]
Added missing prototypes.

This was mostly for XS functions defined in the core, but also
for a handful of functions in the :stdio layer.

10 years agoFix the prototypes of some functions without context
Brian Fraser [Tue, 4 Feb 2014 03:47:12 +0000 (00:47 -0300)]
Fix the prototypes of some functions without context

Their prototypes are (void), but the implementation was ()

10 years agoAvoid compiler warnings by consistently using #ifdef instead of plain #if
Brian Fraser [Tue, 4 Feb 2014 03:38:39 +0000 (00:38 -0300)]
Avoid compiler warnings by consistently using #ifdef instead of plain #if

10 years ago.gitignore: Handle cross-compilation files better
Brian Fraser [Fri, 31 Jan 2014 18:24:30 +0000 (15:24 -0300)]
.gitignore: Handle cross-compilation files better

10 years agoperldelta for 0ecf23179326, none needed for a5368aebf374
Tony Cook [Wed, 5 Feb 2014 01:44:47 +0000 (12:44 +1100)]
perldelta for 0ecf23179326, none needed for a5368aebf374

10 years agoUpgrade to threads 1.92
Jerry D. Hedden [Tue, 4 Feb 2014 23:38:44 +0000 (18:38 -0500)]
Upgrade to threads 1.92

10 years agoUpgrade to threads::shared 1.46
Jerry D. Hedden [Tue, 4 Feb 2014 21:51:26 +0000 (16:51 -0500)]
Upgrade to threads::shared 1.46

10 years agoperldelta for IO::Socket::IP version 0.27
Tom Hukins [Tue, 21 Jan 2014 19:48:21 +0000 (19:48 +0000)]
perldelta for IO::Socket::IP version 0.27

Tony: grammar fix and fix module sort order

10 years agoUpgrade IO::Socket::IP to version 0.27
Tom Hukins [Tue, 21 Jan 2014 19:48:09 +0000 (19:48 +0000)]
Upgrade IO::Socket::IP to version 0.27

10 years agoperldelta for e40f8e806ef
Tony Cook [Tue, 4 Feb 2014 21:36:52 +0000 (08:36 +1100)]
perldelta for e40f8e806ef

10 years agoDon't test locales that are invalid for needed categories
Karl Williamson [Tue, 4 Feb 2014 19:15:14 +0000 (12:15 -0700)]
Don't test locales that are invalid for needed categories

When looking for locales to test, skip ones which aren't defined in
every locale category we care about.  This was motivated by a Net BSD
machine which has a Pig Latin locale, but it is defined only for
LC_MESSAGES.

This necessitated adding parameters to pass the desired locale(s), and
renaming a test function to indicate the current category it is valid
for.

10 years agoRevert "'use utf8' should imply /u regex matching"
Karl Williamson [Tue, 4 Feb 2014 17:43:42 +0000 (10:43 -0700)]
Revert "'use utf8' should imply /u regex matching"

This reverts commit bfa0ee78b652802412c3cab86bb873ed67ea6550.

This commit turned out to be contentious, and since we are past the
contentious features freeze date, no matter what else, it should be
reverted.

The argument for the commit essentially boils down to 'use utf8'
indicates that the text within its scope should be treated as utf8.
That means that any patterns with literals in them should be treated as
utf8, but utf8-encoded patterns follow Unicode rules by definition.

The arguments against it are that code relies on the way it has always
worked (even if that was an oversight), and in fact several CPAN modules
were broken by it, [perl #121162].  Also it has been the stated intent
that 'use utf8' will eventually become a no-op, meaning all text will be
treated as utf8, and that shouldn't have to mean that backwards
compatibility will be broken then.

10 years agoAdd note of blead customizations for previous commit
Steve Hay [Tue, 4 Feb 2014 12:55:44 +0000 (12:55 +0000)]
Add note of blead customizations for previous commit

10 years agovutil.c, vxs.inc: Avoid warnings from -Wmissing-prototypes -Wundef -Wunused-label
Brian Fraser [Tue, 4 Feb 2014 09:38:55 +0000 (06:38 -0300)]
vutil.c, vxs.inc: Avoid warnings from -Wmissing-prototypes -Wundef -Wunused-label

-Wmissing-prototypes was complaining about declaring XS()
functions without previously declaring a prototype.

-Wundef didn't like using #if foo instead of #ifdef foo

-Wunused-label warned because VER_{IV,NM,PV} were defined on all
versions of perl, but only used on < 5.17.2

10 years agoAdd tests and fix new fatal errors related to $/
Yves Orton [Tue, 4 Feb 2014 10:48:42 +0000 (18:48 +0800)]
Add tests and fix new fatal errors related to $/

In b3a2acfa0c0e4f8e48e1f6eb4d6fd143f293d2c6 I added new exceptions, but
forgot to test them properly. In the process I managed to partially break
the functionality, and since it was not tested I did not notice.

Ilmari on #p5p pointed out I forgot the test, and in the end I had to completely
rewrite the original patch.

Now tested as fully as I could. Thanks Ilmari.

10 years agoAdd porting test for Module-CoreList
Chris 'BinGOs' Williams [Tue, 4 Feb 2014 10:16:55 +0000 (10:16 +0000)]
Add porting test for Module-CoreList

When the perl version is bumped in blead, Module-CoreList
should be prepared to include a stub entry for this new version.

This tests for the existence of the stub-entry.

10 years agoUpgrade libnet from version 1.24 to 1.25
Steve Hay [Tue, 4 Feb 2014 09:36:45 +0000 (09:36 +0000)]
Upgrade libnet from version 1.24 to 1.25

10 years agoignore a test data file for a Locale-Codes test we don't ship
Tony Cook [Tue, 4 Feb 2014 08:55:16 +0000 (19:55 +1100)]
ignore a test data file for a Locale-Codes test we don't ship

10 years agodo not overflow when the pattern is unbounded
Yves Orton [Tue, 4 Feb 2014 08:18:16 +0000 (16:18 +0800)]
do not overflow when the pattern is unbounded

10 years agoExclude new vutil/Makefile.PL in cpan/version/
Steve Hay [Tue, 4 Feb 2014 08:20:17 +0000 (08:20 +0000)]
Exclude new vutil/Makefile.PL in cpan/version/

10 years agoAnd now the rest of the sync to 0.9908
John Peacock [Mon, 3 Feb 2014 23:42:20 +0000 (18:42 -0500)]
And now the rest of the sync to 0.9908

10 years agoAdd -DL option to trace setlocale calls
Karl Williamson [Tue, 4 Feb 2014 02:12:16 +0000 (19:12 -0700)]
Add -DL option to trace setlocale calls

This will help field debugging of locale issues.

10 years agoRevert "Fix handy.t for systems without $Config{d_isblank}."
Karl Williamson [Tue, 4 Feb 2014 02:52:54 +0000 (19:52 -0700)]
Revert "Fix handy.t for systems without $Config{d_isblank}."

This reverts commit d61570b1bbf3e2d76cc293690156fb361b054272.  This
commit was made unnecessary by commit
3f9a3488327f59f53c00adc132d91f19840e2a50.

10 years agoRegenerate podcheck db due to recent 79col fixes
Karl Williamson [Mon, 3 Feb 2014 19:18:38 +0000 (12:18 -0700)]
Regenerate podcheck db due to recent 79col fixes

Commits 51b4c035919497f474ce46dcbdac1d2f3fd18a84 and
02257115537194d7a3b36a956d5643069f78c54f fixed some too-long verbatim
line issues.  I'm not sure why commit
b3a2acfa0c0e4f8e48e1f6eb4d6fd143f293d2c6 added them to the db, as they
were fixed before it was applied.  My guess is that the workspace had
not been rebased recently enough.

10 years agoModule-CoreList prepared for v5.19.9
Chris 'BinGOs' Williams [Mon, 3 Feb 2014 23:11:20 +0000 (23:11 +0000)]
Module-CoreList prepared for v5.19.9

10 years ago[perl #121028] avoid creating a shell process
Tony Cook [Wed, 22 Jan 2014 04:14:59 +0000 (15:14 +1100)]
[perl #121028] avoid creating a shell process

10 years agoUpdate Pod-Parser to CPAN version 1.62
Chris 'BinGOs' Williams [Mon, 3 Feb 2014 21:41:24 +0000 (21:41 +0000)]
Update Pod-Parser to CPAN version 1.62

  [DELTA]

 02-Feb-2014           Marek Rouchal                        <marekr@cpan.org>
 -----------------------------------------------------------------------------
 Version 1.62
 + CPAN#87891: More sanity checks in podselect()
   documentation patches by florent.angly@gmail.com, and a bit of stricter
   checking what clients pass to podselect()

10 years agoDynaLoader: On android, dl_load_flags should always be 0x00
Brian Fraser [Mon, 3 Feb 2014 20:36:31 +0000 (21:36 +0100)]
DynaLoader: On android, dl_load_flags should always be 0x00

The linker ignores all the flags and works as if under RTLD_LOCAL,
so don't give users the headache of seeing warnings ala

"Can't make loaded symbols global on this platform while loading %s"

when using a module that subclasses DynaLoader and defines
dl_load_flags to anything else.

10 years agoCBuilder, link: On Android, always return absolute paths to libraries
Brian Fraser [Mon, 3 Feb 2014 20:22:58 +0000 (21:22 +0100)]
CBuilder, link: On Android, always return absolute paths to libraries

Several modules on CPAN expect being able to pass the library
name returned by ->link to DynaLoader::dl_load_file and have it Just Work.
However, because ->link returns relative paths, those modules ran afoul
of Android's linker, which will only look in a handful of hardcoded
system directories for relative libraries, plus whatever LD_LIBRARY_PATH
pointed to at the start of execution.

This commit makes ->link on Android always return an absolute path,
which will be found by the linker.

10 years agoUpdate Compress-Raw-Zlib to CPAN version 2.065
Chris 'BinGOs' Williams [Mon, 3 Feb 2014 20:35:24 +0000 (20:35 +0000)]
Update Compress-Raw-Zlib to CPAN version 2.065

  [DELTA]

  2.065 3 February 2014

      * [PATCH] resolve c++ build failure in core
        [#92657]

      * gcc -g3: final link failed: Memory exhausted
        [#88936]

10 years agoFix [[:blank:]] handling when no isblank() on platform
Karl Williamson [Mon, 3 Feb 2014 18:52:24 +0000 (11:52 -0700)]
Fix [[:blank:]] handling when no isblank() on platform

isblank() is a C99 construct,  Perl tries to handle the use of this on
C89 platforms by using the standard hard-coded definition.  However,
this code was not updated to account for UTF-8 locales when handling for
those was recently added (31f05a37c), since in a UTF-8 locale the
no-break space is also considered to be a blank.

This commit fixes that.  Previously regcomp.c generated the hard-coded
definitions when there was no isblank(), using #ifdef'd code.  That
special handling was removed, and [:blank:] is always treated just like
any other POSIX class.  The specialness of it is hidden entirely in
handy.h.  This simplifies the regcomp.c code slightly.  I considered
removing the special handling for isascii(), also a C99 construct, in
the name of simplicity over the slight speed that would be lost.  But
the special handling is only a single line in two places, so I left it
in.

10 years agodeal with assignment to $/ better, deprecate edge cases, and forbid others
Yves Orton [Mon, 3 Feb 2014 14:20:13 +0000 (22:20 +0800)]
deal with assignment to $/ better, deprecate edge cases, and forbid others

The actual behavior of $/ under various settings and how it is documented
varies quite a bit. Clarify the documentation, and add various checks
that are validated when setting $/.

The gist of the problem was that the way that weirdo ref assignments were
handled was mostly broken:

  * setting to a reference to an array, hash, or other higher level
  construct would behave similarly to setting it to a reference to a
  an integer, by numifying the ref and using it as an integer. This
  behavior was entirely undocumented.

  * setting to a reference to 0 or to -1 was *documented* in triggering
  "slurp" behavior, but actually did not. Instead it would set the
  separator to the stringified form of the ref, which would *appear* as
  slurp behavior due to the unlikelihood of a file actually containing
  a string which matched, however was less efficient, and if someone's
  luck were *terrible* might actually behave as a split.

In the future we wish to support more sophisticated ways of setting the
input record separator, possibly supporting things like:

  $/= [ "foo", "bar" ];
  $/= qr/foo|bar/;

Accordingly this patch *forbids* the use of a non scalar ref, and raises
a fatal exception when one does so.

Additionally it treats non-positive refs *exactly* the same as assigning
undef, *including* ignoring the original value and setting $/ to undef.
The means the implementation now matches the documentation. However
since this might involve some crazy script changing in behavior (as one
can't fetch back the original ref from $/) I have added a warning in
category "deprecated" advising the user what has happened and
recommending setting to "undef" explicitly.

As far as I can tell this will only *break* code doing extremely dodgy
things with $/.

While putting together this patch I encountered numerous problems with
porting tests. First off was porting/podcheck.t, which failed test without
saying why or what to do, even under TEST_VERBOSE=1. Then when I did a
regen to update the exceptions database and then used that information
to try to fix the reported problems it seems that it does not work properly
anyway.  Specifically you aren't allowed to have a / in the interesting
parts of a L<> reference. If you replace the / with an E<0x2f> then the
link is valid POD, but podcheck.t then considers it a broken link. If
you then  replace the / in perdiag with E<0x2f> as well then
porting/diag.t complains that you have an undocumented diagnostic!

Accordingly I used the --regen option of podcheck.t to add exceptions to
the exception database. I have no idea if the pod is correctly formatted
or not.

10 years agoAdd RXf_UNBOUNDED_QUANTIFIER and regexp->maxlen
Yves Orton [Sun, 2 Feb 2014 15:37:37 +0000 (23:37 +0800)]
Add RXf_UNBOUNDED_QUANTIFIER and regexp->maxlen

The flag tells us that a pattern may match an infinitely long string.

The new member in the regexp struct tells us how long the string might
be.

With these two items we can implement regexp based $/

10 years agoBump version version and remove/update customisations
Chris 'BinGOs' Williams [Mon, 3 Feb 2014 13:14:02 +0000 (13:14 +0000)]
Bump version version and remove/update customisations

10 years agoSync bleadperl to version.pm 0.9908
John Peacock [Mon, 3 Feb 2014 12:48:57 +0000 (07:48 -0500)]
Sync bleadperl to version.pm 0.9908

Attached is a patch to bring blead up to date with the latest CPAN
release of version.pm 0.9908.  All tests pass (except the expected
porting/customized.t).

I'm hopeful that this will be the last update for a while.  Thanks to
Daniel Dragan for his insistent prodding to improve the code. ;-)

Thanks

John

>From c501530aa386a3ccbdb35bcccbccd35d70315651 Mon Sep 17 00:00:00 2001
From: John Peacock <jpeacock@cpan.org>
Date: Sun, 2 Feb 2014 11:57:44 -0500
Subject: [PATCH] Update bleadperl to CPAN 0.9908 release

Signed-off-by: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
10 years agoPATCH [perl #121144]: \S, \W, etc fail for above ASCII
Karl Williamson [Mon, 3 Feb 2014 05:30:10 +0000 (22:30 -0700)]
PATCH [perl #121144]: \S, \W, etc fail for above ASCII

There were three things wrong with these couple of lines of code.that
help generate the synthetic start class (SSC).

1)  It used PL_regkind, instead of straight OP.  This meant that /u
    matches were treated the same as /d matches since they both have the
    same regkind.
2)  For what it thought was just for /d, it used the complement of
    ASCII, which matches 128-INFINITY, whereas it wanted 128-255 only..
3)  It did a union of this complement, instead of a subtract of the
    non-complement, forgetting that we are about to complement the
    result, so that if we want the end result to have something, we
    better have the input not have that something, or the complementing
    will screw it up.

10 years agoPorting/Glossary: Entries should start with \t not blanks
Karl Williamson [Mon, 3 Feb 2014 04:50:57 +0000 (21:50 -0700)]
Porting/Glossary: Entries should start with \t not blanks

For otherwise, they get turned into verbatim lines.  I don't know where
to document this.

10 years agoFix handy.t for systems without $Config{d_isblank}.
Craig A. Berry [Mon, 3 Feb 2014 04:09:58 +0000 (22:09 -0600)]
Fix handy.t for systems without $Config{d_isblank}.

isblank() is a C99 function that may or may not be present,
meaning checking for what's blank under a non-POSIX/C locale may
not match Unicode code points that are considered blank, such as
non-breaking space.

Make the tests for these conditions TODO as it's possible Perl
could implement its own isblank() for these conditions, at least
for UTF-8 locales.

N.B.  If there are implementations that provde isblank() but have
it match only space and tab regardless of locale, this change
probably won't help.

t/re/charset.t probably needs similar treatment.

10 years agoperldelta for f06c882585
Tony Cook [Mon, 3 Feb 2014 04:09:20 +0000 (15:09 +1100)]
perldelta for f06c882585

10 years ago[perl #77672] avoid a file handle redirection race
Tony Cook [Mon, 3 Feb 2014 03:39:46 +0000 (14:39 +1100)]
[perl #77672] avoid a file handle redirection race

With multiple threads (and Win32 fork() is implemented in terms of
threads), Win32's popen() code had a race condition where a different
thread could write to the stdout (or read from the stdin) handle setup
for a child process.

Avoid this by using the Win32 API to supply the I/O handles instead of
redirecting them in the current process.

10 years ago[perl #121134] prevent state variables from being merged into a padrange
Tony Cook [Mon, 3 Feb 2014 00:04:19 +0000 (11:04 +1100)]
[perl #121134] prevent state variables from being merged into a padrange

10 years agoDon't pull state vars into padrange ops
Matthew Horsfall (alh) [Fri, 31 Jan 2014 22:21:43 +0000 (17:21 -0500)]
Don't pull state vars into padrange ops

10 years agoTest state vars following padranges [Perl #121134]
Matthew Horsfall [Fri, 31 Jan 2014 21:52:04 +0000 (16:52 -0500)]
Test state vars following padranges [Perl #121134]

10 years ago'use utf8' should imply /u regex matching
Karl Williamson [Sun, 2 Feb 2014 19:20:42 +0000 (12:20 -0700)]
'use utf8' should imply /u regex matching

This should be true even if the pattern isn't in utf8.

10 years agomore tests for signatures
Zefram [Sun, 2 Feb 2014 16:03:12 +0000 (16:03 +0000)]
more tests for signatures

10 years agoREADME.qnx: Make verbatim line fit in 79 columns
Karl Williamson [Fri, 31 Jan 2014 18:10:14 +0000 (11:10 -0700)]
README.qnx: Make verbatim line fit in 79 columns

10 years agoResolve c++ build fail in core
Chris 'BinGOs' Williams [Sun, 2 Feb 2014 15:33:41 +0000 (15:33 +0000)]
Resolve c++ build fail in core

Upstreamed as CPAN RT#92657

10 years agoUpdate IO-Compress to CPAN version 2.064
Chris 'BinGOs' Williams [Sun, 2 Feb 2014 12:18:38 +0000 (12:18 +0000)]
Update IO-Compress to CPAN version 2.064

  [DELTA]

  2.064 1 February 2014

      * RT #90216: IO-Compress/t/050interop-gzip.t: Use android-compatible
        flags when calling gzip

10 years agoUpdate Compress-Raw-Zlib to CPAN version 2.064
Chris 'BinGOs' Williams [Sun, 2 Feb 2014 12:16:43 +0000 (12:16 +0000)]
Update Compress-Raw-Zlib to CPAN version 2.064

  [DELTA]

  2.064 1 February 2014

      * [PATCH] Handle non-PVs better
        [#91558]

      * Z_OK instead of Z_BUF_ERROR
        [#92521]

10 years agoUpdate Compress-Raw-Bzip2 to CPAN version 2.064
Chris 'BinGOs' Williams [Sun, 2 Feb 2014 12:15:01 +0000 (12:15 +0000)]
Update Compress-Raw-Bzip2 to CPAN version 2.064

  [DELTA]

  2.064 1 February 2014

      * [PATCH] Handle non-PVs better
        [#91558]

10 years agoINSTALL, cross-compile section: It's 2014, stop living in the past
Brian Fraser [Sat, 1 Feb 2014 22:29:10 +0000 (23:29 +0100)]
INSTALL, cross-compile section: It's 2014, stop living in the past

Spotted by Daniel Dragan on #p5p

10 years agomore torture tests for signatures
Zefram [Sat, 1 Feb 2014 18:22:46 +0000 (18:22 +0000)]
more torture tests for signatures

Based on tests supplied by Robert 'phaylon' Sedlacek.

10 years agoMerge blead into zefram/purple_signatures
Zefram [Sat, 1 Feb 2014 17:32:57 +0000 (17:32 +0000)]
Merge blead into zefram/purple_signatures

10 years agosubroutine signatures
Zefram [Sat, 1 Feb 2014 01:27:13 +0000 (01:27 +0000)]
subroutine signatures

Declarative syntax to unwrap argument list into lexical variables.
"sub foo ($a,$b) {...}" checks number of arguments and puts the
arguments into lexical variables.  Signatures are not equivalent to the
existing idiom of "sub foo { my($a,$b) = @_; ... }".  Signatures are only
available by enabling a non-default feature, and generate warnings about
being experimental.  The syntactic clash with prototypes is managed by
disabling the short prototype syntax when signatures are enabled.

10 years agoUpdate ExtUtils-MakeMaker to CPAN version 6.88
Chris 'BinGOs' Williams [Fri, 31 Jan 2014 21:44:56 +0000 (21:44 +0000)]
Update ExtUtils-MakeMaker to CPAN version 6.88

  [DELTA]

6.88 Fri Jan 31 20:49:13 GMT 2014

    No changes from 6.87_05

6.87_05 Tue Jan 28 13:54:21 GMT 2014
    Bug fixes:
    * Synchronisation with blead to remove old cross-compilation model

6.87_04 Sun Jan 26 19:29:05 GMT 2014
    Bug fixes:
    * On Android, pass PERL_LIB through rel2abs().

6.87_03 Sun Jan 19 17:49:43 GMT 2014
    Bug fixes:
    * Get rid of unused printf arguments in dynamic_bs

6.87_02 Sat Jan 18 13:00:36 GMT 2014
    Doc fixes:
    * Update documentation for LICENSE attribute.

    Bug fixes:
    * Get rid of unused printf arguments in dir_target

6.87_01 Sun Jan 12 10:31:41 GMT 2014
    Doc fixes:
    * mention that TEST_REQUIRES is in v6.64 and above

10 years agoUpdate perldelta_template.pod to include an "Errata From Previous Releases" section
Yves Orton [Fri, 31 Jan 2014 17:27:47 +0000 (01:27 +0800)]
Update perldelta_template.pod to include an "Errata From Previous Releases" section

I added this section to the latest perldelta, and Dave M pointed out
that it should become a standard section in the future, so I have added
it to the perldelta_template.pod

10 years agoSimplify expression, cannot be ANCH_GPOS without being REG_GPOS_SEEN
Yves Orton [Fri, 31 Jan 2014 16:39:03 +0000 (00:39 +0800)]
Simplify expression, cannot be ANCH_GPOS without being REG_GPOS_SEEN

10 years agoUpdate perldelta with details about changes to regexp engine extflags
Yves Orton [Fri, 31 Jan 2014 15:32:25 +0000 (23:32 +0800)]
Update perldelta with details about changes to regexp engine extflags

10 years agosimplify redundant part of PREGf_ANCH_GPOS test
Yves Orton [Fri, 31 Jan 2014 13:33:28 +0000 (21:33 +0800)]
simplify redundant part of PREGf_ANCH_GPOS test

And add an assert to be sure that we are correct.

10 years agoignore vim backup files
Yves Orton [Fri, 31 Jan 2014 13:31:24 +0000 (21:31 +0800)]
ignore vim backup files

Having tests fail because vim created a ~ file for something is just
annoying.

10 years agoMake configpm produce better diagnostics for malformed glossary entries
Yves Orton [Fri, 31 Jan 2014 12:54:54 +0000 (20:54 +0800)]
Make configpm produce better diagnostics for malformed glossary entries

Patch 8b6a017ccef7126ae5bcac137fa9a45de4f2c155 added some malformed
entries to Porting/Glossary. (The entries were missing a trailing
colon).

These malformed entries would produce a cryptic one-line warning,
but only when various files were being regenerated. To make things
more difficult these warnings would be produced at the top of, or
in the middle of a large stream of other compilation actions, easily
allowing one to overlook them. Even if you noticed them the information
provided did not make it particularly easy to figure out what was wrong.

This patch changes things so that the warnings contain more information,
it also causes configpm to die, and thus break the build process, once
it finishes scanning the glossary if there were any warnings during
processing. This allows us to avoid whackamole when dealing with multiple
broken entries, and makes it painfully obvious if there are issues
processing the glossary file, which should prevent any future repeat
of the errors in 8b6a017ccef7126.

10 years agoFix cross-compilation glossary entries
Yves Orton [Fri, 31 Jan 2014 12:40:39 +0000 (20:40 +0800)]
Fix cross-compilation glossary entries

Patch 8b6a017ccef7126ae5bcac137fa9a45de4f2c155 added three
new entries to Porting/Glossary. These entries were malformed
from the point of view of configpm, which would warn about them.

This fixes the entries, by adding a missing colon to the first
line of each glossary entry.

10 years agorename REG_SEEN_WHATEVER to REG_WHATEVER_SEEN to match RXf_ and PREGf_ convention
Yves Orton [Fri, 31 Jan 2014 12:13:58 +0000 (20:13 +0800)]
rename REG_SEEN_WHATEVER to REG_WHATEVER_SEEN to match RXf_ and PREGf_ convention

10 years agoAdd "Errata From Previous Releases" section to perldelta.pod
Yves Orton [Fri, 31 Jan 2014 11:18:27 +0000 (19:18 +0800)]
Add "Errata From Previous Releases" section to perldelta.pod

Which we use to document a mistake in perl5180delta.pod.

This patch also removes the mistake from perl5180delta.pod