This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
ch(dir|mod|own) should not ignore get-magic on glob(ref)s
[perl5.git] / pod / perldelta.pod
index 2b0f93d..bb5907f 100644 (file)
@@ -1,23 +1,23 @@
 =encoding utf8
 
 =for comment
 =encoding utf8
 
 =for comment
-This has been completed up to perl-5.12.1
+This has been completed up to 527d644b124fe.
 
 =head1 NAME
 
 [ this is a template for a new perldelta file. Any text flagged as
 XXX needs to be processed before release. ]
 
 
 =head1 NAME
 
 [ this is a template for a new perldelta file. Any text flagged as
 XXX needs to be processed before release. ]
 
-perldelta - what is new for perl v5.15.2
+perldelta - what is new for perl v5.15.3
 
 =head1 DESCRIPTION
 
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.15.1 release and
-the 5.15.2 release.
+This document describes differences between the 5.15.2 release and
+the 5.15.3 release.
 
 
-If you are upgrading from an earlier release such as 5.15.0, first read
-L<perl5151delta>, which describes differences between 5.15.0 and
-5.15.1.
+If you are upgrading from an earlier release such as 5.15.1, first read
+L<perl5152delta>, which describes differences between 5.15.1 and
+5.15.2.
 
 =head1 Notice
 
 
 =head1 Notice
 
@@ -31,28 +31,15 @@ here, but most should go in the L</Performance Enhancements> section.
 
 [ List each enhancement as a =head2 entry ]
 
 
 [ List each enhancement as a =head2 entry ]
 
-=head2 Subroutines in the CORE namespace
+=head2 More CORE subs are callable through references
 
 
-Many Perl keywords are now available as subroutines in the CORE namespace.
-Most of these cannot be called through
-references or via C<&foo> syntax yet, but
-must be called as barewords.  In other words, you can now do this:
+Perl 5.15.2 introduced subroutines in the CORE namespace.  Most of them
+could only be called as barewords; i.e., they could be aliased at compile
+time and then inlined under new names.
 
 
-    BEGIN { *entangle = \&CORE::tie }
-    entangle $variable, $package, @args;
-
-This currently works for overridable keywords other than C<dump> and the
-infix operators.  Calling through references only works for functions that
-take no arguments (like C<wantarray>).
-
-Work is under way to allow more of these subroutines to be called through
-references.
-
-=head2 C<__FILE__()> Syntax
-
-The C<__FILE__>, C<__LINE__> and C<__PACKAGE__> tokens can now be written
-with an empty pair of parentheses after them.  This makes them parse the
-same way as C<time>, C<fork> and other built-in functions.
+Almost all of these functions can now be called through references and via
+C<&foo()> syntax, bypassing the prototype.  See L<CORE> for a list of the
+exceptions.
 
 =head1 Security
 
 
 =head1 Security
 
@@ -62,23 +49,33 @@ L</Selected Bug Fixes> section.
 
 [ List each security issue as a =head2 entry ]
 
 
 [ List each security issue as a =head2 entry ]
 
-=head1 Incompatible Changes
+=head2 C<File::Glob::bsd_glob()> memory error with GLOB_ALTDIRFUNC (CVE-2011-2728).
 
 
-XXX For a release on a stable branch, this section aspires to be:
+Calling C<File::Glob::bsd_glob> with the unsupported flag GLOB_ALTDIRFUNC would 
+cause an access violation / segfault.  A Perl program that accepts a flags value from
+an external source could expose itself to denial of service or arbitrary code
+execution attacks.  There are no known exploits in the wild.  The problem has been
+corrected by explicitly disabling all unsupported flags and setting unused function
+pointers to null.  Bug reported by Clément Lecigne.
 
 
-    There are no changes intentionally incompatible with 5.XXX.XXX
-    If any exist, they are bugs and reports are welcome.
+=head1 Incompatible Changes
+
+=head2 User-defined case changing operations.
 
 
-[ List each incompatible change as a =head2 entry ]
+This feature was deprecated in Perl 5.14, and has now been removed.
+The CPAN module L<Unicode::Casing> provides better functionality without
+the drawbacks that this feature had, as are detailed in the 5.14
+documentation:
+L<http://perldoc.perl.org/5.14.0/perlunicode.html#User-Defined-Case-Mappings-%28for-serious-hackers-only%29>
 
 
-=head2 C<UNIVERSAL::VERSION> now returns $VERSION
+=head2 XSUBs are now 'static'
 
 
-C<UNIVERSAL::VERSION> now return whatever is in $VERSION, instead of
-returning $VERSION converted to a version object and then to a string.
-As a result, it no longer parses the version when called without arguments,
-so it no longer dies in that case for malformed versions.  This allows
-custom version number parsers to use C<< ->VERSION >> to retrieve the
-version number, as was the case in Perl 5.8 [perl #95544].
+XSUB C functions are now 'static', that is, they are not visible from
+outside the compilation unit. For the exceedingly rare case where
+this is not desired, a new public macro C<XS_EXTERNAL(name)> can be
+used in place of C<XS(name)>. C<ExtUtils::ParseXS> (C<xsubpp>)
+can be made to declare XSUBs with C<XS_EXTERNAL> using the
+C<EXPORT_XSUB_SYMBOLS> keyword, see L<perlxs> for details.
 
 =head1 Deprecations
 
 
 =head1 Deprecations
 
@@ -131,125 +128,90 @@ XXX
 
 =item *
 
 
 =item *
 
-L<B> has been upgraded from version 1.30 to version 1.31
+L<AnyDBM_File> has been upgraded from version 1.00 to version 1.01.
 
 
-The XS code has changed slightly, as it was too tightly coupled to
-the contents of the header F<embedvar.h>. Documentation in L<B::Terse>
-and L<B::Xref> has been improved, hence their versions have been increased.
+This is only a minor documentation update.
 
 =item *
 
 
 =item *
 
-L<CPAN> has been upgraded from version 1.9600 to version 1.9800
-
-=item *
+L<Archive::Extract> has been upgraded from version 0.52 to version 0.56.
 
 
-L<CPANPLUS> has been upgraded from version 0.9108 to version 0.9109
-
-Fixed support for v-strings and x.y.z versions with v5.8.4
+Resolved an issue where C<unzip> executable was present in C<PATH> on MSWin32
 
 =item *
 
 
 =item *
 
-L<CPAN::Meta> has been upgraded from version 2.110930_001 to version 2.112150
-
-Stringify any objects encountered during conversion.
-
-Clarified that file paths in the 'provides' section must be in
-Unix-style (i.e. forward slashes)
+L<CPANPLUS> has been upgraded from version 0.9109 to version 0.9110.
 
 =item *
 
 
 =item *
 
-L<DB_File> has been upgraded from version 1.822 to version 1.824
-
-Will now croak if attempt to freeze/thaw DB_File object [RT #69985]
+L<CPANPLUS::Dist::Build> has been upgraded from version 0.56 to version 0.58.
 
 =item *
 
 
 =item *
 
-L<diagnostics> has been upgraded from version 1.23 to 1.24.
+L<diagnostics> has been upgraded from version 1.24 to version 1.25.
 
 
-It now supports the %u formatting code.  Previously it was unable to find
-descriptions for messages whose entries in L<perldiag> included that code
-[perl #94988].
+It now strips out C<SZ<><...>> formatting codes before displaying
+descriptions [perl #94488].
 
 =item *
 
 
 =item *
 
-L<Encode> has been upgraded from version 2.43 to version 2.44
+L<Data::Dumper> has been upgraded from version 2.133 to version 2.134.
 
 
-Addressed 'decode_xs n-byte heap-overflow' security bug in Unicode.xs
+The XS code for sorting hash keys has been simplified slightly.
 
 =item *
 
 
 =item *
 
-L<ExtUtils::Install> has been upgraded from version 1.56 to version 1.57.
+L<Locale::Codes> has been upgraded from version 3.17 to version 3.18.
 
 
-There is no change to ExtUtils::Install other than the version number
-increase, but L<ExtUtils::Installed> has been upgraded from version 1.999_001
-to version 1.999002 and a new C<skip_cwd> attribute has been added.
+The CIA world added non-standard values, so this is no longer used as a source
+of data.
 
 =item *
 
 
 =item *
 
-L<ExtUtils::MakeMaker> has been upgraded from version 6.58 to version 6.59
+L<File::Glob> has been upgraded from version 1.12 to version 1.13.
 
 
-=item *
-
-L<ExtUtils::Manifest> has been upgraded from version 1.58 to version 1.60
+See L</Security>.
 
 =item *
 
 
 =item *
 
-L<ExtUtils::ParseXS> has been upgraded from 3.00_01 to 3.00_04.
-
-=item *
+L<Math::BigRat> has been upgraded from version 0.2602 to version 0.2603.
 
 
-L<IPC::Open3> has been upgraded from version 1.11 to 1.12.
-
-C<open3> with "-" for the program name works once more.  This was broken in
-version 1.06 (and hence in Perl 5.14.0) [perl #95748].
-
-=item *
-
-L<Module::Build> has been upgraded from version 0.3800 to version 0.39_01.
-
-Pod to HTML internals changed to support revisions to Pod::Html in core.
-Also fixes some minor bugs. [rt.cpan.org #68585] [rt.cpan.org #67893]
-[rt.cpan.org #67008]
+C<int()> on a Math::BigRat object containing -1/2 now creates a
+Math::BigInt containing 0, rather than -0.  L<Math::BigInt> does not even
+support negative zero, so the resulting object was actually malformed
+[perl #95530].
 
 =item *
 
 
 =item *
 
-L<Module::CoreList> has been upgraded from version 2.54 to version 2.55
+L<Module::Metadata> has been upgraded from version 1.000005_01 to version 1.000007.
 
 =item *
 
 
 =item *
 
-L<Module::Load> has been upgraded from version 0.18 to version 0.20
+L<Module::Load::Conditional> has been upgraded from version 0.44 to version 0.46.
 
 =item *
 
 
 =item *
 
-L<Module::Metadata> has been upgraded from version 1.000004 to version 1.000005
-
-Added C<new_from_handle()> method.
-
-=item *
+L<ODBM_File> has been upgraded from version 1.11 to version 1.12.
 
 
-L<Params::Check> has been upgraded from version 0.28 to version 0.32
+This is only a minor refactoring of the XS code to bring it closer to the
+other C<?DBM_File> modules.
 
 =item *
 
 
 =item *
 
-L<PerlIO::via> has been upgraded from version 0.11 to version 0.12.
-
-The only change is a correction in the documentation.
+L<perlfaq> has been upgraded from version 5.01500302 to version 5.0150033.
 
 =item *
 
 
 =item *
 
-L<Term::ANSIColor> has been upgraded from version 3.00 to version 3.01
-
-Only interpret an initial array reference as a list of colors, not any initial
-reference, allowing the colored function to work properly on objects with
-stringification defined.
+L<Pod::Simple> has been upgraded from version 3.18 to version 3.19.
 
 =item *
 
 
 =item *
 
-L<Unicode::Collate> has been upgraded from version 0.77 to version 0.78
-
-=item *
+L<POSIX> has been upgraded from version 1.24 to version 1.25.
 
 
-L<Unicode::Normalize> has been upgraded from version 1.12 to version 1.13
+L<POSIX> no longer uses L<AutoLoader>. Any code which was relying on this
+implementation detail was buggy, and may fail as a result of this change.
+The module's Perl code has been considerably simplified, roughly halving
+the number of lines, with no change in functionality.
 
 =back
 
 
 =back
 
@@ -272,10 +234,9 @@ file and be sure to link to the appropriate page, e.g. L<perlfunc>.
 
 XXX Changes which create B<new> files in F<pod/> go here.
 
 
 XXX Changes which create B<new> files in F<pod/> go here.
 
-=head3 L<perlexperiment>
+=head3 L<XXX>
 
 
-This document is intended to provide a list of experimental features in
-Perl.  It is still a work in progress.
+XXX Description of the purpose of the new file here
 
 =head2 Changes to Existing Documentation
 
 
 =head2 Changes to Existing Documentation
 
@@ -283,15 +244,13 @@ XXX Changes which significantly change existing files in F<pod/> go here.
 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
 section.
 
 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
 section.
 
-=head3 L<perlsub>
+=head3 L<XXX>
 
 =over 4
 
 =item *
 
 
 =over 4
 
 =item *
 
-The ($;) prototype syntax, which has existed for rather a long time, is now
-documented in L<perlsub>.  It allows a unary function to have the same
-precedence as a list operator.
+XXX Description of the change here
 
 =back
 
 
 =back
 
@@ -322,15 +281,7 @@ XXX Newly added diagnostic messages go here
 
 =item *
 
 
 =item *
 
-L<&CORE::%s cannot be called directly|perldiag/"&CORE::%s cannot be called directly">
-
-(F) You tried to call a subroutine in the C<CORE::> namespace
-with C<&foo> syntax or through a reference.  The subroutines
-in this package cannot yet be called that way, but must be
-called as barewords.  Something like this will work:
-
-    BEGIN { *shove = \&CORE::push; }
-    shove @array, 1,2,3; # pushes on to @array
+XXX L<message|perldiag/"message">
 
 =back
 
 
 =back
 
@@ -365,27 +316,16 @@ here. Most of these are built within the directories F<utils> and F<x2p>.
 entries for each change
 Use L<XXX> with program names to get proper documentation linking. ]
 
 entries for each change
 Use L<XXX> with program names to get proper documentation linking. ]
 
-=head3 L<perlivp>
+=head3 L<XXX>
 
 =over 4
 
 =item *
 
 
 =over 4
 
 =item *
 
-Fixed a bug whereby other perls under the current directory could cause
-false positive failures.
-
-=item *
-
-Tests for .ph files have been removed, as these test have been optional since
-2005 and .ph files are no longer generated during installation.
+XXX
 
 =back
 
 
 =back
 
-=head3 L<splain>
-
-See the entry for C<< diagnostics >> in L</Updated Modules and Pragmata>,
-above.
-
 =head1 Configuration and Compilation
 
 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
 =head1 Configuration and Compilation
 
 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
@@ -399,12 +339,15 @@ L</Platform Support> section, instead.
 
 =item *
 
 
 =item *
 
-F<makedef.pl> has been refactored. This should have no noticeable affect on
-any of the platforms that use it as part of their build (AIX, VMS, Win32).
+The file F<global.sym> is no longer needed, and has been removed. It
+contained a list of all exported functions, one of the files generated by
+F<regen/embed.pl> from data in F<embed.fnc> and F<regen/opcodes>. The code
+has been refactored so that the only user of F<global.sym>, F<makedef.pl>,
+now reads F<embed.fnc> and F<regen/opcodes> directly, removing the need to
+store the list of exported functions in an intermediate file.
 
 
-=item *
-
-C<useperlio> can no longer be disabled.
+As F<global.sym> was never installed, this change will not be visible
+outside the build process.
 
 =back
 
 
 =back
 
@@ -422,7 +365,14 @@ that they represent may be covered elsewhere.
 
 =item *
 
 
 =item *
 
-XXX
+F<t/porting/globvar.t> has been added, to run a sanity check on F<globar.sym>.
+F<globar.sym> is not needed on most *nix platforms, but is for Win32, hence
+previously was it was possible to inadvertently commit changes that worked
+perfectly locally, but broke the build on Win32.
+
+=item *
+
+F<t/op/unlink.t> has been added to test the C<unlink> function.
 
 =back
 
 
 =back
 
@@ -433,15 +383,6 @@ XXX Any changes to platform support should be listed in the sections below.
 [ Within the sections, list each platform as a =item entry with specific
 changes as paragraphs below it. ]
 
 [ Within the sections, list each platform as a =item entry with specific
 changes as paragraphs below it. ]
 
-=over 4
-
-=item HP-UX PA-RISC/64 now supports gcc-4.x
-
-A fix to correct the socketsize now makes the test suite pass on HP-UX
-PA-RISC for 64bitall builds.
-
-=back
-
 =head2 New Platforms
 
 XXX List any platforms that this version of perl compiles on, that previous
 =head2 New Platforms
 
 XXX List any platforms that this version of perl compiles on, that previous
@@ -496,22 +437,7 @@ be noted as well.
 
 =item *
 
 
 =item *
 
-F<embedvar.h> has been simplified, and one level of macro indirection for
-PL_* variables has been removed for the default (non-multiplicity)
-configuration. PERLVAR*() macros now directly expand their arguments to
-tokens such as C<PL_defgv>, instead of expanding to C<PL_Idefgv>, with
-F<embedvar.h> defining a macro to map C<PL_Idefgv> to C<PL_defgv>. XS code
-which has unwarranted chumminess with the implementation may need updating.
-
-=item *
-
-A C<coreargs> opcode has been added, to be used by C<&CORE::foo> subs to sort
-out C<@_>.
-
-=item *
-
-An API has been added to explicitly choose whether or not to export XSUB
-symbols.  More detail can be found in the comments for commit e64345f8.
+XXX
 
 =back
 
 
 =back
 
@@ -527,100 +453,105 @@ L</Modules and Pragmata>.
 
 =item *
 
 
 =item *
 
-Locking a subroutine (via C<lock &sub>) is no longer a compile-time error
-for regular subs.  For lvalue subroutines, it no longer tries to return the
-sub as a scalar, resulting in strange side effects like C<ref \$_>
-returning "CODE" in some instances.
+In Perl 5.15.0 C<defined(${'$'})> stopped returning true if the C<$$>
+variable had not been used yet.  This has been fixed.
+
+=item *
+
+C<defined(${"..."})>, C<defined(*{"..."})>, etc., used to
+return true for most, but not all built-in variables, if
+they had not been used yet.  Many times that new built-in
+variables were added in past versions, this construct was
+not taken into account, so this affected C<${^GLOBAL_PHASE}> and
+C<${^UTF8CACHE}>, among others.  It also used to return false if the
+package name was given as well (C<${"::!"}>) and for subroutines in the
+CORE package [perl #97978] [perl #97492] [perl #97484].
+
+=item *
+
+Perl 5.10.0 introduced a similar bug: C<defined(*{"foo"})> where "foo"
+represents the name of a built-in global variable used to return false if
+the variable had never been used before, but only on the I<first> call.
+This, too, has been fixed.
+
+=item *
 
 
-C<lock &sub> is now a run-time error if L<threads::shared> is loaded (a
-no-op otherwise), but that may be rectified in a future version.
+Various functions that take a filehandle argument in rvalue context
+(C<close>, C<readline>, etc.) used to call C<FETCH> multiple times, if it
+was a tied variable, and warn twice, if it was C<undef> [perl #97482].
 
 =item *
 
 
 =item *
 
-The prototypes of several built-in functions--C<getprotobynumber>, C<lock>,
-C<not> and C<select>--have been corrected, or at least are now closer to
-reality than before.
+C<close> and similar filehandle functions, when called on built-in global
+variables (like C<$+>), used to die if the variable happened to hold the
+undefined value, instead of producing the usual "Use of uninitialized
+value" warning.
 
 =item *
 
 
 =item *
 
-Most dereferencing operators (C<${}>, etc.) used to call C<FETCH> twice on
-a tied operand when doing a symbolic dereference (looking up a variable by
-name, which is not permitted under C<use strict 'refs'>).  Only C<&{}> did
-not have this problem.  This has been fixed.
+When autovivified file handles were introduced in Perl 5.6.0, C<readline>
+was inadvertently made to autovivify when called as C<readline($foo)> (but
+not as C<< <$foo> >>).  It has now been fixed never to autovivify.
 
 =item *
 
 
 =item *
 
-A minor regression introduced in 5.15.0 has been fixed.  Dereferencing a
-magical mortal (e.g., the return value of C<delete> on a tied hash element)
-explicitly returned from a subroutine called recursively was not calling
-C<FETCH>.  This would affect code like C<@{ foo() }> where the C<foo> sub
-contains C<return delete $hash{elem}> and is calling itself.
+C<defined ${ $tied_variable }> used to call C<FETCH> multiple times, but
+now calls it just once.
 
 =item *
 
 
 =item *
 
-A panic involving the combination of the regular expression modifiers
-C</aa> and the C<\b> escape sequence introduced in 5.14.0 has been
-fixed [perl #95964].
+Some cases of dereferencing a complex expression, such as
+C<${ (), $tied } = 1>, used to call C<FETCH> multiple times, but now call
+it once.
 
 =item *
 
 
 =item *
 
-stat() would always return the inode number as an IV, even when the
-original was unsigned, or too large to fit in an IV.  stat() now
-returns the inode number as the type that would best preserve the
-original value. [perl #84590]
+For a tied variable returning a package name, C<< $tied->method >> used to
+call C<FETCH> multiple times (even up to six!), and sometimes would
+fail to call the method, due to memory corruption.
 
 =item *
 
 
 =item *
 
-The combination of the regular expression modifiers C</aa> and the C<\b>
-and C<\B> escape sequences did not work properly on UTF-8 encoded
-strings.  All non-ASCII characters under C</aa> should be treated as
-non-word characters, but what was happening was that Unicode rules were
-used to determine wordness/non-wordness for non-ASCII characters.  This
-is now fixed [perl #95968].
+Calling an undefined anonymous subroutine (e.g., what $x holds after
+C<undef &{$x = sub{}}>) used to cause a "Not a CODE reference" error, which
+has been corrected to "Undefined subroutine called" [perl #71154].
 
 =item *
 
 
 =item *
 
-Infinite loops like C<1 while 1> used to stop C<strict 'subs'> mode from
-working for the rest of the block.t
+Causing C<@DB::args> to be freed between uses of C<caller> no longer
+results in a crash [perl #93320].
 
 =item *
 
 
 =item *
 
-The C<\h>, C<\H>, C<\v> and C<\V> regular expression metacharacters used to
-cause a panic error message when attempting to match at the end of the
-string [perl #96354].
+Since 5.6.0, C<*{ ... }> has been inconsistent in how it treats undefined
+values.  It would die in strict mode or lvalue context for most undefined
+values, but would be treated as the empty string (with a warning) for the
+specific scalar return by C<undef()> (C<&PL_sv_undef> internally).  This
+has been corrected.  C<undef()> is now treated like other undefined
+scalars, as in Perl 5.005.
 
 =item *
 
 
 =item *
 
-For list assignments like C<($a,$b) = ($b,$a)>, Perl has to make a copy of
-the items on the right-hand side before assignment them to the left.  For
-efficiency's sake, it assigns the values on the right straight to the items
-on the left no variable is mentioned on both sides, as in
-C<($a,$b) = ($c,$d)>.  The logic for determining when it can cheat was
-faulty, in that C<&&> and C<||> on the right-hand side could fool it.  So
-C<($a,$b) = $some_true_value && ($b,$a)> would end up assigning the value
-of C<$b> to both scalars.
+It used to be possible to free the typeglob of a localised array or hash
+(e.g., C<local @{"x"}; delete $::{x}>), resulting in a crash on scope exit.
 
 =item *
 
 
 =item *
 
-Perl no longer tries to apply lvalue context to the string in
-C<("string", $variable) ||= 1> (which used to be an error).  Since the
-left-hand side of C<||=> is evaluated in scalar context, that's a scalar
-comma operator, which gives all but the last item void context.  There is
-no such thing as void lvalue context, so it was a mistake for Perl to try
-to force it [perl #96942].
+C<setpgrp($foo)> used to be equivalent to C<($foo, setpgrp)>, because
+C<setpgrp> was ignoring its argument if there was just one.  Now it is
+equivalent to C<setpgrp($foo,0)>.
 
 =item *
 
 
 =item *
 
-Every subroutine has a filename associated with it, that the debugger uses.
-The one associated with constant subroutines used to be misallocated when
-cloned under threads.  Consequently, debugging threaded applications could
-result in memory corruption [perl #96126].
+Assignments like C<*$tied = \&{"..."}> and C<*glob = $tied> now call FETCH
+only once.
 
 =item *
 
 
 =item *
 
-C<caller> no longer leaks memory when called from the DB package if
-C<@DB::args> was assigned to after the first call to C<caller>.  L<Carp>
-was triggering this bug [perl #97010].
+C<chdir>, C<chmod> and C<chown> now always call FETCH if passed a tied
+variable as the last argument.  They used to ignore tiedness if the last
+thing return from or assigned to the variable was a typeglob or reference
+to a typeglob.
 
 =back
 
 
 =back
 
@@ -650,34 +581,9 @@ here.
 
 =head1 Acknowledgements
 
 
 =head1 Acknowledgements
 
-Perl 5.15.2 represents approximately 2 months of development since Perl
-5.15.1 and contains approximately 17,000 lines of changes across 330
-files from 35 authors.
-
-Perl continues to flourish into its third decade thanks to a vibrant
-community of users and developers. The following people are known to
-have contributed the improvements that became Perl 5.15.2:
-
-Abigail, Andreas König, brian d foy, Brian Greenfield, Chas. Owens,
-Chris 'BinGOs' Williams, Craig A. Berry, David Golden, David Mitchell,
-Eric Brine, Father Chrysostomos, Florian Ragwitz, Gerard Goossen,
-H.Merijn Brand, Jesse Vincent, John Peacock, Karl Williamson, Karthik
-Rajagopalan, Keith Thompson, Kevin Ryde, Matthew Horsfall, Mike
-Sheldrake, Nicholas Clark, Niko Tyni, Reini Urban, Ricardo Signes,
-Salvador Fandiño, Shlomi Fish, Spiros Denaxas, Steffen Müller, Stephen
-Oberholtzer, Steve Hay, Tony Cook, Vincent Pit, Zefram.
-
-The list above is almost certainly incomplete as it is automatically
-generated from version control history. In particular, it does not
-include the names of the (very much appreciated) contributors who
-reported issues to the Perl bug tracker.
-
-Many of the changes included in this version originated in the CPAN
-modules included in Perl's core. We're grateful to the entire CPAN
-community for helping Perl to flourish.
-
-For a more complete list of all of Perl's historical contributors,
-please see the F<AUTHORS> file in the Perl source distribution.
+XXX Generate this with:
+
+  perl Porting/acknowledgements.pl v5.15.2..HEAD
 
 =head1 Reporting Bugs
 
 
 =head1 Reporting Bugs