create perl5131delta
[p5sagit/p5-mst-13.2.git] / pod / perl5115delta.pod
index 569fc7b..bb41802 100644 (file)
@@ -1,9 +1,6 @@
 =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.5
+perl5115delta - what is new for perl v5.11.5
 
 =head1 DESCRIPTION
 
@@ -14,214 +11,284 @@ If you are upgrading from an earlier release such as 5.11.3, first read
 L<perl5114delta>, which describes differences between 5.11.3 and
 5.11.4.
 
-=head1 Notice
+=head1 Core Enhancements
 
-XXX Any important notices here
+=head2 32-bit limit on substr arguments removed
 
-=head1 Incompatible Changes
+The 32-bit limit on C<substr> arguments has now been removed. The full range
+of the system's signed and unsigned integers is now available for the C<pos>
+and C<len> arguments.
 
-XXX For a release on a stable branch, this section aspires to be:
+=head1 Modules and Pragmata
 
-    There are no changes intentionally incompatible with 5.XXX.XXX. If any
-    exist, they are bugs and reports are welcome.
+=head2 Pragmata Changes
 
+=over 4
 
-=head1 Core Enhancements
+=item C<version>
 
-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.
+Upgraded from version 0.81 to 0.82.
 
-=head1 New Platforms
+The C<is_lax> and C<is_strict> functions can now be optionally exported to the
+caller's namespace and are also now documented.
 
-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.
+Undefined version objects are now uninitialized with zero rather than C<undef>.
 
-=head1 Modules and Pragmata
+=back
 
-XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
-go here.  If Module::CoreList is updated, generate an initial draft of the
-following sections using F<Porting/corelist-perldelta.pl>, which prints stub
-entries to STDOUT.  Results can be pasted in place of the '=head2' entries
-below.  A paragraph summary for important changes should then be added by hand.
-In an ideal world, dual-life modules would have a F<Changes> file that could be
-cribbed.
+=head2 Updated Modules
 
-=head2 New Modules and Pragmata
+=over 4
 
-=head2 Pragmata Changes
+=item C<B::Debug>
 
-=head2 Updated Modules
+Upgraded from version 1.11 to 1.12.
 
-=head2 Removed Modules and Pragmata
+=item C<CPAN>
 
-=head1 Utility Changes
+Upgraded from version 1.94_53 to 1.94_56.
 
-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>.
+This resolves RT #72362, in which CPAN was ignoring C<configure_requires>,
+and RT #72348, in which the command C<o conf init> in the CPAN shell could
+cause an exception to be thrown.
 
-=over 4
+This module is also now built in a less specialized way, which resolves a
+problem that caused C<make> after C<make clean> to fail, fixing RT #72218.
 
-=item F<XXX>
+=item C<CPANPLUS::Dist::Build>
 
-XXX
+Upgraded from version 0.44 to 0.46.
 
-=back
+This makes the prereq resolving fall back to F<_build/> querying if the
+C<prereq_data> action fails.
 
-=head1 New Documentation
+=item C<Pod::Perldoc>
 
-XXX Changes which create B<new> files in F<pod/> go here.
+Upgraded from version 3.15_01 to 3.15_02.
 
-=over 4
+=item C<Pod::Plainer>
 
-=item L<XXX>
+Upgraded from version 1.01 to 1.02.
 
-XXX
+=item C<Safe>
 
-=back
+Upgraded from version 2.21 to 2.22.
 
-=head1 Changes to Existing Documentation
+This resolves RT #72700, in which an exception thrown from a closure was
+getting lost.
 
-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>.
+=item C<Socket>
 
+Upgraded from version 1.85 to 1.86.
 
-=head1 Performance Enhancements
+This makes the new Socket implementation of C<inet_pton> consistent with the
+existing Socket6 implementation of C<inet_pton>, fixing RT #72884.
 
-XXX Changes which enhance performance without changing behaviour go here. There
-may well be none in a stable release.
+=item C<podlators>
 
-=over 4
+Upgraded from version 2.2.2 to 2.3.1.
 
-=item *
+=back
 
-XXX
+=head1 Changes to Existing Documentation
 
-=back
+The syntax C<unless (EXPR) BLOCK else BLOCK> is now documented as valid, as
+is the syntax C<unless (EXPR) BLOCK elsif (EXPR) BLOCK ... else BLOCK>,
+although actually using the latter may not be the best idea for the
+readability of your source code.
 
 =head1 Installation and Configuration Improvements
 
-XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
-go here.
-
 =head2 Configuration improvements
 
-XXX
+Support for SystemTap's C<dtrace> compatibility layer has been added and an
+issue with linking C<miniperl> has been fixed in the process.
 
-=head2 Compilation improvements
+C<less -R> is now used instead of C<less> for C<groff>'s new usage of ANSI
+escape codes by setting C<$Config{less}> (and thereby C<$Config{pager}>,
+which fixes RT #72156.
 
-XXX
+USE_PERL_ATOF is now reported in the compile-time options listed by the C<-V>
+switch.
 
-=head2 Platform Specific Changes
+=head1 Selected Bug Fixes
 
 =over 4
 
-=item XXX-some-platform
+=item *
 
-XXX
+Arbitrary whitespace is now allowed between C<NAME> and C<VERSION> in
+C<package NAME VERSION;> statements. (Fixes RT #72432)
 
-=back
+=item *
 
-=head1 Selected Bug Fixes
+A panic caused by trying to load C<charnames> when the parser is already in
+error (e.g. by a missing C<my> under C<use strict;>) is now averted. This
+was a regression since Perl 5.10.0. (Fixes RT #72590)
 
-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>.
+=item *
 
-=over 4
+Reading C<$!> no longer causes a SEGV for out of range C<errno> values. (Fixes
+RT #72850)
 
 =item *
 
-XXX
+A possible SEGV in C</\N{...}/> has been fixed. This was a regression since
+Perl 5.10.
 
-=back
+=item *
 
-=head1 New or Changed Diagnostics
+A possible SEGV when freeing a scalar that was upgraded to an C<SVt_REGEXP>
+type from a simple(r) scalar has been fixed.
 
-XXX New or changed warnings emitted by the core's C<C> code go here.
+=item *
 
-=over 4
+A type conversion bug in C<gmtime64> that caused it to break around C<2**48>
+has been fixed.
 
-=item C<XXX>
+=item *
 
-XXX
+Interpolating a regex that makes use of the C<charnames> pragma will no longer
+cause a run-time error. (Fixes RT #56444)
 
-=back
+=item *
 
-=head1 Changed Internals
+Array references assigned to C<*Foo::ISA> now have the necessary magic added
+to them to catch any further updates to the new C<@ISA>. (Fixes RT #72866)
 
-XXX Changes which affect the interface available to C<XS> code go here.
+=item *
 
-=over 4
+Filehandles are now always blessed into C<IO::File>, which, together with
+some suitable manipulation of C<@IO::File::ISA>, fixes a breakage introduced
+in Perl 5.11.3 by a change that always blessed filehandles into C<IO::Handle>
+rather than checking for C<FileHandle> first.
 
 =item *
 
-XXX
+A change in the behaviour of C<warnings::enabled> and C<warnings::warnif> in
+Perl 5.10.0 that wasn't documented at the time is now documented in
+L<perl5100delta>. (Fixes RT #62522)
 
-=back
+=item *
 
-=head1 New Tests
+RT #71504 is now fixed by simply skipping the tests that failed on OpenBSD
+with ithreads and perlio.
+
+=back
 
-XXX Changes which create B<new> files in F<t/> go here. Changes to
-existing files in F<t/> aren't worth summarising, although the bugs that
-they represent may be.
+=head1 New or Changed Diagnostics
 
 =over 4
 
-=item F<XXX>
+=item *
 
-XXX
+The fatal error C<Malformed UTF-8 returned by \N> is now produced if the
+C<charnames> handler returns malformed UTF-8.
 
-=back
+=item *
 
-=head1 Known Problems
+If an unresolved named character or sequence was encountered when compiling a
+regex pattern then the fatal error C<\\N{NAME} must be resolved by the lexer>
+is now produced. This can happen, for example, when using a single-quotish
+context like C<$re = '\N{SPACE}'; $re;>. See L<perldiag> for more examples of
+how the lexer can get bypassed.
 
-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).
+=item *
 
-This is a list of some significant unfixed bugs, which are regressions
-from either 5.XXX.XXX or 5.XXX.XXX.
+The fatal error C<Invalid hexadecimal number in \\N{U+...}> will be produced
+if the character constant represented by C<...> is not a valid hexadecimal
+number. 
 
-=over 4
+=item *
+
+The new meaning of C<\N> as C<[^\n]> is not valid in a bracketed character
+class, just like C<.> in a character class loses its special meaning, and will
+cause the fatal error C<\\N in a character class must be a named character:
+\\N{...}>.
 
 =item *
 
-XXX
+The rules on what is legal for the C<...> in C<\N{...}> have been tightened
+up so that unless the C<...> begins with an alphabetic character and continues
+with a combination of alphanumerics, dashes, spaces, parentheses or colons
+then the warning C<Deprecated character(s) in \\N{...} starting at '%s'> is
+now issued.
 
-=back
+=item *
 
-=head1 Deprecations
+The warning C<Using just the first characters returned by \N{}> will be
+issued if the C<charnames> handler returns a sequence of characters which
+exceeds the limit of the number of characters that can be used. The message
+will indicate which characters were used and which were discarded.
 
-XXX Add any new known deprecations here.
+=item *
 
-The following items are now deprecated.
+Currently, all but the first of the several characters that the C<charnames>
+handler may return are discarded when used in a regular expression pattern
+bracketed character class. If this happens then the warning C<Using just the
+first character returned by \N{} in character class> will be issued.
 
-=over 4
+=item *
+
+The warning C<Missing right brace on \\N{} or unescaped left brace after \\N.
+Assuming the latter> will be issued if Perl encounters a C<\N{> but doesn't
+find a matching C<}>. In this case Perl doesn't know if it was mistakenly
+omitted, or if "match non-newline" followed by "match a C<{>" was desired.
+It assumes the latter because that is actually a valid interpretation as
+written, unlike the other case.  If you meant the former, you need to add the
+matching right brace.  If you did mean the latter, you can silence this
+warning by writing instead C<\N\{>.
 
 =item *
 
-XXX
+C<gmtime> and C<localtime> called with numbers smaller than they can reliably
+handle will now issue the warnings C<gmtime(%.0f) too small> and
+C<localtime(%.0f) too small>.
 
 =back
 
-=head1 Platform Specific Notes
+=head1 New Tests
 
-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
+=over 4
 
-=head1 Obituary
+=item F<t/op/filehandle.t>
 
-XXX If any significant core contributor has died, we've added a short obituary
-here.
+Tests some suitably portable filetest operators to check that they work as
+expected, particularly in the light of some internal changes made in how
+filehandles are blessed.
+
+=item F<t/op/time_loop.t>
+
+Tests that times greater than C<2**63>, which can now be handed to C<gmtime>
+and C<localtime>, do not cause an internal overflow or an excessively long
+loop.
+
+=back
+
+=head1 Known Problems
+
+Perl 5.11.5 is a development release leading up to Perl 5.12.0.
+Some notable known problems found in 5.11.5 are listed as dependencies
+of RT #69710, the Perl 5 version 12 meta-ticket.
 
 =head1 Acknowledgements
 
-XXX The list of people to thank goes here.
+Perl 5.11.5 represents approximately one month of development since
+Perl 5.11.4 and contains 9618 lines of changes across 151 files
+from 33 authors and committers:
+
+E<AElig>var ArnfjE<ouml>rE<eth> Bjarmason, Abigail, brian d foy, Chris
+Williams, David Golden, David Mitchell, Eric Brine, Frank Wiegand, Gisle
+Aas, H.Merijn Brand, Jan Dubois, Jesse Vincent, Jim Cromie, John Peacock,
+Josh ben Jore, Karl Williamson, Marcus Holland-Moritz, Michael G Schwern,
+Nicholas Clark, Offer Kaye, Philippe Bruhat (BooK), Rafael Garcia-Suarez,
+Reini Urban, Ricardo Signes, Robin Barker, Slaven Rezic, Steffen Mueller,
+Steve Hay, Steve Peters, Tim Bunce, Todd Rinaldo, Tony Cook and
+Vincent Pit.
 
+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
 
@@ -234,7 +301,7 @@ If you believe you have an unreported bug, please run the B<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
-analysed by the Perl porting team.
+analyzed by the Perl porting team.
 
 If the bug you are reporting has security implications, which make it
 inappropriate to send to a publicly archived mailing list, then please send