This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for File::Spec->tmpdir and changing env (#88940)
[perl5.git] / pod / perldelta.pod
index ec6856b..d24b0b4 100644 (file)
 
 =head1 NAME
 
-perldelta - what is new for perl v5.17.10
+[ this is a template for a new perldelta file.  Any text flagged as XXX needs
+to be processed before release. ]
+
+perldelta - what is new for perl v5.19.1
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.17.9 release and the 5.17.10
+This document describes differences between the 5.19.0 release and the 5.19.1
 release.
 
-If you are upgrading from an earlier release such as 5.17.8, first read
-L<perl5179delta>, which describes differences between 5.17.8 and 5.17.9.
-
 =head1 Notice
 
+XXX Any important notices here
+
 =head1 Core Enhancements
 
+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.
+
+[ List each enhancement as a =head2 entry ]
+
 =head1 Security
 
-=head2 Hash iteration randomized per hash variable
+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.
 
-Every hash has its own iteration order, which
-should make it much more difficult to determine what the current hash
-seed is.
+[ List each security issue as a =head2 entry ]
 
 =head1 Incompatible Changes
 
-=head2 Explicit rules for variable names and identifiers
-
-Due to an oversight, length-one variable names in 5.16 were completely
-unrestricted, and opened the door to several kinds of insanity.  As of
-5.18, these now follow the rules of other identifiers, in addition
-to accepting characters that match the \p{POSIX_Punct} property.
+XXX For a release on a stable branch, this section aspires to be:
 
-There are no longer any differences in the parsing of identifiers specified
-as $... or ${...}; previously, they were dealt with in different parts of
-the core, and so had slightly different behavior. For instance,
-C<${foo:bar}> was a legal variable name.  Since they are now both parsed
-by the same code, that is no longer the case.
+    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.
 
 [ List each incompatible change as a =head2 entry ]
 
 =head1 Deprecations
 
-=head2 PL_sv_objcount
+XXX Any deprecated features, syntax, modules etc. should be listed here.
+
+=head2 Module removals
+
+XXX Remove this section if inapplicable.
+
+The following modules will be removed from the core distribution in a future
+release, and will at that time need to be installed from CPAN. Distributions
+on CPAN which require these modules will need to list them as prerequisites.
+
+The core versions of these modules will now issue C<"deprecated">-category
+warnings to alert you to this fact. To silence these deprecation warnings,
+install the modules in question from CPAN.
+
+Note that these are (with rare exceptions) fine modules that you are encouraged
+to continue to use. Their disinclusion from core primarily hinges on their
+necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
+not usually on concerns over their design.
 
-This interpreter-global variable used to track the total number of
-Perl objects in the interpreter. It is no longer maintained and will
-be removed altogether in Perl 5.20.
+XXX Note that deprecated modules should be listed here even if they are listed
+as an updated module in the L</Modules and Pragmata> section.
+
+=over
+
+=item *
+
+L<DB> has been updated from 1.05 to 1.06 and L<perl5db.pl> from 1.39_10
+to 1.40.  The call depth allowed by default in the debugger is now 1000
+rather than 100.
+
+=back
+
+[ List each other deprecation as a =head2 entry ]
 
 =head1 Performance Enhancements
 
+XXX Changes which enhance performance without changing behaviour go here.
+There may well be none in a stable release.
+
+[ List each enhancement as a =item entry ]
+
+=over 4
+
+=item *
+
+Perl has a new copy-on-write mechanism that avoids the need to copy the
+internal string buffer when assigning from one scalar to another. This
+makes copying large strings appear much faster.  Modifying one of the two
+(or more) strings after an assignment will force a copy internally. This
+makes it unnecessary to pass strings by reference for efficiency.
+
+This feature was already available in 5.18.0, but wasn't enabled by
+default. It is the default now, and so you no longer need build perl with
+the F<Configure> argument:
+
+    -Accflags=PERL_NEW_COPY_ON_WRITE
+
+It can be disabled (for now) in a perl build with:
+
+    -Accflags=PERL_NO_COW
+
+=back
+
 =head1 Modules and Pragmata
 
+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.
+
+[ Within each section, list entries as a =item entry ]
+
 =head2 New Modules and Pragmata
 
 =over 4
 
 =item *
 
-L<Config::Perl::V> 0.17 has been added to the Perl core.
+XXX
 
 =back
 
@@ -69,322 +135,482 @@ L<Config::Perl::V> 0.17 has been added to the Perl core.
 
 =item *
 
-L<Archive::Extract> has been upgraded from version 0.62 to 0.68.
+B::Deparse has been upgraded from version 1.20 to 1.21.
 
-NOTE: L<Archive::Extract> is deprecated and may be removed from a future version of Perl.
+C<foreach my $lexical> is now deparsed correctly with the B<-p> option.
+[RT #117081]
 
-=item *
+The B<-l> option no longer puts form feeds in the middle of a line when
+outputting C<map> and C<grep> blocks. [RT #117311]
 
-L<Attribute::Handlers> has been upgraded from version 0.93 to 0.94.
+Elements of C<%#>, such as C<$# {foo}> and C<${#}{foo}> are now deparsed
+correctly. [RT #117531]
 
 =item *
 
-L<B::Lint> has been upgraded from version 1.14 to 1.17.
+File::Spec has been upgraded from version 3.40 to 3.41.
 
-NOTE: L<B::Lint> is deprecated and may be removed from a future version of Perl.
+C<tmpdir> now respects changes to environment variables from which the
+temporary directory is derived. [RT #88940]
 
 =item *
 
-L<Benchmark> has been upgraded from version 1.14 to 1.15.
+Test::Harness has been upgraded from version 3.26 to 3.28
+
+Memory usage is dramatically reduced. t/harness now uses about 10% of the
+memory used by 3.26 and earlier.
 
-This reverts (for now) a change in 1.14 whereby the "too few iterations"
-message became a warning on STDERR instead of being output on STDOUT. It's
-now on STDOUT again.
+C<PERL5LIB> is always propagated to a test's C<@INC>, even under C<-T>.
 
 =item *
 
-L<bignum> has been upgraded from version 0.31 to 0.32.
+Unicode::UCD has been upgraded from version 0.51 to 0.52.
 
-=item *
+A function, L<Unicode::UCD/search_invlist()> is now available to do
+search an inversion list or map for a code point.
+
+=back
+
+=head2 Removed Modules and Pragmata
 
-L<CPAN> has been upgraded from version 1.99_51 to 2.00.
+=over 4
 
 =item *
 
-L<CPANPLUS> has been upgraded from version 0.9133 to 0.9135.
+XXX
 
-NOTE: L<CPANPLUS> is deprecated and may be removed from a future version of Perl.
+=back
 
-=item *
+=head1 Documentation
 
-L<CPANPLUS::Dist::Build> has been upgraded from version 0.68 to 0.70.
+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>.
 
-NOTE: L<CPANPLUS::Dist::Build> is deprecated and may be removed from a future version of Perl.
+=head2 New Documentation
 
-=item *
+XXX Changes which create B<new> files in F<pod/> go here.
 
-L<Data::Dumper> has been upgraded from version 2.141 to 2.142.
+=head3 L<XXX>
 
-=item *
+XXX Description of the purpose of the new file here
+
+=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.
 
-L<DBM_Filter> has been upgraded from version 0.04 to 0.05.
+=head3 L<perltrap>
+
+=over 4
 
 =item *
 
-L<Digest::SHA> has been upgraded from version 5.81 to 5.82.
+There is now a L<JavaScript|perltrap/JavaScript Traps> section.
+
+=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>.
+
+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<Encode> has been upgraded from version 2.47 to 2.48.
+XXX L<message|perldiag/"message">
+
+=back
+
+=head3 New Warnings
+
+=over 4
 
 =item *
 
-L<ExtUtils::Manifest> has been upgraded from version 1.62 to 1.63.
+L<A sequence of multiple spaces in a charnames alias definition is deprecated|perldiag/"A sequence of multiple spaces in a charnames alias definition is deprecated">
+
+L<Trailing white-space in a charnames alias definition is deprecated|perldiag/"Trailing white-space in a charnames alias definition is deprecated">
+
+These two deprecation warnings involving C<\N{...}> were incorrectly
+implemented.  They did not warn by default (now they do) and could not be
+made fatal via C<use warnings FATAL => 'deprecated'> (now they can).
+
+=back
+
+=head2 Changes to Existing Diagnostics
+
+XXX Changes (i.e. rewording) of diagnostic messages go here
+
+=over 4
 
 =item *
 
-L<File::CheckTree> has been upgraded from version 4.41 to 4.42.
+XXX Describe change here
+
+=back
+
+=head1 Utility Changes
+
+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>.
+
+[ 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. ]
+
+=head3 F<bisect.pl> enhancements
+
+The git bisection tool F<Porting/bisect.pl> has had many enhancements.
+
+=over 4
 
 =item *
 
-L<File::DosGlob> has been upgraded from version 1.09 to 1.10.
+Can optionally run the test case with a timeout.
 
 =item *
 
-L<File::Temp> has been upgraded from version 0.22 to 0.22_90.
+Can now run in-place in a clean git checkout.
 
 =item *
 
-L<Filter::Simple> has been upgraded from version 0.88 to 0.89.
+Can run the test case under C<valgrind>.
 
 =item *
 
-L<IO> has been upgraded from version 1.26 to 1.27.
+Can apply user supplied patches and fixes to the source checkout before
+building.
 
 =item *
 
-L<Log::Message> has been upgraded from version 0.04 to 0.06.
+Now has fixups to enable building several more historical ranges of bleadperl,
+which can be useful for pinpointing the origins of bugs or behaviour changes.
 
-NOTE: L<Log::Message> is deprecated and may be removed from a future version of Perl.
+=back
 
-=item *
+It is provided as part of the source distribution but not installed because
+it is not self-contained as it relies on being run from within a git
+checkout. Note also that it makes no attempt to fix tests, correct runtime
+bugs or make something useful to install - its purpose is to make minimal
+changes to get any historical revision of interest to build and run as close
+as possible to "as-was", and thereby make C<git bisect> easy to use.
 
-L<Log::Message::Simple> has been upgraded from version 0.08 to 0.10.
+=head1 Configuration and Compilation
 
-NOTE: L<Log::Message::Simple> is deprecated and may be removed from a future version of Perl.
+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 ].
 
-L<Math::BigInt> has been upgraded from version 1.998 to 1.999.
+=over 4
 
 =item *
 
-L<Module::CoreList> has been upgraded from version 2.80 to 2.85.
+XXX
 
-=item *
+=back
 
-L<Module::Load> has been upgraded from version 0.22 to 0.24.
+=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.
 
-L<Module::Pluggable> has been upgraded from version 4.5 to 4.6.
+[ List each test improvement as a =item entry ]
 
-NOTE: L<Module::Pluggable> is deprecated and may be removed from a future version of Perl.
+=over 4
 
 =item *
 
-L<Net::Ping> has been upgraded from version 2.39 to 2.41.
+XXX
 
-This fixes some test failures on Windows.
+=back
 
-=item *
+=head1 Platform Support
 
-L<Object::Accessor> has been upgraded from version 0.44 to 0.46.
+XXX Any changes to platform support should be listed in the sections below.
 
-NOTE: L<Object::Accessor> is deprecated and may be removed from a future version of Perl.
+[ Within the sections, list each platform as a =item entry with specific
+changes as paragraphs below it. ]
 
-=item *
+=head2 New Platforms
 
-L<overload> has been upgraded from version 1.20 to 1.21.
+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
 
-L<Perl::OSType> has been upgraded from version 1.002 to 1.003.
+=item XXX-some-platform
 
-This fixes a bug detecting the VOS operating system.
+XXX
 
-=item *
+=back
 
-L<PerlIO::scalar> has been upgraded from version 0.15 to 0.16.
+=head2 Discontinued Platforms
 
-=item *
+XXX List any platforms that this version of perl no longer compiles on.
 
-L<Pod::Checker> has been upgraded from version 1.51 to 1.60.
+=over 4
 
-=item *
+=item XXX-some-platform
 
-L<Pod::Html> has been upgraded from version 1.17 to 1.18.
+XXX
 
-=item *
+=back
 
-L<Pod::Parser> has been upgraded from version 1.51 to 1.60.
+=head2 Platform-Specific Notes
 
-=item *
+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.
 
-L<Pod::Perldoc> has been upgraded from version 3.17 to 3.19.
+=over 4
 
-=item *
+=item Mixed-endian platforms
 
-L<Pod::Usage> has been upgraded from version 1.51 to 1.61.
+The code supporting C<pack> and C<unpack> operations on mixed endian
+platforms has been removed. We believe that Perl has long been unable to
+build on mixed endian architectures (such as PDP-11s), so we don't think
+that this change will affect any platforms which are able to build v5.18.0.
 
-=item *
+=back
 
-L<SelfLoader> has been upgraded from version 1.20 to 1.21.
+=head1 Internal Changes
+
+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.
+
+=over 4
 
 =item *
 
-L<Term::UI> has been upgraded from version 0.32 to 0.34.
+Perl's new copy-on-write mechanism  (which is now enabled by default),
+allows any C<SvPOK> scalar to be automatically upgraded to a copy-on-write
+scalar when copied. A reference count on the string buffer is stored in
+the string buffer itself.
 
-NOTE: L<Term::UI> is deprecated and may be removed from a future version of Perl.
+For example:
 
-=item *
+    $ perl -MDevel::Peek -e'$a="abc"; $b = $a; Dump $a; Dump $b'
+    SV = PV(0x260cd80) at 0x2620ad8
+      REFCNT = 1
+      FLAGS = (POK,IsCOW,pPOK)
+      PV = 0x2619bc0 "abc"\0
+      CUR = 3
+      LEN = 16
+      COW_REFCNT = 1
+    SV = PV(0x260ce30) at 0x2620b20
+      REFCNT = 1
+      FLAGS = (POK,IsCOW,pPOK)
+      PV = 0x2619bc0 "abc"\0
+      CUR = 3
+      LEN = 16
+      COW_REFCNT = 1
 
-L<Test::Harness> has been upgraded from version 3.25_01 to 3.26.
+Note that both scalars share the same PV buffer and have a COW_REFCNT
+greater than zero.
 
-=item *
+This means that XS code which wishes to modify the C<SvPVX()> buffer of an
+SV should call C<SvPV_force()> or similar first, to ensure a valid (and
+unshared) buffer, and to call C<SvSETMAGIC()> afterwards. This in fact has
+always been the case (for example hash keys were already copy-on-write);
+this change just spreads the COW behaviour to a wider variety of SVs.
 
-L<Text::Soundex> has been upgraded from version 3.03_01 to 3.04.
+One important difference is that before 5.18.0, shared hash-key scalars
+used to have the C<SvREADONLY> flag set; this is no longer the case.
+
+This new behaviour can still be disabled by running F<Configure> with
+B<-Accflags=-DPERL_NO_COW>.  This option will probably be removed in Perl
+5.22.
 
 =item *
 
-L<Thread::Queue> has been upgraded from version 3.01 to 3.02.
+C<PL_sawampersand> is now a constant.  The switch this variable provided
+(to enable/disable the pre-match copy depending on whether C<$&> had been
+seen) has been removed and replaced with copy-on-write, eliminating a few
+bugs.
+
+The previous behaviour can still be enabled by running F<Configure> with
+B<-Accflags=-DPERL_SAWAMPERSAND>.
 
 =item *
 
-L<Unicode::UCD> has been upgraded from version 0.47 to 0.50.
+The functions C<my_swap>, C<my_htonl> and C<my_ntohl> have been removed.
+It is unclear why these functions were ever marked as I<A>, part of the
+API. XS code can't call them directly, as it can't rely on them being
+compiled. Unsurprisingly, no code on CPAN references them.
 
 =item *
 
-L<warnings> has been upgraded from version 1.16 to 1.17.
+The signature of the C<Perl_re_intuit_start()> regex function has changed;
+the function pointer C<intuit> in the regex engine plugin structure
+has also changed accordingly. A new parameter, C<strbeg> has been added;
+this has the same meaning as the same-named parameter in
+C<Perl_regexec_flags>. Previously intuit would try to guess the start of
+the string from the passed SV (if any), and would sometimes get it wrong
+(e.g. with an overloaded SV).
+
+=back
+
+=head1 Selected Bug Fixes
+
+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>.
+
+[ List each fix as a =item entry ]
+
+=over 4
 
 =item *
 
-L<Win32> has been upgraded from version 0.45 to 0.46.
+The OP allocation code now returns correctly aligned memory in all cases
+for C<struct pmop>. Previously it could return memory only aligned to a
+4-byte boundary, which is not correct for an ithreads build with 64 bit IVs
+on some 32 bit platforms. Notably, this caused the build to fail completely
+on sparc GNU/Linux. [RT #118055]
 
 =item *
 
-L<Win32API::File> has been upgraded from version 0.1200 to 0.1201.
+The debugger's C<man> command been fixed. It was broken in the v5.18.0
+release. The C<man> command is aliased to the names C<doc> and C<perldoc> -
+all now work again.
 
-=back
+=item *
 
-=head1 Documentation
+Evaluating large hashes in scalar context is now much faster, as the number
+of used chains in the hash is now cached for larger hashes. Smaller hashes
+continue not to store it and calculate it when needed, as this saves one IV.
+That would be 1 IV overhead for every object built from a hash. [RT #114576]
 
-=head2 Changes to Existing Documentation
+=item *
 
-=head3 L<perlrebackslash/\N>
+Fixed a small number of regexp constructions that could either fail to
+match or crash perl when the string being matched against was
+allocated above the 2GB line on 32-bit systems. [RT #118175]
 
-=over 4
+=item *
+
+Perl v5.16 inadvertently introduced a bug whereby calls to XSUBs that were
+not visible at compile time were treated as lvalues and could be assigned
+to, even when the subroutine was not an lvalue sub.  This has been fixed.
+[RT #117947]
 
 =item *
 
-This feature is no longer experimental.
+In Perl v5.18.0 dualvars that had an empty string for the string part but a
+non-zero number for the number part starting being treated as true.  In
+previous versions they were treated as false, the string representation
+taking precedeence.  The old behaviour has been restored. [RT #118159]
 
-=back
+=item *
 
-=head1 Diagnostics
+Since Perl v5.12, inlining of constants that override built-in keywords of
+the same name had countermanded C<use subs>, causing subsequent mentions of
+the constant to use the built-in keyword instead.  This has been fixed.
 
-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>.
+=item *
 
-=head2 New Diagnostics
+Lexical constants (C<my sub a() { 42 }>) no longer crash when inlined.
 
-=head3 New Warnings
+=item *
 
-=over 4
+Parameter prototypes attached to lexical subroutines are now respected when
+compiling sub calls without parentheses.  Previously, the prototypes were
+honoured only for calls I<with> parentheses. [RT #116735]
 
 =item *
 
-L%c* is deprecated, and will become a syntax error|perldiag/"%c* is deprecated, and will become a syntax error">
+Syntax errors in lexical subroutines in combination with calls to the same
+subroutines no longer cause crashes at compile time.
 
-Use of C<@*>, C<&*>, C<**> or C<%*> is now deprecated, and will generate a
-compile time warning, enabled by default.  In future such code will fail to
-compile with a syntax error.  Removing these variables, along with C<$*>,
-will permit future syntax additions.
+=item *
 
-=back
+The warning produced by C<-l $handle> now applies to IO refs and globs, not
+just to glob refs.  That warning is also now UTF8-clean. [RT #117595]
 
-=head2 Changes to Existing Diagnostics
+=item *
 
-=over 4
+Various memory leaks involving the parsing of the C<(?[...])> regular
+expression construct have been fixed.
 
 =item *
 
-L<$* is no longer supported, and will become a syntax error|perldiag/"$* is no longer supported, and will become a syntax error">
+C<(?[...])> now allows interpolation of precompiled patterns consisting of
+(?[...])> with bracket character classes inside (C<$pat =
+S<qr/(?[ [a] ])/;> S</(?[ $pat ])/>>).  Formerly, the brackets would
+confuse the regular expression parser.
 
-The warning that use of C<$*> and C<$#> is no longer supported is now
-generated for every location that references them.  Previously it would fail
-to be generated if another variable using the same typeglob was seen first
-(e.g. C<@*> before C<$*>), and would not be generated for the second and
-subsequent uses.  (It's hard to fix the failure to generate warnings at all
-without also generating them every time, and warning every time is
-consistent with the warnings that C<$[> used to generate.)
+=item *
 
-=back
+C<delete local $ENV{nonexistent_env_var}> no longer leaks memory.
 
-=head1 Internal Changes
+=item *
 
-=over 4
+C<sort> and C<require> followed by a keyword prefixed with C<CORE::> now
+treat it as a keyword, and not as a subroutine or module name. [RT #24482]
 
 =item *
 
-The new copy-on-write mechanism that was introduced in 5.17.7 has now been
-disabled by default, since it was felt that there were too many rough
-edges for the 5.18 release. It is expected that it will be enabled by
-default for 5.20.
+Through certain conundrums, it is possible to cause the current package to
+be freed.  Certain operators (C<bless>, C<reset>, C<open>, C<eval>) could
+not cope and would crash.  They have been made more resilient. [RT #117941]
 
-This change also re-enables PL_sawampersand by default.
+=item *
 
-It can be enabled in a perl build by running F<Configure> with
-B<-Accflags=-DPERL_NEW_COPY_ON_WRITE>, and we would encourage XS authors to
-try their code with such an enabled perl, and provide feedback.
-XXX need blurb, e.g. a reference to a new section in perlguts or perlxs
-explaining how XS authors should handle COW strings.
+Aliasing filehandles through glob-to-glob assignment would not update
+internal method caches properly if a package of the same name as the
+filehandle existed, resulting in filehandle method calls going to the
+package instead.  This has been fixed.
 
 =back
 
-=head1 Selected Bug Fixes
+=head1 Known Problems
+
+XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
+tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
+platform specific bugs also go here.
+
+[ List each fix as a =item entry ]
 
 =over 4
 
 =item *
 
-Fix two crashes in the debugger when using Frame=2 or autotrace.  These are
-[perl #116769] and [perl #116771].
+XXX
 
 =back
 
+=head1 Obituary
+
+XXX If any significant core contributor has died, we've added a short obituary
+here.
+
 =head1 Acknowledgements
 
-Perl 5.17.10 represents approximately 4 weeks of development since Perl 5.17.9
-and contains approximately 77,000 lines of changes across 440 files from 42
-authors.
-
-Perl continues to flourish into its third decade thanks to a vibrant community
-of users and developers. The following people are known to have contributed the
-improvements that became Perl 5.17.10:
-
-Aaron Crane, Aaron Trevena, Andrew Tam, Andy Dougherty, Anton Nikishaev, Brad
-Gilbert, Brian Fraser, Charlie Gonzalez, Chris 'BinGOs' Williams, Craig A.
-Berry, Daniel Dragan, David Golden, David Mitchell, Dominic Hargreaves, Florian
-Ragwitz, George Greer, H.Merijn Brand, James E Keenan, Jasmine Ahuja, John
-Goodyear, John Peacock, Karl Williamson, Kent Fredric, Lukas Mai, Max
-Maischein, Nicholas Clark, Patrik Hägglund, Paul Green, Peter Martini, Rafael
-Garcia-Suarez, Renee Baecker, Ricardo Signes, Ruslan Zakirov, Salvador
-Fandiño, Scott Lanning, Shirakata Kentaro, Steffen Müller, Steve Hay, Steve
-Peters, Sullivan Beck, Tony Cook, 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.19.1..HEAD
 
 =head1 Reporting Bugs