This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta entry for 8c8488cd4fce90cb5c03fb3f89e89c05e5275498.
[perl5.git] / pod / perldelta.pod
index 3d9e08a..ecb2d62 100644 (file)
@@ -1,5 +1,13 @@
 =encoding utf8
 
+=for comment
+This has been completed up to 518a985, except for:
+04777d295957ad270188e4debf51b523e07cc5b0
+c565ab54dc649bb62cd4d57149d7b2abb21df5f3
+1c8d11ca3d0ce8bc11562f159b94c2c7e62dea6c
+1830b3d9c87f8b1473b0a80759846f7a5dccae5a
+I may have missed a few module version bumps.
+
 =head1 NAME
 
 [ this is a template for a new perldelta file. Any text flagged as
@@ -44,6 +52,94 @@ should accept either a literal array or an array reference as the argument:
 When using the C<+> prototype, your function must check that the argument
 is of an acceptable type.
 
+=head2 C<use re '/flags';>
+
+The C<re> pragma now has the ability to turn on regular expression flags
+till the end of the lexical scope:
+
+    use re '/x';
+    "foo" =~ / (.+) /;  # /x implied
+
+See L<re/'/flags' mode> for details.
+
+=head2 Statement labels can appear in more places
+
+Statement labels can now occur before any type of statement or declaration,
+such as C<package>.
+
+=head2 C<use feature "unicode_strings"> now applies to more regex matching
+
+Another chunk of the L<perlunicode/The "Unicode Bug"> is fixed in this
+release.  Now, regular expressions compiled within the scope of the
+"unicode_strings" feature (or under the "u" regex modifier (specifiable
+currently only with infix notation C<(?u:...)> or via C<use re '/u'>)
+will match the same whether or not the target string is encoded in utf8,
+with regard to C<[[:posix:]]> character classes
+
+Work is underway to add the case sensitive matching to the control of
+this feature, but was not complete in time for this dot release.
+
+=head2 Array and hash container functions accept references
+
+All built-in functions that operate directly on array or hash
+containers now also accept hard references to arrays or hashes:
+
+  |----------------------------+---------------------------|
+  | Traditional syntax         | Terse syntax              |
+  |----------------------------+---------------------------|
+  | push @$arrayref, @stuff    | push $arrayref, @stuff    |
+  | unshift @$arrayref, @stuff | unshift $arrayref, @stuff |
+  | pop @$arrayref             | pop $arrayref             |
+  | shift @$arrayref           | shift $arrayref           |
+  | splice @$arrayref, 0, 2    | splice $arrayref, 0, 2    |
+  | keys %$hashref             | keys $hashref             |
+  | keys @$arrayref            | keys $arrayref            |
+  | values %$hashref           | values $hashref           |
+  | values @$arrayref          | values $arrayref          |
+  | ($k,$v) = each %$hashref   | ($k,$v) = each $hashref   |
+  | ($k,$v) = each @$arrayref  | ($k,$v) = each $arrayref  |
+  |----------------------------+---------------------------|
+
+This allows these built-in functions to act on long dereferencing chains
+or on the return value of subroutines without needing to wrap them in
+C<@{}> or C<%{}>:
+
+  push @{$obj->tags}, $new_tag;  # old way
+  push $obj->tags,    $new_tag;  # new way
+
+  for ( keys %{$hoh->{genres}{artists}} ) {...} # old way 
+  for ( keys $hoh->{genres}{artists}    ) {...} # new way 
+
+For C<push>, C<unshift> and C<splice>, the reference will auto-vivify
+if it is not defined, just as if it were wrapped with C<@{}>.
+
+Calling C<keys> or C<values> directly on a reference gives a substantial
+performance improvement over explicit dereferencing.
+
+For C<keys>, C<values>, C<each>, when overloaded dereferencing is
+present, the overloaded dereference is used instead of dereferencing the
+underlying reftype.  Warnings are issued about assumptions made in the
+following three ambiguous cases:
+
+  (a) If both %{} and @{} overloading exists, %{} is used
+  (b) If %{} overloading exists on a blessed arrayref, %{} is used
+  (c) If @{} overloading exists on a blessed hashref, @{} is used
+
+=head2 y///r
+
+The C</r> flag, which was added to C<s///> in 5.13.2, has been extended to
+the C<y///> operator.
+
+It causes it to perform the substitution on a I<copy> of its operand,
+returning that copy instead of a character count.
+
+=head2 New global variable C<${^GLOBAL_PHASE}>
+
+A new global variable, C<${^GLOBAL_PHASE}>, has been added to allow
+introspection of the current phase of the perl interpreter. It's explained in
+detail in L<perlvar/"${^GLOBAL_PHASE}"> and
+L<perlmod/"BEGIN, UNITCHECK, CHECK, INIT and END">.
+
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -61,6 +157,62 @@ XXX For a release on a stable branch, this section aspires to be:
 
 [ List each incompatible change as a =head2 entry ]
 
+=head2 Dereferencing typeglobs
+
+If you assign a typeglob to a scalar variable:
+
+    $glob = *foo;
+
+the glob that is copied to C<$glob> is marked with a special flag
+indicating that the glob is just a copy. This allows subsequent assignments
+to C<$glob> to overwrite the glob. The original glob, however, is
+immutable.
+
+Many Perl operators did not distinguish between these two types of globs.
+This would result in strange behaviour in edge cases: C<untie $scalar>
+would do nothing if the last thing assigned to the scalar was a glob
+(because it treated it as C<untie *$scalar>, which unties a handle).
+Assignment to a glob slot (e.g., C<(*$glob) = \@some_array>) would simply
+assign C<\@some_array> to C<$glob>.
+
+To fix this, the C<*{}> operator (including the C<*foo> and C<*$foo> forms)
+has been modified to make a new immutable glob if its operand is a glob
+copy. Various operators that make a distinction between globs and scalars
+have been modified to treat only immutable globs as globs.
+
+This causes an incompatible change in code that assigns a glob to the
+return value of C<*{}> when that operator was passed a glob copy. Take the
+following code, for instance:
+
+    $glob = *foo;
+    *$glob = *bar;
+
+The C<*$glob> on the second line returns a new immutable glob. That new
+glob is made an alias to C<*bar>. Then it is discarded. So the second
+assignment has no effect.
+
+The upside to this incompatible change is that bugs
+L<[perl #77496]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77496>,
+L<[perl #77502]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77502>,
+L<[perl #77508]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77508>,
+L<[perl #77688]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77688>,
+and
+L<[perl #77812]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77812>,
+and maybe others, too, have been fixed.
+
+See L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=77810> for even
+more detail.
+
+=head2 Clearing stashes
+
+Stash list assignment C<%foo:: = ()> used to make the stash anonymous
+temporarily while it was being emptied. Consequently, any of its
+subroutines referenced elsewhere would become anonymous (showing up as
+"(unknown)" in C<caller>). Now they retain their package names, such that
+C<caller> will return the original sub name if there is still a reference
+to its typeglob, or "foo::__ANON__" otherwise
+L<[perl #79208]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79208>.
+
 =head1 Deprecations
 
 XXX Any deprecated features, syntax, modules etc. should be listed here.
@@ -80,7 +232,10 @@ may well be none in a stable release.
 
 =item *
 
-XXX
+When an object has many weak references to it, freeing that object
+can under some some circumstances take O(N^2) time to free (where N is the
+number of references). The number of circumstances has been reduced.
+L<[perl #75254]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75254>.
 
 =back
 
@@ -102,7 +257,20 @@ cribbed.
 
 =item *
 
-XXX
+The following modules were added by the C<Unicode::Collate> 
+upgrade from 0.63 to 0.67. See below for details.
+
+C<Unicode::Collate::CJK::Big5>
+
+C<Unicode::Collate::CJK::GB2312>
+
+C<Unicode::Collate::CJK::JISX0208>
+
+C<Unicode::Collate::CJK::Korean>
+
+C<Unicode::Collate::CJK::Pinyin>
+
+C<Unicode::Collate::CJK::Stroke>
 
 =back
 
@@ -112,7 +280,231 @@ XXX
 
 =item *
 
-XXX
+C<Archive::Extract> has been upgraded from 0.44 to 0.46
+
+Resolves an issue with NetBSD-current and its new unzip 
+executable.
+
+=item *
+
+C<Archive::Tar> has been upgraded from 1.68 to 1.70
+
+This adds the ptargrep utility for using regular expressions against 
+the contents of files in a tar archive.
+
+=item *
+
+C<B> has been upgraded from 1.24 to 1.26.
+
+It no longer crashes when taking apart a C<y///> containing characters
+outside the octet range or compiled in a C<use utf8> scope.
+
+=item *
+
+C<B::Deparse> has been upgraded from 0.99 to 1.01.
+
+It fixes deparsing of C<our> followed by a variable with funny characters
+(as permitted under the C<utf8> pragma)
+L<[perl #33752]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=33752>.
+
+=item *
+
+C<CGI> has been upgraded from 3.49 to 3.50
+
+This provides the following security fixes: the MIME boundary in 
+multipart_init is now random and improvements to the handling of 
+newlines embedded in header values.
+
+The documentation for param_fetch() has been corrected and clarified.
+
+=item *
+
+C<CPAN> has been upgraded from 1.94_61 to 1.94_62
+
+=item *
+
+C<CPANPLUS> has been upgraded from 0.9007 to 0.9010
+
+Fixes for the SQLite source engine and resolving of issues with the
+testsuite when run under local::lib and/or cpanminus
+
+=item *
+
+C<CPANPLUS::Dist::Build> has been upgraded from 0.48 to 0.50
+
+=item *
+
+C<Data::Dumper> has been upgraded from 2.129 to 2.130.
+
+=item *
+
+C<DynaLoader> has been upgraded from 1.10 to 1.11.
+
+It fixes a buffer overflow when passed a very long file name.
+
+=item *
+
+C<ExtUtils::Constant> has been upgraded from 0.22 to 0.23.
+
+=item *
+
+C<Fcntl> has been upgraded from 1.09 to 1.10.
+
+=item *
+
+C<File::Fetch> has been upgraded from 0.24 to 0.28
+
+C<HTTP::Lite> is now supported for 'http' scheme.
+
+The C<fetch> utility is supported on FreeBSD, NetBSD and
+Dragonfly BSD for the C<http> and C<ftp> schemes.
+
+=item *
+
+C<File::Glob> has been upgraded from 1.09 to 1.10.
+
+=item *
+
+C<File::stat> has been upgraded from 1.03 to 1.04.
+
+The C<-x> and C<-X> file test operators now work correctly under the root
+user.
+
+=item *
+
+C<GDBM_File> has been upgraded from 1.11 to 1.12.
+
+This fixes a memory leak when DBM filters are used.
+
+=item *
+
+C<Hash::Util> has been upgraded from 0.09 to 0.10.
+
+=item *
+
+C<Hash::Util::FieldHash> has been upgraded from 1.05 to 1.06.
+
+=item *
+
+C<I18N::Langinfo> has been upgraded from 0.06 to 0.07.
+
+=item *
+
+C<Locale::Maketext> has been upgraded from 1.16 to 1.17.
+
+=item *
+
+C<Math::BigInt> has been upgraded from 1.97 to 1.99.
+
+=item *
+
+C<Math::BigInt::FastCalc> has been upgraded from 0.22 to 0.24.
+
+=item *
+
+C<MIME::Base64> has been upgraded from 3.09 to 3.10
+
+Includes new functions to calculate the length of encoded and decoded
+base64 strings.
+
+=item *
+
+C<mro> has been upgraded from 1.04 to 1.05.
+
+=item *
+
+C<NDBM_File> has been upgraded from 1.09 to 1.10.
+
+This fixes a memory leak when DBM filters are used.
+
+=item *
+
+C<ODBM_File> has been upgraded from 1.08 to 1.09.
+
+This fixes a memory leak when DBM filters are used.
+
+=item *
+
+C<Opcode> has been upgraded from 1.16 to 1.17.
+
+=item *
+
+C<parent> has been upgraded from 0.223 to 0.224
+
+=item *
+
+C<Pod::Simple> has been upgraded from 3.14 to 3.15
+
+Includes various fixes to C<HTML> and C<XHTML> handling.
+
+=item *
+
+C<POSIX> has been upgraded from 1.21 to 1.22.
+
+=item *
+
+C<re> has been upgraded from 0.13 to 0.14, for the sake of the new
+C<use re "/flags"> pragma.
+
+=item *
+
+C<Safe> has been upgraded from 2.28 to 2.29.
+
+It adds C<&version::vxs::VCMP> to the default share.
+
+=item *
+
+C<SDBM_File> has been upgraded from 1.07 to 1.08.
+
+=item *
+
+C<SelfLoader> has been upgraded from 1.17 to 1.18.
+
+It now works in taint mode
+L<[perl #72062]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72062>.
+
+=item *
+
+C<Socket> has been upgraded from 1.90 to 1.91.
+
+=item *
+
+C<Storable> has been upgraded from 2.22 to 2.24
+
+Includes performance improvement for overloaded classes.
+
+=item *
+
+C<Sys::Hostname> has been upgraded from 1.13 to 1.14.
+
+=item *
+
+C<Unicode::Collate> has been upgraded from 0.63 to 0.67
+
+This release newly adds locales C<ja> C<ko> and C<zh> and its variants 
+( C<zh__big5han>, C<zh__gb2312han>, C<zh__pinyin>, C<zh__stroke> ).
+
+Supported UCA_Version 22 for Unicode 6.0.0.
+
+The following modules have been added:
+
+C<Unicode::Collate::CJK::Big5> for C<zh__big5han> which makes 
+tailoring of CJK Unified Ideographs in the order of CLDR's big5han ordering.
+
+C<Unicode::Collate::CJK::GB2312> for C<zh__gb2312han> which makes
+tailoring of CJK Unified Ideographs in the order of CLDR's gb2312han ordering.
+
+C<Unicode::Collate::CJK::JISX0208> which makes tailoring of 6355 kanji 
+(CJK Unified Ideographs) in the JIS X 0208 order.
+
+C<Unicode::Collate::CJK::Korean> which makes tailoring of CJK Unified Ideographs 
+in the order of CLDR's Korean ordering.
+
+C<Unicode::Collate::CJK::Pinyin> for C<zh__pinyin> which makes
+tailoring of CJK Unified Ideographs in the order of CLDR's pinyin ordering.
+
+C<Unicode::Collate::CJK::Stroke> for C<zh__stroke> which makes
+tailoring of CJK Unified Ideographs in the order of CLDR's stroke ordering.
 
 =back
 
@@ -131,6 +523,11 @@ XXX
 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>.
 
+L<perlvar> reorders the variables and groups them by topic. Each variable
+introduced after Perl 5.000 notes the first version in which it is 
+available. L<perlvar> also has a new section for deprecated variables to
+note when they were removed.
+
 =head2 New Documentation
 
 XXX Changes which create B<new> files in F<pod/> go here.
@@ -145,6 +542,19 @@ 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.
 
+=over
+
+=item *
+
+Array and hash slices in scalar context are now documented in L<perldata>.
+
+=item *
+
+L<perlform> and L<perllocale> have been corrected to state that
+C<use locale> affects formats.
+
+=back
+
 =head3 L<XXX>
 
 =over 4
@@ -174,7 +584,9 @@ XXX Newly added diagnostic messages go here
 
 =item *
 
-XXX
+"Using !~ with %s doesn't make sense": This message was actually added in
+5.13.2, but was omitted from perldelta. It now applies also to the C<y///>
+operator, and has been documented.
 
 =back
 
@@ -199,13 +611,14 @@ here. Most of these are built within the directories F<utils> and F<x2p>.
 entries for each change
 Use L<XXX> with program names to get proper documentation linking. ]
 
-=head3 L<XXX>
+=head3 L<ptargrep>
 
 =over 4
 
 =item *
 
-XXX
+L<ptargrep> is a utility to apply pattern matching to the contents of files 
+in a tar archive. It comes with C<Archive::Tar>.
 
 =back
 
@@ -240,7 +653,19 @@ that they represent may be covered elsewhere.
 
 =item *
 
-XXX
+The new F<t/mro/isa_aliases.t> has been added, which tests that
+C<*Foo::ISA = *Bar::ISA> works properly.
+
+=item *
+
+F<t/mro/isarev.t> has been added, which tests that C<PL_isarev> (accessible
+at the Perl level via C<mro::get_isarev>) is updated properly.
+
+=item *
+
+F<t/run/switchd-78586.t> has been added, which tests that
+L<[perl #78586]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78586>
+has been fixed (related to line numbers in the debbuger).
 
 =back
 
@@ -287,9 +712,19 @@ L</Modules and Pragmata> section.
 
 =over 4
 
-=item XXX-some-platform
+=item Windows
 
-XXX
+Directory handles are now properly cloned when threads are created. In perl
+5.13.6, child threads simply stopped inheriting directory handles. In
+previous versions, threads would share handles, resulting in crashes.
+
+Building with Visual C++ 2010 is now supported.
+
+=item VMS
+
+Record-oriented files (record format variable or variable wih fixed control)
+opened for write by the perlio layer will now be line buffered to prevent the
+introduction of spurious line breaks whenever the perlio buffer fills up.
 
 =back
 
@@ -305,7 +740,61 @@ be noted as well.
 
 =item *
 
-XXX
+C<lex_start> has been added to the API, but is considered experimental.
+
+=item *
+
+A new C<parse_block> function has been added to the API
+L<[perl #78222]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78222>.
+
+=item *
+
+A new, experimental API has been added for accessing the internal
+structure that Perl uses for C<%^H>. See the functions beginning with
+C<cophh_> in L<perlapi>.
+
+=item *
+
+A stash can now have a list of effective names in addition to its usual
+name. The first effective name can be accessed via the C<HvENAME> macro,
+which is now the recommended name to use in MRO linearisations (C<HvNAME>
+being a fallback if there is no C<HvENAME>).
+
+These names are added and deleted via C<hv_ename_add> and
+C<hv_ename_delete>. These two functions are I<not> part of the API.
+
+=item *
+
+The way the parser handles labels has been cleaned up and refactored. As a
+result, the C<newFOROP()> constructor function no longer takes a parameter
+stating what label is to go in the state op.
+
+=item *
+
+The C<newWHILEOP()> and C<newFOROP()> functions no longer accept a line
+number as a parameter.
+
+=item *
+
+A new C<parse_barestmt()> function has been added, for parsing a statement
+without a label.
+
+=item *
+
+A new C<parse_label()> function has been added, that parses a statement
+label, separate from statements.
+
+=item *
+
+The C<CvSTASH()> macro can now only be used as an rvalue. C<CvSTASH_set()>
+has been added to replace assignment to C<CvSTASH()>. This is to ensure
+that backreferences are handled properly. These macros are not part of the
+API.
+
+=item *
+
+The C<op_scope()> and C<op_lvalue()> functions have been added to the API,
+but are considered experimental.
 
 =back
 
@@ -321,7 +810,188 @@ L</Modules and Pragmata>.
 
 =item *
 
-XXX
+The C<parse_stmt> C function added in earlier in the 5.13.x series has been
+fixed to work with statements ending with C<}>
+L<[perl #78222]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78222>.
+
+=item *
+
+The C<parse_fullstmt> C function added in 5.13.5 has been fixed to work
+when called while an expression is being parsed.
+
+=item *
+
+Characters in the Latin-1 non-ASCII range (0x80 to 0xFF) used not to match
+themselves if the string happened to be UTF8-encoded internally, the
+regular expression was not, and the character in the regular expression was
+inside a repeated group (e.g.,
+C<Encode::decode_utf8("\303\200") =~ /(\xc0)+/>)
+L<[perl #78464]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78464>.
+
+=item *
+
+The C<(?d)> regular expression construct now overrides a previous C<(?u)>
+or C<use feature "unicode_string">
+L<[perl #78508]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78508>.
+
+=item *
+
+A memory leak in C<do "file">, introduced in perl 5.13.6, has been fixed
+L<[perl #78488]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78488>.
+
+=item *
+
+Various bugs related to typeglob dereferencing have been fixed. See
+L</Dereferencing typeglobs>, above.
+
+=item *
+
+The C<SvPVbyte> function available to XS modules now calls magic before
+downgrading the SV, to avoid warnings about wide characters
+L<[perl #72398]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72398>.
+
+=item *
+
+The C<=> operator used to ignore magic (e.g., tie methods) on its
+right-hand side if the scalar happened to hold a typeglob. This could
+happen if a typeglob was the last thing returned from or assigned to a tied
+scalar
+L<[perl #77498]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77498>.
+
+=item *
+
+C<sprintf> was ignoring locales when called with constant arguments
+L<[perl #78632]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78632>.
+
+=item *
+
+A non-ASCII character in the Latin-1 range could match both a Posix
+class, such as C<[[:alnum:]]>, and its inverse C<[[:^alnum:]]>.  This is
+now fixed for regular expressions compiled under the C<"u"> modifier.
+See L</C<use feature "unicode_strings"> now applies to more regex matching>.
+L<[perl #18281]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=18281>.
+
+=item *
+
+Concatenating long strings under C<use encoding> no longer causes perl to
+crash
+L<[perl #78674]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78674>.
+
+=item *
+
+Typeglob assignments would crash if the glob's stash no longer existed, so
+long as the glob assigned to was named 'ISA' or the glob on either side of
+the assignment contained a subroutine.
+
+=item *
+
+Calling C<< ->import >> on a class lacking an import method could corrupt the stack result in strange behaviour. For instance,
+
+  push @a, "foo", $b = bar->import;
+
+would assign 'foo' to C<$b>
+L<[perl #63790]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=63790>.
+
+=item *
+
+Creating an alias to a package when that package had been detached from the
+symbol table would result in corrupted isa caches
+L<[perl #77358]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77358>.
+
+=item *
+
+C<.=> followed by C<< <> >> or C<readline> would leak memory if C<$/>
+contained characters beyond the octet range and the scalar assigned to
+happened to be encoded as UTF8 internally
+L<[perl #72246]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72246>.
+
+=item *
+
+The C<recv> function could crash when called with the MSG_TRUNC flag
+L<[perl #75082]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75082>.
+
+=item *
+
+Evaluating a simple glob (like C<*a>) was calling get-magic on the glob,
+even when its contents were not being used
+L<[perl #78580]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78580>.
+
+This bug was introduced in 5.13.2 and did not affect earlier perl versions.
+
+=item *
+
+Matching a Unicode character against an alternation containing characters
+that happened to match continuation bytes in the former's UTF8
+representation (C<qq{\x{30ab}} =~ /\xab|\xa9/>) would cause erroneous
+warnings
+L<[perl #70998]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=70998>.
+
+=item *
+
+C<s///r> (added in 5.13.2) no longer leaks.
+
+=item *
+
+The trie optimisation was not taking empty groups into account, preventing
+'foo' from matching C</\A(?:(?:)foo|bar|zot)\z/>
+L<[perl #78356]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78356>.
+
+=item *
+
+A pattern containing a C<+> inside a lookahead would sometimes cause an
+incorrect match failure in a global match (e.g., C</(?=(\S+))/g>)
+L<[perl #68564]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68564>.
+
+=item *
+
+Iterating with C<foreach> over an array returned by an lvalue sub now works
+L<[perl #23790]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=23790>.
+
+=item *
+
+C<$@> is now localised during calls to C<binmode> to prevent action at a
+distance
+L<[perl #78844]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78844>.
+
+=item *
+
+C<PL_isarev>, which is accessible to Perl via C<mro::get_isarev> is now
+updated properly when packages are deleted or removed from the C<@ISA> of
+other classes. This allows many packages to be created and deleted without
+causing a memory leak
+L<[perl #75176]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75176>.
+
+=item *
+
+C<undef *Foo::> and C<undef *Foo::ISA> and C<delete $package::{ISA}>
+used not to update the internal isa caches if the
+stash or C<@ISA> array had a reference elsewhere. In
+fact, C<undef *Foo::ISA> would stop a new C<@Foo::ISA> array from updating
+caches.
+
+=item *
+
+C<@ISA> arrays can now be shared between classes via
+C<*Foo::ISA = \@Bar::ISA> or C<*Foo::ISA = *Bar::ISA>
+L<[perl #77238]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77238>.
+
+=item *
+
+The parser no longer hangs when encountering certain Unicode characters,
+such as U+387
+L<[perl #74022]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=74022>.
+
+=item *
+
+C<formline> no longer crashes when passed a tainted format picture. It also
+taints C<$^A> now if its arguments are tainted
+L<[perl #79138]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79138>.
+
+=item *
+
+A signal handler called within a signal handler could cause leaks or
+double-frees. Now fixed.
+L<[perl #76248]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=76248>.
 
 =back
 
@@ -349,6 +1019,11 @@ XXX
 XXX If any significant core contributor has died, we've added a short obituary
 here.
 
+Randy Kobes, creator of the kobesearch alternative to search.cpan.org and
+contributor/maintainer to several core Perl toolchain modules, passed away
+on September 18, 2010 after a battle with lung cancer.  His contributions
+to the Perl community will be missed.
+
 =head1 Acknowledgements
 
 XXX The list of people to thank goes here.