This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add PERL_NO_GET_CONTEXT to ODBM_File
[perl5.git] / pod / perldelta.pod
index 31fece1..0bc47fc 100644 (file)
@@ -7,6 +7,9 @@ XXX needs to be processed before release. ]
 
 perldelta - what is new for perl v5.15.0
 
+=for comment
+This has been completed up to 571f0e8.
+
 =head1 DESCRIPTION
 
 This document describes differences between the 5.15.0 release and
@@ -16,6 +19,11 @@ If you are upgrading from an earlier release such as 5.YYY.YYY, first read
 L<perl5YYYdelta>, which describes differences between 5.ZZZ.ZZZ and
 5.YYY.YYY.
 
+Some of the changes have been included in Perl 5.14.1.  These are
+indicated with a "(5.14.1)" marker.
+
+XXX compare this perldelta to 5.14.1 and double check the notation
+
 =head1 Notice
 
 XXX Any important notices here
@@ -28,6 +36,44 @@ here, but most should go in the L</Performance Enhancements> section.
 
 [ List each enhancement as a =head2 entry ]
 
+=head2 C<CORE::> works on all keywords
+
+The C<CORE::> prefix can now be used on keywords enabled by
+L<feature.pm|feature>, even outside the scope of C<use feature>.
+
+=head2 C<continue> no longer requires the "switch" feature
+
+The C<continue> keyword has two meanings.  It can introduce a C<continue>
+block after a loop, or it can exit the current C<when> block.  Up till now,
+the latter meaning was only valid with the "switch" feature enabled, and
+was a syntax error otherwise.  Since the main purpose of feature.pm is to
+avoid conflicts with user-defined subroutines, there is no reason for
+C<continue> to depend on it.
+
+=head2 C<$$> can be assigned to
+
+C<$$> was made read-only in Perl 5.8.0.  But only sometimes: C<local $$>
+would make it writable again.  Some CPAN modules were using C<local $$> or
+XS code to bypass the read-only check, so there is no reason to keep C<$$>
+read-only.  (This change also allowed a bug to be fixed while maintaining
+backward compatibility.)
+
+=head2 Features inside the debugger
+
+The current Perl's feature bundle is now enabled for commands entered in
+the interactive debugger.
+
+=head2 C<\N{...}> can now have Unicode loose name matching
+
+This is described in the C<charnames> item in
+L</Updated Modules and Pragmata> below.
+
+=head2 Breakpoints with file names
+
+The debugger's "b" command for setting breakpoints now allows a line number
+to be prefixed with a file name.  See
+L<perldebug/"b [file]:[line] [condition]">.
+
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -40,6 +86,38 @@ L</Selected Bug Fixes> section.
 
 [ List each incompatible change as a =head2 entry ]
 
+=head2 Tying scalars that hold typeglobs
+
+Attempting to tie a scalar after a typeglob was assigned to it would
+instead tie the handle in the typeglob's IO slot.  This meant that it was
+impossible to tie the scalar itself.  Similar problems affected C<tied> and
+C<untie>: C<tied $scalar> would return false on a tied scalar if the last
+thing returned was a typeglob, and C<untie $scalar> on such a tied scalar
+would do nothing.
+
+We fixed this problem before Perl 5.14.0, but it caused problems with some
+CPAN modules, so we put in a deprecation cycle instead.
+
+Now the deprecation has been removed and this bug has been fixed.  So
+C<tie $scalar> will always tie the scalar, not the handle it holds.  To tie
+the handle, use C<tie *$scalar> (with an explicit asterisk).  The same
+applies to C<tied *$scalar> and C<untie *$scalar>.
+
+=head2 IPC::Open3 no longer provides C<xfork()>, C<xclose_on_exec()>
+and C<xpipe_anon()>
+
+All three functions were private, undocumented and unexported.  They do
+not appear to be used by any code on CPAN.  Two have been inlined and one
+deleted entirely.
+
+=head2 C<$$> no longer caches PID
+
+Previously, if one embeds Perl or uses XS and calls fork(3) from C, Perls
+notion of C<$$> could go out of sync with what getpid() returns. By always
+fetching the value of C<$$> via getpid(), this potential bug is eliminated.
+Code that depends on the caching behavior will break.  As describe in L</Core
+Enhancements>, C<$$> is now writeable, but it will be reset during a fork.
+
 =head1 Deprecations
 
 XXX Any deprecated features, syntax, modules etc. should be listed here.
@@ -91,10 +169,202 @@ XXX
 
 =item *
 
+L<constant> has been updated from version 1.21 to 1.22.
+
+=item *
+
+L<Archive::Extract> has been upgraded from version 0.48 to version 0.52
+
+Includes a fix for FreeBSD to only use C<unzip> if it is located in
+C</usr/local/bin>, as FreeBSD 9.0 will ship with a limited C<unzip> in
+C</usr/bin>.
+
+=item *
+
+L<Attribute::Handlers> updated from version 0.88 to 0.91
+
+=item *
+
 L<B> has been upgraded from version 1.29 to version 1.30.
 
 =item *
 
+L<B::Deparse> has been upgraded from version 1.03 to 1.05.
+
+It addresses two regressions in Perl 5.14.0:
+
+=over
+
+=item *
+
+Deparsing of the C<glob> operator and its diamond (C<< <> >>) form now
+works again [RT #90898] (5.14.1).
+
+=item *
+
+The presence of subroutines named C<::::> or C<::::::> no longer causes
+B::Deparse to hang (5.14.1).
+
+=back
+
+Plus a few other bugs:
+
+=over
+
+=item *
+
+Deparsing of handle C<keys>, C<each> and C<value> with a scalar argument
+now works [RT #91008].
+
+=item *
+
+C<readpipe> followed by a complex expression (as opposed to a simple scalar
+variable) now works.
+
+=item *
+
+It now puts C<CORE::> in front of overridable core keywords if they
+conflict with user-defined subroutines.
+
+=item *
+
+Deparsing assignment to an lvalue method specified as a variable
+(C<< $obj->$method = ... >>) used not to work [RT #62498].
+
+=back
+
+=item *
+
+L<CGI> has been upgraded from version 3.52 to version 3.54
+
+The DELETE HTTP verb is now supported.
+
+=item *
+
+L<Compress::Zlib> has been upgraded from version 2.033 to version 2.035
+
+=item *
+
+L<Compress::Raw::Bzip2> has been upgraded from version 2.033 to version 2.035
+
+=item *
+
+L<Compress::Raw::Zlib> has been upgraded from version 2.033 to version 2.035
+
+=item *
+
+L<CPAN::Meta> has been upgraded from version 2.110440 to version 2.110930
+
+=item *
+
+L<CPANPLUS> has been upgraded from version 0.9103 to version 0.9105
+
+Now understands specifying modules to install in the format 'Module/Type.pm'
+
+=item *
+
+L<CPANPLUS::Dist::Build> has been upgraded from version 0.54 to version 0.56
+
+=item *
+
+L<Data::Dumper> has been upgraded from version 2.128 to 2.131.
+
+=item *
+
+L<DB_File> has been upgraded from version 1.821 to version 1.822
+
+Warnings are now in sync with perl's
+
+=item *
+
+L<Digest::SHA> has been upgraded from version 5.61 to version 5.62
+
+No longer loads L<MIME::Base64> as this was unnecessary.
+
+=item *
+
+L<Devel::Peek> has been upgraded from version 1.07 to 1.08.
+
+Its C<fill_mstats> function no longer refuses to write to copy-on-write
+scalars.
+
+=item *
+
+L<Encode> has been upgraded from version 2.42 to version 2.43
+
+Missing aliases added, a deep recursion error fixed and various
+documentation updates.
+
+=item *
+
+L<ExtUtils::CBuilder> updated from version 0.280203 to 0.280204.  The new version
+append CFLAGS and LDFLAGS to their Config.pm counterparts.
+
+=item *
+
+L<Filter::Util::Call> has been upgraded from version 1.08 to version 1.39
+
+C<decrypt> fixed to work with v5.14.0
+
+=item *
+
+L<Filter::Simple> updated from version 0.85 to 0.87
+
+=item *
+
+L<FindBin> updated from version 1.50 to 1.51.
+
+It no longer returns a wrong result if a script of the same name as the
+current one exists in the path and is executable.
+
+=item *
+
+L<JSON::PP> has been upgraded from version 2.27105 to version 2.27200
+
+Fixed C<incr_parse> decoding string more correctly.
+
+=item *
+
+L<I18N::LangTags> has been upgraded from version 0.35_01 to version 0.36.
+
+Fix broken URLs for RFCs.
+
+=item *
+
+L<IPC::Open3> has been upgraded from version 1.10 to version 1.11.
+
+=over 4
+
+=item *
+
+Fixes a bug which prevented use of open3 on Windows when *STDIN, *STDOUT or
+*STDERR had been localized.
+
+=item *
+
+Fixes a bug which prevented duplicating numeric file descriptors on Windows.
+
+=back
+
+=item *
+
+L<Math::BigFloat> has been upgraded from version 1.993 to 1.994.
+
+The C<numify> method has been corrected to return a normalised Perl number
+(the result of C<0 + $thing>), instead of a string [rt.cpan.org #66732].
+
+=item *
+
+L<Math::BigInt> has been upgraded from version 1.994 to 1.995.
+
+It provides a new C<bsgn> method that complements the C<babs> method.
+
+It fixes the internal C<objectify> function's handling of "foreign objects"
+so they are converted to the appropriate class (Math::BigInt or
+Math::BigFloat).
+
+=item *
+
 L<Math::Complex> has been upgraded from version 1.56 to version 1.57.
 
 Correct copy constructor usage.
@@ -103,8 +373,64 @@ More stable C<great_circle_direction> algorithm.
 
 =item *
 
+L<Module::CoreList> has been upgraded from version 2.49 to 2.50.
+
+Updated for v5.12.4.
+
+=item *
+
+L<mro> has been updated to remove two broken URLs in the documentation.
+
+=item *
+
+L<Object::Accessor> has been upgraded from version 0.38 to version 0.42
+
+Eliminated use of C<exists> on array elements which has been deprecated.
+
+=item *
+
+L<ODBM_File> has been upgraded from version 1.10 to version 1.11.
+
+The XS code is now compiled with C<PERL_NO_GET_CONTEXT>, which will aid
+performance under ithreads.
+
+=item *
+
+L<PerlIO::encoding> has been upgraded from version 0.14 to 0.15
+
+=item *
+
+L<PerlIO::scalar> has been upgraded from version 0.11 to 0.12.
+
+It fixes a problem with C<< open my $fh, ">", \$scalar >> not working if
+C<$scalar> is a copy-on-write scalar.
+
+It also fixes a hang that occurs with C<readline> or C<< <$fh> >> if a
+typeglob has been assigned to $scalar [RT #92258].
+
+=item *
+
+XXX If any changes are made, the version will need to be bumped again.
+What blead has is currently (as of a9d1f3db, 7th of June) identical to
+5.14.1's version.
+
+L<Pod::Perldoc> has been upgraded from version 3.15_03 to 3.15_04.
+
+It corrects the search paths on VMS [RT #90640].
+
+=item *
+
 L<Storable> has been upgraded from version 2.27 to version 2.28.
 
+It no longer turns copy-on-write scalars into read-only scalars when
+freezing and thawing.
+
+=item *
+
+L<Sys::Syslog> has been upgraded from version 0.27 to version 0.29
+
+Large number of Request Tickets resolved.
+
 =item *
 
 L<Time::HiRes> has been upgraded from version 1.9721_01 to version 1.9722.
@@ -113,17 +439,51 @@ Portability fix, and avoiding some compiler warnings.
 
 =item *
 
+L<Unicode::Collate> has been upgraded from version 0.73 to version 0.76
+
+Updated to CLDR 1.9.1
+
+=item *
+
+L<Unicode::Normalize> has been upgraded from version 1.10 to version 1.12
+
+Fixes for the removal of C<unicore/CompositionExclusions.txt> from core.
+
+=item *
+
+L<XSLoader> has been upgraded from version 0.13 to version 0.15
+
+Integrated changes from bleadperl
+
+=item *
+
+L<charnames> can now be invoked with a new option, C<:loose>,
+which is like the existing C<:full> option, but enables Unicode loose
+name matching.  This means that instead of
+having to get the name of the code point or sequence you want exactly right,
+you can fudge things somewhat.  This is especially useful when
+you don't remember if the official Unicode name uses hyphens or
+blanks between words.  Details are in L<charnames/LOOSE MATCHES>.
+
 XXX
 
 =back
 
 =head2 Removed Modules and Pragmata
 
-=over 4
+As promised in Perl 5.14.0's release notes, the following modules have
+been removed from the core distribution, and if needed should be installed
+from CPAN instead.
+
+=over
 
 =item *
 
-XXX
+C<Devel::DProf> has been removed from the Perl core.  Prior version was 20110228.00.
+
+=item *
+
+C<Shell> has been removed from the Perl core.  Prior version was 0.72_01.
 
 =back
 
@@ -146,13 +506,152 @@ 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<XXX>
+=head3 L<perlfork>
+
+=over
+
+=item *
+
+Added portability caveats related to using kill on forked process.
+
+=back
+
+=head3 L<perlfunc>
+
+=over
+
+=item *
+
+C<given>, C<when> and C<default> are now listed in L<perlfunc> (5.14.1).
+
+=item *
+
+The examples for the C<select> function no longer use strings for file
+handles.
+
+=back
+
+=head3 L<perlguts>
+
+=over
+
+=item *
+
+Some of the function descriptions in L<perlguts> were confusing, as it was
+not clear whether they referred to the function above or below the
+description.  This has been clarified [RT #91790].
+
+=back
+
+=head3 L<perllol>
+
+=over
+
+=item *
+
+L<perllol> has been expanded with examples using the new C<push $scalar>
+syntax introduced in Perl 5.14.0 (5.14.1).
+
+=back
+
+=head3 L<perlmod>
+
+=over
+
+=item *
+
+L<perlmod> now states explicitly that some types of explicit symbol table
+manipulation are not supported.  This codifies what was effectively already
+the case [RT #78074].
+
+=back
+
+=head3 L<perlop>
+
+=over 4
+
+=item *
+
+The explanation of bitwise operators has been expanded to explain how they
+work on Unicode strings (5.14.1).
+
+=item *
+
+The section on the triple-dot or yada-yada operator has been moved up, as
+it used to separate two closely related sections about the comma operator
+(5.14.1).
+
+=item *
+
+More examples for C<m//g> have been added (5.14.1).
+
+=item *
+
+The C<<< <<\FOO >>> here-doc syntax has been documented (5.14.1).
+
+=back
+
+=head3 L<perlpodstyle>
 
 =over 4
 
 =item *
 
-XXX Description of the change here
+The tips on which formatting codes to use have been corrected and greatly
+expanded.
+
+=item *
+
+There are now a couple of example one-liners for previewing POD files after
+they have been edited.
+
+=back
+
+=head3 L<perlre>
+
+=over
+
+=item *
+
+The C<(*COMMIT)> directive is now listed in the right section
+(L<Verbs without an argument|perlre/Verbs without an argument>).
+
+=back
+
+=head3 L<perlrun>
+
+=over
+
+=item *
+
+L<perlrun> has undergone a significant clean-up.  Most notably, the
+B<-0x...> form of the B<-0> flag has been clarified, and the final section
+on environment variables has been corrected and expanded (5.14.1).
+
+=back
+
+=head3 L<perlvar>
+
+=over
+
+=item *
+
+The documentation for L<$!|perlvar/$!> has been corrected and clarified.
+It used to state that $! could be C<undef>, which is not the case.  It was
+also unclear as to whether system calls set C's C<errno> or Perl's C<$!>
+[RT #91614].
+
+=back
+
+=head3 L<POSIX>
+
+=over
+
+=item *
+
+The invocation documentation for C<WIFEXITED>, C<WEXITSTATUS>,
+C<WIFSIGNALED>, C<WTERMSIG>, C<WIFSTOPPED>, and C<WSTOPSIG> has been
+corrected (5.14.1).
 
 =back
 
@@ -171,11 +670,14 @@ include any changes in L<perldiag> that reconcile it to the C<C> code.
 
 XXX Newly added diagnostic messages go here
 
+=head3 New Warnings
+
 =over 4
 
-=item *
+=item L<Useless assignment to a temporary|perldiag/"Useless assignment to a temporary">
 
-XXX
+Assigning to a temporary returned from an XS lvalue subroutine now produces a
+warning [RT #31946].
 
 =back
 
@@ -223,7 +725,14 @@ L</Platform Support> section, instead.
 
 =item *
 
-XXX
+F<regexp.h> has been modified for compatibility with GCC's B<-Werror>
+option, as used by some projects that include perl's header files (5.14.1).
+
+=item *
+
+USE_LOCALE{,_COLLATE,_CTYPE,_NUMERIC} have been added the output of perl -V
+as they have affect the behaviour of the interpreter binary (albeit only
+in a small area).
 
 =back
 
@@ -261,9 +770,30 @@ source tree.
 
 =over 4
 
-=item XXX-some-platform
+=item GNU/Hurd
 
-XXX
+=over
+
+=item *
+
+No longer overrides possible extra $ccflags values given to Configure
+on GNU/Hurd.  C.f. Bug-Debian: http://bugs.debian.org/587901
+
+=back
+
+=item Mac OS X
+
+Clarified apple developer tools requirements in README.macosx
+
+=item MSWin32
+
+Supplied F<makefile.mk> patched to support gcc-4.x.x and README.win32
+updated accordingly. [RT #91354]
+
+=item Solaris
+
+Updated the list of required packages for building perl to reflect Solaris 9
+and 10 in README.solaris [RT #90850]
 
 =back
 
@@ -286,11 +816,19 @@ 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.
 
+=head3 Ubuntu Linux
+
 =over 4
 
-=item XXX-some-platform
+=item *
 
-XXX
+The L<ODBM_File> installation process has been updated with the new library
+paths on Ubuntu natty [RT #90106].
+
+=item *
+
+I<h2ph> now gets the include paths from gcc correctly.  This stopped
+working when Ubuntu switched to a "multiarch" setup [RT #90122].
 
 =back
 
@@ -304,12 +842,56 @@ be noted as well.
 
 =item *
 
+When empting a hash of its elements (e.g. via undef(%h), or %h=()), HvARRAY
+field is no longer temporarily zeroed.  Any destructors called on the freed
+elements see the remaining elements. Thus, %h=() becomes more like C<delete
+$h{$_} for keys %h>.
+
+=item *
+
 The compiled representation of formats is now stored via the mg_ptr of
 their PERL_MAGIC_fm. Previously it was stored in the string buffer,
 beyond SvLEN(), the regular end of the string. SvCOMPILED() and
 SvCOMPILED_{on,off}() now exist solely for compatibility for XS code.
 The first is always 0, the other two now no-ops.
 
+=item *
+
+Boyer-Moore compiled scalars are now PVMGs, and the Boyer-Moore tables are now
+stored via the mg_ptr of their PERL_MAGIC_bm. Previously they were PVGVs, with
+the tables stored in the string buffer, beyond SvLEN(). This eliminates the
+last place where the core stores data beyond SvLEN().
+
+=item *
+
+C<pos> in lvalue context now returns a PVMG instead of a PVLV, storing the
+target SV in C<mg_obj>, instead of C<LvTARG()>.
+
+=item *
+
+Simplified logic in C<Perl_sv_magic()> introduces a small change of
+behaviour for error cases involving unknown magic types. Previously, if
+C<Perl_sv_magic()> was passed a magic type unknown to it, it would
+
+=over
+
+=item 1.
+
+Croak "Modification of a read-only value attempted" if read only
+
+=item 2.
+
+Return without error if the SV happened to already have this magic
+
+=item 3.
+
+otherwise croak "Don't know how to handle magic of type \\%o"
+
+=back
+
+Now it will always croak "Don't know how to handle magic of type \\%o", even
+on read only values, or SVs which already have the unknown magic type.
+
 =back
 
 =head1 Selected Bug Fixes
@@ -320,14 +902,324 @@ L</Modules and Pragmata>.
 
 [ List each fix as a =item entry ]
 
+=head2 Regular expressions and character classes
+
 =over 4
 
 =item *
 
-XXX
+The new (in 5.14.0) regular expression modifier C</a> when repeated like
+C</aa> forbids the characters outside the ASCII range that match
+characters inside that range from matching under C</i>.  This did not
+work under some circumstances, all involving alternation, such as:
+
+ "\N{KELVIN SIGN}" =~ /k|foo/iaa;
+
+succeeded inappropriately.  This is now fixed.
+
+=item *
+
+5.14.0 introduced some memory leaks in regular expression character
+classes such as C<[\w\s]>, which have now been fixed
+
+=item *
+
+An edge case in regular expression matching could potentially loop.
+This happened only under C</i> in bracketed character classes that have
+characters with multi-character folds, and the target string to match
+against includes the first portion of the fold, followed by another
+character that has a multi-character fold that begins with the remaining
+portion of the fold, plus some more.
+
+ "s\N{U+DF}" =~ /[\x{DF}foo]/i
+
+is one such case.  C<\xDF> folds to C<"ss">
+
+=item *
+
+A few characters in regular expression pattern matches did not
+match correctly in some circumstances, all involving C</i>.  The
+affected characters are:
+COMBINING GREEK YPOGEGRAMMENI,
+GREEK CAPITAL LETTER IOTA,
+GREEK CAPITAL LETTER UPSILON,
+GREEK PROSGEGRAMMENI,
+GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA,
+GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS,
+GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA,
+GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS,
+LATIN SMALL LETTER LONG S,
+LATIN SMALL LIGATURE LONG S T,
+and
+LATIN SMALL LIGATURE ST.
+
+=item *
+
+Fixed memory leak regression in regular expression compilation
+under threading
+
+=back
+
+=head2 Formats
+
+=over
+
+=item *
+
+A number of edge cases have been fixed with formats and C<formline>;
+in particular, where the format itself is potentially variable (such as
+with ties and overloading), and where the format and data differ in their
+encoding. In both these cases, it used to possible for the output to be
+corrupted [RT #91032].
+
+=item *
+
+C<formline> no longer converts its argument into a string in-place.  So
+passing a reference to C<formline> no longer destroys the reference
+[RT #79532].
+
+=back
+
+=head2 Copy-on-write scalars
+
+Copy-on-write scalars were introduced in 5.6.0, but most Perl code
+did not encounter them (they were used mostly internally).  Perl
+5.10.0 extended them, such that assigning C<__PACKAGE__> or a
+hash key to a scalar would make it copy-on-write.  Several parts
+of Perl were not updated to account for them, but have now been fixed.
+
+=over
+
+=item *
+
+C<utf8::decode> had a nasty bug that would modify copy-on-write scalars'
+string buffers in place (i.e., skipping the copy).  This could result in
+hashes having two elements with the same key [RT #91834].
+
+=item *
+
+Lvalue subroutines were not allowing COW scalars to be returned.  This was
+fixed for lvalue scalar context in Perl 5.12.3 and 5.14.0, but list context
+was not fixed until this release.
+
+=item *
+
+Elements of restricted hashes (see the L<fields> pragma) containing
+copy-on-write values couldn't be deleted, nor could such hashes be cleared
+(C<%hash = ()>).
+
+=item *
+
+Localising a tied variable used to make it read-only if it contained a
+copy-on-write string.
+
+=item *
+
+L<Storable>, L<Devel::Peek> and L<PerlIO::scalar> had similar problems.
+See L</Updated Modules and Pragmata>, above.
+
+=back
+
+=head2 lvalue subroutines
+
+There have been various fixes to lvalue subroutines.
+
+=over
+
+=item *
+
+Explicit return now returns the actual argument passed to return, instead
+of copying it [RT #72724] [RT #72706].
+
+B<Note:> There are still some discrepancies between explicit and implicit
+return, which will hopefully be resolved soon.  So the exact behaviour is
+not set in stone yet.
+
+=item *
+
+Lvalue subroutines used to enforce lvalue syntax (i.e., whatever can go on
+the left-hand side of C<=>) for the last statement and the arguments to
+return.  Since lvalue subroutines are not always called in lvalue context,
+this restriction has been lifted.
+
+=item *
+
+Lvalue subroutines are less restrictive as to what values can be returned.
+It used to croak on values returned by C<shift> and C<delete> and from
+other subroutines, but no longer does so [RT #71172].
+
+=item *
+
+Empty lvalue subroutines (C<sub :lvalue {}>) used to return C<@_> in list
+context.  In fact, all subroutines used to, but regular subs were fixed in
+Perl 5.8.2.  Now lvalue subroutines have been likewise fixed.
+
+=item *
+
+Lvalue subroutines used to copy their return values in rvalue context.  Not
+only was this a waste of CPU cycles, but it also caused bugs.  A C<($)>
+prototype would cause an lvalue sub to copy its return value [RT #51408],
+and C<while(lvalue_sub() =~ m/.../g) { ... }> would loop endlessly
+[RT #78680].
+
+=item *
+
+Autovivification now works on values returned from lvalue subroutines
+[RT #7946].
+
+=item *
+
+When called in pass-by-reference context (e.g., subroutine arguments or a list
+passed to C<for>), an lvalue subroutine returning arrays or hashes used to bind
+the arrays (or hashes) to scalar variables--something that is not supposed to
+happen.  This could result in "Bizarre copy of ARRAY" errors or C<print>
+ignoring its arguments.  It also made nonsensical code like C<@{\$_}> "work".
+This was fixed in 5.14.0 if an array were the first thing returned from the
+subroutine (but not for C<$scalar, @array> or hashes being returned).  Now a
+more general fix has been applied [RT #23790].
+
+=item *
+
+Assignment to C<keys> returned from an lvalue sub used not to work, but now
+it does.
+
+=back
+
+=head2 Fixes related to hashes
+
+=over
+
+=item *
+
+A bug has been fixed that would cause a "Use of freed value in iteration"
+error if the next two hash elements that would be iterated over are
+deleted [RT #85026].
+
+=item *
+
+Freeing deeply nested hashes no longer crashes [RT #44225].
+
+=item *
+
+Deleting the current hash iterator (the hash element that would be returend
+by the next call to C<each>) in void context used not to free it.  The hash
+would continue to reference it until the next iteration.  This has been
+fixed [RT #85026].
+
+=back
+
+=head2 Other notable fixes
+
+=over
+
+=item *
+
+Passing the same constant subroutine to both C<index> and C<formline> no
+longer causes one or the other to fail [RT #89218].
+
+=item *
+
+List assignment to lexical variables declared with attributes in the same
+statement (C<my ($x,@y) : blimp = (72,94)>) stopped working in Perl 5.8.0.
+It has now been fixed.
+
+=item *
+
+Perl 5.10.0 introduced some faulty logic that made "U*" in the middle of
+a pack template equivalent to "U0" if the input string was empty.  This has
+been fixed [RT #90160].
+
+=item *
+
+Destructors on objects were not called during global destruction on objects
+that were not referenced by any scalars.  This could happen if an array
+element were blessed (e.g., C<bless \$a[0]>) or if a closure referenced a
+blessed variable (C<bless \my @a; sub foo { @a }>).
+
+Now there is an extra pass during global destruction to fire destructors on
+any objects that might be left after the usual passes that check for
+objects referenced by scalars [RT #36347].
+
+This bug fix was added in Perl 5.13.9, but caused problems with some CPAN
+modules that were relying on the bug.  Since it was so close to Perl
+5.14.0, the fix was reverted in 5.13.10, to allow more time for the modules
+to adapt.  Hopefully they will be fixed soon (see L</Known Problems>,
+below).
+
+=item *
+
+C<given> was not calling set-magic on the implicit lexical C<$_> that it
+uses.  This meant, for example, that C<pos> would be remembered from one
+execution of the same C<given> block to the next, even if the input were a
+different variable [RT #84526].
+
+=item *
+
+The "R" command for restarting a debugger session has been fixed to work on
+Windows, or any other system lacking a C<POSIX::_SC_OPEN_MAX> constant
+[RT #87740].
+
+=item *
+
+Fixed a case where it was possible that a freed buffer may have been read
+from when parsing a here document [RT #90128].
+
+=item *
+
+The C<study> function could become confused if fed a string longer than
+2**31 characters.  Now it simply skips such strings.
+
+=item *
+
+C<each(I<ARRAY>)> is now wrapped in C<defined(...)>, like C<each(I<HASH>)>,
+inside a C<when> condition [RT #90888].
+
+=item *
+
+In @INC filters (subroutines returned by subroutines in @INC), $_ used to
+misbehave: If returned from a subroutine, it would not be copied, but the
+variable itself would be returned; and freeing $_ (e.g., with C<undef *_>)
+would cause perl to crash.  This has been fixed [RT #91880].
+
+=item *
+
+An ASCII single quote (') in a symbol name is meant to be equivalent to a
+double colon (::) except at the end of the name.  It was not equivalent if
+followed by a null character, but now it is [RT #88138].
+
+=item *
+
+The abbreviations for four C1 control characters
+C<MW>
+C<PM>,
+C<RI>,
+and
+C<ST>
+were previously unrecognized by C<\N{}>,
+vianame(), and string_vianame().
+
+=item *
+
+Some cases of threads crashing due to memory allocation during cloning have
+been fixed [RT #90006].
+
+=item *
+
+Attempting to C<goto> out of a tied handle method used to cause memory
+corruption or crashes.  Now it produces an error message instead
+[RT #8611].
 
 =back
 
+=head2 Additional fixes by ticket number
+
+XXX Prefix these with "\n=item *\n" once the list is final
+
+Fixed RT #88822: Test failure t/re_fold_grind.t with bleadperl
+Fixed RT #89896: Locale::Maketext test failure
+
+XXX Comments from FC: I do not think these two are necessary.
+
 =head1 Known Problems
 
 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
@@ -343,7 +1235,8 @@ from either 5.XXX.XXX or 5.XXX.XXX.
 
 =item *
 
-XXX
+The fix for RT #36347 causes test failures for C<Gtk2> and C<Tk> on some
+systems [RT #82542].
 
 =back