This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add Socket version numbers to perldelta
[perl5.git] / pod / perldelta.pod
index 162ce85..65ae622 100644 (file)
@@ -1,26 +1,23 @@
 =encoding utf8
 
 =for comment
-This has been completed up to 0b6a3b5adbe83, except for:
-04777d295957ad270188e4debf51b523e07cc5b0
-c565ab54dc649bb62cd4d57149d7b2abb21df5f3
-1c8d11ca3d0ce8bc11562f159b94c2c7e62dea6c
+This has been completed up to 2a25d7b6.
 
 =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
 
@@ -34,36 +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.
+=over 4
 
-=head2 C<use re '/flags';>
+=item C<-d:-foo>
 
-The C<re> pragma now has the ability to turn on regular expression flags
-till the end of the lexical scope:
+Equivalent to C<-M-Devel::foo>, expands to
+C<no Devel::foo;>, calls C<< Devel::foo->unimport() >>
+if the method exists.
 
-    use re '/x';
-    "foo" =~ / (.+) /;  # /x implied
+=item C<-d:-foo=bar>
 
-See L<re/'/flags' mode> for details.
+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 Statement labels can appear in more places
+=back
 
-Statement labels can now occur before any type of statement or declaration,
-such as C<package>.
+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
 
@@ -82,51 +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.
-
-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.
@@ -135,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
@@ -168,8 +129,7 @@ cribbed.
 
 =item *
 
-C<Unicode::Collate::CJK::JISX0208> module was added by the C<Unicode::Collate>
-upgrade from 0.63 to 0.64. See below.
+XXX
 
 =back
 
@@ -179,125 +139,31 @@ upgrade from 0.63 to 0.64. See below.
 
 =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.25.
-
-=item *
-
-XXX What should the version be?
+C<IPC::Cmd> has been upgraded from 0.64 to 0.66
 
-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>.
+Resolves an issue with splitting Win32 command lines
+and documentation enhancements.
 
 =item *
 
-C<CPAN> has been upgraded from 1.94_61 to 1.94_62
-
-=item *
+C<MIME::Base64> has been upgraded from 3.10 to 3.13
 
-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
+Now provides encode_base64url and decode_base64url functions to process
+the base64 scheme for "URL applications".
 
 =item *
 
-C<CPANPLUS::Dist::Build> has been upgraded from 0.48 to 0.50
-
-=item *
-
-C<ExtUtils::Constant> has been upgraded from 0.22 to 0.23.
-
-=item *
+C<Socket> has been upgraded from 1.91 to 1.92.
 
-C<Fcntl> has been upgraded from 1.09 to 1.10.
+It has several new functions for handling IPv6 addresses.
 
 =item *
 
-C<File::Glob> has been upgraded from 1.09 to 1.10.
+C<Unicode::Collate> has been upgraded from 0.67 to 0.68
 
 =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::FastCalc> has been upgraded from 0.22 to 0.23.
-
-=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<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<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<Sys::Hostname> has been upgraded from 1.13 to 1.14.
-
-=item *
-
-C<Unicode::Collate> has been upgraded from 0.63 to 0.64
-
-This release newly adds locale C<ja> and the module
-C<Unicode::Collate::CJK::JISX0208> which makes tailoring of 6355 kanji 
-(CJK Unified Ideographs) in the JIS X 0208 order.
+C<Unicode::UCD> has been upgraded from 0.29 to 0.30.
 
 =back
 
@@ -330,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
@@ -485,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
 
@@ -505,59 +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. These can be added and deleted via C<hv_ename_add> and
-C<hv_ename_delete>. The first effective name can be accessed via the
-C<HvENAME*> macros defined in F<hv.h>. These new functions and macros 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
-labels, 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
 
@@ -573,58 +372,22 @@ 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>.
+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<parse_fullstmt> C function added in 5.13.5 has been fixed to work
-when called while an expression is being parsed.
+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 *
 
-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>.
+C<eval "BEGIN{die}"> no longer leaks memory on non-threaded builds.
 
 =back
 
@@ -643,7 +406,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
 
@@ -663,7 +428,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