This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta up to a51ee39b
[perl5.git] / pod / perldelta.pod
index 557dbb5..7635b3b 100644 (file)
@@ -1,30 +1,23 @@
 =encoding utf8
 
 =for comment
-This has been completed up to 518a985, except for:
-04777d295957ad270188e4debf51b523e07cc5b0
-c565ab54dc649bb62cd4d57149d7b2abb21df5f3
-1c8d11ca3d0ce8bc11562f159b94c2c7e62dea6c
-51698cb360d5bba06e12496ef9c7bf82e3352b71
-0c4d3b5ea916cf640ea163c5a6bcffefade55a1b
-1830b3d9c87f8b1473b0a80759846f7a5dccae5a
-I may have missed a few module version bumps.
+This has been completed up to a51ee39b.
 
 =head1 NAME
 
 [ 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.13.7
+perldelta - what is new for perl v5.13.8
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.13.6 release and
+This document describes differences between the 5.13.8 release and
 the 5.13.7 release.
 
-If you are upgrading from an earlier release such as 5.13.5, first read
-L<perl5136delta>, which describes differences between 5.13.5 and
-5.13.6.
+If you are upgrading from an earlier release such as 5.13.6, first read
+L<perl5137delta>, which describes differences between 5.13.6 and
+5.13.7.
 
 =head1 Notice
 
@@ -38,109 +31,31 @@ here, but most should go in the L</Performance Enhancements> section.
 
 [ List each enhancement as a =head2 entry ]
 
-=head2 Single term prototype
+=head2 C<-d:-foo> calls C<Devel::foo::unimport>
 
-The C<+> prototype is a special alternative to C<$> that will act like
-C<\[@%]> when given a literal array or hash variable, but will otherwise
-force scalar context on the argument.  This is useful for functions which
-should accept either a literal array or an array reference as the argument:
+The syntax C<-dI<B<:>foo>> was extended in 5.6.1 to make C<-dI<:fooB<=bar>>>
+equivalent to C<-MDevel::foo=bar>, which expands
+internally to C<use Devel::foo 'bar';>.
+F<perl> now allows prefixing the module name with C<->, with the same
+semantics as C<-M>, I<i.e.>
 
-    sub smartpush (+@) {
-        my $aref = shift;
-        die "Not an array or arrayref" unless ref $aref eq 'ARRAY';
-        push @$aref, @_;
-    }
-
-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:
+=over 4
 
-  (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
+=item C<-d:-foo>
 
-=head2 y///r
+Equivalent to C<-M-Devel::foo>, expands to
+C<no Devel::foo;>, calls C<< Devel::foo->unimport() >>
+if the method exists.
 
-The C</r> flag, which was added to C<s///> in 5.13.2, has been extended to
-the C<y///> operator.
+=item C<-d:-foo=bar>
 
-It causes it to perform the substitution on a I<copy> of its operand,
-returning that copy instead of a character count.
+Equivalent to C<-M-Devel::foo=bar>, expands to C<no Devel::foo 'bar';>,
+calls C<< Devel::foo->unimport('bar') >> if the method exists.
 
-=head2 New global variable C<${^GLOBAL_PHASE}>
+=back
 
-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">.
+This is particularly useful to suppresses the default actions of a
+C<Devel::*> module's C<import> method whilst still loading it for debugging.
 
 =head1 Security
 
@@ -159,52 +74,6 @@ 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.
-
 =head1 Deprecations
 
 XXX Any deprecated features, syntax, modules etc. should be listed here.
@@ -213,6 +82,20 @@ listed as an updated module in the L</Modules and Pragmata> section.
 
 [ List each deprecation as a =head2 entry ]
 
+=head2 C<?PATTERN?> is deprecated
+
+C<?PATTERN?> (without the initial m) has been deprecated and now produces
+a warning.
+
+=head2 C<sv_compile_2op> is now deprecated
+
+The C<sv_compile_2op> is now deprecated, and will be removed. Searches suggest
+that nothing on CPAN is using it, so this should have zero impact.
+
+It attempted to provide an API to compile code down to an optree, but failed
+to bind correctly to lexicals in the enclosing scope. It's not possible to
+fix this problem within the constraints of its parameters and return value.
+
 =head1 Performance Enhancements
 
 XXX Changes which enhance performance without changing behaviour go here. There
@@ -224,10 +107,7 @@ may well be none in a stable release.
 
 =item *
 
-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>.
+XXX
 
 =back
 
@@ -249,20 +129,7 @@ cribbed.
 
 =item *
 
-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>
+XXX
 
 =back
 
@@ -272,224 +139,31 @@ C<Unicode::Collate::CJK::Stroke>
 
 =item *
 
-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<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.
+C<IPC::Cmd> has been upgraded from 0.64 to 0.66
 
-=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.
+Resolves an issue with splitting Win32 command lines
+and documentation enhancements.
 
 =item *
 
-C<ODBM_File> has been upgraded from 1.08 to 1.09.
+C<MIME::Base64> has been upgraded from 3.10 to 3.13
 
-This fixes a memory leak when DBM filters are used.
+Now provides encode_base64url and decode_base64url functions to process
+the base64 scheme for "URL applications".
 
 =item *
 
-C<Opcode> has been upgraded from 1.16 to 1.17.
+C<Socket> has been upgraded from 1.91 to 1.92.
 
-=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.
+It has several new functions for handling IPv6 addresses.
 
 =item *
 
-C<re> has been upgraded from 0.13 to 0.14, for the sake of the new
-C<use re "/flags"> pragma.
+C<Unicode::Collate> has been upgraded from 0.67 to 0.68
 
 =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.
+C<Unicode::UCD> has been upgraded from 0.29 to 0.30.
 
 =back
 
@@ -508,11 +182,6 @@ 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.
@@ -527,19 +196,6 @@ 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
@@ -569,9 +225,7 @@ XXX Newly added diagnostic messages go here
 
 =item *
 
-"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.
+XXX
 
 =back
 
@@ -637,14 +291,7 @@ that they represent may be covered elsewhere.
 
 =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).
+XXX
 
 =back
 
@@ -691,11 +338,9 @@ L</Modules and Pragmata> section.
 
 =over 4
 
-=item Windows
+=item XXX-some-platform
 
-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.
+XXX
 
 =back
 
@@ -711,61 +356,7 @@ be noted as well.
 
 =item *
 
-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.
+XXX
 
 =back
 
@@ -781,188 +372,34 @@ L</Modules and Pragmata>.
 
 =item *
 
-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>.
+C<BEGIN {require 5.12.0}> now behaves as documented, rather than behaving
+identically to C<use 5.12.0;>. Previously, C<require> in a C<BEGIN> block
+was erroneously executing the C<use feature ':5.12.0'> and
+C<use strict; use warnings;> behaviour, which only C<use> was documented to
+provide
+L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>.
 
 =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>.
+C<use 5.42>
+L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>,
+C<use 6> and C<no 5> no longer leak memory.
 
 =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>.
+C<eval "BEGIN{die}"> no longer leaks memory on non-threaded builds.
 
 =item *
 
-Various bugs related to typeglob dereferencing have been fixed. See
-L</Dereferencing typeglobs>, above.
+PerlIO no longer crashes when called recursively, e.g., from a signal
+handler. Now it just leaks memory
+L<[perl #75556]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75556>.
 
 =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
-L<[perl #79024]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79024>.
-
-=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
-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>.
+Defining a constant with the same name as one of perl's special blocks
+(e.g., INIT) stopped working in 5.12.0, but has now been fixed
+L<[perl #78634]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78634>.
 
 =back
 
@@ -981,7 +418,9 @@ from either 5.XXX.XXX or 5.XXX.XXX.
 
 =item *
 
-XXX
+A number of bugs with regular expression bracketed character classes
+have been fixed, mostly having to do with matching characters in the
+non-ASCII Latin-1 range.
 
 =back
 
@@ -990,11 +429,6 @@ 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.
@@ -1006,7 +440,7 @@ 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 B<perlbug>
+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