This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Module::Build to CPAN version 0.3800
[perl5.git] / pod / perl5113delta.pod
index 268f30a..5c4e196 100644 (file)
@@ -1,43 +1,29 @@
 =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.11.3
+perl5113delta - what is new for perl v5.11.3
 
 =head1 DESCRIPTION
 
 This document describes differences between the 5.11.2 release and
 the 5.11.3 release.
 
-If you are upgrading from an earlier release such as 5.11.3, first read
-the L<perl5XXXdelta>, which describes differences between 5.11.3 and
-5.10.0
-
-=head1 Notice
-
-XXX Any important notices here
+If you are upgrading from an earlier release such as 5.11.1, first read
+the L<perl5112delta>, which describes differences between 5.11.1 and
+5.11.2
 
 =head1 Incompatible Changes
 
-=over
-
-=item Filehandles are blessed directly into C<IO::Handle::>, as C<FileHandle> is merely a wrapper around C<IO::Handle>.
-
-XXX Some description of why this change was made would be nice -- e.g. what
-the benefit that justifies the incompatibility -- dagolden, 2009-12-20
+=head2 Filehandles are blessed directly into C<IO::Handle>, as C<FileHandle> is merely a wrapper around C<IO::Handle>.
 
-=back
+The previous behaviour was to bless Filehandles into L<FileHandle>
+(an empty proxy class) if it was loaded into memory and otherwise
+to bless them into C<IO::Handle>.
 
 =head1 Core Enhancements
 
-XXX New core language features go here. Summarise user-visible core language
-enhancements. Particularly prominent performance optimisations could go
-here, but most should go in the L</Performance Enhancements> section.
-
 =head2 Unicode version
 
-Perl is shipped with the latest Unicode version, 5.2, October 2009.  See
+Perl is shipped with the latest Unicode version, 5.2, dated October 2009.  See
 L<http://www.unicode.org/versions/Unicode5.2.0> for details about this release
 of Unicode.  See L<perlunicode> for instructions on installing and using
 older versions of Unicode.
@@ -64,23 +50,48 @@ now accepted.
 
 C<qr/\X/>, which matches a Unicode logical character, has been expanded to work
 better with various Asian languages.  It now is defined as an C<extended
-grapheme cluster>.  (See L<http://www.unicode.org/reports/tr29/>).  One change
-due to this is that C<\X> will match the whole sequence C<S<CR LF>>.  Another
-change is that C<\X> will match an isolated mark.  Marks generally come after a
-base character, but it is possible in Unicode to have them in isolation, and
-C<\X> will now handle that case.  Otherwise, this change should be transparent
-for non-affected languages.
+grapheme cluster>.  (See L<http://www.unicode.org/reports/tr29/>).
+Anything matched previously that made sense will continue to be matched.  But
+in addition:
+
+=over
+
+=item *
+
+C<\X> will now not break apart a C<S<CR LF>> sequence.
+
+=item *
+
+C<\X> will now match a sequence including the C<ZWJ> and C<ZWNJ> characters.
+
+=item *
+
+C<\X> will now always match at least one character, including an initial mark.
+Marks generally come after a base character, but it is possible in Unicode to
+have them in isolation, and C<\X> will now handle that case, for example at the
+beginning of a line or after a C<ZWSP>.  And this is the part where C<\X>
+doesn't match the things that it used to that don't make sense.  Formerly, for
+example, you could have the nonsensical case of an accented LF.
+
+=item *
+
+C<\X> will now match a (Korean) Hangul syllable sequence, and the Thai and Lao
+exception cases.
+
+=back
+
+Otherwise, this change should be transparent for the non-affected languages.
 
 C<\p{...}> matches using the Canonical_Combining_Class property were
 completely broken in previous Perls.  This is now fixed.
 
-In previous Perls, the Unicode Decomposition_Type=Compat property and a
+In previous Perls, the Unicode C<Decomposition_Type=Compat> property and a
 Perl extension had the same name, which led to neither matching all the
 correct values (with more than 100 mistakes in one, and several thousand
 in the other).  The Perl extension has now been renamed to be
-Decomposition_Type=Noncanonical (short: dt=noncanon).  It has the same
+C<Decomposition_Type=Noncanonical> (short: C<dt=noncanon>).  It has the same
 meaning as was previously intended, namely the union of all the
-non-canonical Decomposition types, with Unicode Compat being just one of
+non-canonical Decomposition types, with Unicode C<Compat> being just one of
 those.
 
 C<\p{Uppercase}> and C<\p{Lowercase}> have been brought into line with the
@@ -97,25 +108,25 @@ similar, plus Bi-directional controls.
 
 C<\p{Alpha}> now matches the same characters as C<\p{Alphabetic}>.  The Perl
 definition included a number of things that aren't really alpha (all
-marks), while omitting many that were.  The Unicode definition is
-clearly better, so we are switching to it.  As a direct consequence, the
+marks), while omitting many that were.  As a direct consequence, the
 definitions of C<\p{Alnum}> and C<\p{Word}> which depend on Alpha also change.
 
 C<\p{Word}> also now doesn't match certain characters it wasn't supposed
 to, such as fractions.
 
-C<\p{Print}> no longer matches the line control characters: tab, lf, cr,
-ff, vt, and nel.  This brings it in line with the documentation.
+C<\p{Print}> no longer matches the line control characters: Tab, LF, CR,
+FF, VT, and NEL.  This brings it in line with the documentation.
 
-C<\p{Decomposition_Type=Canonical}> now includes the Hangul syllables
+C<\p{Decomposition_Type=Canonical}> now includes the Hangul syllables.
 
 The Numeric type property has been extended to include the Unihan
 characters.
 
-There is a new Perl extension, the 'Present_In', or simply 'In'
+There is a new Perl extension, the 'Present_In', or simply 'In',
 property.  This is an extension of the Unicode Age property, but
-C<\p{In=5.0}> matches any code point whose usage has been determined as of
-Unicode version 5.0.  The C<\p{Age=5.0}> only matches code points added in 5.0.
+C<\p{In=5.0}> matches any code point whose usage has been determined
+I<as of> Unicode version 5.0.  The C<\p{Age=5.0}> only matches code points
+added in I<precisely> version 5.0.
 
 A number of properties did not have the correct values for unassigned
 code points.  This is now fixed.  The affected properties are
@@ -123,15 +134,14 @@ Bidi_Class, East_Asian_Width, Joining_Type, Decomposition_Type,
 Hangul_Syllable_Type, Numeric_Type, and Line_Break.
 
 The Default_Ignorable_Code_Point, ID_Continue, and ID_Start properties
-have been updated to their current definitions.
+have been updated to their current Unicode definitions.
 
 Certain properties that are supposed to be Unicode internal-only were
 erroneously exposed by previous Perls.  Use of these in regular
-expressions will now generate a deprecated warning message, if those
-warnings are enabled.  The properties are: Other_Alphabetic,
-Other_Default_Ignorable_Code_Point, Other_Grapheme_Extend,
-Other_ID_Continue, Other_ID_Start, Other_Lowercase, Other_Math, and
-Other_Uppercase.
+expressions will now generate, if enabled, a deprecated warning message.
+The properties are: Other_Alphabetic, Other_Default_Ignorable_Code_Point,
+Other_Grapheme_Extend, Other_ID_Continue, Other_ID_Start, Other_Lowercase,
+Other_Math, and Other_Uppercase.
 
 An installation can now fairly easily change which Unicode properties
 Perl understands.  As mentioned above, certain properties are by default
@@ -139,38 +149,20 @@ turned off.  These include all the Unihan properties (which should be
 accessible via the CPAN module Unicode::Unihan) and any deprecated or
 Unicode internal-only property that Perl has never exposed.
 
-XXX what does "files in the To directory" mean? -- dagolden, 2009-12-20
-
-The files in the To directory are now more clearly marked as being
-stable, directly usable by applications.  New hash entries in them give
-the format of the normal entries which allows for easier machine
-parsing.  Perl can generate files in this directory for any property,
-though most are suppressed.  An installation can choose to change which
-get written.   Instructions are in L<perluniprops>.
+The generated files in the C<lib/unicore/To> directory are now more
+clearly marked as being stable, directly usable by applications.
+New hash entries in them give the format of the normal entries,
+which allows for easier machine parsing.  Perl can generate files
+in this directory for any property, though most are suppressed.  An
+installation can choose to change which get written.  Instructions
+are in L<perluniprops>.
 
-=head1 New Platforms
+=head2 Regular Expressions
 
-XXX List any platforms that this version of perl compiles on, that previous
-versions did not. These will either be enabled by new files in the F<hints/>
-directories, or new subdirectories and F<README> files at the top level of the
-source tree.
+U+0FFFF is now a legal character in regular expressions.
 
 =head1 Modules and Pragmata
 
-XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
-go here, in a list ordered by distribution name. Minimally it should be the
-module version, but it's more useful to the end user to give a paragraph's
-summary of the module's changes. In an ideal world, dual-life modules would
-have a F<Changes> file that could be cribbed.
-
-=head2 New Modules and Pragmata
-
-=over 4
-
-XXX
-
-=back
-
 =head2 Pragmata Changes
 
 =over 4
@@ -211,9 +203,6 @@ Upgraded from 1.07 to 1.08.  Added new C<warnings::fatal_enabled()> function.
 
 =head2 Updated Modules
 
-XXX This should be generated with Porting/corelist-perldelta.pl once
-Module::Corelist is updated for 5.011003.
-
 =over 4
 
 =item C<Archive::Extract>
@@ -222,15 +211,21 @@ Upgraded from version 0.34 to 0.36.
 
 =item C<CPAN>
 
-Upgraded from version 1.94_51 to 1.94_53.  Includes better bzip2 support,
-improved FirstTime experience with auto-selection of CPAN mirrors, proper
-handling of modules removed from the Perl core, and an updated 'cpan'
-utility script
+Upgraded from version 1.94_51 to 1.94_5301, which is 1.94_53 on CPAN
+plus some local fixes for bleadperl.
+
+Includes better bzip2 support, improved FirstTime experience with
+auto-selection of CPAN mirrors, proper handling of modules removed from the
+Perl core, and an updated 'cpan' utility script
 
 =item C<CPANPLUS>
 
 Upgraded from version 0.89_09 to 0.90.
 
+=item C<Encode>
+
+Upgraded from version 2.38 to 2.39.
+
 =item C<ExtUtils::MakeMaker>
 
 Upgraded from version 6.55_02 to 6.56.  Adds new BUILD_REQUIRES key to
@@ -255,8 +250,8 @@ Upgraded from version 2.23 to 2.24.
 
 =item C<POSIX>
 
-Upgraded from version 1.18 to 1.19. Error codes for C<getaddrinfo()> and C<getnameinfo()> are now
-available.
+Upgraded from version 1.18 to 1.19. Error codes for C<getaddrinfo()> and
+C<getnameinfo()> are now available.
 
 =item C<Pod::Simple>
 
@@ -270,9 +265,6 @@ Upgraded from version 2.19 to 2.20.
 
 =head1 Utility Changes
 
-XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
-here. Most of these are built within the directories F<utils> and F<x2p>.
-
 =over 4
 
 =item F<perlbug>
@@ -281,24 +273,8 @@ No longer reports "Message sent" when it hasn't actually sent the message
 
 =back
 
-=head1 New Documentation
-
-XXX Changes which create B<new> files in F<pod/> go here.
-
-=over 4
-
-=item L<XXX>
-
-XXX
-
-=back
-
 =head1 Changes to Existing Documentation
 
-XXX Changes which significantly change existing files in F<pod/> go here.
-Any changes to F<pod/perldiag.pod> should go in L</New or Changed Diagnostics>.
-
-
 The Pod specification (L<perlpodspec>) has been updated to bring the
 specification in line with modern usage already supported by most Pod systems.
 A parameter string may now follow the format name in a "begin/end" region.
@@ -310,33 +286,8 @@ conditional loading of modules despite the implicit BEGIN block around C<use>.
 
 
 
-=head1 Performance Enhancements
-
-XXX Changes which enhance performance without changing behaviour go here. There
-may well be none in a stable release.
-
-=over 4
-
-=item *
-
-XXX
-
-=back
-
 =head1 Installation and Configuration Improvements
 
-XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
-go here.
-
-=head2 Configuration improvements
-
-XXX
-
-=head2 Compilation improvements
-
-    Make distclean work again
-XXX
-
 =head2 Testing improvements
 
 =over 4
@@ -355,7 +306,7 @@ XXX
 
 =item *
 
-Always add a manifest resource to C<perl.exe> to specify the <trustInfo>
+Always add a manifest resource to C<perl.exe> to specify the C<trustInfo>
 settings for Windows Vista and later.  Without this setting Windows
 will treat C<perl.exe> as a legacy application and apply various
 heuristics like redirecting access to protected file system areas
@@ -399,10 +350,6 @@ no in answer to the interactive question.
 
 =head1 Selected Bug Fixes
 
-XXX Important bug fixes in the core language are summarised here.
-Bug fixes in files in F<ext/> and F<lib/> are best summarised in
-L</Modules and Pragmata>.
-
 =over 4
 
 =item *
@@ -441,49 +388,64 @@ device and printers like "lpt1".
 
 =item *
 
-Fixed a regression caused by commit fafafbaf which caused a panic during parameter passing [perl #70171]
+Fixed a regression caused by commit fafafbaf which caused a panic during
+parameter passing [perl #70171]
 
+=item *
+
+On systems which in-place edits without backup files, -i'*' now works as
+the documentation says it does [perl #70802]
 
 =item *
 
-On systems which in-place edits without backup files, -i'*' now works as the documentation says it does [perl #70802]
+Saving and restoring magic flags no longer loses readonly flag.
 
 =item *
 
-Numerous bugfixes catch small issues caused by the recently-added Lexer API.
+The malformed syntax C<grep EXPR LIST> (note the missing comma) no longer
+causes abrupt and total failure.
 
 =item *
 
-Smart match against C<@_> sometimes gave false negatives negatives. [perl #71078]
+Regular expressions compiled with C<qr{}> literals properly set C<$'> when
+matching again.
 
 =item *
 
-C<$@> may now be assigned a read-only value (without error or busting the stack).
+Using named subroutines with C<sort> should no longer lead to bus errors [perl
+#71076]
 
-=back
+=item *
 
-=head1 New or Changed Diagnostics
+Numerous bugfixes catch small issues caused by the recently-added Lexer API.
 
-XXX New or changed warnings emitted by the core's C<C> code go here.
+=item *
 
-=over 4
+Smart match against C<@_> sometimes gave false negatives. [perl #71078]
+
+=item *
 
-=item C<XXX>
+C<$@> may now be assigned a read-only value (without error or busting the stack).
+
+=item *
 
-    Make split warn in void context
-XXX
+C<sort> called recursively from within an active comparison subroutine no
+longer causes a bus error if run multiple times. [perl #71076]
 
 =back
 
-=head1 Changed Internals
-
-XXX Changes which affect the interface available to C<XS> code go here.
+=head1 New or Changed Diagnostics
 
 =over 4
 
 =item *
 
-XXX
+C<split> now warns when called in void context
+
+=item *
+
+C<printf>-style functions called with too few arguments will now issue the
+warning C<"Missing argument in %s"> [perl #71000]
 
 =back
 
@@ -523,27 +485,8 @@ Test unicode \p{} regex constructs
 
 =back
 
-=head1 Known Problems
-
-XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
-tests that had to be C<TODO>ed for the release would be noted here, unless
-they were specific to a particular platform (see below).
-
-This is a list of some significant unfixed bugs, which are regressions
-from either 5.11.3 or 5.11.3.
-
-=over 4
-
-=item *
-
-XXX
-
-=back
-
 =head1 Deprecations
 
-XXX Add any new known deprecations here.
-
 The following items are now deprecated.
 
 =over 4
@@ -556,21 +499,25 @@ problems in the implementation of scopes.
 
 =back
 
-=head1 Platform Specific Notes
-
-XXX Any changes specific to a particular platform. VMS and Win32 are the usual
-stars here. It's probably best to group changes under the same section layout
-as the main perldelta
-
-=head1 Obituary
-
-XXX If any significant core contributor has died, we've added a short obituary
-here.
-
 =head1 Acknowledgements
 
-XXX The list of people to thank goes here.
+Perl 5.11.3 represents approximately one month of development since
+Perl 5.11.2 and contains 61407 lines of changes across 396 files
+from 40 authors and committers:
+
+Abigail, Alex Davies, Alexandr Ciornii, Andrew Rodland, Andy
+Dougherty, Bram, brian d foy, Chip Salzenberg, Chris Williams, Craig
+A. Berry, Daniel Frederick Crisman, David Golden, Dennis Kaarsemaker,
+Eric Brine, Father Chrysostomos, Gene Sullivan, Gerard Goossen, H.
+Merijn Brand, Hugo van der Sanden, Jan Dubois, Jerry D. Hedden,
+Jesse Vincent, Jim Cromie, Karl Williamson, Leon Brocard, Max
+Maischein, Michael Breen, Moritz Lenz, Nicholas Clark, Rafael
+Garcia-Suarez, Reini Urban, Ricardo Signes, Stepan Kasal, Steve
+Hay, Steve Peters, Tim Bunce, Tony Cook, Vincent Pit and Zefram.
 
+Many of the changes included in this version originated in the CPAN
+modules included in Perl's core. We're grateful to the entire CPAN
+community for helping Perl to flourish.
 
 =head1 Reporting Bugs
 
@@ -609,70 +556,3 @@ The F<Artistic> and F<Copying> files for copyright information.
 =cut
 
 
-
-
-All changes through commit b4178430270dbe109e7609d0b50d6d54bf9e95d8
-One "triage" pass done.
-
-A second triage pass is still needed to remove unimportant changes
-
-commit 9307c420fad2f6f5bd314f9ed66dd53288703e09
-Author: Jan Dubois <jand@activestate.com>
-Date:   Thu Dec 17 18:28:16 2009 -0800
-
-    Export PL_curinterp symbol for MULTIPLICITY without USE_ITHREADS
-
-    This is necessary for XS extensions that define PERL_CORE.  In that
-    situation PERL_GET_CONTEXT will resolve to PL_curinterp, which is
-    normally not exported (extensions call Perl_Gcurinterp_ptr() to get a
-    pointer to PL_curinterp instead). With USE_ITHREADS defined
-    PERL_GET_CONTEXT will expand to Perl_get_context() even inside the
-    core because the context needs to be fetched from threadlocal storage.
-
-commit 2ab54efd6265713df5cd4bd0927024245675c1c2
-
-    fix bug 67156: overload: nomethod(..., '!') return value inverted
-
-commit 69dc4b30f4725ad5f212d45d3c856ac1caaacf17
-Author: Father Chrysostomos <sprout@cpan.org>
-Date:   Mon Dec 14 12:19:35 2009 +0100
-
-    [perl #70764] $' fails to initialized for pre-compiled regular expression matches
-
-    The match vars are associated with the regexp that last matched
-    successfully. In the case of $str =~ $qr or /$qr/, since the $qr could
-    be used in multiple scopes that need their own sets of match vars, the
-    $qr is cloned by Perl_reg_temp_copy as of change 30677/28d8d7f. This
-    happens in pp_regcomp before pp_match has stringified the LHS, hence the
-    bug. In short, /$gror/ is not equivalent to
-    ($which = !$which) ? /$gror/ : /$gror/, which is weird.
-
-
-
-    Document config_args limitations reported in [perl #70912]
-
-    proper error on "grep $x (1,2,3)". Solves [perl #37314]
-
-commit 8a27a13e89107aaf68c0748b68ee71fbd86d774b
-
-    [perl #71076] sort with active sub (5.10 regression)
-
-    One of the tests in sort.t causes a bus error (or sometimes Ã¢\80\98Undefined
-    subroutine calledâ\80\99) if run multiple times. This is because sort
-    decreases the refcount of an active sub used as a comparison routine.
-
-commit 69c3dccf5322a59cb855347c04712ba11b65328f
-
-
-
-    [perl #71000] Wrong variable name in warning ; Add a new warning "Missing argument in %s"
-
-    preserve readonly flag when saving and restoring magic flags
-
-commit 576b33a19ccaf98d4dfe201d529c55c3747f0cb6
-
-    [rt.cpan.org #51574] Safe.pm sort {} bug accessing $a and $b with -Dusethreads
-
-commit ee6ba15dedda3e88eb66891eaf387c00a4c0a2fb
-
-    Fix -DPERL_NO_UTF16_FILTER