This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Suppress test warning added by 04698ff6
[perl5.git] / pod / perldelta.pod
index 8902b44..7e30a87 100644 (file)
@@ -1,20 +1,23 @@
 =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
 
@@ -28,30 +31,31 @@ here, but most should go in the L</Performance Enhancements> section.
 
 [ 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
 
@@ -63,32 +67,10 @@ L</Selected Bug Fixes> section.
 
 =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 ]
 
@@ -100,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
@@ -143,35 +139,25 @@ XXX
 
 =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
 
@@ -364,8 +350,7 @@ be noted as well.
 
 =item *
 
-See L</Regular expressions retain their localeness when interpolated>,
-above.
+XXX
 
 =back
 
@@ -381,38 +366,11 @@ L</Modules and Pragmata>.
 
 =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
 
@@ -431,7 +389,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
 
@@ -451,7 +411,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