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/perl5174delta.pod | 749 | ||||
-rw-r--r-- | pod/perldelta.pod | 695 | ||||
-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, 929 insertions, 541 deletions
@@ -4674,6 +4674,7 @@ pod/perl5170delta.pod Perl changes in version 5.17.0 pod/perl5171delta.pod Perl changes in version 5.17.1 pod/perl5172delta.pod Perl changes in version 5.17.2 pod/perl5173delta.pod Perl changes in version 5.17.3 +pod/perl5174delta.pod Perl changes in version 5.17.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 5194ecf32e..f83288e24e 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -482,7 +482,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/perl5174delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod +perltoc_pod_prereqs = extra.pods pod/perl5175delta.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 @@ -1058,9 +1058,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST $(MINIPERL) $(Icwd) pod/perlmodlib.PL -q -pod/perl5174delta.pod: pod/perldelta.pod - $(RMS) pod/perl5174delta.pod - $(LNS) perldelta.pod pod/perl5174delta.pod +pod/perl5175delta.pod: pod/perldelta.pod + $(RMS) pod/perl5175delta.pod + $(LNS) perldelta.pod pod/perl5175delta.pod extra.pods: $(MINIPERL_EXE) -@test ! -f extra.pods || rm -f `cat extra.pods` diff --git a/pod/.gitignore b/pod/.gitignore index 50b5933536..6696d4ec23 100644 --- a/pod/.gitignore +++ b/pod/.gitignore @@ -59,7 +59,7 @@ /roffitall # generated -/perl5174delta.pod +/perl5175delta.pod /perlapi.pod /perlintern.pod *.html diff --git a/pod/perl.pod b/pod/perl.pod index adda1dba16..f339c22a7a 100644 --- a/pod/perl.pod +++ b/pod/perl.pod @@ -177,6 +177,7 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp perlhist Perl history records perldelta Perl changes since previous version + perl5174delta Perl changes in version 5.17.4 perl5173delta Perl changes in version 5.17.3 perl5172delta Perl changes in version 5.17.2 perl5171delta Perl changes in version 5.17.1 diff --git a/pod/perl5174delta.pod b/pod/perl5174delta.pod new file mode 100644 index 0000000000..399464c85b --- /dev/null +++ b/pod/perl5174delta.pod @@ -0,0 +1,749 @@ +=encoding utf8 + +=head1 NAME + +perl5174delta - what is new for perl v5.17.4 + +=head1 DESCRIPTION + +This document describes differences between the 5.17.3 release and the 5.17.4 +release. + +If you are upgrading from an earlier release such as 5.17.2, first read +L<perl5173delta>, which describes differences between 5.17.2 and 5.17.3. + +=head1 Core Enhancements + +=head2 Latest Unicode 6.2 beta is included + +This is supposed to be the final data for 6.2, unless glitches are +found. The earlier experimental 6.2 beta data has been reverted, and +this used instead. Not all the changes that were proposed for 6.2 and +that were in the earlier beta versions are actually going into 6.2. In +particular, there are no changes from 6.1 in the General_Category of any +characters. 6.2 does revise the C<\X> handling for the REGIONAL +INDICATOR characters that were added in Unicode 6.0. Perl now for the +first time fully handles this revision. + +=head2 New DTrace probes + +The following new DTrace probes have been added: + +=over 4 + +=item C<op-entry> + +=item C<loading-file> + +=item C<loaded-file> + +=back + +=head2 C<${^LAST_FH}> + +This new variable provides access to the filehandle that was last read. +This is the handle used by C<$.> and by C<tell> and C<eof> without +arguments. + +=head2 Looser here-doc parsing + +Here-doc terminators no longer require a terminating newline character when +they occur at the end of a file. This was already the case at the end of a +string eval [perl #65838]. + +=head2 New mechanism for experimental features + +Newly-added experimental features will now require this incantation: + + no warnings "experimental:feature_name"; + use feature "feature_name"; # would warn without the prev line + +There is a new warnings category, called "experimental", containing +warnings that the L<feature> pragma emits when enabling experimental +features. + +Newly-added experimental features will also be given special warning IDs, +which consist of "experimental:" followed by the name of the feature. (The +plan is to extend this mechanism eventually to all warnings, to allow them +to be enabled or disabled individually, and not just by category.) + +By saying + + no warnings "experimental:feature_name"; + +you are taking responsibility for any breakage that future changes to, or +removal of, the feature may cause. + +=head2 Lexical subroutines + +This new feature is still considered experimental. To enable it, use the +mechanism described above: + + use 5.018; + no warnings "experimental:lexical_subs"; + use feature "lexical_subs"; + +You can now declare subroutines with C<state sub foo>, C<my sub foo>, and +C<our sub foo>. (C<state sub> requires that the "state" feature be +enabled, unless you write it as C<CORE::state sub foo>.) + +C<state sub> creates a subroutine visible within the lexical scope in which +it is declared. The subroutine is shared between calls to the outer sub. + +C<my sub> declares a lexical subroutine that is created each time the +enclosing block is entered. C<state sub> is generally slightly faster than +C<my sub>. + +C<our sub> declares a lexical alias to the package subroutine of the same +name. + +See L<perlsub/Lexical Subroutines>. + +=head1 Incompatible Changes + +=head2 Here-doc parsing + +The body of a here-document inside a quote-like operator now always begins +on the line after the "<<foo" marker. Previously, it was documented to +begin on the line following the containing quote-like operator, but that +was only sometimes the case [perl #114040]. + +=head2 Stricter parsing of substitution replacement + +It is no longer possible to abuse the way the parser parses C<s///e> like +this: + + %_=(_,"Just another "); + $_="Perl hacker,\n"; + s//_}->{_/e;print + +=head2 Interaction of lexical and default warnings + +Turning on any lexical warnings used first to disable all default warnings +if lexical warnings were not already enabled: + + $*; # deprecation warning + use warnings "void"; + $#; # void warning; no deprecation warning + +Now, the debugging, deprecated, glob, inplace and malloc warnings +categories are left on when turning on lexical warnings (unless they are +turned off by C<no warnings>, of course). + +This may cause deprecation warnings to occur in code that used to be free +of warnings. + +Those are the only categories consisting only of default warnings. Default +warnings in other categories are still disabled by C<use warnings +"category">, as we do not yet have the infrastructure for controlling +individual warnings. + +=head2 C<state sub> and C<our sub> + +Due to an accident of history, C<state sub> and C<our sub> were equivalent +to a plain C<sub>, so one could even create an anonymous sub with +C<our sub { ... }>. These are now disallowed outside of the "lexical_subs" +feature. Under the "lexical_subs" feature they have new meanings described +in L<perlsub/Lexical Subroutines>. + +=head2 C<gv_fetchmeth_*> and SUPER + +The various C<gv_fetchmeth_*> XS functions used to treat a package whose +named ended with ::SUPER specially. A method lookup on the Foo::SUPER +package would be treated as a SUPER method lookup on the Foo package. This +is no longer the case. To do a SUPER lookup, pass the Foo stash and the +GV_SUPER flag. + +=head1 Performance Enhancements + +=over 4 + +=item * + +Speed up in regular expression matching against Unicode properties. The +largest gain is for C<\X>, the Unicode "extended grapheme cluster". The +gain for it is about 35% - 40%. Bracketed character classes, e.g., +C<[0-9\x{100}]> containing code points above 255 are also now faster. + +=item * + +On platforms supporting it, several former macros are now implemented as static +inline functions. This should speed things up slightly on non-GCC platforms. + +=item * + +Apply the optimisation of hashes in boolean context, such as in C<if> or C<and>, +to constructs in non-void context. + +=item * + +Extend the optimisation of hashes in boolean context to C<scalar(%hash)>, +C<%hash ? ... : ...>, and C<sub { %hash || ... }>. + +=item * + +When making a copy of the string being matched against (so that $1, $& et al +continue to show the correct value even if the original string is subsequently +modified), only copy that substring of the original string needed for the +capture variables, rather than copying the whole string. + +This is a big win for code like + + $&; + $_ = 'x' x 1_000_000; + 1 while /(.)/; + +Also, when pessimizing if the code contains C<$`>, C<$&> or C<$'>, record the +presence of each variable separately, so that the determination of the substring +range is based on each variable separately. So performance-wise, + + $&; /x/ + +is now roughly equivalent to + + /(x)/ + +whereas previously it was like + + /^(.*)(x)(.*)$/ + +and + + $&; $'; /x/ + +is now roughly equivalent to + + /(x)(.*)$/ + +etc. + +=back + +=head1 Modules and Pragmata + +=head2 Updated Modules and Pragmata + +=over 4 + +=item * + +L<Archive::Tar> has been upgraded from version 1.88 to 1.90. This adds +documentation fixes. + +=item * + +L<B> has been upgraded from version 1.37 to 1.38. This makes the module work +with the new pad API. + +=item * + +L<B::Concise> has been upgraded from version 0.92 to 0.93. This adds support +for the new C<OpMAYBE_TRUEBOOL> and C<OPpTRUEBOOL> flags. + +=item * + +L<B::Deparse> has been upgraded from version 1.16 to 1.17. This suppresses +trailing semicolons in formats. + +=item * + +L<CPANPLUS> has been upgraded from version 0.9130 to 0.9131. This resolves +issues with the SQLite source engine. + +=item * + +L<DB_File> has been upgraded from version 1.826 to 1.827. The main Perl module +no longer uses the C<"@_"> construct. + +=item * + +L<Devel::Peek> has been upgraded from version 1.09 to 1.10. This fixes +compilation with C++ compilers and makes the module work with the new pad API. + +=item * + +L<DynaLoader> has been upgraded from version 1.15 to 1.16. This fixes warnings +about using C<CODE> sections without an C<OUTPUT> section. + +=item * + +L<ExtUtils::ParseXS> has been upgraded from version 3.17 to 3.18. This avoids a +bogus warning for initialised XSUB non-parameters [perl #112776]. + +=item * + +L<File::Copy> has been upgraded from version 2.23 to 2.24. C<copy()> no longer +zeros files when copying into the same directory, and also now fails (as it has +long been documented to do) when attempting to copy a file over itself. + +=item * + +L<File::Find> has been upgraded from version 1.21 to 1.22. This fixes +inconsistent unixy path handling on VMS. + +=item * + +L<IPC::Open3> has been upgraded from version 1.12 to 1.13. The C<open3()> +function no longer uses C<POSIX::close()> to close file descriptors since that +breaks the ref-counting of file descriptors done by PerlIO in cases where the +file descriptors are shared by PerlIO streams, leading to attempts to close the +file descriptors a second time when any such PerlIO streams are closed later on. + +=item * + +L<Locale::Codes> has been upgraded from version 3.22 to 3.23. It includes some +new codes. + +=item * + +L<Module::CoreList> has been upgraded from version 2.71 to 2.73. This restores +compatibility with older versions of perl and cleans up the corelist data for +various modules. + +=item * + +L<Opcode> has been upgraded from version 1.23 to 1.24 to reflect the removal of +the boolkeys opcode and the addition of the clonecv, introcv and padcv +opcodes. + +=item * + +L<Socket> has been upgraded from version 2.004 to 2.006. +C<unpack_sockaddr_in()> and C<unpack_sockaddr_in6()> now return just the IP +address in scalar context, and C<inet_ntop()> now guards against incorrect +length scalars being passed in. + +=item * + +L<Storable> has been upgraded from version 2.38 to 2.39. This contains various +bugfixes, including compatibility fixes for older versions of Perl and vstring +handling. + +=item * + +L<Sys::Syslog> has been upgraded from version 0.31 to 0.32. This includes +several documentation and bug fixes. + +=item * + +L<threads::shared> has been upgraded from version 1.40 to 1.41. This adds the +option to warn about or ignore attempts to clone structures that can't be +cloned, as opposed to just unconditionally dying in that case. + +=item * + +L<version> has been upgraded from version 0.99 to 0.9901. + +=item * + +L<XSLoader> has been upgraded from version 0.15 to 0.16. + +=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 Warnings + +=over 4 + +=item * + +L<Experimental "%s" subs not enabled|perldiag/"Experimental "%s" subs not enabled"> + +(F) To use lexical subs, you must first enable them: + + no warnings 'experimental:lexical_subs'; + use feature 'lexical_subs'; + my sub foo { ... } + +=item * + +L<Subroutine "&%s" is not available|perldiag/"Subroutine "&%s" is not available"> + +(W closure) During compilation, an inner named subroutine or eval is +attempting to capture an outer lexical subroutine that is not currently +available. This can happen for one of two reasons. First, the lexical +subroutine may be declared in an outer anonymous subroutine that has not +yet been created. (Remember that named subs are created at compile time, +while anonymous subs are created at run-time.) For example, + + sub { my sub a {...} sub f { \&a } } + +At the time that f is created, it can't capture the current the "a" sub, +since the anonymous subroutine hasn't been created yet. Conversely, the +following won't give a warning since the anonymous subroutine has by now +been created and is live: + + sub { my sub a {...} eval 'sub f { \&a }' }->(); + +The second situation is caused by an eval accessing a variable that has +gone out of scope, for example, + + sub f { + my sub a {...} + sub { eval '\&a' } + } + f()->(); + +Here, when the '\&a' in the eval is being compiled, f() is not currently +being executed, so its &a is not available for capture. + +=item * + +L<"%s" subroutine &%s masks earlier declaration in same %s|perldiag/"%s" subroutine &%s masks earlier declaration in same %s> + +(W misc) A "my" or "state" subroutine has been redeclared in the +current scope or statement, effectively eliminating all access to +the previous instance. This is almost always a typographical error. +Note that the earlier subroutine will still exist until the end of +the scope or until all closure references to it are destroyed. + +=item * + +L<The %s feature is experimental|perldiag/"The %s feature is experimental"> + +(S experimental) This warning is emitted if you enable an experimental +feature via C<use feature>. Simply suppress the warning if you want +to use the feature, but know that in doing so you are taking the risk +of using an experimental feature which may change or be removed in a +future Perl version: + + no warnings "experimental:lexical_subs"; + use feature "lexical_subs"; + +=item * + +L<sleep(%u) too large|perldiag/"sleep(%u) too large"> + +(W overflow) You called C<sleep> with a number that was larger than it can +reliably handle and C<sleep> probably slept for less time than requested. + +=back + +=head2 Changes to Existing Diagnostics + +=over 4 + +=item * + +L<vector argument not supported with alpha versions|perldiag/vector argument not supported with alpha versions> + +This warning was not suppressable, even with C<no warnings>. Now it is +suppressible, and has been moved from the "internal" category to the +"printf" category. + +=item * + +C<< Can't do {n,m} with n > m in regex; marked by <-- HERE in m/%s/ >> + +This fatal error has been turned into a warning that reads: + +L<< Quantifier {n,m} with n > m can't match in regex | perldiag/Quantifier {n,m} with n > m can't match in regex >> + +(W regexp) Minima should be less than or equal to maxima. If you really want +your regexp to match something 0 times, just put {0}. + +=back + +=head1 Configuration and Compilation + +=over 4 + +=item * + +F<Configure> will now correctly detect C<isblank()> when compiling with a C++ +compiler. + +=back + +=head1 Platform Support + +=head2 Discontinued Platforms + +=over 4 + +=item VM/ESA + +Support for VM/ESA has been removed. The port was tested on 2.3.0, which +IBM ended service on in March 2002. 2.4.0 ended service in June 2003, and +was superseded by Z/VM. The current version of Z/VM is V6.2.0, and scheduled +for end of service on 2015/04/30. + +=back + +=head2 Platform-Specific Notes + +=over 4 + +=item Win32 + +Fixed a problem where perl could crash while cleaning up threads (including the +main thread) in threaded debugging builds on Win32 and possibly other platforms +[perl #114496]. + +A rare race condition that would lead to L<sleep|perlfunc/sleep> taking more +time than requested, and possibly even hanging, has been fixed [perl #33096]. + +=item Solaris + +In Configure, avoid running sed commands with flags not supported on Solaris. + +=item Darwin + +Stop hardcoding an alignment on 8 byte boundaries to fix builds using +-Dusemorebits. + +=item VMS + +Fix linking on builds configured with -Dusemymalloc=y. + +=back + +=head1 Internal Changes + +=over 4 + +=item * + +The APIs for accessing lexical pads have changed considerably. + +C<PADLIST>s are now longer C<AV>s, but their own type instead. C<PADLIST>s now +contain a C<PAD> and a C<PADNAMELIST> of C<PADNAME>s, rather than C<AV>s for the +pad and the list of pad names. C<PAD>s, C<PADNAMELIST>s, and C<PADNAME>s are to +be accessed as such through the newly added pad API instead of the plain C<AV> +and C<SV> APIs. See L<perlapi> for details. + +=item * + +In the regex API, the numbered capture callbacks are passed an index +indicating what match variable is being accessed. There are special +index values for the C<$`, $&, $&> variables. Previously the same three +values were used to retrieve C<${^PREMATCH}, ${^MATCH}, ${^POSTMATCH}> +too, but these have now been assigned three separate values. See +L<perlreapi/Numbered capture callbacks>. + +=item * + +C<PL_sawampersand> was previously a boolean indicating that any of +C<$`, $&, $&> had been seen; it now contains three one-bit flags +indicating the presence of each of the variables individually. + +=back + +=head1 Selected Bug Fixes + +=over 4 + +=item * + +The error "Can't localize through a reference" had disappeared in 5.16.0 +when C<local %$ref> appeared on the last line of an lvalue subroutine. +This error disappeared for C<\local %$ref> in perl 5.8.1. It has now +been restored. + +=item * + +The parsing of here-docs has been improved significantly, fixing several +parsing bugs and crashes and one memory leak, and correcting wrong +subsequent line numbers under certain conditions. + +=item * + +Inside an eval, the error message for an unterminated here-doc no longer +has a newline in the middle of it [perl #70836]. + +=item * + +A substitution inside a substitution pattern (C<s/${s|||}//>) no longer +confuses the parser. + +=item * + +It may be an odd place to allow comments, but C<s//"" # hello/e> has +always worked, I<unless> there happens to be a null character before the +first #. Now it works even in the presence of nulls. + +=item * + +An invalid range in C<tr///> or C<y///> no longer results in a memory leak. + +=item * + +String eval no longer treats a semicolon-delimited quote-like operator at +the very end (C<eval 'q;;'>) as a syntax error. + +=item * + +C<< warn {$_ => 1} + 1 >> is no longer a syntax error. The parser used to +get confused with certain list operators followed by an anonymous hash and +then an infix operator that shares its form with a unary operator. + +=item * + +C<(caller $n)[6]> (which gives the text of the eval) used to return the +actual parser buffer. Modifying it could result in crashes. Now it always +returns a copy. The string returned no longer has "\n;" tacked on to the +end. The returned text also includes here-doc bodies, which used to be +omitted. + +=item * + +Reset the utf8 position cache when accessing magical variables to avoid the +string buffer and the utf8 position cache getting out of sync +[perl #114410]. + +=item * + +Various cases of get magic being called twice for magical utf8 strings have been +fixed. + +=item * + +This code (when not in the presence of C<$&> etc) + + $_ = 'x' x 1_000_000; + 1 while /(.)/; + +used to skip the buffer copy for performance reasons, but suffered from C<$1> +etc changing if the original string changed. That's now been fixed. + +=item * + +Perl doesn't use PerlIO anymore to report out of memory messages, as PerlIO +might attempt to allocate more memory. + +=item * + +In a regular expression, if something is quantified with C<{n,m}> +where C<S<n E<gt> m>>, it can't possibly match. Previously this was a fatal error, +but now is merely a warning (and that something won't match). [perl #82954]. + +=item * + +It used to be possible for formats defined in subroutines that have +subsequently been undefined and redefined to close over variables in the +wrong pad (the newly-defined enclosing sub), resulting in crashes or +"Bizarre copy" errors. + +=item * + +Redefinition of XSUBs at run time could produce warnings with the wrong +line number. + +=item * + +The %vd sprintf format does not support version objects for alpha versions. +It used to output the format itself (%vd) when passed an alpha version, and +also emit an "Invalid conversion in printf" warning. It no longer does, +but produces the empty string in the output. It also no longer leaks +memory in this case. + +=item * + +A bug fix in an earlier 5.17.x release caused C<no a a 3> (a syntax error) +to result in a bad read or assertion failure, because an op was being freed +twice. + +=item * + +C<< $obj->SUPER::method >> calls in the main package could fail if the +SUPER package had already been accessed by other means. + +=item * + +Stash aliasing (C<*foo:: = *bar::>) no longer causes SUPER calls to ignore +changes to methods or @ISA or use the wrong package. + +=item * + +Method calls on packages whose names end in ::SUPER are no longer treated +as SUPER method calls, resulting in failure to find the method. +Furthermore, defining subroutines in such packages no longer causes them to +be found by SUPER method calls on the containing package [perl #114924]. + +=back + +=head1 Known Problems + +=over 4 + +=item * + +Changes in the lexical pad API break some CPAN modules. + +To avoid having to patch those modules again later if we change pads from AVs +into their own types, APIs for accessing the contents of pads have been added. + +=back + +=head1 Acknowledgements + +Perl 5.17.4 represents approximately 4 weeks of development since Perl 5.17.3 +and contains approximately 82,000 lines of changes across 360 files from 37 +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.17.4: + +Abhijit Menon-Sen, Andy Dougherty, Aristotle Pagaltzis, Chris 'BinGOs' +Williams, Colin Kuskie, Craig A. Berry, Daniel Dragan, David Golden, David +Leadbeater, David Mitchell, David Nicol, Dominic Hargreaves, Father +Chrysostomos, Florian Ragwitz, H.Merijn Brand, James E Keenan, Jerry D. Hedden, +Jesse Luehrs, John Peacock, Karen Etheridge, Karl Williamson, Leon Timmermans, +Michael G Schwern, Nicholas Clark, Peter Martini, Rafael Garcia-Suarez, Ricardo +Signes, Shawn M Moore, Shlomi Fish, Steffen Müller, Steve Hay, Sullivan Beck, +Sébastien Aperghis-Tramoni, Tony Cook, Vincent Pit, Yves Orton. + +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 52eaf8f1f5..fd3e6274a7 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -2,341 +2,140 @@ =head1 NAME -perldelta - what is new for perl v5.17.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.17.5 =head1 DESCRIPTION -This document describes differences between the 5.17.3 release and the 5.17.4 +This document describes differences between the 5.17.4 release and the 5.17.5 release. -If you are upgrading from an earlier release such as 5.17.2, first read -L<perl5173delta>, which describes differences between 5.17.2 and 5.17.3. - -=head1 Core Enhancements - -=head2 Latest Unicode 6.2 beta is included - -This is supposed to be the final data for 6.2, unless glitches are -found. The earlier experimental 6.2 beta data has been reverted, and -this used instead. Not all the changes that were proposed for 6.2 and -that were in the earlier beta versions are actually going into 6.2. In -particular, there are no changes from 6.1 in the General_Category of any -characters. 6.2 does revise the C<\X> handling for the REGIONAL -INDICATOR characters that were added in Unicode 6.0. Perl now for the -first time fully handles this revision. - -=head2 New DTrace probes - -The following new DTrace probes have been added: - -=over 4 - -=item C<op-entry> - -=item C<loading-file> - -=item C<loaded-file> - -=back +If you are upgrading from an earlier release such as 5.17.3, first read +L<perl5174delta>, which describes differences between 5.17.3 and 5.17.4. -=head2 C<${^LAST_FH}> +=head1 Notice -This new variable provides access to the filehandle that was last read. -This is the handle used by C<$.> and by C<tell> and C<eof> without -arguments. +XXX Any important notices here -=head2 Looser here-doc parsing - -Here-doc terminators no longer require a terminating newline character when -they occur at the end of a file. This was already the case at the end of a -string eval [perl #65838]. - -=head2 New mechanism for experimental features - -Newly-added experimental features will now require this incantation: - - no warnings "experimental:feature_name"; - use feature "feature_name"; # would warn without the prev line - -There is a new warnings category, called "experimental", containing -warnings that the L<feature> pragma emits when enabling experimental -features. - -Newly-added experimental features will also be given special warning IDs, -which consist of "experimental:" followed by the name of the feature. (The -plan is to extend this mechanism eventually to all warnings, to allow them -to be enabled or disabled individually, and not just by category.) - -By saying - - no warnings "experimental:feature_name"; - -you are taking responsibility for any breakage that future changes to, or -removal of, the feature may cause. - -=head2 Lexical subroutines - -This new feature is still considered experimental. To enable it, use the -mechanism described above: - - use 5.018; - no warnings "experimental:lexical_subs"; - use feature "lexical_subs"; +=head1 Core Enhancements -You can now declare subroutines with C<state sub foo>, C<my sub foo>, and -C<our sub foo>. (C<state sub> requires that the "state" feature be -enabled, unless you write it as C<CORE::state sub foo>.) +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. -C<state sub> creates a subroutine visible within the lexical scope in which -it is declared. The subroutine is shared between calls to the outer sub. +[ List each enhancement as a =head2 entry ] -C<my sub> declares a lexical subroutine that is created each time the -enclosing block is entered. C<state sub> is generally slightly faster than -C<my sub>. +=head1 Security -C<our sub> declares a lexical alias to the package subroutine of the same -name. +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. -See L<perlsub/Lexical Subroutines>. +[ List each security issue as a =head2 entry ] =head1 Incompatible Changes -=head2 Here-doc parsing +XXX For a release on a stable branch, this section aspires to be: -The body of a here-document inside a quote-like operator now always begins -on the line after the "<<foo" marker. Previously, it was documented to -begin on the line following the containing quote-like operator, but that -was only sometimes the case [perl #114040]. + 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. -=head2 Stricter parsing of substitution replacement +[ List each incompatible change as a =head2 entry ] -It is no longer possible to abuse the way the parser parses C<s///e> like -this: +=head1 Deprecations - %_=(_,"Just another "); - $_="Perl hacker,\n"; - s//_}->{_/e;print +XXX Any deprecated features, syntax, modules etc. should be listed here. In +particular, deprecated modules should be listed here even if they are listed as +an updated module in the L</Modules and Pragmata> section. -=head2 Interaction of lexical and default warnings +[ List each deprecation as a =head2 entry ] -Turning on any lexical warnings used first to disable all default warnings -if lexical warnings were not already enabled: - - $*; # deprecation warning - use warnings "void"; - $#; # void warning; no deprecation warning - -Now, the debugging, deprecated, glob, inplace and malloc warnings -categories are left on when turning on lexical warnings (unless they are -turned off by C<no warnings>, of course). - -This may cause deprecation warnings to occur in code that used to be free -of warnings. - -Those are the only categories consisting only of default warnings. Default -warnings in other categories are still disabled by C<use warnings -"category">, as we do not yet have the infrastructure for controlling -individual warnings. - -=head2 C<state sub> and C<our sub> - -Due to an accident of history, C<state sub> and C<our sub> were equivalent -to a plain C<sub>, so one could even create an anonymous sub with -C<our sub { ... }>. These are now disallowed outside of the "lexical_subs" -feature. Under the "lexical_subs" feature they have new meanings described -in L<perlsub/Lexical Subroutines>. - -=head2 C<gv_fetchmeth_*> and SUPER +=head1 Performance Enhancements -The various C<gv_fetchmeth_*> XS functions used to treat a package whose -named ended with ::SUPER specially. A method lookup on the Foo::SUPER -package would be treated as a SUPER method lookup on the Foo package. This -is no longer the case. To do a SUPER lookup, pass the Foo stash and the -GV_SUPER flag. +XXX Changes which enhance performance without changing behaviour go here. +There may well be none in a stable release. -=head1 Performance Enhancements +[ List each enhancement as a =item entry ] =over 4 =item * -Speed up in regular expression matching against Unicode properties. The -largest gain is for C<\X>, the Unicode "extended grapheme cluster". The -gain for it is about 35% - 40%. Bracketed character classes, e.g., -C<[0-9\x{100}]> containing code points above 255 are also now faster. +XXX -=item * +=back -On platforms supporting it, several former macros are now implemented as static -inline functions. This should speed things up slightly on non-GCC platforms. +=head1 Modules and Pragmata -=item * +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. -Apply the optimisation of hashes in boolean context, such as in C<if> or C<and>, -to constructs in non-void context. +[ Within each section, list entries as a =item entry ] -=item * +=head2 New Modules and Pragmata -Extend the optimisation of hashes in boolean context to C<scalar(%hash)>, -C<%hash ? ... : ...>, and C<sub { %hash || ... }>. +=over 4 =item * -When making a copy of the string being matched against (so that $1, $& et al -continue to show the correct value even if the original string is subsequently -modified), only copy that substring of the original string needed for the -capture variables, rather than copying the whole string. - -This is a big win for code like - - $&; - $_ = 'x' x 1_000_000; - 1 while /(.)/; - -Also, when pessimizing if the code contains C<$`>, C<$&> or C<$'>, record the -presence of each variable separately, so that the determination of the substring -range is based on each variable separately. So performance-wise, - - $&; /x/ - -is now roughly equivalent to - - /(x)/ - -whereas previously it was like - - /^(.*)(x)(.*)$/ - -and - - $&; $'; /x/ - -is now roughly equivalent to - - /(x)(.*)$/ - -etc. +XXX =back -=head1 Modules and Pragmata - =head2 Updated Modules and Pragmata =over 4 =item * -L<Archive::Tar> has been upgraded from version 1.88 to 1.90. This adds -documentation fixes. - -=item * - -L<B> has been upgraded from version 1.37 to 1.38. This makes the module work -with the new pad API. - -=item * - -L<B::Concise> has been upgraded from version 0.92 to 0.93. This adds support -for the new C<OpMAYBE_TRUEBOOL> and C<OPpTRUEBOOL> flags. - -=item * - -L<B::Deparse> has been upgraded from version 1.16 to 1.17. This suppresses -trailing semicolons in formats. - -=item * - -L<CPANPLUS> has been upgraded from version 0.9130 to 0.9131. This resolves -issues with the SQLite source engine. - -=item * - -L<DB_File> has been upgraded from version 1.826 to 1.827. The main Perl module -no longer uses the C<"@_"> construct. - -=item * - -L<Devel::Peek> has been upgraded from version 1.09 to 1.10. This fixes -compilation with C++ compilers and makes the module work with the new pad API. - -=item * - -L<DynaLoader> has been upgraded from version 1.15 to 1.16. This fixes warnings -about using C<CODE> sections without an C<OUTPUT> section. - -=item * +L<XXX> has been upgraded from version A.xx to B.yy. -L<ExtUtils::ParseXS> has been upgraded from version 3.17 to 3.18. This avoids a -bogus warning for initialised XSUB non-parameters [perl #112776]. - -=item * - -L<File::Copy> has been upgraded from version 2.23 to 2.24. C<copy()> no longer -zeros files when copying into the same directory, and also now fails (as it has -long been documented to do) when attempting to copy a file over itself. - -=item * - -L<File::Find> has been upgraded from version 1.21 to 1.22. This fixes -inconsistent unixy path handling on VMS. - -=item * - -L<IPC::Open3> has been upgraded from version 1.12 to 1.13. The C<open3()> -function no longer uses C<POSIX::close()> to close file descriptors since that -breaks the ref-counting of file descriptors done by PerlIO in cases where the -file descriptors are shared by PerlIO streams, leading to attempts to close the -file descriptors a second time when any such PerlIO streams are closed later on. +=back -=item * +=head2 Removed Modules and Pragmata -L<Locale::Codes> has been upgraded from version 3.22 to 3.23. It includes some -new codes. +=over 4 =item * -L<Module::CoreList> has been upgraded from version 2.71 to 2.73. This restores -compatibility with older versions of perl and cleans up the corelist data for -various modules. - -=item * +XXX -L<Opcode> has been upgraded from version 1.23 to 1.24 to reflect the removal of -the boolkeys opcode and the addition of the clonecv, introcv and padcv -opcodes. +=back -=item * +=head1 Documentation -L<Socket> has been upgraded from version 2.004 to 2.006. -C<unpack_sockaddr_in()> and C<unpack_sockaddr_in6()> now return just the IP -address in scalar context, and C<inet_ntop()> now guards against incorrect -length scalars being passed in. +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 * +=head2 New Documentation -L<Storable> has been upgraded from version 2.38 to 2.39. This contains various -bugfixes, including compatibility fixes for older versions of Perl and vstring -handling. +XXX Changes which create B<new> files in F<pod/> go here. -=item * +=head3 L<XXX> -L<Sys::Syslog> has been upgraded from version 0.31 to 0.32. This includes -several documentation and bug fixes. +XXX Description of the purpose of the new file here -=item * +=head2 Changes to Existing Documentation -L<threads::shared> has been upgraded from version 1.40 to 1.41. This adds the -option to warn about or ignore attempts to clone structures that can't be -cloned, as opposed to just unconditionally dying in that case. +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. -=item * +=head3 L<XXX> -L<version> has been upgraded from version 0.99 to 0.9901. +=over 4 =item * -L<XSLoader> has been upgraded from version 0.15 to 0.16. +XXX Description of the change here =back @@ -346,372 +145,206 @@ 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 Warnings - -=over 4 +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. -=item * - -L<Experimental "%s" subs not enabled|perldiag/"Experimental "%s" subs not enabled"> - -(F) To use lexical subs, you must first enable them: - - no warnings 'experimental:lexical_subs'; - use feature 'lexical_subs'; - my sub foo { ... } - -=item * - -L<Subroutine "&%s" is not available|perldiag/"Subroutine "&%s" is not available"> - -(W closure) During compilation, an inner named subroutine or eval is -attempting to capture an outer lexical subroutine that is not currently -available. This can happen for one of two reasons. First, the lexical -subroutine may be declared in an outer anonymous subroutine that has not -yet been created. (Remember that named subs are created at compile time, -while anonymous subs are created at run-time.) For example, - - sub { my sub a {...} sub f { \&a } } - -At the time that f is created, it can't capture the current the "a" sub, -since the anonymous subroutine hasn't been created yet. Conversely, the -following won't give a warning since the anonymous subroutine has by now -been created and is live: - - sub { my sub a {...} eval 'sub f { \&a }' }->(); +=head2 New Diagnostics -The second situation is caused by an eval accessing a variable that has -gone out of scope, for example, +XXX Newly added diagnostic messages go under here, separated into New Errors +and New Warnings - sub f { - my sub a {...} - sub { eval '\&a' } - } - f()->(); +=head3 New Errors -Here, when the '\&a' in the eval is being compiled, f() is not currently -being executed, so its &a is not available for capture. +=over 4 =item * -L<"%s" subroutine &%s masks earlier declaration in same %s|perldiag/"%s" subroutine &%s masks earlier declaration in same %s> - -(W misc) A "my" or "state" subroutine has been redeclared in the -current scope or statement, effectively eliminating all access to -the previous instance. This is almost always a typographical error. -Note that the earlier subroutine will still exist until the end of -the scope or until all closure references to it are destroyed. +XXX L<message|perldiag/"message"> -=item * - -L<The %s feature is experimental|perldiag/"The %s feature is experimental"> +=back -(S experimental) This warning is emitted if you enable an experimental -feature via C<use feature>. Simply suppress the warning if you want -to use the feature, but know that in doing so you are taking the risk -of using an experimental feature which may change or be removed in a -future Perl version: +=head3 New Warnings - no warnings "experimental:lexical_subs"; - use feature "lexical_subs"; +=over 4 =item * -L<sleep(%u) too large|perldiag/"sleep(%u) too large"> - -(W overflow) You called C<sleep> with a number that was larger than it can -reliably handle and C<sleep> probably slept for less time than requested. +XXX L<message|perldiag/"message"> =back =head2 Changes to Existing Diagnostics +XXX Changes (i.e. rewording) of diagnostic messages go here + =over 4 =item * -L<vector argument not supported with alpha versions|perldiag/vector argument not supported with alpha versions> +XXX Describe change here -This warning was not suppressable, even with C<no warnings>. Now it is -suppressible, and has been moved from the "internal" category to the -"printf" category. - -=item * - -C<< Can't do {n,m} with n > m in regex; marked by <-- HERE in m/%s/ >> +=back -This fatal error has been turned into a warning that reads: +=head1 Utility Changes -L<< Quantifier {n,m} with n > m can't match in regex | perldiag/Quantifier {n,m} with n > m can't match in regex >> +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>. -(W regexp) Minima should be less than or equal to maxima. If you really want -your regexp to match something 0 times, just put {0}. +[ 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. ] -=back - -=head1 Configuration and Compilation +=head3 L<XXX> =over 4 =item * -F<Configure> will now correctly detect C<isblank()> when compiling with a C++ -compiler. +XXX =back -=head1 Platform Support - -=head2 Discontinued Platforms - -=over 4 - -=item VM/ESA - -Support for VM/ESA has been removed. The port was tested on 2.3.0, which -IBM ended service on in March 2002. 2.4.0 ended service in June 2003, and -was superseded by Z/VM. The current version of Z/VM is V6.2.0, and scheduled -for end of service on 2015/04/30. +=head1 Configuration and Compilation -=back +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. -=head2 Platform-Specific Notes +[ List changes as a =item entry ]. =over 4 -=item Win32 - -Fixed a problem where perl could crash while cleaning up threads (including the -main thread) in threaded debugging builds on Win32 and possibly other platforms -[perl #114496]. - -A rare race condition that would lead to L<sleep|perlfunc/sleep> taking more -time than requested, and possibly even hanging, has been fixed [perl #33096]. - -=item Solaris - -In Configure, avoid running sed commands with flags not supported on Solaris. - -=item Darwin - -Stop hardcoding an alignment on 8 byte boundaries to fix builds using --Dusemorebits. - -=item VMS +=item * -Fix linking on builds configured with -Dusemymalloc=y. +XXX =back -=head1 Internal Changes +=head1 Testing -=over 4 - -=item * +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. -The APIs for accessing lexical pads have changed considerably. - -C<PADLIST>s are now longer C<AV>s, but their own type instead. C<PADLIST>s now -contain a C<PAD> and a C<PADNAMELIST> of C<PADNAME>s, rather than C<AV>s for the -pad and the list of pad names. C<PAD>s, C<PADNAMELIST>s, and C<PADNAME>s are to -be accessed as such through the newly added pad API instead of the plain C<AV> -and C<SV> APIs. See L<perlapi> for details. - -=item * +[ List each test improvement as a =item entry ] -In the regex API, the numbered capture callbacks are passed an index -indicating what match variable is being accessed. There are special -index values for the C<$`, $&, $&> variables. Previously the same three -values were used to retrieve C<${^PREMATCH}, ${^MATCH}, ${^POSTMATCH}> -too, but these have now been assigned three separate values. See -L<perlreapi/Numbered capture callbacks>. +=over 4 =item * -C<PL_sawampersand> was previously a boolean indicating that any of -C<$`, $&, $&> had been seen; it now contains three one-bit flags -indicating the presence of each of the variables individually. +XXX =back -=head1 Selected Bug Fixes - -=over 4 - -=item * - -The error "Can't localize through a reference" had disappeared in 5.16.0 -when C<local %$ref> appeared on the last line of an lvalue subroutine. -This error disappeared for C<\local %$ref> in perl 5.8.1. It has now -been restored. +=head1 Platform Support -=item * +XXX Any changes to platform support should be listed in the sections below. -The parsing of here-docs has been improved significantly, fixing several -parsing bugs and crashes and one memory leak, and correcting wrong -subsequent line numbers under certain conditions. +[ Within the sections, list each platform as a =item entry with specific +changes as paragraphs below it. ] -=item * +=head2 New Platforms -Inside an eval, the error message for an unterminated here-doc no longer -has a newline in the middle of it [perl #70836]. +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. -=item * +=over 4 -A substitution inside a substitution pattern (C<s/${s|||}//>) no longer -confuses the parser. +=item XXX-some-platform -=item * +XXX -It may be an odd place to allow comments, but C<s//"" # hello/e> has -always worked, I<unless> there happens to be a null character before the -first #. Now it works even in the presence of nulls. +=back -=item * +=head2 Discontinued Platforms -An invalid range in C<tr///> or C<y///> no longer results in a memory leak. +XXX List any platforms that this version of perl no longer compiles on. -=item * +=over 4 -String eval no longer treats a semicolon-delimited quote-like operator at -the very end (C<eval 'q;;'>) as a syntax error. +=item XXX-some-platform -=item * +XXX -C<< warn {$_ => 1} + 1 >> is no longer a syntax error. The parser used to -get confused with certain list operators followed by an anonymous hash and -then an infix operator that shares its form with a unary operator. +=back -=item * +=head2 Platform-Specific Notes -C<(caller $n)[6]> (which gives the text of the eval) used to return the -actual parser buffer. Modifying it could result in crashes. Now it always -returns a copy. The string returned no longer has "\n;" tacked on to the -end. The returned text also includes here-doc bodies, which used to be -omitted. +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. -=item * +=over 4 -Reset the utf8 position cache when accessing magical variables to avoid the -string buffer and the utf8 position cache getting out of sync -[perl #114410]. +=item XXX-some-platform -=item * +XXX -Various cases of get magic being called twice for magical utf8 strings have been -fixed. +=back -=item * +=head1 Internal Changes -This code (when not in the presence of C<$&> etc) +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. - $_ = 'x' x 1_000_000; - 1 while /(.)/; +[ List each change as a =item entry ] -used to skip the buffer copy for performance reasons, but suffered from C<$1> -etc changing if the original string changed. That's now been fixed. +=over 4 =item * -Perl doesn't use PerlIO anymore to report out of memory messages, as PerlIO -might attempt to allocate more memory. +XXX -=item * - -In a regular expression, if something is quantified with C<{n,m}> -where C<S<n E<gt> m>>, it can't possibly match. Previously this was a fatal error, -but now is merely a warning (and that something won't match). [perl #82954]. +=back -=item * +=head1 Selected Bug Fixes -It used to be possible for formats defined in subroutines that have -subsequently been undefined and redefined to close over variables in the -wrong pad (the newly-defined enclosing sub), resulting in crashes or -"Bizarre copy" errors. +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 * +[ List each fix as a =item entry ] -Redefinition of XSUBs at run time could produce warnings with the wrong -line number. +=over 4 =item * -The %vd sprintf format does not support version objects for alpha versions. -It used to output the format itself (%vd) when passed an alpha version, and -also emit an "Invalid conversion in printf" warning. It no longer does, -but produces the empty string in the output. It also no longer leaks -memory in this case. +XXX -=item * - -A bug fix in an earlier 5.17.x release caused C<no a a 3> (a syntax error) -to result in a bad read or assertion failure, because an op was being freed -twice. +=back -=item * +=head1 Known Problems -C<< $obj->SUPER::method >> calls in the main package could fail if the -SUPER package had already been accessed by other means. +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 ] -Stash aliasing (C<*foo:: = *bar::>) no longer causes SUPER calls to ignore -changes to methods or @ISA or use the wrong package. +=over 4 =item * -Method calls on packages whose names end in ::SUPER are no longer treated -as SUPER method calls, resulting in failure to find the method. -Furthermore, defining subroutines in such packages no longer causes them to -be found by SUPER method calls on the containing package [perl #114924]. +XXX =back -=head1 Known Problems +=head1 Obituary -=over 4 - -=item * - -Changes in the lexical pad API break some CPAN modules. - -To avoid having to patch those modules again later if we change pads from AVs -into their own types, APIs for accessing the contents of pads have been added. - -=back +XXX If any significant core contributor has died, we've added a short obituary +here. =head1 Acknowledgements -Perl 5.17.4 represents approximately 4 weeks of development since Perl 5.17.3 -and contains approximately 82,000 lines of changes across 360 files from 37 -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.17.4: - -Abhijit Menon-Sen, Andy Dougherty, Aristotle Pagaltzis, Chris 'BinGOs' -Williams, Colin Kuskie, Craig A. Berry, Daniel Dragan, David Golden, David -Leadbeater, David Mitchell, David Nicol, Dominic Hargreaves, Father -Chrysostomos, Florian Ragwitz, H.Merijn Brand, James E Keenan, Jerry D. Hedden, -Jesse Luehrs, John Peacock, Karen Etheridge, Karl Williamson, Leon Timmermans, -Michael G Schwern, Nicholas Clark, Peter Martini, Rafael Garcia-Suarez, Ricardo -Signes, Shawn M Moore, Shlomi Fish, Steffen Müller, Steve Hay, Sullivan Beck, -Sébastien Aperghis-Tramoni, Tony Cook, Vincent Pit, Yves Orton. - -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.17.4..HEAD =head1 Reporting Bugs diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template index 41cbd86ad9..b6c6988d11 100644 --- a/vms/descrip_mms.template +++ b/vms/descrip_mms.template @@ -326,7 +326,7 @@ x2p : [.x2p]$(DBG)a2p$(E) [.x2p]s2p.com [.x2p]find2perl.com extra.pods : miniperl @ @extra_pods.com -PERLDELTA_CURRENT = [.pod]perl5174delta.pod +PERLDELTA_CURRENT = [.pod]perl5175delta.pod $(PERLDELTA_CURRENT) : [.pod]perldelta.pod Copy/NoConfirm/Log $(MMS$SOURCE) $(MMS$TARGET) diff --git a/win32/Makefile b/win32/Makefile index 0edfd1566b..e59f6c95d0 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -1157,7 +1157,7 @@ utils: $(PERLEXE) $(X2P) copy ..\README.tw ..\pod\perltw.pod copy ..\README.vos ..\pod\perlvos.pod copy ..\README.win32 ..\pod\perlwin32.pod - copy ..\pod\perldelta.pod ..\pod\perl5174delta.pod + copy ..\pod\perldelta.pod ..\pod\perl5175delta.pod cd ..\win32 $(PERLEXE) $(PL2BAT) $(UTILS) $(PERLEXE) $(ICWD) ..\autodoc.pl .. @@ -1250,7 +1250,7 @@ distclean: realclean -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API -cd $(PODDIR) && del /f *.html *.bat roffitall \ - perl5174delta.pod perlaix.pod perlamiga.pod perlapi.pod \ + perl5175delta.pod perlaix.pod perlamiga.pod perlapi.pod \ perlbeos.pod perlbs2000.pod perlce.pod perlcn.pod \ perlcygwin.pod perldgux.pod perldos.pod perlepoc.pod \ perlfreebsd.pod perlhaiku.pod perlhpux.pod perlhurd.pod \ diff --git a/win32/makefile.mk b/win32/makefile.mk index da484cadaa..4f9918de50 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -1337,7 +1337,7 @@ utils: $(PERLEXE) $(X2P) copy ..\README.tw ..\pod\perltw.pod copy ..\README.vos ..\pod\perlvos.pod copy ..\README.win32 ..\pod\perlwin32.pod - copy ..\pod\perldelta.pod ..\pod\perl5174delta.pod + copy ..\pod\perldelta.pod ..\pod\perl5175delta.pod $(PERLEXE) $(PL2BAT) $(UTILS) $(PERLEXE) $(ICWD) ..\autodoc.pl .. $(PERLEXE) $(ICWD) ..\pod\perlmodlib.pl -q @@ -1429,7 +1429,7 @@ distclean: realclean -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API -cd $(PODDIR) && del /f *.html *.bat roffitall \ - perl5174delta.pod perlaix.pod perlamiga.pod perlapi.pod \ + perl5175delta.pod perlaix.pod perlamiga.pod perlapi.pod \ perlbeos.pod perlbs2000.pod perlce.pod perlcn.pod \ perlcygwin.pod perldgux.pod perldos.pod perlepoc.pod \ perlfreebsd.pod perlhaiku.pod perlhpux.pod perlhurd.pod \ diff --git a/win32/pod.mak b/win32/pod.mak index 79711e85db..2e998dd2b7 100644 --- a/win32/pod.mak +++ b/win32/pod.mak @@ -33,6 +33,7 @@ POD = perl.pod \ perl5172delta.pod \ perl5173delta.pod \ perl5174delta.pod \ + perl5175delta.pod \ perl561delta.pod \ perl56delta.pod \ perl581delta.pod \ @@ -157,6 +158,7 @@ MAN = perl.man \ perl5172delta.man \ perl5173delta.man \ perl5174delta.man \ + perl5175delta.man \ perl561delta.man \ perl56delta.man \ perl581delta.man \ @@ -281,6 +283,7 @@ HTML = perl.html \ perl5172delta.html \ perl5173delta.html \ perl5174delta.html \ + perl5175delta.html \ perl561delta.html \ perl56delta.html \ perl581delta.html \ @@ -405,6 +408,7 @@ TEX = perl.tex \ perl5172delta.tex \ perl5173delta.tex \ perl5174delta.tex \ + perl5175delta.tex \ perl561delta.tex \ perl56delta.tex \ perl581delta.tex \ |