This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta - Consistent perl bug formatting
[perl5.git] / pod / perldelta.pod
index 735f8e6..a32fd7e 100644 (file)
@@ -1,3 +1,10 @@
+=for todo
+
+b51c3e77db (craigb) - Reduce excessive stat calls in glob on VMS
+869747506f/00051dd553 (merijn) - gcc 4.9 by default does some optimizations that break perl / -fwrapv is broken prior to gcc-4.3 (#121505)
+fc6f6f37f8 (craigb) - Make perlbug encoding-agnostic in handling prepared reports.
+7e6b9e3a66 (craigb) - Attempt to satisfy CRLF expectations in perlbug on Windows.
+
 =encoding utf8
 
 =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.19.8
+perldelta - what is new for perl v5.19.11
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.19.7 release and the 5.19.8
+This document describes differences between the 5.19.10 release and the 5.19.11
 release.
 
-If you are upgrading from an earlier release such as 5.19.6, first read
-L<perl5197delta>, which describes differences between 5.19.6 and 5.19.7.
+If you are upgrading from an earlier release such as 5.19.9, first read
+L<perl51910delta>, which describes differences between 5.19.9 and 5.19.10.
 
 =head1 Notice
 
@@ -25,10 +32,7 @@ XXX New core language features go here.  Summarize user-visible core language
 enhancements.  Particularly prominent performance optimisations could go
 here, but most should go in the L</Performance Enhancements> section.
 
-=head2 New C<\p{Unicode}> regular expression pattern property
-
-This is a synonym for C<\p{Any}> and matches the set of Unicode-defined
-code points 0 - 0x10FFFF.
+[ List each enhancement as a =head2 entry ]
 
 =head1 Security
 
@@ -40,39 +44,13 @@ L</Selected Bug Fixes> section.
 
 =head1 Incompatible Changes
 
-=head2 C<do> can no longer be used to call subroutines
-
-The C<do SUBROUTINE(LIST)> form has resulted in a deprecation warning
-since Perl v5.0.0, and is now a syntax error.
-
-=head2 C<\p{}>, C<\P{}> matching has changed for non-Unicode code
-points.
+XXX For a release on a stable branch, this section aspires to be:
 
-C<\p{}> and C<\P{}> are defined by Unicode only on Unicode-defined code
-points (C<U+0000> through C<U+10FFFF>).  Their behavior on matching
-these legal Unicode code points is unchanged, but there are changes for
-code points C<0x110000> and above.  Previously, Perl treated the result
-of matching C<\p{}> and C<\P{}> against these as C<undef>, which
-translates into "false".  For C<\P{}>, this was then complemented into
-"true".  A warning was supposed to be raised when this happened.
-However, various optimizations could prevent the warning, and the
-results were often counter-intuitive, with both a match and its seeming
-complement being false.  Now all non-Unicode code points are treated as
-typical unassigned Unicode code points.  This generally is more
-Do-What-I-Mean.  A warning is raised only if the results are arguably
-different from a strict Unicode approach, and from what Perl used to do.
-Code that needs to be strictly Unicode compliant can make this warning
-fatal, and then Perl always raises the warning.
+    There are no changes intentionally incompatible with 5.XXX.XXX
+    If any exist, they are bugs, and we request that you submit a
+    report.  See L</Reporting Bugs> below.
 
-Details are in L<perlunicode/Beyond Unicode code points>.
-
-=head2 C<\p{All}> has been expanded to match all possible code points
-
-The Perl-defined regular expression pattern element C<\p{All}>, unused
-on CPAN, used to match just the Unicode code points; now it matches all
-possible code points; that is, it is equivalent to C<qr/./s>.  Thus
-C<\p{All}> is no longer synonymous with C<\p{Any}>, which continues to
-match just the Unicode code points, as Unicode says it should.
+[ List each incompatible change as a =head2 entry ]
 
 =head1 Deprecations
 
@@ -98,6 +76,8 @@ not usually on concerns over their design.
 
 =over
 
+=item XXX
+
 XXX Note that deprecated modules should be listed here even if they are listed
 as an updated module in the L</Modules and Pragmata> section.
 
@@ -146,39 +126,68 @@ XXX
 
 =item *
 
-L<base> has been upgraded from version 2.20 to 2.21.
+L<Carp> has been upgraded from version 1.33 to 1.3301.
 
-The stricter load failure tests added in 2.20 now allow for
-C<${^LAST_FH}> being set.
+No changes have been made to the installed code other than the version bump to
+keep in sync with the latest CPAN release.
 
 =item *
 
-L<Encode> has been upgraded from version 2.56 to 2.57.
+L<CPAN> has been upgraded from version 2.04-TRIAL to 2.05-TRIAL.
 
-UTF-8 is no longer used in the C source (which some compilers didn't like), and
-some POD errors have been fixed in the documentation.
+TODO
 
 =item *
 
-The libnet module collection has been upgraded from version 1.23 to 1.24.
+L<DB> has been upgraded from version 1.43 to 1.44.
 
-The handling of CRLF characters in L<Net::FTP> has been fixed.
+The debugger now correctly restores its input and output filehandles after
+using the pager command.
+[L<perl #121456|https://rt.perl.org/Public/Bug/Display.html?id=121456>]
 
 =item *
 
-L<IO::Socket::UNIX> has been upgraded from version 1.25 to 1.26.
+L<ExtUtils::Install> has been upgraded from version 1.63 to 1.65.
 
-Removed a warning about an ancient behaviour change and filled out the
-SYNOPSIS. [perl #120981]
+When upgrading an already-installed file, L<ExtUtils::Install> could mess up
+the permissions of files if the old versions of files were hard or symbolic
+links.  This has now been fixed.
+[L<perl #72028|https://rt.perl.org/Public/Bug/Display.html?id=72028>]
+
+The MM_TEST_ROOT feature has been removed from the tests.
 
 =item *
 
-L<perl5db.pl> has been upgraded from version 1.42 to 1.43
+L<ExtUtils::MakeMaker> has been upgraded from version 6.92 to 6.94.
+
+A regression in MM_Unix.pm has been resolved.
+[L<#96|https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/issues/96>]
 
-Fix a crash in tab completion, where available. [perl #120827]
+=item *
+
+L<Module::CoreList> has been upgraded from version 3.09 to 3.10.
+
+The list of Perl versions covered has been updated.
+
+=item *
+
+L<PerlIO> has been upgraded from version 1.08 to 1.09.
+
+The warning about the use of the C<:utf8> layer has been made more prominent.
+
+=item *
 
-The debugger tests no longer open two handles to the same output file,
-making them more robust. [perl #118817]
+L<Storable> has been upgraded from version 2.48 to 2.49.
+
+Recognition of tied SVs has been tightened up.
+
+=item *
+
+L<Win32> has been upgraded from version 0.48 to 0.49.
+
+This fixes a problem when building with B<gcc> version 4.8.1 from
+L<http://www.mingw.org>.
+[L<cpan #94730|https://rt.cpan.org/Public/Bug/Display.html?id=94730>]
 
 =back
 
@@ -251,30 +260,7 @@ XXX L<message|perldiag/"message">
 
 =item *
 
-%s on a reference is now experimental
-
-The "auto-deref" feature is now experimental.
-
-Starting in v5.14.0, it was possible to use push, pop, keys, and other
-built-in functions not only on aggregate types, but on references to
-them.  The feature was not deployed to its original intended
-specification, and now may become redundant to postfix dereferencing.
-It has always been categorized as an experimental feature, and in
-v5.20.0 is carries a warning as such.
-
-Warnings will now be issued at compile time when these operations are
-detected.
-
-  no if $] >= 5.01908, warnings => "experimental::autoderef";
-
-Consider, though, replacing the use of these features, as they may
-change behavior again before becoming stable.
-
-=item *
-
-L<Matched non-Unicode code point 0x%X against Unicode property; may not be portable|perldiag/"Matched non-Unicode code point 0x%X against Unicode property; may not be portable">.
-This replaces the message "Code point 0x%X is not Unicode, all \p{}
-matches fail; all \P{} matches succeed".
+XXX L<message|perldiag/"message">
 
 =back
 
@@ -286,7 +272,9 @@ XXX Changes (i.e. rewording) of diagnostic messages go here
 
 =item *
 
-XXX Describe change here
+The now fatal error message C<Character following "\c" must be ASCII> has been
+reworded as C<Character following "\c" must be printable ASCII> to emphasize
+that in C<\cI<X>>, I<X> must be a I<printable (non-control)> ASCII character.
 
 =back
 
@@ -322,22 +310,7 @@ L</Platform Support> section, instead.
 
 =item *
 
-Distinct library basenames with C<d_libname_unique>.
-
-When compiling perl with this option, the library files for XS modules are
-named something "unique" -- for example, Hash/Util/Util.so becomes
-Hash/Util/PL_Hash__Util.so.  This behavior is similar to what currently
-happens on VMS, and serves as groundwork for the Android port.
-
-=item *
-
-C<sysroot> option to indicate the logical root directory under gcc and clang.
-
-When building with this option set, both Configure and the compilers search
-for all headers and libraries under this new sysroot, instead of /.
-
-This is a huge time saver if cross-compiling, but can also help
-on native builds if your toolchain's files have non-standard locations.
+XXX
 
 =back
 
@@ -366,22 +339,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. ]
 
-=over 4
-
-=item *
-
-Code related to supporting C<sfio> has been removed.
-
-Perl 5.004 added support to use the native API of C<sfio>, AT&T's Safe/Fast
-I/O library. This code still built with v5.8.0, albeit with many regression
-tests failing, but was inadvertently broken before the v5.8.1 release,
-meaning that it has not worked on any version of Perl released since then.
-In over a decade we have received no bug reports about this, hence it is clear
-that no-one is using this functionality on any version of Perl that is still
-supported to any degree.
-
-=back
-
 =head2 New Platforms
 
 XXX List any platforms that this version of perl compiles on, that previous
@@ -418,13 +375,45 @@ L</Modules and Pragmata> section.
 
 =over 4
 
-=item Cygwin
-
-recv() on a connected handle would populate the returned sender
-address with whatever happened to be in the working buffer.  recv()
-now uses a workaround similar to the Win32 recv() wrapper and returns
-an empty string when recvfrom(2) doesn't modify the supplied address
-length. [perl #118843]
+=item Win32
+
+The time taken to build perl on Windows has been reduced quite significantly
+(time savings in the region of 30-40% are typically seen) by reducing the
+number of, usually failing, I/O calls for each L<perlfunc/require> (for
+miniperl only).
+[L<perl #121119|https://rt.perl.org/Public/Bug/Display.html?id=121119>]
+
+About 15 minutes of idle sleeping was removed from running C<make test> due to
+a bug in which the timeout monitor used for tests could not be cancelled once
+the test completes, and the full timeout period elapsed before running the next
+test file.
+[L<perl #121395|https://rt.perl.org/Public/Bug/Display.html?id=121395>]
+
+On a perl built without psuedo-fork (psuedo-fork builds were not affected by
+this bug), killing a process tree with L<perlfunc/kill> and a negative signal
+resulted in kill() inverting the returned value.  For example, if kill() killed
+1 process tree PID then it returned 0 instead of 1, and if kill() was passed 2
+invalid PIDs then it returned 2 instead of 0.  This has probably been the case
+since the process tree kill feature was implemented on Win32.  It has now been
+corrected to follow the documented behaviour.
+[L<perl #121230|https://rt.perl.org/Public/Bug/Display.html?id=121230>]
+
+When building a 64-bit perl, an uninitialized memory read in B<miniperl.exe>,
+used during the build process, could lead to a 4GB B<wperl.exe> being created.
+This has now been fixed.  (Note that B<perl.exe> itself was unaffected, but
+obviously B<wperl.exe> would have been completely broken.)
+[L<perl #121471|https://rt.perl.org/Public/Bug/Display.html?id=121471>]
+
+Perl can now be built with B<gcc> version 4.8.1 from L<http://www.mingw.org>.
+This was previously broken due to an incorrect definition of C<DllMain()> in
+one of perl's source files.  Earlier B<gcc> versions were also affected when
+using version 4 of the w32api package.  Versions of B<gcc> available from
+L<http://mingw-w64.sourceforge.net/> were not affected.
+[L<perl #121643|https://rt.perl.org/Public/Bug/Display.html?id=121643>]
+
+The test harness now has no failures when perl is built on a FAT drive with the
+Windows OS on an NTFS drive.
+[L<perl #21442|https://rt.perl.org/Public/Bug/Display.html?id=21442>]
 
 =back
 
@@ -438,29 +427,14 @@ well.
 
 =over 4
 
-=item newATTRSUB is now a macro
-
-The public API newATTRSUB was previously a macro to the private
-function Perl_newATTRSUB. Function Perl_newATTRSUB has been removed. newATTRSUB
-is now macro to a different internal function.
-
-=item Changes in warnings raised by C<utf8n_to_uvchr()>
-
-This bottom level function decodes the first character of a UTF-8 string
-into a code point.  It is accessible to C<XS> level code, but it's
-discouraged from using it directly.  There are higher level functions
-that call this that should be used instead, such as
-L<perlapi/utf8_to_uvchr_buf>.  For completeness though, this documents
-some changes to it.  Now, tests for malformations are done before any
-tests for other potential issues.  One of those issues involves code
-points so large that they have never appeared in any official standard
-(the current standard has scaled back the highest acceptable code point
-from earlier versions).  It is possible (though not done in CPAN) to
-warn and/or forbid these code points, while accepting smaller code
-points that are still above the legal Unicode maximum.  The warning
-message for this now includes the code point if representable on the
-machine.  Previously it always displayed raw bytes, which is what it
-still does for non-representable code points.
+=item *
+
+C<LC_NUMERIC> is now initialized to the C locale.  This affects only
+C<XS> modules, as the Perl core usages always make sure this locale
+category is correctly set for their purposes.  C<XS> code remains
+vulnerable to other code changing this category's locale.  Further fixes
+are planned in v5.22 to reduce these long-standing vulnerabilities.
+[L<perl #121317|https://rt.perl.org/Public/Bug/Display.html?id=121317>]
 
 =back
 
@@ -475,23 +449,71 @@ files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
 
 =item *
 
-XXX
+A regression involving the string value of C<$!> introduced in v5.19.2
+has been reverted for v5.20.
+[L<perl #119499|https://rt.perl.org/Public/Bug/Display.html?id=119499>]
+
+This re-breaks the bugs it fixed,
+L<perl #112208|https://rt.perl.org/Public/Bug/Display.html?id=112208>, so
+an alternative fix is planned for v5.22
+
+=item *
+
+A regression was introduced in v5.19.10 that under some circumstances
+caused C<//m> matches to falsely fail. Now fixed.
+[L<perl #121484|https://rt.perl.org/Public/Bug/Display.html?id=121484>]
+
+=item *
+
+A regression was introduced in the fix for
+L<perl #116192|https://rt.perl.org/Public/Bug/Display.html?id=116192> that
+prevented C<perl -I /somedir/> (with a trailing slash) from finding .pmc files.
+This has been fixed.
+[L<perl #121512|https://rt.perl.org/Public/Bug/Display.html?id=121512>].
+
+=item *
+
+Fixed a bug detected by valgrind where sv_pvn_force_flags() would
+check SvPVX() even when the SV hadn't been upgraded to a C<SVt_PV>.
+SvPVX() is only initialized when the SV is upgraded to a C<SVt_PV> or
+higher.  [L<perl
+#121366|https://rt.perl.org/Public/Bug/Display.html?id=121366>]
+
+=item *
+
+Fixed a bug in caller() introduced in 5.18.0.  In some circumstances
+when caller() was called on an C<eval STRING> stack frame it would
+attempt to allocate the limit of the address space minus one, which
+would croak with an out of memory error, which would be caught by the
+eval.  A change in 5.19.1 which increased allocation sizes to allow
+COW to operate more often rounded that allocation size up and wrapped
+to a zero allocation size, resulting in a crash when the source string
+was copied over.  [L<perl
+#120998|https://rt.perl.org/Public/Bug/Display.html?id=120998>].
 
 =back
 
 =head1 Known Problems
 
-XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
-tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
-platform specific bugs also go here.
+=over 4
 
-[ List each fix as a =item entry ]
+=item *
+
+One test in F<ext/POSIX/t/time.t> is known to fail on Windows when building
+with certain versions of B<gcc> from L<http://www.mingw.org> due to a known bug
+in the MinGW build, which is logged here:
+L<http://sourceforge.net/p/mingw/bugs/2152/>.
+
+=back
+
+=head1 Errata From Previous Releases
 
 =over 4
 
 =item *
 
-XXX
+XXX Add anything here that we forgot to add, or were mistaken about, in
+the perldelta of a previous release.
 
 =back
 
@@ -504,7 +526,7 @@ here.
 
 XXX Generate this with:
 
-  perl Porting/acknowledgements.pl v5.19.7..HEAD
+  perl Porting/acknowledgements.pl v5.19.10..HEAD
 
 =head1 Reporting Bugs