=encoding utf8
+=for comment
+This has been completed up to a3179684.
+
=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.6
+perldelta - what is new for perl v5.13.8
=head1 DESCRIPTION
-This document describes differences between the 5.13.5 release and
-the 5.13.6 release.
+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.4, first read
-L<perl5135delta>, which describes differences between 5.13.4 and
-5.13.5.
+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
[ List each enhancement as a =head2 entry ]
-=head2 C<(?^...)> regex construct added to signify default modifiers
+=head2 C<-d:-foo> calls C<Devel::foo::unimport>
-A caret (also called a "cirumflex accent") C<"^"> immediately following
-a C<"(?"> in a regular expression now means that the subexpression is to
-not inherit the surrounding modifiers such as C</i>, but to revert to the
-Perl defaults. Any modifiers following the caret override the defaults.
+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.>
-The stringification of regular expressions now uses this notation. The
-main purpose of this is to allow tests that rely on the stringification
-to not have to change when new modifiers are added. See
-L<perlre/Extended Patterns>.
+=over 4
-=head2 C<"d">, C<"l">, and C<"u"> regex modifiers added
+=item C<-d:-foo>
-These modifiers are currently only available within a C<(?...)> construct.
+Equivalent to C<-M-Devel::foo>, expands to
+C<no Devel::foo;>, calls C<< Devel::foo->unimport() >>
+if the method exists.
-The C<"l"> modifier says to compile the regular expression as if it were
-in the scope of C<use locale>, even if it is not.
+=item C<-d:-foo=bar>
-The C<"u"> modifier currently does nothing.
+Equivalent to C<-M-Devel::foo=bar>, expands to C<no Devel::foo 'bar';>,
+calls C<< Devel::foo->unimport('bar') >> if the method exists.
-The C<"d"> modifier is used in the scope of C<use locale> to compile the
-regular expression as if it were not in that scope.
-See L<perlre/(?dlupimsx-imsx)>.
+=back
+
+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
=head1 Incompatible Changes
-=head2 Stringification of regexes has changed
-
-Default regular expression modifiers are now notated by using
-C<(?^...)>. Code relying on the old stringification will fail. The
-purpose of this is so that when new modifiers are added, such code will
-not have to change, as the stringification will automatically
-incorporate the new modifiers.
-
-Code that needs to work properly with both old- and new-style regexes
-can use something like the following:
-
- # Accept both old and new-style stringification
- my $modifiers = (qr/foobar/ =~ /\Q(?^/) ? '^' : '-xism';
-
-And then use C<$modifiers> instead of C<-xism>.
-
-=head2 Regular expressions retain their localeness when interpolated
+XXX For a release on a stable branch, this section aspires to be:
-Regular expressions compiled under C<"use locale"> now retain this when
-interpolated into a new regular expression compiled outside a
-C<"use locale">, and vice-versa.
-
-Previously, a regular expression interpolated into another one inherited
-the localeness of the surrounding one, losing whatever state it
-originally had. This is considered a bug fix, but may trip up code that
-has come to rely on the incorrect behavior.
+ There are no changes intentionally incompatible with 5.XXX.XXX. If any
+ exist, they are bugs and reports are welcome.
[ List each incompatible change as a =head2 entry ]
[ 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
=item *
-C<File::DosGlob> has been upgraded from version 1.02 to 1.03.
-
-It allows patterns containing literal parentheses (they no longer need to
-be escaped). On Windows, it no longer adds an extra F<./> to the file names
-returned when the pattern is a relative glob with a drive specification,
-like F<c:*.pl>.
-
-=item *
-
-C<File::Find> has been upgraded from version 1.17 to 1.18.
+C<IPC::Cmd> has been upgraded from 0.64 to 0.66
-It improves handling of backslashes on Windows, so that paths such as
-F<c:\dir\/file> are no longer generated.
+Resolves an issue with splitting Win32 command lines
+and documentation enhancements.
=item *
-C<NEXT> has been upgraded from version 0.64 to 0.65.
-
-=item *
+C<MIME::Base64> has been upgraded from 3.10 to 3.13
-C<PathTools> has been upgraded from version 3.31_01 to 3.33.
+Now provides encode_base64url and decode_base64url functions to process
+the base64 scheme for "URL applications".
=item *
-C<Unicode::Collate> has been upgraded from version 0.59 to 0.60
+C<Unicode::Collate> has been upgraded from 0.67 to 0.68
=item *
-C<Unicode::Normalize> has been upgraded from version 1.06 to 1.07
+C<Unicode::UCD> has been upgraded from 0.29 to 0.30.
=back
=item *
-See L</Regular expressions retain their localeness when interpolated>,
-above.
+XXX
=back
=item *
-A regular expression match in the right-hand side of a global substitution
-(C<s///g>) that is in the same scope will no longer cause match variables
-to have the wrong values on subsequent iterations. This can happen when an
-array or hash subscript is interpolated in the right-hand side, as in
-C<s|(.)|@a{ print($1), /./ }|g>
-L<[perl #19078]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=19078>.
-
-=item *
-
-Constant-folding used to cause
-
- $text =~ ( 1 ? /phoo/ : /bear/)
-
-to turn into
-
- $text =~ /phoo/
-
-at compile time. Now it correctly matches against C<$_>
-L<[perl #20444]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=20444>.
-
-=item *
-
-Parsing Perl code (either with string C<eval> or by loading modules) from
-within a C<UNITCHECK> block no longer causes the interpreter to crash
-L<[perl #70614]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=70614>.
-
-=item *
-
-When C<-d> is used on the shebang (C<#!>) line, the debugger now has access
-to the lines of the main program. In the past, this sometimes worked and
-sometimes did not, depending on what order things happened to be arranged
-in memory.
+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.
=back
=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
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