This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5.git
10 years agoperlunicode: Nits
Karl Williamson [Sat, 21 Dec 2013 17:49:15 +0000 (10:49 -0700)]
perlunicode: Nits

This mostly makes things you could type in your program display in
constant width.  It also adds hyperlinks, and a couple of wording
changes for clarification.

10 years agoperlunicode: Note Bidi_Class changed in Unicode 6.3
Karl Williamson [Sat, 21 Dec 2013 16:55:32 +0000 (09:55 -0700)]
perlunicode: Note Bidi_Class changed in Unicode 6.3

This property had been stable for many Unicode releases, but it is not
guaranteed to be stable, and in fact changed in 6.3.  I left in the
existing list of property values (noting that others have been added)
because they are referred to elsewhere in the pod, and provide a
reasonable example of how multi-valued properties work.

The text used the term "property" to refer to what is properly called
"property values", and used the term "class" to refer to what should
have been called "property".  There is another instance of this
confusion of terms in the pod, which will be corrected in a future
commit

10 years agoperluniintro: Nits
Karl Williamson [Fri, 20 Dec 2013 19:10:16 +0000 (12:10 -0700)]
perluniintro: Nits

10 years agoBump File::Copy to version 2.29.
Craig A. Berry [Sat, 21 Dec 2013 15:59:09 +0000 (09:59 -0600)]
Bump File::Copy to version 2.29.

10 years agoSimplify and clarify VMS specifics in File::Copy.
Craig A. Berry [Sat, 21 Dec 2013 15:48:29 +0000 (09:48 -0600)]
Simplify and clarify VMS specifics in File::Copy.

4c38808d92b95 added some logic to make a "to" path with no
directory component inherit from the current working directory
rather than the directory portion of the "from" path.  It also
added a trailing dot to make null file types unambiguous.  But
the comments emphasized the latter and made no mentin of the
former, and the implementation was unnecessarily complex.

10 years agoRevert "Unix compatibility mode" in File::Copy on VMS.
Craig A. Berry [Sat, 21 Dec 2013 14:33:36 +0000 (08:33 -0600)]
Revert "Unix compatibility mode" in File::Copy on VMS.

This backs out the changes introduced in fc06fdeb76c89.  On
reflection, it doesn't make any sense to support what is actually
a Unix *report* mode in an API that does not report filenames.

File::Copy just needs to supply names to the underlying copy
functions that they can operate on.  How those names are presented
is of no concern here as we don't present them to the caller.

10 years agoFix typo introduced in 4c38808d92b95.
Craig A. Berry [Sat, 21 Dec 2013 14:28:23 +0000 (08:28 -0600)]
Fix typo introduced in 4c38808d92b95.

The variable name is '$^O' not '-$^O'.  This meant File::Copy::move
didn't put the file in the current working directory when the to
argument had no path component.

10 years agoModule-CoreList prepared for v5.19.8
Chris 'BinGOs' Williams [Sat, 21 Dec 2013 11:32:56 +0000 (11:32 +0000)]
Module-CoreList prepared for v5.19.8

10 years agoCoreList on CPAN is 3.02
Chris 'BinGOs' Williams [Sat, 21 Dec 2013 11:07:23 +0000 (11:07 +0000)]
CoreList on CPAN is 3.02

10 years agoFix unescaped first character in tovmsspec.
Craig A. Berry [Sat, 21 Dec 2013 00:11:15 +0000 (18:11 -0600)]
Fix unescaped first character in tovmsspec.

Passing a path to int_tovmsspec that contained an "extended"
character as the first character when converting a Unix filespec
to VMS format skipped escaping that character, but only when the
path spec had no directory component.  The character that didn't
get escaped could then be passed to a native service that choked
or incorrectly processed it.  For example ' foo.txt' remained,
after translation, ' foo.txt', but parsing that as a native spec
would squeeze out the leading space.

So we now make sure we don't eat the first character of the
filename component while processing the directory component and
also handle escaping the very first character.  In the example
of ' foo.txt', it now gets correctly translated to '^_foo.txt'.

10 years agosuppress duplicate line in perliol.h
Christian Millour [Fri, 20 Dec 2013 17:25:27 +0000 (18:25 +0100)]
suppress duplicate line in perliol.h

10 years agoBump version number from 5.19.7 to 5.19.8.
Abigail [Fri, 20 Dec 2013 21:55:02 +0000 (22:55 +0100)]
Bump version number from 5.19.7 to 5.19.8.

10 years agoGenerate new perldelta
Abigail [Fri, 20 Dec 2013 21:47:43 +0000 (22:47 +0100)]
Generate new perldelta

10 years agoRecord epigraph of 5.19.7
Abigail [Fri, 20 Dec 2013 21:28:52 +0000 (22:28 +0100)]
Record epigraph of 5.19.7

10 years agoDocument 5.19.7 origin/release-5.19.7 v5.19.7
Abigail [Fri, 20 Dec 2013 16:43:19 +0000 (17:43 +0100)]
Document 5.19.7

10 years agoAcknowledgement section
Abigail [Fri, 20 Dec 2013 16:42:22 +0000 (17:42 +0100)]
Acknowledgement section

10 years agoMention the fact CGI is deprecated in the list of updated modules as well.
Abigail [Fri, 20 Dec 2013 16:25:19 +0000 (17:25 +0100)]
Mention the fact CGI is deprecated in the list of updated modules as well.

It fits the pattern.

10 years agoMore borderplate removal
Abigail [Fri, 20 Dec 2013 16:14:13 +0000 (17:14 +0100)]
More borderplate removal

10 years agoDocument module changes.
Abigail [Fri, 20 Dec 2013 16:08:38 +0000 (17:08 +0100)]
Document module changes.

./perl -Ilib Porting/corelist-perldelta.pl --mode=update pod/perldelta.pod

10 years agoUpdate Module::CoreList for 5.19.7
Abigail [Fri, 20 Dec 2013 15:47:49 +0000 (16:47 +0100)]
Update Module::CoreList for 5.19.7

10 years agoUpdate perldelta.
Abigail [Fri, 20 Dec 2013 13:57:05 +0000 (14:57 +0100)]
Update perldelta.

Added a few issues from git log v5.19.6..HEAD that had not been added
to perldelta yet.

Removed sections that will not be needed in the final version.

10 years agoregen pod issues
Father Chrysostomos [Fri, 20 Dec 2013 06:19:35 +0000 (22:19 -0800)]
regen pod issues

10 years agoFix string corruption with (??{}) and PERL_NO_COW
Father Chrysostomos [Fri, 20 Dec 2013 06:06:47 +0000 (22:06 -0800)]
Fix string corruption with (??{}) and PERL_NO_COW

Commit 9ffd39ab75, which allowed PADTMPs’ string buffers to be stolen,
caused "$a$b" =~ /(??{})/ to cause string corruption with match varia-
bles on some systems, because the buffer from "$a$b"’s return value
was being stolen when ‘copied’ into a new $_ for the code block.

The string copy necessary for $& and $1 to work would happen only
after the code block’s $_ had been freed, and consequently after the
string buffer had been freed.

Whether this would cause observable buggy behaviour (as opposed to
things only memory tools like valgrind would catch) depended on
whether the malloc implementation would modify the string immediately
when freeing it.

Dave Mitchell observed in <20131218113448.GN2490@iabyn.com> that tests
were failing under -DPERL_NO_COW.  The added test will also fail (for
me at least) under copy-on-write, because the string is long enough to
favour swiping the buffer.  (It happens for me only on Linux, not Dar-
win, incidentally.)

Copying the string with _nosteal fixes the problem.

10 years agoMerge branch 'perldelta' into blead
Steve Hay [Thu, 19 Dec 2013 17:53:01 +0000 (17:53 +0000)]
Merge branch 'perldelta' into blead

Add a new mode to Porting/corelist-perldelta.pl to update the module
changes in pod/perldelta.pod for the perl you are currently building.

This can be run as:

./perl -Ilib Porting/corelist-perldelta.pl --mode=update pod/perldelta.pod

*after* updating Module::CoreList with something like:

./perl -Ilib Porting/corelist.pl cpan

There is still scope for improvement in the handling of removed modules,
and in automatically cribbing information from the Changes files of those
modules that have been updated, but this is a big step in the right
direction.

10 years agoPorting/corelist-perldelta.pl - Minor tidy-ups
Steve Hay [Thu, 19 Dec 2013 17:25:28 +0000 (17:25 +0000)]
Porting/corelist-perldelta.pl - Minor tidy-ups

10 years agoUpdate various instructions about the use of Porting/corelist-perldelta.pl
Steve Hay [Tue, 17 Dec 2013 08:49:33 +0000 (08:49 +0000)]
Update various instructions about the use of Porting/corelist-perldelta.pl

10 years agoAdd Abir Viqar to AUTHORS
Steve Hay [Tue, 17 Dec 2013 08:26:17 +0000 (08:26 +0000)]
Add Abir Viqar to AUTHORS

10 years agoPorting/corelist-perldelta.pl - Make documentation clearer
Abir Viqar [Sat, 14 Dec 2013 19:07:28 +0000 (14:07 -0500)]
Porting/corelist-perldelta.pl - Make documentation clearer

* Fix incorrect usage example for update
* Document that removed modules are currently ignored
* Clarify why some distributions have to be manually checked
* Clarify why a distribution may not be listed in Module::CoreList

10 years agoPorting/corelist-perldelta.pl - Skip dummy items during update
Abir Viqar [Sat, 14 Dec 2013 19:06:35 +0000 (14:06 -0500)]
Porting/corelist-perldelta.pl - Skip dummy items during update

10 years agoPorting/corelist-perldelta.pl - Use Unix newlines in perldelta
Abir Viqar [Sat, 14 Dec 2013 19:05:43 +0000 (14:05 -0500)]
Porting/corelist-perldelta.pl - Use Unix newlines in perldelta

10 years agoPorting/corelist-perldelta.pl - Default to comparing last two versions
Abir Viqar [Sat, 14 Dec 2013 19:03:59 +0000 (14:03 -0500)]
Porting/corelist-perldelta.pl - Default to comparing last two versions

do_update_existing() previously required versions to be specified

10 years agoPorting/corelist-perldelta.pl - Make do_generate use DeltaUpdater
Abir Viqar [Tue, 22 Oct 2013 17:31:18 +0000 (13:31 -0400)]
Porting/corelist-perldelta.pl - Make do_generate use DeltaUpdater

DeltaUpdater::sections_to_pod() makes generate_section() redundant

10 years agoPorting/corelist-perldelta.pl - Add a new mode update
Abir Viqar [Sun, 6 Oct 2013 14:58:27 +0000 (10:58 -0400)]
Porting/corelist-perldelta.pl - Add a new mode update

This adds a new mode, update, which given an the path to an existing
perldelta file, will add missing entries and update incorrect version
information.

This commit introduces a new module, DeltaUpdater, which is used
for pod manipulation.

10 years agoPorting/corelist-perldelta.pl - Make do_check less noisy
Abir Viqar [Thu, 3 Oct 2013 21:14:34 +0000 (17:14 -0400)]
Porting/corelist-perldelta.pl - Make do_check less noisy

The removed modules as returned by corelist_perldelta contains
too many false positives to be useful. Also, explictly state
whether the difference is from the pod or the results returned from
corelist_perldelta().

10 years agoPorting/corelist-perldelta.pl - Improve corelist_delta
Abir Viqar [Thu, 3 Oct 2013 21:01:54 +0000 (17:01 -0400)]
Porting/corelist-perldelta.pl - Improve corelist_delta

corelist_delta now goes through almost all of the core distributions.
The problem with the previous approach was that the keys of %Modules in
Porting/Maintainers.pl do not all correspond to a valid distribution or
do not correspond to a module as listed in Module::CoreList.
This commit also updates the callers of the function.

10 years agoPorting/corelist-perldelta.pl - Cleanup DeltaParser
Abir Viqar [Thu, 3 Oct 2013 20:48:34 +0000 (16:48 -0400)]
Porting/corelist-perldelta.pl - Cleanup DeltaParser

* Comment generation of accessor methods
* Make _parse_delta() more explicit by calling the section parsing
  methods explicitly
* Ensure that the new_modules, updated_modules, and removed_modules
  attributes exist even if the perldelta file does not contain the
  corresponding sections

10 years agoPorting/corelist-perldelta.pl - Improve version parsing
Abir Viqar [Thu, 3 Oct 2013 20:44:38 +0000 (16:44 -0400)]
Porting/corelist-perldelta.pl - Improve version parsing

Catch more forms of how updated modules have been listed in past
perldelta

10 years agoPorting/corelist.pl - DeltaParser: match modules in L<> and C<>
Abir Viqar [Thu, 3 Oct 2013 20:40:13 +0000 (16:40 -0400)]
Porting/corelist.pl - DeltaParser: match modules in L<> and C<>

Module names have been listed in both

10 years agoPorting/corelist-perldelta.pl - Remove trailing whitespace
Abir Viqar [Thu, 3 Oct 2013 20:36:26 +0000 (16:36 -0400)]
Porting/corelist-perldelta.pl - Remove trailing whitespace

10 years agoPorting/corelist-perldelta.pl - fix usage example
Abir Viqar [Sun, 6 Oct 2013 14:52:21 +0000 (10:52 -0400)]
Porting/corelist-perldelta.pl - fix usage example

lib needs to be included when generating the module changes
with the currently build Perl

10 years agoPorting/corelist-perldelta.pl - Use Module::CoreList in dist/
Abir Viqar [Thu, 3 Oct 2013 20:32:42 +0000 (16:32 -0400)]
Porting/corelist-perldelta.pl - Use Module::CoreList in dist/

Ensure that the latest version of Module::CoreList is used when
running the script

10 years agoperldelta for fc39925ca
Father Chrysostomos [Thu, 19 Dec 2013 14:14:46 +0000 (06:14 -0800)]
perldelta for fc39925ca

10 years agoperldelta for 4748e0020f
Father Chrysostomos [Thu, 19 Dec 2013 14:10:34 +0000 (06:10 -0800)]
perldelta for 4748e0020f

10 years agoperldelta for 257dc59d7
Father Chrysostomos [Thu, 19 Dec 2013 14:08:01 +0000 (06:08 -0800)]
perldelta for 257dc59d7

10 years agoperldelta for 2685dc2d9
Father Chrysostomos [Thu, 19 Dec 2013 13:59:36 +0000 (05:59 -0800)]
perldelta for 2685dc2d9

10 years agoperldelta for 636209429
Father Chrysostomos [Thu, 19 Dec 2013 13:57:02 +0000 (05:57 -0800)]
perldelta for 636209429

10 years agoCorrect URL for github.com mirror of Perl 5 repository.
Martin McGrath [Wed, 18 Dec 2013 23:45:57 +0000 (00:45 +0100)]
Correct URL for github.com mirror of Perl 5 repository.

Add Martin McGrath to AUTHORS.

For: RT #120819

10 years agoconfig.ce: Use ~cc~, not ~CC~
Brian Fraser [Wed, 18 Dec 2013 19:45:52 +0000 (16:45 -0300)]
config.ce: Use ~cc~, not ~CC~

This was preventing several things from working properly,
like Errno_pm.PL, which tried to use $Config{cppstdin},
which was not set properly.

10 years agoAmend pod_lib.pl to work with miniperl (no dynamic loading)
Jess Robinson [Fri, 18 Jan 2013 15:54:51 +0000 (15:54 +0000)]
Amend pod_lib.pl to work with miniperl (no dynamic loading)

This is to allow cross-compilation builds to run installperl using a
host miniperl instead of the built Perl binary.

10 years agoNote usage compatability of Safefree / Newx and friends
Matthew Horsfall (alh) [Wed, 18 Dec 2013 13:59:02 +0000 (08:59 -0500)]
Note usage compatability of Safefree / Newx and friends

10 years agoLong verbatim lines in SDBM_File.pm
Father Chrysostomos [Wed, 18 Dec 2013 14:21:22 +0000 (06:21 -0800)]
Long verbatim lines in SDBM_File.pm

10 years agoDocument ->$#* in perlref
Father Chrysostomos [Wed, 18 Dec 2013 02:06:34 +0000 (18:06 -0800)]
Document ->$#* in perlref

10 years agoperldelta for ff25e5dbb
Father Chrysostomos [Wed, 18 Dec 2013 02:04:58 +0000 (18:04 -0800)]
perldelta for ff25e5dbb

10 years agoperldelta todos
Father Chrysostomos [Wed, 18 Dec 2013 02:01:11 +0000 (18:01 -0800)]
perldelta todos

10 years agoperldelta for ebdc88085
Father Chrysostomos [Wed, 18 Dec 2013 01:53:54 +0000 (17:53 -0800)]
perldelta for ebdc88085

10 years agoperldelta for 5b50ddc0fe
Tony Cook [Wed, 18 Dec 2013 04:47:25 +0000 (15:47 +1100)]
perldelta for 5b50ddc0fe

10 years ago[perl #120384] make hash key quoting compatible between perl and XS
Tony Cook [Wed, 18 Dec 2013 04:32:20 +0000 (15:32 +1100)]
[perl #120384] make hash key quoting compatible between perl and XS

In particular:

- if quotekeys is set all hash keys are now quoted, previously the perl
  code didn't quote "safe" numeric keys

- keys of the form ::foo are now quoted by XS as the perl code always did

- XS code quoted "safe" numbers, while the perl code didn't

- perl code didn't quote strings like "1\x{660}", since \x{660}
  matches \d

10 years ago[perl #120635] don't leak semaphores
Tony Cook [Wed, 18 Dec 2013 03:42:22 +0000 (14:42 +1100)]
[perl #120635] don't leak semaphores

I was calling semctl() with parameters in the incorrect order

10 years agoperldelta for ee71f1d151a
Tony Cook [Wed, 18 Dec 2013 02:56:54 +0000 (13:56 +1100)]
perldelta for ee71f1d151a

10 years ago[perl #118651] don't overwrite $! in readdir()
Tony Cook [Thu, 12 Dec 2013 05:22:06 +0000 (16:22 +1100)]
[perl #118651] don't overwrite $! in readdir()

POSIX expects readdir() to leave errno alone when it reaches end of
directory without an error so that case can be detected.  Do the same
in perl.

10 years agoperldelta for 18f6a8aad, 5ab2cf16cd, 17b33ba0df
Tony Cook [Tue, 17 Dec 2013 22:53:13 +0000 (09:53 +1100)]
perldelta for 18f6a8aad5ab2cf16cd17b33ba0df

10 years ago[perl #114350] access to SDBM constants and explicit filenames
Tony Cook [Tue, 17 Dec 2013 22:33:31 +0000 (09:33 +1100)]
[perl #114350] access to SDBM constants and explicit filenames

10 years ago[perl #114350] improved documentation
Kevin Ryde [Mon, 16 Dec 2013 00:44:11 +0000 (11:44 +1100)]
[perl #114350] improved documentation

10 years ago[perl #114350] access to sdbm_prep()
Tony Cook [Wed, 11 Dec 2013 03:37:20 +0000 (14:37 +1100)]
[perl #114350] access to sdbm_prep()

This allows the .dir and .pag filenames to be specified explicitly

10 years ago[perl #114350] add exportable PAGFEXT, DIRFEXT and PAIRMAX constants
Tony Cook [Thu, 5 Dec 2013 04:01:11 +0000 (15:01 +1100)]
[perl #114350] add exportable PAGFEXT, DIRFEXT and PAIRMAX constants

10 years agomg.c: White-space only
Karl Williamson [Sun, 15 Dec 2013 02:53:29 +0000 (19:53 -0700)]
mg.c: White-space only

Indent code that's in a block added in the previous commit.

10 years agoFix HP-UX $! failure
Karl Williamson [Sun, 15 Dec 2013 02:48:00 +0000 (19:48 -0700)]
Fix HP-UX $! failure

HP-UX strerror() returns an empty string for an unknown error code.
This caused an assertion to fail under DEBUGGING builds.  This patch
removes the assertion and changes the return into  a non-empty string
indicating the errno is for an unknown error.

10 years agoperl.h: Move a string constant to a #define
Karl Williamson [Mon, 16 Dec 2013 18:52:20 +0000 (11:52 -0700)]
perl.h: Move a string constant to a #define

This is so it can be used in another file

10 years agomg.c: White-space only
Karl Williamson [Sun, 15 Dec 2013 02:46:27 +0000 (19:46 -0700)]
mg.c: White-space only

Properly indent code that is interior to a block

10 years agoperllocale: Note that LC_MESSAGES affects $^E
Karl Williamson [Wed, 11 Dec 2013 18:26:02 +0000 (11:26 -0700)]
perllocale: Note that LC_MESSAGES affects $^E

10 years agorun/locale.t: Fix bareword error
Karl Williamson [Wed, 11 Dec 2013 16:03:03 +0000 (09:03 -0700)]
run/locale.t: Fix bareword error

This string should be in quotes to be properly eval'd.  Prior to this
patch this .t failed when run by hand as the bareword warning is made
fatal.

10 years agolib/locale.t: Add tests
Karl Williamson [Sun, 8 Dec 2013 16:34:18 +0000 (09:34 -0700)]
lib/locale.t: Add tests

Commit b99851e1941e002dd4816ee6c76fd49bbee1d7f3 should have added tests
in two places.  This adds them in the second place, plus a cautionary
comment.  The reason for the two places is the alternative I can think
of is to use a string eval, but that perturbs the test environment so
might affect the outcome.

10 years agolib/locale.t: Move some lines
Karl Williamson [Sun, 8 Dec 2013 15:42:49 +0000 (08:42 -0700)]
lib/locale.t: Move some lines

Commit b99851e1941e002dd4816ee6c76fd49bbee1d7f3 should have added tests
at the end of the block.  This moves them.

10 years agoposix.t, time.t: Correct saving/restoring locales
Karl Williamson [Thu, 12 Dec 2013 06:33:22 +0000 (23:33 -0700)]
posix.t, time.t: Correct saving/restoring locales

Code in these two tests assumed that setlocale returns the old locale.
Instead it returns the new one.  A separate setlocale() call is needed
to get the previous locale value.  These are the only two places I found
with this error.

10 years agoperldelta for b183d514e3e
Tony Cook [Tue, 17 Dec 2013 05:48:23 +0000 (16:48 +1100)]
perldelta for b183d514e3e

10 years agobump $Data::Dumper::VERSION
Tony Cook [Thu, 21 Nov 2013 05:48:13 +0000 (16:48 +1100)]
bump $Data::Dumper::VERSION

10 years ago[perl #82948] use re::regexp_pattern in list context for dumping qr//
Tony Cook [Thu, 21 Nov 2013 05:46:19 +0000 (16:46 +1100)]
[perl #82948] use re::regexp_pattern in list context for dumping qr//

10 years agoperldelta for [perl #120799]
Karl Williamson [Tue, 17 Dec 2013 01:51:02 +0000 (18:51 -0700)]
perldelta for [perl #120799]

10 years agoperldelta for 892089cd68
Tony Cook [Tue, 17 Dec 2013 00:25:36 +0000 (11:25 +1100)]
perldelta for 892089cd68

10 years agobump $VERSION for base.pm
Tony Cook [Tue, 17 Dec 2013 00:08:31 +0000 (11:08 +1100)]
bump $VERSION for base.pm

10 years agomake base.pm more strict about nonexistent module check
Graham Knop [Wed, 4 Dec 2013 10:54:02 +0000 (05:54 -0500)]
make base.pm more strict about nonexistent module check

10 years agoFix reference to chmod portability in chown
Peter Martini [Mon, 16 Dec 2013 23:01:23 +0000 (18:01 -0500)]
Fix reference to chmod portability in chown

10 years agoAdd comments that re tests can be commented in col 7
Karl Williamson [Mon, 16 Dec 2013 18:14:02 +0000 (11:14 -0700)]
Add comments that re tests can be commented in col 7

10 years agoregcomp.c: Add comment
Karl Williamson [Mon, 16 Dec 2013 18:13:35 +0000 (11:13 -0700)]
regcomp.c: Add comment

10 years agoPATCH: [perl #120799] 5.18 regression with [:^ascii] and \x80-\xFF
Karl Williamson [Mon, 16 Dec 2013 17:59:36 +0000 (10:59 -0700)]
PATCH: [perl #120799] 5.18 regression with [:^ascii] and \x80-\xFF

Posix classes generally match different sets of characters under /d
rules than otherwise.  This isn't true for [:ascii:], but the handling
for it is shared with the others, so it needs to use the same mechanism
to deal with that.  I forgot this in commit
bb9ee97444732c84b33c2f2432aa28e52e4651dc which created this regression.

Our tests for this only use regexes with a single element, and an
optimization added in 5.18 causes this bug to be bypassed.  These tests
should be enhanced to force both code paths, but not for this commit,
which should be suitable for a maintenance release.

10 years agoGet optree_samples.t passing when PERL_UNICODE is set
Father Chrysostomos [Mon, 16 Dec 2013 14:04:29 +0000 (06:04 -0800)]
Get optree_samples.t passing when PERL_UNICODE is set

The testing infrastructure knows to strip out the ‘open’ hints when
they do not apply.

10 years agoAdd Dabrien Murphy to AUTHORS
Father Chrysostomos [Mon, 16 Dec 2013 05:26:22 +0000 (21:26 -0800)]
Add Dabrien Murphy to AUTHORS

10 years ago[perl #120752] Fix t/op/coreamp.t rand test
Dabrien 'Dabe' Murphy [Mon, 16 Dec 2013 05:24:54 +0000 (21:24 -0800)]
[perl #120752] Fix t/op/coreamp.t rand test

The way it was written it would even accept an empty string as
valid output.

10 years agoperldelta for 6b44ec6808
Tony Cook [Mon, 16 Dec 2013 04:47:34 +0000 (15:47 +1100)]
perldelta for 6b44ec6808

10 years agoMake tests work with detached git dir
Dennis Kaarsemaker [Sun, 10 Nov 2013 22:17:38 +0000 (23:17 +0100)]
Make tests work with detached git dir

In my jenkins replacement, I run all tests with .git outside the work tree,
pointed to by $GIT_DIR. This is fairly common git practice, so let's make the
testsuite support this and run the relevant porting tests that are skipped
without this patch.

10 years agofix format string warnings in regcomp.c
Tony Cook [Sun, 15 Dec 2013 22:35:00 +0000 (09:35 +1100)]
fix format string warnings in regcomp.c

10 years ago[perl #72406] Bad read with do{} until CONST
Father Chrysostomos [Sun, 15 Dec 2013 20:39:18 +0000 (12:39 -0800)]
[perl #72406] Bad read with do{} until CONST

According to the original bug report, ‘do{print("foobar");}until(1)}’
crashes.  In recent perls it doesn’t, partly because of the slab allo-
cator, partly because such crashes are naturally fleeting.

‘foo while bar’ and ‘foo until bar’ make their way through newLOOPOP,
which then usually calls S_new_logop, to create and AND or OR op with
special pointers that turn it into a loop.

Because S_new_logop knows about folding ‘$x if 1’ down to a simple $x,
and because ‘do{foo()} while 0’ should still execute the do block,
newLOOPOP skips the call to S_new_logop in that case.

Hence, it assumes that if it has seen a do block on its lhs, then
S_new_logop must return an AND or OR op.

‘foo until bar’ is actually changed early on (in perly.y) to ‘foo
while !bar’, before it reaches newLOOPOP.  Constant folding usually
folds !1 down to a simple ""/0 (actually &PL_sv_no), so newLOOPOP sees
‘foo while 0’ for ‘foo until 1’.

If constant folding fails (e.g., because the parser has seen an
unmatched } and constant folding is skipped after such errors), then
newLOOPOP will see the unfolded !1.

S_new_logop has a special optimisation that changes ‘!foo && bar’ to
‘foo || bar’, etc.

That optimisation allows it to ‘see through’ the unoptimised !1 (a NOT
with a CONST kid) and get to the constant, folding the resulting op
and returning something that newLOOPOP is not expecting to be folded.
In the case of ‘do{print("foobar");}until(1)}’, it optimises the do
block away, which is wrong.

So newLOOPOP reads past the end of the op in this line:

o->op_next = ((LOGOP*)cUNOPo->op_first)->op_other;

because it is treating an SVOP as a LOGOP.

I can trigger this condition by defeating constant folding some other
way.  Croaking in boolean overloading, but just the first time, will
do that, and crashes with blead:

{ package o; use overload bool => sub { die unless $::ok++; return 1 } }
use constant OK => bless [], o::;
do{print("foobar");}until OK;
__END__
Bus error: 10

My reading of the source code leads me to believe that this bad read
has been present since perl 5.000.  But back then it was not possible
to trigger it with this particular test case involving fatal overload-
ing (as of b7f7fd0bb it seems*), but ‘do{print("foobar");}until(1)}’
would have triggered it.

* Thanks to Matthew Horsfall for finding it.

10 years agoAlso optimise returning lists: 'return ($one, $two);'
Matthew Horsfall [Sun, 15 Dec 2013 03:25:22 +0000 (22:25 -0500)]
Also optimise returning lists: 'return ($one, $two);'

10 years agoTests for rpeep optimisations in e45d8982ae
Matthew Horsfall (alh) [Fri, 13 Dec 2013 17:57:47 +0000 (12:57 -0500)]
Tests for rpeep optimisations in e45d8982ae

10 years agoFix ‘Can't declare null operation in "my"’
Father Chrysostomos [Sat, 14 Dec 2013 01:48:34 +0000 (17:48 -0800)]
Fix ‘Can't declare null operation in "my"’

This message is very unhelpful.  This was brought up in
ticket #115688.

10 years agoop.c: Factor out two identical yyerror calls
Father Chrysostomos [Sat, 14 Dec 2013 01:01:46 +0000 (17:01 -0800)]
op.c: Factor out two identical yyerror calls

10 years agoExplain how '--' works in command-line invocation.
James E Keenan [Sat, 14 Dec 2013 00:08:09 +0000 (01:08 +0100)]
Explain how '--' works in command-line invocation.

Excerpted from 'man bash': GNU Bash-2.05b, 2002 July 15.

For: RT #120732, as requested by bulk88.

10 years agoOptimise out PUSHMARK/RETURN if return is the last statement in a sub.
Matthew Horsfall [Wed, 11 Dec 2013 23:28:21 +0000 (18:28 -0500)]
Optimise out PUSHMARK/RETURN if return is the last statement in a sub.

This makes:

  sub baz { return $cat; }

Behave like:

  sub baz { $cat; }

Which is notably faster.

Unpatched:

  ./perl -Ilib/ ~/stuff/bench.pl
  Benchmark: timing 40000000 iterations of normal, ret...
    normal:  3 wallclock secs ( 1.60 usr +  0.01 sys =  1.61 CPU) @ 24844720.50/s (n=40000000)
       ret:  3 wallclock secs ( 2.08 usr +  0.00 sys =  2.08 CPU) @ 19230769.23/s (n=40000000)

Patched:

  ./perl -Ilib ~/stuff/bench.pl
  Benchmark: timing 40000000 iterations of aret, normal...
    normal:  2 wallclock secs ( 1.72 usr +  0.00 sys =  1.72 CPU) @ 23255813.95/s (n=40000000)
       ret:  2 wallclock secs ( 1.72 usr +  0.00 sys =  1.72 CPU) @ 23255813.95/s (n=40000000)

The difference in OP trees can be seen here:

Unpatched:

  $ perl  -MO=Concise,baz -e 'sub baz { return $cat }'
  main::baz:
  5  <1> leavesub[1 ref] K/REFC,1 ->(end)
  -     <@> lineseq KP ->5
  1        <;> nextstate(main 1 -e:1) v ->2
  4        <@> return K ->5
  2           <0> pushmark s ->3
  -           <1> ex-rv2sv sK/1 ->4
  3              <#> gvsv[*cat] s ->4
  -e syntax OK

Patched:

  $ ./perl -Ilib  -MO=Concise,baz -e 'sub baz { return $cat }'
  main::baz:
  3  <1> leavesub[1 ref] K/REFC,1 ->(end)
  -     <@> lineseq KP ->3
  1        <;> nextstate(main 1 -e:1) v ->2
  -        <@> return K ->-
  -           <0> pushmark s ->2
  -           <1> ex-rv2sv sK/1 ->-
  2              <$> gvsv(*cat) s ->3
  -e syntax OK

(Includes some modifications from Steffen)

10 years agocflags.SH: Fix a typo, cflags should be ccflags
Brian Fraser [Mon, 18 Nov 2013 18:49:22 +0000 (15:49 -0300)]
cflags.SH: Fix a typo, cflags should be ccflags

This went undetected for the longest time since most flags are
irrelevant at this point, but is vital if you are using --sysroot.

10 years agopod/perlhacktips: Further info on glibc bug
Karl Williamson [Mon, 9 Dec 2013 23:06:01 +0000 (16:06 -0700)]
pod/perlhacktips: Further info on glibc bug

Commit 6bfe0388956736a32b874cc5e31cc6437260b227 prompted me to do some
more digging.  The bug in glibc has apparently been fixed in 2.17.