summaryrefslogtreecommitdiff
path: root/pod
diff options
context:
space:
mode:
authorSteve Hay <steve.m.hay@googlemail.com>2012-08-20 16:57:26 +0100
committerSteve Hay <steve.m.hay@googlemail.com>2012-08-20 16:57:26 +0100
commit916c45d971c473a73835878db323f9b763574221 (patch)
tree15ebb8b5077955614d5f12227da664b3c9851ee3 /pod
parent707fe569d22afb88e064f9caf55184bd2a4ddb2b (diff)
downloadperl-916c45d971c473a73835878db323f9b763574221.tar.gz
Make new perldelta for 5.17.4
Diffstat (limited to 'pod')
-rw-r--r--pod/.gitignore2
-rw-r--r--pod/perl.pod1
-rw-r--r--pod/perl5173delta.pod583
-rw-r--r--pod/perldelta.pod533
4 files changed, 751 insertions, 368 deletions
diff --git a/pod/.gitignore b/pod/.gitignore
index 6e7aaf9fde..50b5933536 100644
--- a/pod/.gitignore
+++ b/pod/.gitignore
@@ -59,7 +59,7 @@
/roffitall
# generated
-/perl5173delta.pod
+/perl5174delta.pod
/perlapi.pod
/perlintern.pod
*.html
diff --git a/pod/perl.pod b/pod/perl.pod
index 2956a8a24d..4233b5b928 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
+ perl5173delta Perl changes in version 5.17.3
perl5172delta Perl changes in version 5.17.2
perl5171delta Perl changes in version 5.17.1
perl5170delta Perl changes in version 5.17.0
diff --git a/pod/perl5173delta.pod b/pod/perl5173delta.pod
new file mode 100644
index 0000000000..c9d6d0c82b
--- /dev/null
+++ b/pod/perl5173delta.pod
@@ -0,0 +1,583 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5173delta - what is new for perl v5.17.3
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.17.2 release and the 5.17.3
+release.
+
+If you are upgrading from an earlier release such as 5.17.1, first read
+L<perl5172delta>, which describes differences between 5.17.1 and 5.17.2.
+
+=head1 Core Enhancements
+
+=head2 Computed Labels
+
+The loop controls C<next>, C<last> and C<redo>, and the special C<dump>
+operator, now allow arbitrary expressions to be used to compute labels at run
+time. Previously, any argument that was not a constant was treated as the
+empty string.
+
+=head1 Incompatible Changes
+
+=head2 C<$ENV{foo}=undef> deletes value from environ, like C<delete $ENV{foo}>
+
+This facilitates use of C<local()> with C<%ENV> entries. In previous versions
+of Perl, C<undef> was converted to the empty string.
+
+=head2 Defined values stored in environment are forced to byte strings
+
+A value stored in an environment variable has always been stringified. In this
+release, it is converted to be only a byte string. First, it is forced to be a
+only a string. Then if the string is utf8 and the equivalent of
+C<utf8::downgrade()> works, that result is used; otherwise, the equivalent of
+C<utf8::encode()> is used, and a warning is issued about wide characters
+(L</Diagnostics>).
+
+=head2 C<given> now aliases the global C<$_>
+
+Instead of assigning to an implicit lexical C<$_>, C<given> now makes the
+global C<$_> an alias for its argument, just like C<foreach>. However, it
+still uses lexical C<$_> if there is lexical C<$_> in scope (again, just like
+C<foreach>) [perl #114020].
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<B> has been upgraded from version 1.36 to 1.37. All C<CVf_*> and C<GVf_*>
+and more SV-related flag values are now provided as constants in the C<B::>
+namespace and available for export. The default export list has not changed.
+
+=item *
+
+L<B::Concise> has been upgraded from version 0.91 to 0.92. The C<-nobanner>
+option has been fixed, and C<format>s can now be dumped. When passed a sub
+name to dump, it will check also to see whether it is the name of a format. If
+a sub and a format share the same name, it will dump both.
+
+=item *
+
+L<B::Debug> has been upgraded from version 1.17 to 1.18. This adds support
+(experimentally) for C<B::PADLIST>, which will be added in Perl 5.17.4.
+
+=item *
+
+L<B::Deparse> has been upgraded from version 1.15 to 1.16. It now deparses
+loop controls with the correct precedence, and multiple statements in a
+C<format> line are also now deparsed correctly.
+
+=item *
+
+L<CGI> has been upgraded from version 3.59 to 3.60. Unrecognized HTML escape
+sequences are now handled better, problematic trailing newlines are no longer
+inserted after E<lt>formE<gt> tags by C<startform()> or C<start_form()>, and
+bogus "Insecure Dependency" warnings appearing with some versions of perl are
+now worked around.
+
+=item *
+
+L<Compress::Raw::Bzip2> has been upgraded from version 2.05201 to 2.055. The
+misuse of Perl's "magic" API has been fixed.
+
+=item *
+
+L<Compress::Raw::Zlib> has been upgraded from version 2.05401 to 2.056. The
+misuse of Perl's "magic" API has been fixed.
+
+=item *
+
+L<Compress::Zlib> has been upgraded from version 2.052 to 2.055. C<compress()>,
+C<uncompress()>, C<memGzip()> and C<memGunzip()> have been speeded up by making
+parameter validation more efficient.
+
+=item *
+
+L<Data::Dumper> has been upgraded from version 2.135_06 to 2.135_07. It has
+been optimized to only build a seen-scalar hash as necessary, thereby speeding
+up serialization drastically.
+
+=item *
+
+L<Devel::Peek> has been upgraded from version 1.08 to 1.09. The only change
+has been to the test script, to account for changes to some flags in perl's
+internals.
+
+=item *
+
+L<Encode> has been upgraded from version 2.44 to 2.47. The Mac alias x-mac-ce
+has been added, and various bugs have been fixed in Encode::Unicode,
+Encode::UTF7 and Encode::GSM0338.
+
+=item *
+
+L<Module::Build> has been upgraded from version 0.40 to 0.4003. A minor bug
+fix allows markup to be used around the leading "Name" in a POD "abstract"
+line, and some documentation improvements have been made.
+
+=item *
+
+L<Module::CoreList> has been upgraded from version 2.69 to 2.71. Version
+information is now stored as a delta, which greatly reduces the size of the
+F<CoreList.pm> file.
+
+=item *
+
+L<Module::Load::Conditional> has been upgraded from version 0.50 to 0.54.
+Various enhancements include the new use of Module::Metadata.
+
+=item *
+
+L<Module::Metadata> has been upgraded from version 1.000009 to 1.000011. The
+creation of a Module::Metadata object for a typical module file has been sped
+up by about 40%, and some spurious warnings about C<$VERSION>s have been
+suppressed.
+
+=item *
+
+L<Module::Pluggable> has been upgraded from version 4.0 to 4.3. Amongst other
+changes, triggers are now allowed on events, which gives a powerful way to
+modify behaviour.
+
+=item *
+
+L<perlfaq> has been upgraded from version 5.0150040 to 5.0150041. This
+contains a couple of minor corrections and lists one new editor.
+
+=item *
+
+L<Pod::Simple> has been upgraded from version 3.20 to 3.23. Numerous
+improvements have been made, mostly to Pod::Simple::XHTML, which also has a
+compatibility change: the C<codes_in_verbatim> option is now disabled by
+default. See F<cpan/Pod-Simple/ChangeLog> for the full details.
+
+=item *
+
+L<re> has been upgraded from version 0.21 to 0.22. Single character [class]es
+like C</[s]/> or C</[s]/i> are now optimized as if they did not have the
+brackets, i.e. C</s/> or C</s/i>.
+
+=item *
+
+L<Socket> has been upgraded from version 2.002 to 2.004. Constants and
+functions required for IP multicast source group membership have been added.
+
+=item *
+
+L<Storable> has been upgraded from version 2.37 to 2.38. It can now freeze and
+thaw vstrings correctly. This causes a slight incompatible change in the
+storage format, so the format version has increased to 2.9.
+
+=item *
+
+L<Sys::Syslog> has been upgraded from version 0.29 to 0.31. This contains
+several bug fixes relating to C<getservbyname()>, C<setlogsock()>and log levels
+in C<syslog()>, together with fixes for Windows, Haiku-OS and GNU/kFreeBSD.
+See F<cpan/Sys-Syslog/Changes> for the full details.
+
+=item *
+
+L<Term::ReadLine> has been upgraded from version 1.09 to 1.10. This fixes the
+use of the B<cpan> and B<cpanp> shells on Windows in the event that the current
+drive happens to contain a F<\dev\tty> file.
+
+=item *
+
+L<Text::Tabs> and L<Text::Wrap> have been upgraded from version 2009.0305 to
+2012.0818. Support for Unicode combining characters has been added to them
+both.
+
+=item *
+
+L<Time::Local> has been upgraded from version 1.2000 to 1.2300. Seconds values
+greater than 59 but less than 60 no longer cause C<timegm()> and C<timelocal()>
+to croak.
+
+=item *
+
+L<Unicode::UCD> has been upgraded from version 0.44 to 0.45. This has been
+modified slightly for reasons of perl internal use only.
+
+=item *
+
+L<Win32> has been upgraded from version 0.44 to 0.45. New APIs have been added
+for getting and setting the current code page.
+
+=item *
+
+L<Win32CORE> has been upgraded from version 0.02 to 0.03. The use of
+PERL_NO_GET_CONTEXT here has resulted in smaller machine code.
+
+=back
+
+=head1 Documentation
+
+=head2 Changes to Existing Documentation
+
+=head3 L<perlfunc>, L<perlop>
+
+=over 4
+
+=item *
+
+Loop control verbs (C<dump>, C<goto>, C<next>, C<last> and C<redo>) have always
+had the same precedence as assignment operators, but this was not documented
+until now.
+
+=back
+
+=head3 L<perlvar>
+
+=over 4
+
+=item *
+
+A caveat has been added to the documentation for C<$_> warning against the use
+of lexical C<$_> [perl #114020].
+
+=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<Unterminated delimiter for here document|perldiag/"Unterminated delimiter for here document">
+
+This message now occurs when a here document label has an initial quotation
+mark but the final quotation mark is missing.
+
+This replaces a bogus and misleading error message about not finding the label
+itself [perl #114104].
+
+=item *
+
+L<panic: child pseudo-process was never scheduled|perldiag/"panic: child pseudo-process was never scheduled">
+
+This error is thrown when a child pseudo-process in the ithreads implementation
+on Windows was not scheduled within the time period allowed and therefore was
+not able to initialize properly [perl #88840].
+
+=back
+
+=head3 New Warnings
+
+=over 4
+
+=item *
+
+L<Wide character in setenv|perldiag/"Wide character in %s">
+
+Attempts to put wide characters into environment variables via C<%ENV> now
+provoke this warning.
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item *
+
+The pager detection in F<Configure> has been improved to allow responses which
+specify options after the program name, e.g. B</usr/bin/less -R>, if the user
+accepts the default value. This helps B<perldoc> when handling ANSI escapes
+[perl #72156].
+
+=back
+
+=head1 Platform Support
+
+=head2 Discontinued Platforms
+
+=over 4
+
+=item UTS Global
+
+Support code relating to UTS global has been removed. UTS was a mainframe
+version of System V created by Amdahl, subsequently sold to UTS Global. The
+port has not been touched since before Perl 5.8.0, and UTS Global is now
+defunct.
+
+=back
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item Windows
+
+A new makefile option, USE_64_BIT_INT, has been added to the Windows makefiles.
+Set this to "define" when building a 32-bit perl if you want it to use 64-bit
+integers.
+
+Machine code size reductions, already made to the DLLs of XS modules in Perl
+5.17.2, have now been extended to the perl DLL itself.
+
+Building with VC++ 6.0 was inadvertently broken in Perl 5.17.2 but has now been
+fixed again.
+
+=item VMS
+
+The B<a2p> build has been fixed for the HP C++ compiler on OpenVMS.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+C<\w> now matches the code points U+200C (ZERO WIDTH NON-JOINER) and U+200D
+(ZERO WIDTH JOINER). C<\W> no longer matches these. This change is because
+Unicode corrected their definition of what C<\w> should match.
+
+=item *
+
+C<dump LABEL> no longer leaks its label.
+
+=item *
+
+Constant folding no longer changes the behaviour of functions like C<stat()>
+and C<truncate()> that can take either filenames or handles.
+C<stat 1 ? foo : bar> nows treats its argument as a file name (since it is an
+arbitrary expression), rather than the handle "foo".
+
+=item *
+
+C<truncate FOO, $len> no longer falls back to treating "FOO" as a file name if
+the filehandle has been deleted. This was broken in Perl 5.16.0.
+
+=item *
+
+Subroutine redefinitions after sub-to-glob and glob-to-glob assignments no
+longer cause double frees or panic messages.
+
+=item *
+
+C<s///> now turns vstrings into plain strings when performing a substitution,
+even if the resulting string is the same (C<s/a/a/>).
+
+=item *
+
+Prototype mismatch warnings no longer erroneously treat constant subs as having
+no prototype when they actually have "".
+
+=item *
+
+Constant subroutines and forward declarations no longer prevent prototype
+mismatch warnings from omitting the sub name.
+
+=item *
+
+C<undef> on a subroutine now clears call checkers.
+
+=item *
+
+The C<ref> operator started leaking memory on blessed objects in Perl 5.16.0.
+This has been fixed [perl #114340].
+
+=item *
+
+C<use> no longer tries to parse its arguments as a statement, making
+C<use constant { () };> a syntax error [perl #114222].
+
+=item *
+
+On debugging builds, "uninitialized" warnings inside formats no longer cause
+assertion failures.
+
+=item *
+
+On debugging builds, subroutines nested inside formats no longer cause
+assertion failures [perl #78550].
+
+=item *
+
+Formats and C<use> statements are now permitted inside formats.
+
+=item *
+
+C<print $x> and C<sub { print $x }-E<gt>()> now always produce the same output.
+It was possible for the latter to refuse to close over $x if the variable was
+not active; e.g., if it was defined outside a currently-running named
+subroutine.
+
+=item *
+
+Similarly, C<print $x> and C<print eval '$x'> now produce the same output.
+This also allows "my $x if 0" variables to be seen in the debugger [perl
+#114018].
+
+=item *
+
+Formats called recursively no longer stomp on their own lexical variables, but
+each recursive call has its own set of lexicals.
+
+=item *
+
+Attempting to free an active format or the handle associated with it no longer
+results in a crash.
+
+=item *
+
+Format parsing no longer gets confused by braces, semicolons and low-precedence
+operators. It used to be possible to use braces as format delimiters (instead
+of C<=> and C<.>), but only sometimes. Semicolons and low-precedence operators
+in format argument lines no longer confuse the parser into ignoring the line's
+return value. In format argument lines, braces can now be used for anonymous
+hashes, instead of being treated always as C<do> blocks.
+
+=item *
+
+Formats can now be nested inside code blocks in regular expressions and other
+quoted constructs (C</(?{...})/> and C<qq/${...}/>) [perl #114040].
+
+=item *
+
+Formats are no longer created after compilation errors.
+
+=item *
+
+Some format syntax errors started causing crashes in Perl 5.17.2, but have now
+been fixed.
+
+=item *
+
+Under debugging builds, the B<-DA> command line option started crashing in Perl
+5.16.0. It has been fixed [perl #114368].
+
+=item *
+
+Scope::Escape compatibility, which was broken in Perl 5.17.2, has been restored
+[perl #113872].
+
+=item *
+
+A potential deadlock scenario involving the premature termination of a pseudo-
+forked child in a Windows build with ithreads enabled has been fixed. This
+resolves the common problem of the F<t/op/fork.t> test hanging on Windows [perl
+#88840].
+
+=item *
+
+The microperl build, broken since Perl 5.15.7, has now been restored.
+
+=item *
+
+The code which generates errors from C<require()> could potentially read one or
+two bytes before the start of the filename for filenames less than three bytes
+long and ending C</\.p?\z/>. This has now been fixed. Note that it could
+never have happened with module names given to C<use()> or C<require()> anyway.
+
+=item *
+
+The handling of pathnames of modules given to C<require()> has been made
+thread-safe on VMS.
+
+=item *
+
+The C<re_compile()> API function, the entry point for perl's regex compiler,
+was accidentally changed in Perl 5.17.1 to operate on the current engine. This
+has now been restored to its former core-engine-specific state [perl #114302].
+
+=item *
+
+Perl 5.17.1 introduced a memory leak into the re-use of run-time regexes where
+the pattern hasn't changed (i.e. C</$unchanging/>). This has now been fixed.
+
+=item *
+
+A bug in the compilation of a C</(?{})/> expression which affected the TryCatch
+test suite has been fixed [perl #114242].
+
+=item *
+
+Formats no longer leak. They started leaking in Perl 5.17.2.
+
+=item *
+
+Pod can now be nested in code inside a quoted construct outside of a string
+eval. This used to work only within string evals [perl #114040].
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.17.3 represents approximately 4 weeks of development since Perl 5.17.2
+and contains approximately 85,000 lines of changes across 470 files from 24
+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.3:
+
+Andy Dougherty, Chip Salzenberg, Chris 'BinGOs' Williams, Craig A. Berry,
+Daniel Dragan, Dave Rolsky, David Leadbeater, David Mitchell, Eric Brine,
+Father Chrysostomos, Goro Fuji, James E Keenan, Jan Dubois, Joaquin Ferrero,
+Karl Williamson, Nicholas Clark, Paul Marquess, Reini Urban, Ricardo Signes,
+Robin Barker, Shirakata Kentaro, Steffen Müller, Steve Hay, Tony Cook.
+
+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 a20cc77c34..7ea5598492 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -2,245 +2,140 @@
=head1 NAME
-perldelta - what is new for perl v5.17.3
+[ 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.4
=head1 DESCRIPTION
-This document describes differences between the 5.17.2 release and the 5.17.3
+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.1, first read
-L<perl5172delta>, which describes differences between 5.17.1 and 5.17.2.
-
-=head1 Core Enhancements
-
-=head2 Computed Labels
-
-The loop controls C<next>, C<last> and C<redo>, and the special C<dump>
-operator, now allow arbitrary expressions to be used to compute labels at run
-time. Previously, any argument that was not a constant was treated as the
-empty string.
-
-=head1 Incompatible Changes
-
-=head2 C<$ENV{foo}=undef> deletes value from environ, like C<delete $ENV{foo}>
-
-This facilitates use of C<local()> with C<%ENV> entries. In previous versions
-of Perl, C<undef> was converted to the empty string.
-
-=head2 Defined values stored in environment are forced to byte strings
-
-A value stored in an environment variable has always been stringified. In this
-release, it is converted to be only a byte string. First, it is forced to be a
-only a string. Then if the string is utf8 and the equivalent of
-C<utf8::downgrade()> works, that result is used; otherwise, the equivalent of
-C<utf8::encode()> is used, and a warning is issued about wide characters
-(L</Diagnostics>).
-
-=head2 C<given> now aliases the global C<$_>
-
-Instead of assigning to an implicit lexical C<$_>, C<given> now makes the
-global C<$_> an alias for its argument, just like C<foreach>. However, it
-still uses lexical C<$_> if there is lexical C<$_> in scope (again, just like
-C<foreach>) [perl #114020].
-
-=head1 Modules and Pragmata
-
-=head2 Updated Modules and Pragmata
-
-=over 4
-
-=item *
-
-L<B> has been upgraded from version 1.36 to 1.37. All C<CVf_*> and C<GVf_*>
-and more SV-related flag values are now provided as constants in the C<B::>
-namespace and available for export. The default export list has not changed.
-
-=item *
-
-L<B::Concise> has been upgraded from version 0.91 to 0.92. The C<-nobanner>
-option has been fixed, and C<format>s can now be dumped. When passed a sub
-name to dump, it will check also to see whether it is the name of a format. If
-a sub and a format share the same name, it will dump both.
-
-=item *
-
-L<B::Debug> has been upgraded from version 1.17 to 1.18. This adds support
-(experimentally) for C<B::PADLIST>, which will be added in Perl 5.17.4.
-
-=item *
-
-L<B::Deparse> has been upgraded from version 1.15 to 1.16. It now deparses
-loop controls with the correct precedence, and multiple statements in a
-C<format> line are also now deparsed correctly.
-
-=item *
-
-L<CGI> has been upgraded from version 3.59 to 3.60. Unrecognized HTML escape
-sequences are now handled better, problematic trailing newlines are no longer
-inserted after E<lt>formE<gt> tags by C<startform()> or C<start_form()>, and
-bogus "Insecure Dependency" warnings appearing with some versions of perl are
-now worked around.
-
-=item *
-
-L<Compress::Raw::Bzip2> has been upgraded from version 2.05201 to 2.055. The
-misuse of Perl's "magic" API has been fixed.
-
-=item *
-
-L<Compress::Raw::Zlib> has been upgraded from version 2.05401 to 2.056. The
-misuse of Perl's "magic" API has been fixed.
-
-=item *
+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.
-L<Compress::Zlib> has been upgraded from version 2.052 to 2.055. C<compress()>,
-C<uncompress()>, C<memGzip()> and C<memGunzip()> have been speeded up by making
-parameter validation more efficient.
+=head1 Notice
-=item *
+XXX Any important notices here
-L<Data::Dumper> has been upgraded from version 2.135_06 to 2.135_07. It has
-been optimized to only build a seen-scalar hash as necessary, thereby speeding
-up serialization drastically.
+=head1 Core Enhancements
-=item *
+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.
-L<Devel::Peek> has been upgraded from version 1.08 to 1.09. The only change
-has been to the test script, to account for changes to some flags in perl's
-internals.
+[ List each enhancement as a =head2 entry ]
-=item *
+=head1 Security
-L<Encode> has been upgraded from version 2.44 to 2.47. The Mac alias x-mac-ce
-has been added, and various bugs have been fixed in Encode::Unicode,
-Encode::UTF7 and Encode::GSM0338.
+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.
-=item *
+[ List each security issue as a =head2 entry ]
-L<Module::Build> has been upgraded from version 0.40 to 0.4003. A minor bug
-fix allows markup to be used around the leading "Name" in a POD "abstract"
-line, and some documentation improvements have been made.
+=head1 Incompatible Changes
-=item *
+XXX For a release on a stable branch, this section aspires to be:
-L<Module::CoreList> has been upgraded from version 2.69 to 2.71. Version
-information is now stored as a delta, which greatly reduces the size of the
-F<CoreList.pm> file.
+ 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.
-=item *
+[ List each incompatible change as a =head2 entry ]
-L<Module::Load::Conditional> has been upgraded from version 0.50 to 0.54.
-Various enhancements include the new use of Module::Metadata.
+=head1 Deprecations
-=item *
+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.
-L<Module::Metadata> has been upgraded from version 1.000009 to 1.000011. The
-creation of a Module::Metadata object for a typical module file has been sped
-up by about 40%, and some spurious warnings about C<$VERSION>s have been
-suppressed.
+[ List each deprecation as a =head2 entry ]
-=item *
+=head1 Performance Enhancements
-L<Module::Pluggable> has been upgraded from version 4.0 to 4.3. Amongst other
-changes, triggers are now allowed on events, which gives a powerful way to
-modify behaviour.
+XXX Changes which enhance performance without changing behaviour go here.
+There may well be none in a stable release.
-=item *
+[ List each enhancement as a =item entry ]
-L<perlfaq> has been upgraded from version 5.0150040 to 5.0150041. This
-contains a couple of minor corrections and lists one new editor.
+=over 4
=item *
-L<Pod::Simple> has been upgraded from version 3.20 to 3.23. Numerous
-improvements have been made, mostly to Pod::Simple::XHTML, which also has a
-compatibility change: the C<codes_in_verbatim> option is now disabled by
-default. See F<cpan/Pod-Simple/ChangeLog> for the full details.
+XXX
-=item *
+=back
-L<re> has been upgraded from version 0.21 to 0.22. Single character [class]es
-like C</[s]/> or C</[s]/i> are now optimized as if they did not have the
-brackets, i.e. C</s/> or C</s/i>.
+=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.
-L<Socket> has been upgraded from version 2.002 to 2.004. Constants and
-functions required for IP multicast source group membership have been added.
+[ Within each section, list entries as a =item entry ]
-=item *
+=head2 New Modules and Pragmata
-L<Storable> has been upgraded from version 2.37 to 2.38. It can now freeze and
-thaw vstrings correctly. This causes a slight incompatible change in the
-storage format, so the format version has increased to 2.9.
+=over 4
=item *
-L<Sys::Syslog> has been upgraded from version 0.29 to 0.31. This contains
-several bug fixes relating to C<getservbyname()>, C<setlogsock()>and log levels
-in C<syslog()>, together with fixes for Windows, Haiku-OS and GNU/kFreeBSD.
-See F<cpan/Sys-Syslog/Changes> for the full details.
+XXX
-=item *
-
-L<Term::ReadLine> has been upgraded from version 1.09 to 1.10. This fixes the
-use of the B<cpan> and B<cpanp> shells on Windows in the event that the current
-drive happens to contain a F<\dev\tty> file.
+=back
-=item *
+=head2 Updated Modules and Pragmata
-L<Text::Tabs> and L<Text::Wrap> have been upgraded from version 2009.0305 to
-2012.0818. Support for Unicode combining characters has been added to them
-both.
+=over 4
=item *
-L<Time::Local> has been upgraded from version 1.2000 to 1.2300. Seconds values
-greater than 59 but less than 60 no longer cause C<timegm()> and C<timelocal()>
-to croak.
+L<XXX> has been upgraded from version A.xx to B.yy.
-=item *
+=back
-L<Unicode::UCD> has been upgraded from version 0.44 to 0.45. This has been
-modified slightly for reasons of perl internal use only.
+=head2 Removed Modules and Pragmata
-=item *
-
-L<Win32> has been upgraded from version 0.44 to 0.45. New APIs have been added
-for getting and setting the current code page.
+=over 4
=item *
-L<Win32CORE> has been upgraded from version 0.02 to 0.03. The use of
-PERL_NO_GET_CONTEXT here has resulted in smaller machine code.
+XXX
=back
=head1 Documentation
-=head2 Changes to Existing Documentation
+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>.
-=head3 L<perlfunc>, L<perlop>
+=head2 New Documentation
-=over 4
+XXX Changes which create B<new> files in F<pod/> go here.
-=item *
+=head3 L<XXX>
-Loop control verbs (C<dump>, C<goto>, C<next>, C<last> and C<redo>) have always
-had the same precedence as assignment operators, but this was not documented
-until now.
+XXX Description of the purpose of the new file here
-=back
+=head2 Changes to Existing Documentation
+
+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.
-=head3 L<perlvar>
+=head3 L<XXX>
=over 4
=item *
-A caveat has been added to the documentation for C<$_> warning against the use
-of lexical C<$_> [perl #114020].
+XXX Description of the change here
=back
@@ -250,29 +145,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<Unterminated delimiter for here document|perldiag/"Unterminated delimiter for here document">
-
-This message now occurs when a here document label has an initial quotation
-mark but the final quotation mark is missing.
-
-This replaces a bogus and misleading error message about not finding the label
-itself [perl #114104].
-
-=item *
-
-L<panic: child pseudo-process was never scheduled|perldiag/"panic: child pseudo-process was never scheduled">
-
-This error is thrown when a child pseudo-process in the ithreads implementation
-on Windows was not scheduled within the time period allowed and therefore was
-not able to initialize properly [perl #88840].
+XXX L<message|perldiag/"message">
=back
@@ -282,270 +169,182 @@ not able to initialize properly [perl #88840].
=item *
-L<Wide character in setenv|perldiag/"Wide character in %s">
-
-Attempts to put wide characters into environment variables via C<%ENV> now
-provoke this warning.
+XXX L<message|perldiag/"message">
=back
-=head1 Configuration and Compilation
-
-=over 4
+=head2 Changes to Existing Diagnostics
-=item *
-
-The pager detection in F<Configure> has been improved to allow responses which
-specify options after the program name, e.g. B</usr/bin/less -R>, if the user
-accepts the default value. This helps B<perldoc> when handling ANSI escapes
-[perl #72156].
-
-=back
-
-=head1 Platform Support
-
-=head2 Discontinued Platforms
+XXX Changes (i.e. rewording) of diagnostic messages go here
=over 4
-=item UTS Global
+=item *
-Support code relating to UTS global has been removed. UTS was a mainframe
-version of System V created by Amdahl, subsequently sold to UTS Global. The
-port has not been touched since before Perl 5.8.0, and UTS Global is now
-defunct.
+XXX Describe change here
=back
-=head2 Platform-Specific Notes
-
-=over 4
-
-=item Windows
-
-A new makefile option, USE_64_BIT_INT, has been added to the Windows makefiles.
-Set this to "define" when building a 32-bit perl if you want it to use 64-bit
-integers.
-
-Machine code size reductions, already made to the DLLs of XS modules in Perl
-5.17.2, have now been extended to the perl DLL itself.
-
-Building with VC++ 6.0 was inadvertently broken in Perl 5.17.2 but has now been
-fixed again.
+=head1 Utility Changes
-=item VMS
+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>.
-The B<a2p> build has been fixed for the HP C++ compiler on OpenVMS.
+[ 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 Selected Bug Fixes
+=head3 L<XXX>
=over 4
=item *
-C<\w> now matches the code points U+200C (ZERO WIDTH NON-JOINER) and U+200D
-(ZERO WIDTH JOINER). C<\W> no longer matches these. This change is because
-Unicode corrected their definition of what C<\w> should match.
-
-=item *
-
-C<dump LABEL> no longer leaks its label.
-
-=item *
-
-Constant folding no longer changes the behaviour of functions like C<stat()>
-and C<truncate()> that can take either filenames or handles.
-C<stat 1 ? foo : bar> nows treats its argument as a file name (since it is an
-arbitrary expression), rather than the handle "foo".
-
-=item *
+XXX
-C<truncate FOO, $len> no longer falls back to treating "FOO" as a file name if
-the filehandle has been deleted. This was broken in Perl 5.16.0.
+=back
-=item *
+=head1 Configuration and Compilation
-Subroutine redefinitions after sub-to-glob and glob-to-glob assignments no
-longer cause double frees or panic messages.
+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.
-=item *
+[ List changes as a =item entry ].
-C<s///> now turns vstrings into plain strings when performing a substitution,
-even if the resulting string is the same (C<s/a/a/>).
+=over 4
=item *
-Prototype mismatch warnings no longer erroneously treat constant subs as having
-no prototype when they actually have "".
+XXX
-=item *
+=back
-Constant subroutines and forward declarations no longer prevent prototype
-mismatch warnings from omitting the sub name.
+=head1 Testing
-=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.
-C<undef> on a subroutine now clears call checkers.
-
-=item *
+[ List each test improvement as a =item entry ]
-The C<ref> operator started leaking memory on blessed objects in Perl 5.16.0.
-This has been fixed [perl #114340].
+=over 4
=item *
-C<use> no longer tries to parse its arguments as a statement, making
-C<use constant { () };> a syntax error [perl #114222].
+XXX
-=item *
+=back
-On debugging builds, "uninitialized" warnings inside formats no longer cause
-assertion failures.
+=head1 Platform Support
-=item *
+XXX Any changes to platform support should be listed in the sections below.
-On debugging builds, subroutines nested inside formats no longer cause
-assertion failures [perl #78550].
+[ Within the sections, list each platform as a =item entry with specific
+changes as paragraphs below it. ]
-=item *
+=head2 New Platforms
-Formats and C<use> statements are now permitted inside formats.
+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
-C<print $x> and C<sub { print $x }-E<gt>()> now always produce the same output.
-It was possible for the latter to refuse to close over $x if the variable was
-not active; e.g., if it was defined outside a currently-running named
-subroutine.
+=item XXX-some-platform
-=item *
+XXX
-Similarly, C<print $x> and C<print eval '$x'> now produce the same output.
-This also allows "my $x if 0" variables to be seen in the debugger [perl
-#114018].
+=back
-=item *
+=head2 Discontinued Platforms
-Formats called recursively no longer stomp on their own lexical variables, but
-each recursive call has its own set of lexicals.
+XXX List any platforms that this version of perl no longer compiles on.
-=item *
+=over 4
-Attempting to free an active format or the handle associated with it no longer
-results in a crash.
+=item XXX-some-platform
-=item *
+XXX
-Format parsing no longer gets confused by braces, semicolons and low-precedence
-operators. It used to be possible to use braces as format delimiters (instead
-of C<=> and C<.>), but only sometimes. Semicolons and low-precedence operators
-in format argument lines no longer confuse the parser into ignoring the line's
-return value. In format argument lines, braces can now be used for anonymous
-hashes, instead of being treated always as C<do> blocks.
+=back
-=item *
+=head2 Platform-Specific Notes
-Formats can now be nested inside code blocks in regular expressions and other
-quoted constructs (C</(?{...})/> and C<qq/${...}/>) [perl #114040].
+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
-Formats are no longer created after compilation errors.
+=item XXX-some-platform
-=item *
+XXX
-Some format syntax errors started causing crashes in Perl 5.17.2, but have now
-been fixed.
+=back
-=item *
+=head1 Internal Changes
-Under debugging builds, the B<-DA> command line option started crashing in Perl
-5.16.0. It has been fixed [perl #114368].
+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.
-=item *
+[ List each change as a =item entry ]
-Scope::Escape compatibility, which was broken in Perl 5.17.2, has been restored
-[perl #113872].
+=over 4
=item *
-A potential deadlock scenario involving the premature termination of a pseudo-
-forked child in a Windows build with ithreads enabled has been fixed. This
-resolves the common problem of the F<t/op/fork.t> test hanging on Windows [perl
-#88840].
-
-=item *
+XXX
-The microperl build, broken since Perl 5.15.7, has now been restored.
+=back
-=item *
+=head1 Selected Bug Fixes
-The code which generates errors from C<require()> could potentially read one or
-two bytes before the start of the filename for filenames less than three bytes
-long and ending C</\.p?\z/>. This has now been fixed. Note that it could
-never have happened with module names given to C<use()> or C<require()> anyway.
+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 ]
-The handling of pathnames of modules given to C<require()> has been made
-thread-safe on VMS.
+=over 4
=item *
-The C<re_compile()> API function, the entry point for perl's regex compiler,
-was accidentally changed in Perl 5.17.1 to operate on the current engine. This
-has now been restored to its former core-engine-specific state [perl #114302].
+XXX
-=item *
+=back
-Perl 5.17.1 introduced a memory leak into the re-use of run-time regexes where
-the pattern hasn't changed (i.e. C</$unchanging/>). This has now been fixed.
+=head1 Known Problems
-=item *
+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.
-A bug in the compilation of a C</(?{})/> expression which affected the TryCatch
-test suite has been fixed [perl #114242].
-
-=item *
+[ List each fix as a =item entry ]
-Formats no longer leak. They started leaking in Perl 5.17.2.
+=over 4
=item *
-Pod can now be nested in code inside a quoted construct outside of a string
-eval. This used to work only within string evals [perl #114040].
+XXX
=back
-=head1 Acknowledgements
-
-Perl 5.17.3 represents approximately 4 weeks of development since Perl 5.17.2
-and contains approximately 85,000 lines of changes across 470 files from 24
-authors.
+=head1 Obituary
-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.3:
+XXX If any significant core contributor has died, we've added a short obituary
+here.
-Andy Dougherty, Chip Salzenberg, Chris 'BinGOs' Williams, Craig A. Berry,
-Daniel Dragan, Dave Rolsky, David Leadbeater, David Mitchell, Eric Brine,
-Father Chrysostomos, Goro Fuji, James E Keenan, Jan Dubois, Joaquin Ferrero,
-Karl Williamson, Nicholas Clark, Paul Marquess, Reini Urban, Ricardo Signes,
-Robin Barker, Shirakata Kentaro, Steffen Müller, Steve Hay, Tony Cook.
-
-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.
+=head1 Acknowledgements
-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.
+XXX Generate this with:
-For a more complete list of all of Perl's historical contributors, please see
-the F<AUTHORS> file in the Perl source distribution.
+ perl Porting/acknowledgements.pl v5.17.3..HEAD
=head1 Reporting Bugs