diff options
-rw-r--r-- | MANIFEST | 1 | ||||
-rwxr-xr-x | Makefile.SH | 8 | ||||
-rw-r--r-- | pod/.gitignore | 2 | ||||
-rw-r--r-- | pod/perl.pod | 1 | ||||
-rw-r--r-- | pod/perl5194delta.pod | 1235 | ||||
-rw-r--r-- | pod/perldelta.pod | 1154 | ||||
-rw-r--r-- | vms/descrip_mms.template | 2 | ||||
-rw-r--r-- | win32/Makefile | 4 | ||||
-rw-r--r-- | win32/makefile.mk | 4 | ||||
-rw-r--r-- | win32/pod.mak | 4 |
10 files changed, 1413 insertions, 1002 deletions
@@ -4623,6 +4623,7 @@ pod/perl5190delta.pod Perl changes in version 5.19.0 pod/perl5191delta.pod Perl changes in version 5.19.1 pod/perl5192delta.pod Perl changes in version 5.19.2 pod/perl5193delta.pod Perl changes in version 5.19.3 +pod/perl5194delta.pod Perl changes in version 5.19.4 pod/perl561delta.pod Perl changes in version 5.6.1 pod/perl56delta.pod Perl changes in version 5.6 pod/perl581delta.pod Perl changes in version 5.8.1 diff --git a/Makefile.SH b/Makefile.SH index ecaa8acdb9..53bb102c3a 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -503,7 +503,7 @@ mini_obj = $(minindt_obj) $(MINIDTRACE_O) ndt_obj = $(obj0) $(obj1) $(obj2) $(obj3) $(ARCHOBJS) obj = $(ndt_obj) $(DTRACE_O) -perltoc_pod_prereqs = extra.pods pod/perl5194delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod +perltoc_pod_prereqs = extra.pods pod/perl5195delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs) generated_headers = uudmap.h bitcount.h mg_data.h @@ -981,9 +981,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST $(MINIPERL) pod/perlmodlib.PL -q -pod/perl5194delta.pod: pod/perldelta.pod - $(RMS) pod/perl5194delta.pod - $(LNS) perldelta.pod pod/perl5194delta.pod +pod/perl5195delta.pod: pod/perldelta.pod + $(RMS) pod/perl5195delta.pod + $(LNS) perldelta.pod pod/perl5195delta.pod extra.pods: $(MINIPERL_EXE) -@test ! -f extra.pods || rm -f `cat extra.pods` diff --git a/pod/.gitignore b/pod/.gitignore index 5a54c7f6e2..6e2449c5de 100644 --- a/pod/.gitignore +++ b/pod/.gitignore @@ -57,7 +57,7 @@ /roffitall # generated -/perl5194delta.pod +/perl5195delta.pod /perlapi.pod /perlintern.pod *.html diff --git a/pod/perl.pod b/pod/perl.pod index b14624d1a7..996f791bbf 100644 --- a/pod/perl.pod +++ b/pod/perl.pod @@ -179,6 +179,7 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp perlhist Perl history records perldelta Perl changes since previous version + perl5194delta Perl changes in version 5.19.4 perl5193delta Perl changes in version 5.19.3 perl5192delta Perl changes in version 5.19.2 perl5191delta Perl changes in version 5.19.1 diff --git a/pod/perl5194delta.pod b/pod/perl5194delta.pod new file mode 100644 index 0000000000..7221e673de --- /dev/null +++ b/pod/perl5194delta.pod @@ -0,0 +1,1235 @@ +=encoding utf8 + +=head1 NAME + +perl5194delta - what is new for perl v5.19.4 + +=head1 DESCRIPTION + +This document describes differences between the 5.19.3 release and the 5.19.4 +release. + +If you are upgrading from an earlier release such as 5.19.2, first read +L<perl5193delta>, which describes differences between 5.19.2 and 5.19.3. + +=head1 Core Enhancements + +=head2 C<rand> now uses a consistent random number generator + +Previously perl would use a platform specific random number generator, varying +between the libc rand(), random() or drand48(). + +This meant that the quality of perl's random numbers would vary from platform +to platform, from the 15 bits of rand() on Windows to 48-bits on POSIX +platforms such as Linux with drand48(). + +Perl now uses its own internal drand48() implementation on all platforms. This +does not make perl's C<rand> cryptographically secure. [perl #115928] + +=head2 Better 64-bit support + +On 64-bit platforms, the internal array functions now use 64-bit offsets, +allowing Perl arrays to hold more than 2**31 elements, if you have the memory +available. + +The regular expression engine now supports strings longer than 2**31 +characters. [perl #112790, #116907] + +The functions PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt and +PerlIO_set_ptrcnt now have SSize_t, rather than int, return values and +parameters. + +=head2 New slice syntax + +The new C<%hash{...}> and C<%array[...]> syntax returns a list of key/value (or +index/value) pairs. + +=head2 EBCDIC support + +Core Perl now mostly works on EBCDIC platforms. This is not true of many +modules, including some which are shipped with this release. If you have +resources to help continue this process, including test machines, send email to +L<mailto:perl-mvs@perl.org>. + +As a result of this, certain XS functions are now deprecated; see L</Internal +Changes>. + +=head1 Incompatible Changes + +=head2 Locale decimal point character no longer leaks outside of +S<C<use locale>> scope (with the exception of $!) + +This is actually a bug fix, but some code has come to rely on the bug being +present, so this change is listed here. The current locale that the program is +running under is not supposed to be visible to Perl code except within the +scope of a S<C<use locale>>. However, until now under certain circumstances, +the character used for a decimal point (often a comma) leaked outside the +scope. + +This continues the work released in Perl 5.19.1. It turns out that that did +not catch all the leaks, including C<printf> and C<sprintf> not respecting +S<C<use locale>>. If your code is affected by this change, simply add a +S<C<use locale>>. + +Now, the only known place where S<C<use locale>> is not respected is in the +stringification of L<$!|perlvar/$!>. + +=head2 Assignments of Windows sockets error codes to $! now prefer F<errno.h> values over WSAGetLastError() values + +In previous versions of Perl, Windows sockets error codes as returned by +WSAGetLastError() were assigned to $!, and some constants such as ECONNABORTED, +not in F<errno.h> in VC++ (or the various Windows ports of gcc) were defined to +corresponding WSAE* values to allow $! to be tested against the E* constants +exported by L<Errno> and L<POSIX>. + +This worked well until VC++ 2010 and later, which introduced new E* constants +with values E<gt> 100 into F<errno.h>, including some being (re)defined by perl +to WSAE* values. That caused problems when linking XS code against other +libraries which used the original definitions of F<errno.h> constants. + +To avoid this incompatibility, perl now maps WSAE* error codes to E* values +where possible, and assigns those values to $!. The E* constants exported by +L<Errno> and L<POSIX> are updated to match so that testing $! against them, +wherever previously possible, will continue to work as expected, and all E* +constants found in F<errno.h> are now exported from those modules with their +original F<errno.h> values + +In order to avoid breakage in existing Perl code which assigns WSAE* values to +$!, perl now intercepts the assignment and performs the same mapping to E* +values as it uses internally when assigning to $! itself. + +However, one backwards-incompatibility remains: existing Perl code which +compares $! against the numeric values of the WSAE* error codes that were +previously assigned to $! will now be broken in those cases where a +corresponding E* value has been assigned instead. This is only an issue for +those E* values E<lt> 100, which were always exported from L<Errno> and +L<POSIX> with their original F<errno.h> values, and therefore could not be used +for WSAE* error code tests (e.g. WSAEINVAL is 10022, but the corresponding +EINVAL is 22). (E* values E<gt> 100, if present, were redefined to WSAE* +values anyway, so compatibility can be achieved by using the E* constants, +which will work both before and after this change, albeit using different +numeric values under the hood.) + +=head1 Deprecations + +=head2 Literal control characters in variable names + +This deprecation affects things like $\cT, where \cT is a literal control in +the source code. Surprisingly, it appears that originally this was intended as +the canonical way of accessing variables like $^T, with the caret form only +being added as an alternative. + +The literal control form is being deprecated for two main reasons. It has what +are likely unfixable bugs, such as $\cI not working as an alias for $^I, and +their usage not being portable to non-ASCII platforms: While $^T will work +everywhere, \cT is whitespace in EBCDIC. [perl #119123] + +=head1 Performance Enhancements + +=over 4 + +=item * + +The trie performance enhancement for regular expressions has now been extended +to those compiled under /iaa. + +=back + +=head1 Modules and Pragmata + +=head2 Updated Modules and Pragmata + +=over 4 + +=item * + +L<autodie> has been upgraded from version 2.20 to 2.21. + +Numerous improvements have been made, many speed-related. See the F<Changes> +file in the CPAN distribution for full details. + +=item * + +L<B> has been upgraded from version 1.45 to 1.46. + +The fix for [perl #118525] introduced a regression in the behaviour of +C<B::CV::GV>, changing the return value from a C<B::SPECIAL> object on a +C<NULL> C<CvGV> to C<undef>. C<B::CV::GV> again returns a C<B::SPECIAL> object +in this case. [perl #119351] + +L<B> version 1.44 (Perl 5.19.2) introduced four new B::OP methods, C<slabbed>, +C<savefree>, C<static> and C<folded>, but these have never actually worked +until now. They used to croak. + +=item * + +L<B::Concise> has been upgraded from version 0.98 to 0.99. + +The handling of the C<glob> operator, broken since Perl 5.17.6, has been fixed +and handling of the new kvaslice and kvhslice operators have been added. + +=item * + +L<B::Deparse> has been upgraded from version 1.22 to 1.23. + +The new kvaslice and kvhslice operators have been added. + +=item * + +L<Carp> has been upgraded from version 1.31 to 1.32. + +=over 4 + +=item * + +In stack traces, subroutine arguments that are strings are now quoted in a +consistent manner, regardless of what characters they contain and how they're +internally represented. + +=item * + +L<Carp> also now shows subroutine arguments that are references to regexp +objects in a consistent manner in stack traces. + +=item * + +L<Carp> now takes care not to clobber the status variables $! and $^E. + +=item * + +L<Carp> now won't vivify the C<overload::StrVal> glob or subroutine or the +L<overload> stash. + +=item * + +L<Carp> now avoids some unwanted Unicode warnings on older Perls. This doesn't +affect behaviour with current Perls. + +=item * + +Carp::Heavy detects version mismatch with L<Carp>, to give a good error message +if a current (stub) Carp::Heavy gets loaded by an old L<Carp> that expects +Carp::Heavy to provide subroutines. + +=back + +=item * + +L<charnames> has been upgraded from version 1.38 to 1.39. + +This module now works on EBCDIC platforms. + +=item * + +L<CPAN> has been upgraded from version 2.00 to 2.03-TRIAL. + +Numerous updates and bug fixes are incorporated. See the F<Changes> file for +full details. + +=item * + +L<CPAN::Meta> has been upgraded from version 2.132140 to 2.132620. + +META validation no longer allows a scalar value when a list was required for a +field. + +=item * + +L<CPAN::Meta::Requirements> has been upgraded from version 2.122 to 2.123. + +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<Data::Dumper> has been upgraded from version 2.148 to 2.149. + +This upgrade is part of a larger change to make the array interface 64-bit safe +by using SSize_t instead of I32 for array indices. + +In addition, an EBCDIC fix has been applied. + +=item * + +L<Devel::Peek> has been upgraded from version 1.13 to 1.14. + +This upgrade is part of a larger change to preserve referential identity when +passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for +non-existent array elements. + +In addition, C<Dump> with no args was broken in Perl 5.19.3, but has now been +fixed. + +=item * + +L<diagnostics> has been upgraded from version 1.32 to 1.33. + +C<=back> is now treated as the end of a warning description, thus keeping any +trailing data in the file from showing up as part of the last warning's +description. [perl #119817] + +=item * + +L<DynaLoader> has been upgraded from version 1.19 to 1.20. + +The documentation now makes it clear, as has always been the case, that +C<dl_unload_file> is only called automatically to unload all loaded shared +objects if the perl interpreter was built with the C macro +DL_UNLOAD_ALL_AT_EXIT defined. Support for GNU DLD has also been removed. + +=item * + +L<Encode> has been upgraded from version 2.52 to 2.55. + +An erroneous early return in C<decode_utf8> has been removed, and a bug in +C<_utf8_on> under COW has been fixed. Encode also now uses L<parent> rather +than L<base> throughout. + +=item * + +L<Errno> has been upgraded from version 1.19 to 1.20. + +The list of E* constants exported on Windows has been updated to reflect the +changes made in the assignment of sockets error codes to $! (see +L</Incompatible Changes>). + +=item * + +L<Exporter> has been upgraded from version 5.69 to 5.70. + +A number of typos have been corrected in the documentation. + +=item * + +L<ExtUtils::CBuilder> has been upgraded from version 0.280210 to 0.280212. + +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<ExtUtils::Command> has been upgraded from version 1.17 to 1.18. + +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<ExtUtils::MakeMaker> has been upgraded from version 6.72 to 6.76. + +Numerous updates and bug fixes are incorporated. See the F<Changes> file for +full details. + +=item * + +L<ExtUtils::ParseXS> has been upgraded from version 3.21 to 3.23. + +Unquoted "here-doc" markers for typemaps can now be optionally followed by a +semicolon, just like quoted markers. [perl #119761] + +=item * + +L<File::Copy> has been upgraded from version 2.27 to 2.28. + +The documentation of C<copy> now makes it clear that trying to copy a file into +a non-existent directory is not supported. [perl #119539] + +=item * + +L<File::Find> has been upgraded from version 1.24 to 1.25. + +Better diagnostics are now provided in the case of a failed C<chdir>. + +=item * + +L<File::Glob> has been upgraded from version 1.20 to 1.21. + +C<glob> now warns in the context of C<use warnings "syscalls";> if the supplied +pattern has an internal NUL (C<"\0">) character. + +=item * + +L<FileCache> has been upgraded from version 1.08 to 1.09. + +This upgrade is part of a larger change to use L<parent> rather than L<base>. + +=item * + +L<Hash::Util::FieldHash> has been upgraded from version 1.12 to 1.13. + +This upgrade is part of a larger change to use L<parent> rather than L<base>. + +=item * + +L<HTTP::Tiny> has been upgraded from version 0.034 to 0.035. + +Encoded data from C<post_form> now preserves term order if data is provided as +an array reference. (They are still sorted for consistency if provided as a +hash reference.) + +=item * + +L<I18N::LangTags> has been upgraded from version 0.39 to 0.40. + +Bosnian has now joined Croatian and Serbian in the lists of mutually +intelligible Slavic languages. [perl #72594] + +=item * + +L<IO> has been upgraded from version 1.28 to 1.29. + +A minor internals-only change has been made to the XS code. + +=item * + +L<IO::Socket> has been upgraded from version 1.36 to 1.37. + +The C<connect> method has been updated in the light of changes made in the +assignment of sockets error codes to $! on Windows (see L</Incompatible +Changes>). + +=item * + +L<IPC::Open3> has been upgraded from version 1.15 to 1.16. + +This upgrade is part of a larger change to preserve referential identity when +passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for +non-existent array elements. + +=item * + +L<JSON::PP> has been patched from version 2.27202 to 2.27202_01. + +A precedence issue has been fixed in the return value of a private subroutine. + +=item * + +L<Locale::Codes> has been upgraded from version 3.26 to 3.27. + +New codes have been added and the (deprecated) set of FIPS-10 country codes has +been removed. + +=item * + +L<Math::BigInt> has been upgraded from version 1.9992 to 1.9993. + +Cleaned up the L<Math::BigInt> and L<Math::BigFloat> documentation to be more +consistent with other Perl documentation. [perl #86686] + +Added a C<bint> method for rounding towards zero. [perl #85296] + +=item * + +L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31. + +This upgrade is part of a larger change to make the array interface 64-bit safe +by using SSize_t instead of I32 for array indices. + +=item * + +L<Module::CoreList> has been upgraded from version 2.97 to 2.99. + +The list of Perl versions covered has been updated. + +A function C<is_core> has been added, which returns true if the specified +module was bundled with Perl. Optionally you can specify a minimum version of +the module, and the specific version of Perl you're interested in (defaults to +$^V, the running version of Perl). + +=item * + +L<Module::Load::Conditional> has been upgraded from version 0.54 to 0.58. + +C<requires> has been made more robust. [cpan #83728] + +=item * + +L<Module::Metadata> has been upgraded from version 1.000014 to 1.000018. + +The module's DESCRIPTION has been re-worded regarding safety/security to +satisfy CVE-2013-1437. Also, versions are now detainted if needed. [cpan +#88576] + +=item * + +L<mro> has been upgraded from version 1.13 to 1.14. + +This upgrade is part of a larger change to make the array interface 64-bit safe +by using SSize_t instead of I32 for array indices. + +=item * + +L<Opcode> has been upgraded from version 1.25 to 1.26. + +The new kvaslice and kvhslice operators have been added. + +=item * + +L<parent> has been upgraded from version 0.226 to 0.228. + +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<Parse::CPAN::Meta> has been upgraded from version 1.4405 to 1.4407. + +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<Perl::OSType> has been upgraded from version 1.003 to 1.005. + +The Unix OSType 'bitrig' has been added. + +=item * + +L<perlfaq> has been upgraded from version 5.0150043 to 5.0150044. + +The use of C<gensym> in a number of examples has been removed, the use of C<&> +in subroutine calls is now clarified and several new questions have been +answered. + +=item * + +L<Pod::Html> has been upgraded from version 1.20 to 1.21. + +This upgrade is part of a larger change to use L<parent> rather than L<base>. + +=item * + +L<POSIX> has been upgraded from version 1.34 to 1.35. + +The list of E* constants exported on Windows has been updated to reflect the +changes made in the assignment of sockets error codes to $! (see +L</Incompatible Changes>). + +=item * + +L<re> has been upgraded from version 0.25 to 0.26. + +This upgrade is part of a larger change to support 64-bit string lengths in the +regular expression engine. + +=item * + +L<Scalar::Util> has been upgraded from version 1.31 to 1.32. + +The documentation of C<blessed> has been improved to mention the fact that +package "0" is defined but false. + +=item * + +L<Socket> has been upgraded from version 2.011 to 2.012. + +Syntax errors when building on the WinCE platform have been fixed. [cpan +#87389] + +=item * + +L<Storable> has been upgraded from version 2.46 to 2.47. + +This upgrade is part of a larger change to preserve referential identity when +passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for +non-existent array elements. + +=item * + +L<Term::ReadLine> has been upgraded from version 1.13 to 1.14. + +Term::ReadLine::EditLine support has been added. + +=item * + +L<Test::Simple> has been patched from version 0.98 to 0.98_06. + +A precedence issue has been fixed in the return value of a private subroutine +in L<Test::Builder>. + +=item * + +L<Time::Piece> has been upgraded from version 1.22 to 1.23. + +Day of year parsing (like "%y%j") has been fixed. + +=item * + +L<Unicode::Collate> has been upgraded from version 0.98 to 0.99. + +By default, out-of-range values are replaced with U+FFFD (REPLACEMENT +CHARACTER) when C<UCA_Version> E<gt>= 22, or ignored when C<UCA_Version> E<lt>= +20. When C<UCA_Version> E<gt>= 22, the weights of out-of-range values can be +overridden. + +=item * + +L<Unicode::UCD> has been upgraded from version 0.53 to 0.54. + +This module now works on EBCDIC platforms. + +=item * + +L<version> has been upgraded from version 0.9903 to 0.9904. + +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<warnings> has been upgraded from version 1.18 to 1.19. + +The C<syscalls> warnings category has been added to check for embedded NUL +(C<"\0">) characters in pathnames and string arguments to other system calls. +[perl #117265] + +=item * + +L<XS::Typemap> has been upgraded from version 0.10 to 0.11. + +This upgrade is part of the change to remove the uninitialized warnings +exemption for uninitialized values returned by XSUBs (see the L</Selected Bug +Fixes> section). + +=back + +=head1 Documentation + +=head2 New Documentation + +=head3 L<perlrepository> + +This document was removed (actually, renamed L<perlgit> and given a major +overhaul) in Perl 5.13.10, causing Perl documentation websites to show the now +out of date version in Perl 5.12 as the latest version. It has now been +restored in stub form, directing readers to current information. + +=head2 Changes to Existing Documentation + +=head3 L<perldata> + +=over 4 + +=item * + +New sections have been added to document the new index/value array slice and +key/value hash slice syntax. + +=back + +=head3 L<perldebguts> + +=over 4 + +=item * + +The C<DB::goto> and C<DB::lsub> debugger subroutines are now documented. [perl +#77680] + +=back + +=head3 L<perlguts> + +=over 4 + +=item * + +Numerous minor changes have been made to reflect changes made to the perl +internals in this release. + +=back + +=head3 L<perlhack> + +=over 4 + +=item * + +The L<SUPER QUICK PATCH GUIDE|perlhack/SUPER QUICK PATCH GUIDE> section has +been updated. + +=back + +=head3 L<perlsub> + +=over 4 + +=item * + +A list of subroutine names used by the perl implementation is now included. +[perl #77680] + +=back + +=head1 Diagnostics + +The following additions or changes have been made to diagnostic output, +including warnings and fatal error messages. For the complete list of +diagnostic messages, see L<perldiag>. + +=head2 New Diagnostics + +=head3 New Errors + +=over 4 + +=item * + +L<delete argument is indexE<sol>value array slice, use array slice|perldiag/"delete argument is index/value array slice, use array slice"> + +(F) You used index/value array slice syntax (C<%array[...]>) as the argument to +C<delete>. You probably meant C<@array[...]> with an @ symbol instead. + +=item * + +L<delete argument is keyE<sol>value hash slice, use hash slice|perldiag/"delete argument is key/value hash slice, use hash slice"> + +(F) You used key/value hash slice syntax (C<%hash{...}>) as the argument to +C<delete>. You probably meant C<@hash{...}> with an @ symbol instead. + +=back + +=head3 New Warnings + +=over 4 + +=item * + +L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s"> + +(W syscalls) Embedded \0 characters in pathnames or other system call arguments +produce a warning as of 5.20. The parts after the \0 were formerly ignored by +system calls. + +=item * + +L<Possible precedence issue with control flow operator|perldiag/"Possible precedence issue with control flow operator"> + +(W syntax) There is a possible problem with the mixing of a control flow +operator (e.g. C<return>) and a low-precedence operator like C<or>. Consider: + + sub { return $a or $b; } + +This is parsed as: + + sub { (return $a) or $b; } + +Which is effectively just: + + sub { return $a; } + +Either use parentheses or the high-precedence variant of the operator. + +Note this may be also triggered for constructs like: + + sub { 1 if die; } + +=item * + +L<Scalar value %%s[%s] better written as $%s[%s]|perldiag/"Scalar value %%s[%s] better written as $%s[%s]"> + +(W syntax) In scalar context, you've used an array index/value slice (indicated +by %) to select a single element of an array. Generally it's better to ask for +a scalar value (indicated by $). The difference is that C<$foo[&bar]> always +behaves like a scalar, both in the value it returns and when evaluating its +argument, while C<%foo[&bar]> provides a list context to its subscript, which +can do weird things if you're expecting only one subscript. When called in +list context, it also returns the index (what C<&bar> returns) in addition to +the value. + +=item * + +L<Scalar value %%s{%s} better written as $%s{%s}|perldiag/"Scalar value %%s{%s} better written as $%s{%s}"> + +(W syntax) In scalar context, you've used a hash key/value slice (indicated by +%) to select a single element of a hash. Generally it's better to ask for a +scalar value (indicated by $). The difference is that C<$foo{&bar}> always +behaves like a scalar, both in the value it returns and when evaluating its +argument, while C<@foo{&bar}> and provides a list context to its subscript, +which can do weird things if you're expecting only one subscript. When called +in list context, it also returns the key in addition to the value. + +=item * + +L<Use of literal control characters in variable names is deprecated|perldiag/"Use of literal control characters in variable names is deprecated"> + +(D deprecated) Using literal control characters in the source to refer to the +^FOO variables, like $^X and ${^GLOBAL_PHASE} is now deprecated. This only +affects code like $\cT, where \cT is a control in the source code: ${"\cT"} and +$^T remain valid. + +=back + +=head2 Changes to Existing Diagnostics + +=over 4 + +=item * + +Warnings and errors from the regexp engine are now UTF-8 clean + +=item * + +The "Unknown switch condition" error message has some slight changes. This +error triggers when there is an unknown condition in a C<(?(foo))> conditional. +The error message used to read: + + Unknown switch condition (?(%s in regex; + +But what %s could be was mostly up to luck. For C<(?(foobar))>, you might have +seen "fo" or "f". For Unicode characters, you would generally get a corrupted +string. The message has been changed to read: + + Unknown switch condition (?(...)) in regex; + +Additionally, the C<'E<lt>-- HERE'> marker in the error will now point to the +correct spot in the regex. + +=item * + +The "%s "\x%X" does not map to Unicode" warning is now correctly listed as a +severe warning rather than as a fatal error. + +=back + +=head1 Utility Changes + +=head3 L<find2perl> + +=over 4 + +=item * + +L<find2perl> now handles C<?> wildcards correctly. [perl #113054] + +=back + +=head1 Configuration and Compilation + +=over 4 + +=item * + +The F<Makefile.PL> for L<SDBM_File> now generates a better F<Makefile>, which +avoids a race condition during parallel makes, which could cause the build to +fail. This is the last known parallel make problem (on *nix platforms), and +therefore we believe that a parallel make should now always be error free. + +=for comment + +Strictly only for a build where build files such as F<Makefile.SH> have not +been updated by C<git> in an already configured and built tree. + +=back + +=head1 Testing + +=over 4 + +=item * + +The test script F<t/bigmem/regexp.t> has been added to test that regular +expression matches on very large strings now succeed as expected. + +=item * + +A bug that was fixed in Perl 5.15.4 is now tested by the new test script +F<t/io/eintr_print.t>. [perl #119097] + +=item * + +The new test scripts F<t/op/kvaslice.t> and F<t/op/kvhslice.t> test the new +index/value array slice and key/value hash slice syntax respectively. + +=item * + +Various cases of C<die>, C<last>, C<goto> and C<exit> triggering C<DESTROY> are +now tested by the new test script F<t/op/rt119311.t>. + +=item * + +The new test script F<t/op/waitpid.t> tests the fix for [perl #85228] (see +L</Selected Bug Fixes>). + +=item * + +The latest copyright years in the top-level F<README> file and the B<perl -v> +output are now tested as matching each other by the new test script +F<t/porting/copyright.t> + +=item * + +The new test script F<t/win32/signal.t> tests that $! and $^E are now preserved +across signal handlers by the Win32 signal emulation code. + +=item * + +The test script F<t/x2p/find2perl.t> has been added to test the F<find2perl> +program on platforms where it is practical to do so. + +=back + +=head1 Platform Support + +=head2 New Platforms + +=over 4 + +=item FreeMiNT + +Support has been added for FreeMiNT, a free open-source OS for the Atari ST +system and its successors, based on the original MiNT that was officially +adopted by Atari. + +=item Bitrig + +Compile support has been added for Bitrig, a fork of OpenBSD. + +=back + +=head2 Discontinued Platforms + +Configure hints and conditional code for several very old platforms has been +removed. We have not received reports for these in many years, typically not +since Perl 5.6.0. + +=over 4 + +=item AT&T 3b1 + +Configure support for the 3b1, also known as the AT&T Unix PC (and the similar +AT&T 7300), has been removed. + +=back + +=head2 Platform-Specific Notes + +=over 4 + +=item VMS + +The C<PERL_ENV_TABLES> feature to control the population of %ENV at perl +start-up was broken in Perl 5.16.0 but has now been fixed. + +=item Win32 + +C<rename> and C<link> on Win32 now set $! to ENOSPC and EDQUOT when +appropriate. [perl #119857] + +=item WinCE + +Perl now builds again on WinCE, following locale-related breakage (WinCE has +non-existent locale support) introduced around 5.19.1. [perl #119443] + +The building of XS modules has largely been restored. Several still cannot +(yet) be built but it is now possible to build Perl on WinCE with only a couple +of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be +incorporated soon. + +=item GNU/Hurd + +The BSD compatibility library C<libbsd> is no longer required for builds. + +=back + +=head1 Internal Changes + +=over 4 + +=item * + +The internal representation has changed for the match variables $1, $2 etc., +$`, $&, $', ${^PREMATCH}, ${^MATCH} and ${^POSTMATCH}. It uses slightly less +memory, avoids string comparisons and numeric conversions during lookup, and +uses 23 fewer lines of C. This change should not affect any external code. + +=item * + +Arrays now use NULL internally to represent unused slots, instead of +&PL_sv_undef. &PL_sv_undef is no longer treated as a special value, so +av_store(av, 0, &PL_sv_undef) will cause element 0 of that array to hold a +read-only undefined scalar. C<$array[0] = anything> will croak and +C<\$array[0]> will compare equal to C<\undef>. + +=item * + +The SV returned by HeSVKEY_force() now correctly reflects the UTF8ness of the +underlying hash key when that key is not stored as a SV. [perl #79074] + +=item * + +Certain rarely used functions and macros available to XS code are now, or are +planned to be, deprecated. These are: +C<utf8n_to_uvuni> (use C<utf8_to_uvchr_buf> instead), +C<utf8_to_uni_buf> (use C<utf8_to_uvchr_buf> instead), +C<valid_utf8_to_uvuni> (use C<utf8_to_uvchr_buf> instead), +C<uvuni_to_utf8> (use C<uvchr_to_utf8> instead), +C<NATIVE_TO_NEED> (this did not work properly anyway), +and C<ASCII_TO_NEED> (this did not work properly anyway). + +Starting in this release, almost never does application code need to +distinguish between the platform's character set and Latin1, on which the +lowest 256 characters of Unicode are based. + +=back + +=head1 Selected Bug Fixes + +=over 4 + +=item * + +The value of $^E is now saved across signal handlers on Windows. [perl #85104] + +=item * + +A lexical filehandle (as in C<open my $fh...>) is usually given a name based on +the current package and the name of the variable, e.g. "main::$fh". Under +recursion, the filehandle was losing the "$fh" part of the name. This has been +fixed. + +=item * + +Perl 5.19.3 accidentally extended the previous bug to all closures, even when +not called recursively, i.e. lexical handles in closure would always be called +"main::" or "MyPackage::" etc. This has been fixed. + +=item * + +Uninitialized values returned by XSUBs are no longer exempt from uninitialized +warnings. [perl #118693] + +=item * + +C<elsif ("")> no longer erroneously produces a warning about void context. +[perl #118753] + +=item * + +Passing C<undef> to a subroutine now causes @_ to contain the same read-only +undefined scalar that C<undef> returns. Furthermore, C<exists $_[0]> will now +return true if C<undef> was the first argument. [perl #7508, #109726] + +=item * + +Passing a non-existent array element to a subroutine does not usually +autovivify it unless the subroutine modifies its argument. This did not work +correctly with negative indices and with non-existent elements within the +array. The element would be vivified immediately. The delayed vivification +has been extended to work with those. [perl #118691] + +=item * + +Assigning references or globs to the scalar returned by $#foo after the @foo +array has been freed no longer causes assertion failures on debugging builds +and memory leaks on regular builds. + +=item * + +Perl 5.19.2 threw line numbers off after some cases of line breaks following +keywords, such as + + 1 unless + 1; + +This has been fixed. [perl #118931] + +=item * + +On 64-bit platforms, large ranges like 1..1000000000000 no longer crash, but +eat up all your memory instead. [perl #119161] + +=item * + +C<__DATA__> now puts the C<DATA> handle in the right package, even if the +current package has been renamed through glob assignment. + +=item * + +The string position set by C<pos> could shift if the string changed +representation internally to or from utf8. This could happen, e.g., with +references to objects with string overloading. + +=item * + +Taking references to the return values of two C<pos> calls with the same +argument, and then assigning a reference to one and C<undef> to the other, +could result in assertion failures or memory leaks. + +=item * + +Elements of @- and @+ now update correctly when they refer to non-existent +captures. Previously, a referenced element (C<$ref = \$-[1]>) could refer to +the wrong match after subsequent matches. + +=item * + +When C<die>, C<last>, C<next>, C<redo>, C<goto> and C<exit> unwind the scope, +it is possible for C<DESTROY> recursively to call a subroutine or format that +is currently being exited. It that case, sometimes the lexical variables +inside the sub would start out having values from the outer call, instead of +being undefined as they should. This has been fixed. [perl #119311] + +=item * + +${^MPEN} is no longer treated as a synonym for ${^MATCH}. + +=item * + +Perl now tries a little harder to return the correct line number in +C<(caller)[2]>. [perl #115768] + +=item * + +Line numbers inside multiline quote-like operators are now reported correctly. +[perl #3643] + +=item * + +C<#line> directives inside code embedded in quote-like operators are now +respected. + +=item * + +Line numbers are now correct inside the second here-doc when two here-doc +markers occur on the same line. + +=item * + +Starting with Perl 5.12, line numbers were off by one if the B<-d> switch was +used on the #! line. Now they are correct. + +=item * + +Perl 5.19.2 inadvertently stopped some lines of code from being available to +the debugger if C<=E<gt>> occurred at the beginning of a line and the previous +line ended with a keyword. This is now fixed. + +=item * + +Perl 5.19.2 allowed the PERL5DB environment variable to contain multiple lines +of code, but those lines were not made available to the debugger. Now they are +all stuffed into line number 0, accessible via C<$dbline[0]> in the debugger. + +=item * + +An optimization in Perl 5.18 made incorrect assumptions causing a bad +interaction with the L<Devel::CallParser> CPAN module. If the module was +loaded then lexical variables declared in separate statements following a +C<my(...)> list might fail to be cleared on scope exit. + +=item * + +C<&xsub> and C<goto &xsub> calls now allow the called subroutine to autovivify +elements of @_. + +=item * + +C<&xsub> and C<goto &xsub> no longer crash if *_ has been undefined and has no +ARRAY entry (i.e. @_ does not exist). + +=item * + +C<&xsub> and C<goto &xsub> now work with tied @_. + +=item * + +Overlong identifiers no longer cause a buffer overflow (and a crash). They +started doing so in Perl 5.18. + +=item * + +The warning "Scalar value @hash{foo} better written as $hash{foo}" now produces +far fewer false positives. In particular, C<@hash{+function_returning_a_list}> +and C<@hash{ qw "foo bar baz" }> no longer warn. The same applies to array +slices. [perl #28380, #114024] + +=item * + +C<$! = EINVAL; waitpid(0, WNOHANG);> no longer goes into an internal infinite +loop. [perl #85228] + +=item * + +Perl 5.19.3 accidentally caused C<\(1+2)> to return a reference to the same +mutable scalar each time, so that modifications affect future evaluations. +This has been fixed. [perl #119501] + +=item * + +A possible segmentation fault in filehandle duplication has been fixed. + +=item * + +A subroutine in @INC can return a reference to a scalar containing the initial +contents of the file. However, that scalar was freed prematurely if not +referenced elsewhere, giving random results. + +=back + +=head1 Acknowledgements + +Perl 5.19.4 represents approximately 4 weeks of development since Perl 5.19.3 +and contains approximately 31,000 lines of changes across 580 files from 42 +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.19.4: + +Andy Dougherty, Brian Fraser, Chris 'BinGOs' Williams, Christian Millour, Craig +A. Berry, Daniel Dragan, David Golden, David Leadbeater, David Mitchell, Father +Chrysostomos, Florian Ragwitz, François Perrad, H.Merijn Brand, James E +Keenan, John Goodyear, John P. Linderman, John Peacock, Karl Williamson, kevin +dawson, Leon Timmermans, Marco Peereboom, Matthew Horsfall, Nathan Glenn, Neil +Bowers, Nicholas Clark, Niels Thykier, Niko Tyni, Owain G. Ainsworth, Peter +John Acklam, Reini Urban, Ricardo Signes, Ruslan Zakirov, Slaven Rezic, +Smylers, Steve Hay, Sullivan Beck, Toby Inkster, Tokuhiro Matsuno, Tony Cook, +Victor Efimov, Zefram, Zsbán Ambrus. + +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. + +=head1 Reporting Bugs + +If you find what you think is a bug, you might check the articles recently +posted to the comp.lang.perl.misc newsgroup and the perl bug database at +http://rt.perl.org/perlbug/ . There may also be information at +http://www.perl.org/ , the Perl Home Page. + +If you believe you have an unreported bug, please run the L<perlbug> program +included with your release. Be sure to trim your bug down to a tiny but +sufficient test case. Your bug report, along with the output of C<perl -V>, +will be sent off to perlbug@perl.org to be analysed by the Perl porting team. + +If the bug you are reporting has security implications, which make it +inappropriate to send to a publicly archived mailing list, then please send it +to perl5-security-report@perl.org. This points to a closed subscription +unarchived mailing list, which includes all the core committers, who will be +able to help assess the impact of issues, figure out a resolution, and help +co-ordinate the release of patches to mitigate or fix the problem across all +platforms on which Perl is supported. Please only use this address for +security issues in the Perl core, not for modules independently distributed on +CPAN. + +=head1 SEE ALSO + +The F<Changes> file for an explanation of how to view exhaustive details on +what changed. + +The F<INSTALL> file for how to build Perl. + +The F<README> file for general stuff. + +The F<Artistic> and F<Copying> files for copyright information. + +=cut diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 5d932f7916..d87daef2eb 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -2,662 +2,163 @@ =head1 NAME -perldelta - what is new for perl v5.19.4 +[ 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.5 =head1 DESCRIPTION -This document describes differences between the 5.19.3 release and the 5.19.4 +This document describes differences between the 5.19.4 release and the 5.19.5 release. -If you are upgrading from an earlier release such as 5.19.2, first read -L<perl5193delta>, which describes differences between 5.19.2 and 5.19.3. - -=head1 Core Enhancements - -=head2 C<rand> now uses a consistent random number generator - -Previously perl would use a platform specific random number generator, varying -between the libc rand(), random() or drand48(). - -This meant that the quality of perl's random numbers would vary from platform -to platform, from the 15 bits of rand() on Windows to 48-bits on POSIX -platforms such as Linux with drand48(). - -Perl now uses its own internal drand48() implementation on all platforms. This -does not make perl's C<rand> cryptographically secure. [perl #115928] - -=head2 Better 64-bit support +If you are upgrading from an earlier release such as 5.19.3, first read +L<perl5194delta>, which describes differences between 5.19.3 and 5.19.4. -On 64-bit platforms, the internal array functions now use 64-bit offsets, -allowing Perl arrays to hold more than 2**31 elements, if you have the memory -available. +=head1 Notice -The regular expression engine now supports strings longer than 2**31 -characters. [perl #112790, #116907] +XXX Any important notices here -The functions PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt and -PerlIO_set_ptrcnt now have SSize_t, rather than int, return values and -parameters. +=head1 Core Enhancements -=head2 New slice syntax +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. -The new C<%hash{...}> and C<%array[...]> syntax returns a list of key/value (or -index/value) pairs. +[ List each enhancement as a =head2 entry ] -=head2 EBCDIC support +=head1 Security -Core Perl now mostly works on EBCDIC platforms. This is not true of many -modules, including some which are shipped with this release. If you have -resources to help continue this process, including test machines, send email to -L<mailto:perl-mvs@perl.org>. +XXX Any security-related notices go here. In particular, any security +vulnerabilities closed should be noted here rather than in the +L</Selected Bug Fixes> section. -As a result of this, certain XS functions are now deprecated; see L</Internal -Changes>. +[ List each security issue as a =head2 entry ] =head1 Incompatible Changes -=head2 Locale decimal point character no longer leaks outside of -S<C<use locale>> scope (with the exception of $!) - -This is actually a bug fix, but some code has come to rely on the bug being -present, so this change is listed here. The current locale that the program is -running under is not supposed to be visible to Perl code except within the -scope of a S<C<use locale>>. However, until now under certain circumstances, -the character used for a decimal point (often a comma) leaked outside the -scope. - -This continues the work released in Perl 5.19.1. It turns out that that did -not catch all the leaks, including C<printf> and C<sprintf> not respecting -S<C<use locale>>. If your code is affected by this change, simply add a -S<C<use locale>>. - -Now, the only known place where S<C<use locale>> is not respected is in the -stringification of L<$!|perlvar/$!>. - -=head2 Assignments of Windows sockets error codes to $! now prefer F<errno.h> values over WSAGetLastError() values - -In previous versions of Perl, Windows sockets error codes as returned by -WSAGetLastError() were assigned to $!, and some constants such as ECONNABORTED, -not in F<errno.h> in VC++ (or the various Windows ports of gcc) were defined to -corresponding WSAE* values to allow $! to be tested against the E* constants -exported by L<Errno> and L<POSIX>. - -This worked well until VC++ 2010 and later, which introduced new E* constants -with values E<gt> 100 into F<errno.h>, including some being (re)defined by perl -to WSAE* values. That caused problems when linking XS code against other -libraries which used the original definitions of F<errno.h> constants. - -To avoid this incompatibility, perl now maps WSAE* error codes to E* values -where possible, and assigns those values to $!. The E* constants exported by -L<Errno> and L<POSIX> are updated to match so that testing $! against them, -wherever previously possible, will continue to work as expected, and all E* -constants found in F<errno.h> are now exported from those modules with their -original F<errno.h> values - -In order to avoid breakage in existing Perl code which assigns WSAE* values to -$!, perl now intercepts the assignment and performs the same mapping to E* -values as it uses internally when assigning to $! itself. - -However, one backwards-incompatibility remains: existing Perl code which -compares $! against the numeric values of the WSAE* error codes that were -previously assigned to $! will now be broken in those cases where a -corresponding E* value has been assigned instead. This is only an issue for -those E* values E<lt> 100, which were always exported from L<Errno> and -L<POSIX> with their original F<errno.h> values, and therefore could not be used -for WSAE* error code tests (e.g. WSAEINVAL is 10022, but the corresponding -EINVAL is 22). (E* values E<gt> 100, if present, were redefined to WSAE* -values anyway, so compatibility can be achieved by using the E* constants, -which will work both before and after this change, albeit using different -numeric values under the hood.) - -=head1 Deprecations - -=head2 Literal control characters in variable names +XXX For a release on a stable branch, this section aspires to be: -This deprecation affects things like $\cT, where \cT is a literal control in -the source code. Surprisingly, it appears that originally this was intended as -the canonical way of accessing variables like $^T, with the caret form only -being added as an alternative. - -The literal control form is being deprecated for two main reasons. It has what -are likely unfixable bugs, such as $\cI not working as an alias for $^I, and -their usage not being portable to non-ASCII platforms: While $^T will work -everywhere, \cT is whitespace in EBCDIC. [perl #119123] - -=head1 Performance Enhancements + 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. -=over 4 - -=item * - -The trie performance enhancement for regular expressions has now been extended -to those compiled under /iaa. - -=back - -=head1 Modules and Pragmata - -=head2 Updated Modules and Pragmata - -=over 4 - -=item * +[ List each incompatible change as a =head2 entry ] -L<autodie> has been upgraded from version 2.20 to 2.21. +=head1 Deprecations -Numerous improvements have been made, many speed-related. See the F<Changes> -file in the CPAN distribution for full details. +XXX Any deprecated features, syntax, modules etc. should be listed here. -=item * +=head2 Module removals -L<B> has been upgraded from version 1.45 to 1.46. +XXX Remove this section if inapplicable. -The fix for [perl #118525] introduced a regression in the behaviour of -C<B::CV::GV>, changing the return value from a C<B::SPECIAL> object on a -C<NULL> C<CvGV> to C<undef>. C<B::CV::GV> again returns a C<B::SPECIAL> object -in this case. [perl #119351] +The following modules will be removed from the core distribution in a +future release, and will at that time need to be installed from CPAN. +Distributions on CPAN which require these modules will need to list them as +prerequisites. -L<B> version 1.44 (Perl 5.19.2) introduced four new B::OP methods, C<slabbed>, -C<savefree>, C<static> and C<folded>, but these have never actually worked -until now. They used to croak. +The core versions of these modules will now issue C<"deprecated">-category +warnings to alert you to this fact. To silence these deprecation warnings, +install the modules in question from CPAN. -=item * +Note that these are (with rare exceptions) fine modules that you are encouraged +to continue to use. Their disinclusion from core primarily hinges on their +necessity to bootstrapping a fully functional, CPAN-capable Perl installation, +not usually on concerns over their design. -L<B::Concise> has been upgraded from version 0.98 to 0.99. +=over -The handling of the C<glob> operator, broken since Perl 5.17.6, has been fixed -and handling of the new kvaslice and kvhslice operators have been added. +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. -=item * +=back -L<B::Deparse> has been upgraded from version 1.22 to 1.23. +[ List each other deprecation as a =head2 entry ] -The new kvaslice and kvhslice operators have been added. +=head1 Performance Enhancements -=item * +XXX Changes which enhance performance without changing behaviour go here. +There may well be none in a stable release. -L<Carp> has been upgraded from version 1.31 to 1.32. +[ List each enhancement as a =item entry ] =over 4 =item * -In stack traces, subroutine arguments that are strings are now quoted in a -consistent manner, regardless of what characters they contain and how they're -internally represented. - -=item * - -L<Carp> also now shows subroutine arguments that are references to regexp -objects in a consistent manner in stack traces. - -=item * - -L<Carp> now takes care not to clobber the status variables $! and $^E. - -=item * - -L<Carp> now won't vivify the C<overload::StrVal> glob or subroutine or the -L<overload> stash. - -=item * - -L<Carp> now avoids some unwanted Unicode warnings on older Perls. This doesn't -affect behaviour with current Perls. - -=item * - -Carp::Heavy detects version mismatch with L<Carp>, to give a good error message -if a current (stub) Carp::Heavy gets loaded by an old L<Carp> that expects -Carp::Heavy to provide subroutines. +XXX =back -=item * - -L<charnames> has been upgraded from version 1.38 to 1.39. - -This module now works on EBCDIC platforms. - -=item * - -L<CPAN> has been upgraded from version 2.00 to 2.03-TRIAL. - -Numerous updates and bug fixes are incorporated. See the F<Changes> file for -full details. - -=item * - -L<CPAN::Meta> has been upgraded from version 2.132140 to 2.132620. - -META validation no longer allows a scalar value when a list was required for a -field. - -=item * - -L<CPAN::Meta::Requirements> has been upgraded from version 2.122 to 2.123. - -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<Data::Dumper> has been upgraded from version 2.148 to 2.149. - -This upgrade is part of a larger change to make the array interface 64-bit safe -by using SSize_t instead of I32 for array indices. - -In addition, an EBCDIC fix has been applied. - -=item * - -L<Devel::Peek> has been upgraded from version 1.13 to 1.14. - -This upgrade is part of a larger change to preserve referential identity when -passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for -non-existent array elements. - -In addition, C<Dump> with no args was broken in Perl 5.19.3, but has now been -fixed. - -=item * - -L<diagnostics> has been upgraded from version 1.32 to 1.33. - -C<=back> is now treated as the end of a warning description, thus keeping any -trailing data in the file from showing up as part of the last warning's -description. [perl #119817] - -=item * - -L<DynaLoader> has been upgraded from version 1.19 to 1.20. - -The documentation now makes it clear, as has always been the case, that -C<dl_unload_file> is only called automatically to unload all loaded shared -objects if the perl interpreter was built with the C macro -DL_UNLOAD_ALL_AT_EXIT defined. Support for GNU DLD has also been removed. - -=item * - -L<Encode> has been upgraded from version 2.52 to 2.55. - -An erroneous early return in C<decode_utf8> has been removed, and a bug in -C<_utf8_on> under COW has been fixed. Encode also now uses L<parent> rather -than L<base> throughout. - -=item * - -L<Errno> has been upgraded from version 1.19 to 1.20. - -The list of E* constants exported on Windows has been updated to reflect the -changes made in the assignment of sockets error codes to $! (see -L</Incompatible Changes>). - -=item * - -L<Exporter> has been upgraded from version 5.69 to 5.70. - -A number of typos have been corrected in the documentation. - -=item * - -L<ExtUtils::CBuilder> has been upgraded from version 0.280210 to 0.280212. - -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<ExtUtils::Command> has been upgraded from version 1.17 to 1.18. - -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<ExtUtils::MakeMaker> has been upgraded from version 6.72 to 6.76. - -Numerous updates and bug fixes are incorporated. See the F<Changes> file for -full details. - -=item * - -L<ExtUtils::ParseXS> has been upgraded from version 3.21 to 3.23. - -Unquoted "here-doc" markers for typemaps can now be optionally followed by a -semicolon, just like quoted markers. [perl #119761] - -=item * - -L<File::Copy> has been upgraded from version 2.27 to 2.28. - -The documentation of C<copy> now makes it clear that trying to copy a file into -a non-existent directory is not supported. [perl #119539] - -=item * - -L<File::Find> has been upgraded from version 1.24 to 1.25. - -Better diagnostics are now provided in the case of a failed C<chdir>. - -=item * - -L<File::Glob> has been upgraded from version 1.20 to 1.21. - -C<glob> now warns in the context of C<use warnings "syscalls";> if the supplied -pattern has an internal NUL (C<"\0">) character. - -=item * - -L<FileCache> has been upgraded from version 1.08 to 1.09. - -This upgrade is part of a larger change to use L<parent> rather than L<base>. - -=item * - -L<Hash::Util::FieldHash> has been upgraded from version 1.12 to 1.13. - -This upgrade is part of a larger change to use L<parent> rather than L<base>. - -=item * - -L<HTTP::Tiny> has been upgraded from version 0.034 to 0.035. - -Encoded data from C<post_form> now preserves term order if data is provided as -an array reference. (They are still sorted for consistency if provided as a -hash reference.) - -=item * - -L<I18N::LangTags> has been upgraded from version 0.39 to 0.40. - -Bosnian has now joined Croatian and Serbian in the lists of mutually -intelligible Slavic languages. [perl #72594] - -=item * - -L<IO> has been upgraded from version 1.28 to 1.29. - -A minor internals-only change has been made to the XS code. - -=item * - -L<IO::Socket> has been upgraded from version 1.36 to 1.37. - -The C<connect> method has been updated in the light of changes made in the -assignment of sockets error codes to $! on Windows (see L</Incompatible -Changes>). - -=item * - -L<IPC::Open3> has been upgraded from version 1.15 to 1.16. - -This upgrade is part of a larger change to preserve referential identity when -passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for -non-existent array elements. - -=item * - -L<JSON::PP> has been patched from version 2.27202 to 2.27202_01. - -A precedence issue has been fixed in the return value of a private subroutine. - -=item * - -L<Locale::Codes> has been upgraded from version 3.26 to 3.27. - -New codes have been added and the (deprecated) set of FIPS-10 country codes has -been removed. - -=item * - -L<Math::BigInt> has been upgraded from version 1.9992 to 1.9993. - -Cleaned up the L<Math::BigInt> and L<Math::BigFloat> documentation to be more -consistent with other Perl documentation. [perl #86686] - -Added a C<bint> method for rounding towards zero. [perl #85296] - -=item * - -L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31. - -This upgrade is part of a larger change to make the array interface 64-bit safe -by using SSize_t instead of I32 for array indices. - -=item * - -L<Module::CoreList> has been upgraded from version 2.97 to 2.99. - -The list of Perl versions covered has been updated. - -A function C<is_core> has been added, which returns true if the specified -module was bundled with Perl. Optionally you can specify a minimum version of -the module, and the specific version of Perl you're interested in (defaults to -$^V, the running version of Perl). - -=item * - -L<Module::Load::Conditional> has been upgraded from version 0.54 to 0.58. - -C<requires> has been made more robust. [cpan #83728] - -=item * - -L<Module::Metadata> has been upgraded from version 1.000014 to 1.000018. - -The module's DESCRIPTION has been re-worded regarding safety/security to -satisfy CVE-2013-1437. Also, versions are now detainted if needed. [cpan -#88576] - -=item * - -L<mro> has been upgraded from version 1.13 to 1.14. - -This upgrade is part of a larger change to make the array interface 64-bit safe -by using SSize_t instead of I32 for array indices. - -=item * - -L<Opcode> has been upgraded from version 1.25 to 1.26. - -The new kvaslice and kvhslice operators have been added. - -=item * - -L<parent> has been upgraded from version 0.226 to 0.228. - -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<Parse::CPAN::Meta> has been upgraded from version 1.4405 to 1.4407. - -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<Perl::OSType> has been upgraded from version 1.003 to 1.005. - -The Unix OSType 'bitrig' has been added. - -=item * - -L<perlfaq> has been upgraded from version 5.0150043 to 5.0150044. - -The use of C<gensym> in a number of examples has been removed, the use of C<&> -in subroutine calls is now clarified and several new questions have been -answered. - -=item * - -L<Pod::Html> has been upgraded from version 1.20 to 1.21. - -This upgrade is part of a larger change to use L<parent> rather than L<base>. - -=item * - -L<POSIX> has been upgraded from version 1.34 to 1.35. - -The list of E* constants exported on Windows has been updated to reflect the -changes made in the assignment of sockets error codes to $! (see -L</Incompatible Changes>). - -=item * - -L<re> has been upgraded from version 0.25 to 0.26. - -This upgrade is part of a larger change to support 64-bit string lengths in the -regular expression engine. - -=item * - -L<Scalar::Util> has been upgraded from version 1.31 to 1.32. - -The documentation of C<blessed> has been improved to mention the fact that -package "0" is defined but false. - -=item * - -L<Socket> has been upgraded from version 2.011 to 2.012. - -Syntax errors when building on the WinCE platform have been fixed. [cpan -#87389] - -=item * - -L<Storable> has been upgraded from version 2.46 to 2.47. - -This upgrade is part of a larger change to preserve referential identity when -passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for -non-existent array elements. - -=item * - -L<Term::ReadLine> has been upgraded from version 1.13 to 1.14. - -Term::ReadLine::EditLine support has been added. - -=item * - -L<Test::Simple> has been patched from version 0.98 to 0.98_06. - -A precedence issue has been fixed in the return value of a private subroutine -in L<Test::Builder>. - -=item * - -L<Time::Piece> has been upgraded from version 1.22 to 1.23. - -Day of year parsing (like "%y%j") has been fixed. - -=item * - -L<Unicode::Collate> has been upgraded from version 0.98 to 0.99. - -By default, out-of-range values are replaced with U+FFFD (REPLACEMENT -CHARACTER) when C<UCA_Version> E<gt>= 22, or ignored when C<UCA_Version> E<lt>= -20. When C<UCA_Version> E<gt>= 22, the weights of out-of-range values can be -overridden. - -=item * - -L<Unicode::UCD> has been upgraded from version 0.53 to 0.54. - -This module now works on EBCDIC platforms. - -=item * - -L<version> has been upgraded from version 0.9903 to 0.9904. +=head1 Modules and Pragmata -No changes have been made to the installed code other than the version bump to -keep in sync with the latest CPAN release. +XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> +go here. If Module::CoreList is updated, generate an initial draft of the +following sections using F<Porting/corelist-perldelta.pl>, which prints stub +entries to STDOUT. Results can be pasted in place of the '=head2' entries +below. A paragraph summary for important changes should then be added by hand. +In an ideal world, dual-life modules would have a F<Changes> file that could be +cribbed. -=item * +[ Within each section, list entries as a =item entry ] -L<warnings> has been upgraded from version 1.18 to 1.19. +=head2 New Modules and Pragmata -The C<syscalls> warnings category has been added to check for embedded NUL -(C<"\0">) characters in pathnames and string arguments to other system calls. -[perl #117265] +=over 4 =item * -L<XS::Typemap> has been upgraded from version 0.10 to 0.11. - -This upgrade is part of the change to remove the uninitialized warnings -exemption for uninitialized values returned by XSUBs (see the L</Selected Bug -Fixes> section). +XXX =back -=head1 Documentation - -=head2 New Documentation - -=head3 L<perlrepository> - -This document was removed (actually, renamed L<perlgit> and given a major -overhaul) in Perl 5.13.10, causing Perl documentation websites to show the now -out of date version in Perl 5.12 as the latest version. It has now been -restored in stub form, directing readers to current information. - -=head2 Changes to Existing Documentation - -=head3 L<perldata> +=head2 Updated Modules and Pragmata =over 4 =item * -New sections have been added to document the new index/value array slice and -key/value hash slice syntax. +L<XXX> has been upgraded from version A.xx to B.yy. =back -=head3 L<perldebguts> +=head2 Removed Modules and Pragmata =over 4 =item * -The C<DB::goto> and C<DB::lsub> debugger subroutines are now documented. [perl -#77680] +XXX =back -=head3 L<perlguts> +=head1 Documentation -=over 4 +XXX Changes to files in F<pod/> go here. Consider grouping entries by +file and be sure to link to the appropriate page, e.g. L<perlfunc>. -=item * - -Numerous minor changes have been made to reflect changes made to the perl -internals in this release. +=head2 New Documentation -=back +XXX Changes which create B<new> files in F<pod/> go here. -=head3 L<perlhack> +=head3 L<XXX> -=over 4 +XXX Description of the purpose of the new file here -=item * +=head2 Changes to Existing Documentation -The L<SUPER QUICK PATCH GUIDE|perlhack/SUPER QUICK PATCH GUIDE> section has -been updated. +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. -=back - -=head3 L<perlsub> +=head3 L<XXX> =over 4 =item * -A list of subroutine names used by the perl implementation is now included. -[perl #77680] +XXX Description of the change here =back @@ -667,25 +168,21 @@ The following additions or changes have been made to diagnostic output, including warnings and fatal error messages. For the complete list of diagnostic messages, see L<perldiag>. +XXX New or changed warnings emitted by the core's C<C> code go here. Also +include any changes in L<perldiag> that reconcile it to the C<C> code. + =head2 New Diagnostics +XXX Newly added diagnostic messages go under here, separated into New Errors +and New Warnings + =head3 New Errors =over 4 =item * -L<delete argument is indexE<sol>value array slice, use array slice|perldiag/"delete argument is index/value array slice, use array slice"> - -(F) You used index/value array slice syntax (C<%array[...]>) as the argument to -C<delete>. You probably meant C<@array[...]> with an @ symbol instead. - -=item * - -L<delete argument is keyE<sol>value hash slice, use hash slice|perldiag/"delete argument is key/value hash slice, use hash slice"> - -(F) You used key/value hash slice syntax (C<%hash{...}>) as the argument to -C<delete>. You probably meant C<@hash{...}> with an @ symbol instead. +XXX L<message|perldiag/"message"> =back @@ -695,509 +192,182 @@ C<delete>. You probably meant C<@hash{...}> with an @ symbol instead. =item * -L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s"> - -(W syscalls) Embedded \0 characters in pathnames or other system call arguments -produce a warning as of 5.20. The parts after the \0 were formerly ignored by -system calls. - -=item * - -L<Possible precedence issue with control flow operator|perldiag/"Possible precedence issue with control flow operator"> - -(W syntax) There is a possible problem with the mixing of a control flow -operator (e.g. C<return>) and a low-precedence operator like C<or>. Consider: - - sub { return $a or $b; } - -This is parsed as: - - sub { (return $a) or $b; } - -Which is effectively just: - - sub { return $a; } - -Either use parentheses or the high-precedence variant of the operator. - -Note this may be also triggered for constructs like: - - sub { 1 if die; } - -=item * - -L<Scalar value %%s[%s] better written as $%s[%s]|perldiag/"Scalar value %%s[%s] better written as $%s[%s]"> - -(W syntax) In scalar context, you've used an array index/value slice (indicated -by %) to select a single element of an array. Generally it's better to ask for -a scalar value (indicated by $). The difference is that C<$foo[&bar]> always -behaves like a scalar, both in the value it returns and when evaluating its -argument, while C<%foo[&bar]> provides a list context to its subscript, which -can do weird things if you're expecting only one subscript. When called in -list context, it also returns the index (what C<&bar> returns) in addition to -the value. - -=item * - -L<Scalar value %%s{%s} better written as $%s{%s}|perldiag/"Scalar value %%s{%s} better written as $%s{%s}"> - -(W syntax) In scalar context, you've used a hash key/value slice (indicated by -%) to select a single element of a hash. Generally it's better to ask for a -scalar value (indicated by $). The difference is that C<$foo{&bar}> always -behaves like a scalar, both in the value it returns and when evaluating its -argument, while C<@foo{&bar}> and provides a list context to its subscript, -which can do weird things if you're expecting only one subscript. When called -in list context, it also returns the key in addition to the value. - -=item * - -L<Use of literal control characters in variable names is deprecated|perldiag/"Use of literal control characters in variable names is deprecated"> - -(D deprecated) Using literal control characters in the source to refer to the -^FOO variables, like $^X and ${^GLOBAL_PHASE} is now deprecated. This only -affects code like $\cT, where \cT is a control in the source code: ${"\cT"} and -$^T remain valid. +XXX L<message|perldiag/"message"> =back =head2 Changes to Existing Diagnostics -=over 4 - -=item * - -Warnings and errors from the regexp engine are now UTF-8 clean - -=item * - -The "Unknown switch condition" error message has some slight changes. This -error triggers when there is an unknown condition in a C<(?(foo))> conditional. -The error message used to read: - - Unknown switch condition (?(%s in regex; - -But what %s could be was mostly up to luck. For C<(?(foobar))>, you might have -seen "fo" or "f". For Unicode characters, you would generally get a corrupted -string. The message has been changed to read: - - Unknown switch condition (?(...)) in regex; +XXX Changes (i.e. rewording) of diagnostic messages go here -Additionally, the C<'E<lt>-- HERE'> marker in the error will now point to the -correct spot in the regex. +=over 4 =item * -The "%s "\x%X" does not map to Unicode" warning is now correctly listed as a -severe warning rather than as a fatal error. +XXX Describe change here =back =head1 Utility Changes -=head3 L<find2perl> - -=over 4 - -=item * - -L<find2perl> now handles C<?> wildcards correctly. [perl #113054] +XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here. +Most of these are built within the directories F<utils> and F<x2p>. -=back +[ List utility changes as a =head3 entry for each utility and =item +entries for each change +Use L<XXX> with program names to get proper documentation linking. ] -=head1 Configuration and Compilation +=head3 L<XXX> =over 4 =item * -The F<Makefile.PL> for L<SDBM_File> now generates a better F<Makefile>, which -avoids a race condition during parallel makes, which could cause the build to -fail. This is the last known parallel make problem (on *nix platforms), and -therefore we believe that a parallel make should now always be error free. - -=for comment - -Strictly only for a build where build files such as F<Makefile.SH> have not -been updated by C<git> in an already configured and built tree. +XXX =back -=head1 Testing - -=over 4 - -=item * - -The test script F<t/bigmem/regexp.t> has been added to test that regular -expression matches on very large strings now succeed as expected. +=head1 Configuration and Compilation -=item * +XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools +go here. Any other changes to the Perl build process should be listed here. +However, any platform-specific changes should be listed in the +L</Platform Support> section, instead. -A bug that was fixed in Perl 5.15.4 is now tested by the new test script -F<t/io/eintr_print.t>. [perl #119097] +[ List changes as a =item entry ]. -=item * - -The new test scripts F<t/op/kvaslice.t> and F<t/op/kvhslice.t> test the new -index/value array slice and key/value hash slice syntax respectively. +=over 4 =item * -Various cases of C<die>, C<last>, C<goto> and C<exit> triggering C<DESTROY> are -now tested by the new test script F<t/op/rt119311.t>. - -=item * +XXX -The new test script F<t/op/waitpid.t> tests the fix for [perl #85228] (see -L</Selected Bug Fixes>). +=back -=item * +=head1 Testing -The latest copyright years in the top-level F<README> file and the B<perl -v> -output are now tested as matching each other by the new test script -F<t/porting/copyright.t> +XXX Any significant changes to the testing of a freshly built perl should be +listed here. Changes which create B<new> files in F<t/> go here as do any +large changes to the testing harness (e.g. when parallel testing was added). +Changes to existing files in F<t/> aren't worth summarizing, although the bugs +that they represent may be covered elsewhere. -=item * +[ List each test improvement as a =item entry ] -The new test script F<t/win32/signal.t> tests that $! and $^E are now preserved -across signal handlers by the Win32 signal emulation code. +=over 4 =item * -The test script F<t/x2p/find2perl.t> has been added to test the F<find2perl> -program on platforms where it is practical to do so. +XXX =back =head1 Platform Support -=head2 New Platforms +XXX Any changes to platform support should be listed in the sections below. -=over 4 +[ Within the sections, list each platform as a =item entry with specific +changes as paragraphs below it. ] + +=head2 New Platforms -=item FreeMiNT +XXX List any platforms that this version of perl compiles on, that previous +versions did not. These will either be enabled by new files in the F<hints/> +directories, or new subdirectories and F<README> files at the top level of the +source tree. -Support has been added for FreeMiNT, a free open-source OS for the Atari ST -system and its successors, based on the original MiNT that was officially -adopted by Atari. +=over 4 -=item Bitrig +=item XXX-some-platform -Compile support has been added for Bitrig, a fork of OpenBSD. +XXX =back =head2 Discontinued Platforms -Configure hints and conditional code for several very old platforms has been -removed. We have not received reports for these in many years, typically not -since Perl 5.6.0. +XXX List any platforms that this version of perl no longer compiles on. =over 4 -=item AT&T 3b1 +=item XXX-some-platform -Configure support for the 3b1, also known as the AT&T Unix PC (and the similar -AT&T 7300), has been removed. +XXX =back =head2 Platform-Specific Notes -=over 4 - -=item VMS - -The C<PERL_ENV_TABLES> feature to control the population of %ENV at perl -start-up was broken in Perl 5.16.0 but has now been fixed. - -=item Win32 +XXX List any changes for specific platforms. This could include configuration +and compilation changes or changes in portability/compatibility. However, +changes within modules for platforms should generally be listed in the +L</Modules and Pragmata> section. -C<rename> and C<link> on Win32 now set $! to ENOSPC and EDQUOT when -appropriate. [perl #119857] - -=item WinCE - -Perl now builds again on WinCE, following locale-related breakage (WinCE has -non-existent locale support) introduced around 5.19.1. [perl #119443] - -The building of XS modules has largely been restored. Several still cannot -(yet) be built but it is now possible to build Perl on WinCE with only a couple -of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be -incorporated soon. +=over 4 -=item GNU/Hurd +=item XXX-some-platform -The BSD compatibility library C<libbsd> is no longer required for builds. +XXX =back =head1 Internal Changes -=over 4 - -=item * +XXX Changes which affect the interface available to C<XS> code go here. Other +significant internal changes for future core maintainers should be noted as +well. -The internal representation has changed for the match variables $1, $2 etc., -$`, $&, $', ${^PREMATCH}, ${^MATCH} and ${^POSTMATCH}. It uses slightly less -memory, avoids string comparisons and numeric conversions during lookup, and -uses 23 fewer lines of C. This change should not affect any external code. +[ List each change as a =item entry ] -=item * - -Arrays now use NULL internally to represent unused slots, instead of -&PL_sv_undef. &PL_sv_undef is no longer treated as a special value, so -av_store(av, 0, &PL_sv_undef) will cause element 0 of that array to hold a -read-only undefined scalar. C<$array[0] = anything> will croak and -C<\$array[0]> will compare equal to C<\undef>. - -=item * - -The SV returned by HeSVKEY_force() now correctly reflects the UTF8ness of the -underlying hash key when that key is not stored as a SV. [perl #79074] +=over 4 =item * -Certain rarely used functions and macros available to XS code are now, or are -planned to be, deprecated. These are: -C<utf8n_to_uvuni> (use C<utf8_to_uvchr_buf> instead), -C<utf8_to_uni_buf> (use C<utf8_to_uvchr_buf> instead), -C<valid_utf8_to_uvuni> (use C<utf8_to_uvchr_buf> instead), -C<uvuni_to_utf8> (use C<uvchr_to_utf8> instead), -C<NATIVE_TO_NEED> (this did not work properly anyway), -and C<ASCII_TO_NEED> (this did not work properly anyway). - -Starting in this release, almost never does application code need to -distinguish between the platform's character set and Latin1, on which the -lowest 256 characters of Unicode are based. +XXX =back =head1 Selected Bug Fixes -=over 4 - -=item * - -The value of $^E is now saved across signal handlers on Windows. [perl #85104] - -=item * - -A lexical filehandle (as in C<open my $fh...>) is usually given a name based on -the current package and the name of the variable, e.g. "main::$fh". Under -recursion, the filehandle was losing the "$fh" part of the name. This has been -fixed. +XXX Important bug fixes in the core language are summarized here. Bug fixes in +files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>. -=item * - -Perl 5.19.3 accidentally extended the previous bug to all closures, even when -not called recursively, i.e. lexical handles in closure would always be called -"main::" or "MyPackage::" etc. This has been fixed. - -=item * - -Uninitialized values returned by XSUBs are no longer exempt from uninitialized -warnings. [perl #118693] - -=item * - -C<elsif ("")> no longer erroneously produces a warning about void context. -[perl #118753] +[ List each fix as a =item entry ] -=item * - -Passing C<undef> to a subroutine now causes @_ to contain the same read-only -undefined scalar that C<undef> returns. Furthermore, C<exists $_[0]> will now -return true if C<undef> was the first argument. [perl #7508, #109726] - -=item * - -Passing a non-existent array element to a subroutine does not usually -autovivify it unless the subroutine modifies its argument. This did not work -correctly with negative indices and with non-existent elements within the -array. The element would be vivified immediately. The delayed vivification -has been extended to work with those. [perl #118691] - -=item * - -Assigning references or globs to the scalar returned by $#foo after the @foo -array has been freed no longer causes assertion failures on debugging builds -and memory leaks on regular builds. - -=item * - -Perl 5.19.2 threw line numbers off after some cases of line breaks following -keywords, such as - - 1 unless - 1; - -This has been fixed. [perl #118931] - -=item * - -On 64-bit platforms, large ranges like 1..1000000000000 no longer crash, but -eat up all your memory instead. [perl #119161] - -=item * - -C<__DATA__> now puts the C<DATA> handle in the right package, even if the -current package has been renamed through glob assignment. - -=item * - -The string position set by C<pos> could shift if the string changed -representation internally to or from utf8. This could happen, e.g., with -references to objects with string overloading. - -=item * - -Taking references to the return values of two C<pos> calls with the same -argument, and then assigning a reference to one and C<undef> to the other, -could result in assertion failures or memory leaks. - -=item * - -Elements of @- and @+ now update correctly when they refer to non-existent -captures. Previously, a referenced element (C<$ref = \$-[1]>) could refer to -the wrong match after subsequent matches. - -=item * - -When C<die>, C<last>, C<next>, C<redo>, C<goto> and C<exit> unwind the scope, -it is possible for C<DESTROY> recursively to call a subroutine or format that -is currently being exited. It that case, sometimes the lexical variables -inside the sub would start out having values from the outer call, instead of -being undefined as they should. This has been fixed. [perl #119311] - -=item * - -${^MPEN} is no longer treated as a synonym for ${^MATCH}. - -=item * - -Perl now tries a little harder to return the correct line number in -C<(caller)[2]>. [perl #115768] - -=item * - -Line numbers inside multiline quote-like operators are now reported correctly. -[perl #3643] - -=item * - -C<#line> directives inside code embedded in quote-like operators are now -respected. - -=item * - -Line numbers are now correct inside the second here-doc when two here-doc -markers occur on the same line. - -=item * - -Starting with Perl 5.12, line numbers were off by one if the B<-d> switch was -used on the #! line. Now they are correct. - -=item * - -Perl 5.19.2 inadvertently stopped some lines of code from being available to -the debugger if C<=E<gt>> occurred at the beginning of a line and the previous -line ended with a keyword. This is now fixed. - -=item * - -Perl 5.19.2 allowed the PERL5DB environment variable to contain multiple lines -of code, but those lines were not made available to the debugger. Now they are -all stuffed into line number 0, accessible via C<$dbline[0]> in the debugger. - -=item * - -An optimization in Perl 5.18 made incorrect assumptions causing a bad -interaction with the L<Devel::CallParser> CPAN module. If the module was -loaded then lexical variables declared in separate statements following a -C<my(...)> list might fail to be cleared on scope exit. - -=item * - -C<&xsub> and C<goto &xsub> calls now allow the called subroutine to autovivify -elements of @_. - -=item * - -C<&xsub> and C<goto &xsub> no longer crash if *_ has been undefined and has no -ARRAY entry (i.e. @_ does not exist). - -=item * - -C<&xsub> and C<goto &xsub> now work with tied @_. +=over 4 =item * -Overlong identifiers no longer cause a buffer overflow (and a crash). They -started doing so in Perl 5.18. +XXX -=item * - -The warning "Scalar value @hash{foo} better written as $hash{foo}" now produces -far fewer false positives. In particular, C<@hash{+function_returning_a_list}> -and C<@hash{ qw "foo bar baz" }> no longer warn. The same applies to array -slices. [perl #28380, #114024] +=back -=item * +=head1 Known Problems -C<$! = EINVAL; waitpid(0, WNOHANG);> no longer goes into an internal infinite -loop. [perl #85228] +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. -=item * +[ List each fix as a =item entry ] -Perl 5.19.3 accidentally caused C<\(1+2)> to return a reference to the same -mutable scalar each time, so that modifications affect future evaluations. -This has been fixed. [perl #119501] +=over 4 =item * -A possible segmentation fault in filehandle duplication has been fixed. +XXX -=item * +=back -A subroutine in @INC can return a reference to a scalar containing the initial -contents of the file. However, that scalar was freed prematurely if not -referenced elsewhere, giving random results. +=head1 Obituary -=back +XXX If any significant core contributor has died, we've added a short obituary +here. =head1 Acknowledgements -Perl 5.19.4 represents approximately 4 weeks of development since Perl 5.19.3 -and contains approximately 31,000 lines of changes across 580 files from 42 -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.19.4: - -Andy Dougherty, Brian Fraser, Chris 'BinGOs' Williams, Christian Millour, Craig -A. Berry, Daniel Dragan, David Golden, David Leadbeater, David Mitchell, Father -Chrysostomos, Florian Ragwitz, François Perrad, H.Merijn Brand, James E -Keenan, John Goodyear, John P. Linderman, John Peacock, Karl Williamson, kevin -dawson, Leon Timmermans, Marco Peereboom, Matthew Horsfall, Nathan Glenn, Neil -Bowers, Nicholas Clark, Niels Thykier, Niko Tyni, Owain G. Ainsworth, Peter -John Acklam, Reini Urban, Ricardo Signes, Ruslan Zakirov, Slaven Rezic, -Smylers, Steve Hay, Sullivan Beck, Toby Inkster, Tokuhiro Matsuno, Tony Cook, -Victor Efimov, Zefram, Zsbán Ambrus. - -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.19.4..HEAD =head1 Reporting Bugs diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template index 706a8f71b4..71ca61c6a4 100644 --- a/vms/descrip_mms.template +++ b/vms/descrip_mms.template @@ -318,7 +318,7 @@ x2p : [.x2p]$(DBG)a2p$(E) [.x2p]s2p.com [.x2p]find2perl.com extra.pods : miniperl @ @extra_pods.com -PERLDELTA_CURRENT = [.pod]perl5194delta.pod +PERLDELTA_CURRENT = [.pod]perl5195delta.pod $(PERLDELTA_CURRENT) : [.pod]perldelta.pod Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT) diff --git a/win32/Makefile b/win32/Makefile index aeaf67d085..39d01c12ea 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -1156,7 +1156,7 @@ utils: $(PERLEXE) $(X2P) ..\utils\Makefile copy ..\README.tw ..\pod\perltw.pod copy ..\README.vos ..\pod\perlvos.pod copy ..\README.win32 ..\pod\perlwin32.pod - copy ..\pod\perldelta.pod ..\pod\perl5194delta.pod + copy ..\pod\perldelta.pod ..\pod\perl5195delta.pod cd ..\win32 $(PERLEXE) $(PL2BAT) $(UTILS) $(MINIPERL) -I..\lib ..\autodoc.pl .. @@ -1255,7 +1255,7 @@ distclean: realclean -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS -cd $(PODDIR) && del /f *.html *.bat roffitall \ - perl5194delta.pod perlaix.pod perlamiga.pod perlapi.pod \ + perl5195delta.pod perlaix.pod perlamiga.pod perlapi.pod \ perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod perldos.pod \ perlfreebsd.pod perlhaiku.pod perlhpux.pod perlhurd.pod \ perlintern.pod perlirix.pod perljp.pod perlko.pod perllinux.pod \ diff --git a/win32/makefile.mk b/win32/makefile.mk index 8c54a6a9b0..7cf7b48130 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -1338,7 +1338,7 @@ utils: $(PERLEXE) $(X2P) ..\utils\Makefile copy ..\README.tw ..\pod\perltw.pod copy ..\README.vos ..\pod\perlvos.pod copy ..\README.win32 ..\pod\perlwin32.pod - copy ..\pod\perldelta.pod ..\pod\perl5194delta.pod + copy ..\pod\perldelta.pod ..\pod\perl5195delta.pod $(PERLEXE) $(PL2BAT) $(UTILS) $(MINIPERL) -I..\lib ..\autodoc.pl .. $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q .. @@ -1436,7 +1436,7 @@ distclean: realclean -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS -cd $(PODDIR) && del /f *.html *.bat roffitall \ - perl5194delta.pod perlaix.pod perlamiga.pod perlapi.pod \ + perl5195delta.pod perlaix.pod perlamiga.pod perlapi.pod \ perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod perldos.pod \ perlfreebsd.pod perlhaiku.pod perlhpux.pod perlhurd.pod \ perlintern.pod perlirix.pod perljp.pod perlko.pod perllinux.pod \ diff --git a/win32/pod.mak b/win32/pod.mak index 65589ee1d4..eb56c5623f 100644 --- a/win32/pod.mak +++ b/win32/pod.mak @@ -39,6 +39,7 @@ POD = perl.pod \ perl5192delta.pod \ perl5193delta.pod \ perl5194delta.pod \ + perl5195delta.pod \ perl561delta.pod \ perl56delta.pod \ perl581delta.pod \ @@ -171,6 +172,7 @@ MAN = perl.man \ perl5192delta.man \ perl5193delta.man \ perl5194delta.man \ + perl5195delta.man \ perl561delta.man \ perl56delta.man \ perl581delta.man \ @@ -303,6 +305,7 @@ HTML = perl.html \ perl5192delta.html \ perl5193delta.html \ perl5194delta.html \ + perl5195delta.html \ perl561delta.html \ perl56delta.html \ perl581delta.html \ @@ -435,6 +438,7 @@ TEX = perl.tex \ perl5192delta.tex \ perl5193delta.tex \ perl5194delta.tex \ + perl5195delta.tex \ perl561delta.tex \ perl56delta.tex \ perl581delta.tex \ |