This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Users don't normally care about the blead releases
[perl5.git] / pod / perl5134delta.pod
index 9e66658..e90fbff 100644 (file)
@@ -1,14 +1,8 @@
 =encoding utf8
 
-=for rafl
-changelogged up to commit a8a2f4f
-
 =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.4
+perl5134delta - what is new for perl v5.13.4
 
 =head1 DESCRIPTION
 
@@ -19,19 +13,11 @@ If you are upgrading from an earlier release such as 5.13.2, first read
 L<perl5133delta>, which describes differences between 5.13.2 and
 5.13.3.
 
-=head1 Notice
-
-XXX Any important notices here
-
 =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 C<srand()> now returns the seed
 
-This allows programs which need to have repeatable results to not have to come
+This allows programs that need to have repeatable results to not have to come
 up with their own seed generating mechanism.  Instead, they can use C<srand()>
 and somehow stash the return for future use.  Typical is a test program which
 has too many combinations to test comprehensively in the time available to it
@@ -39,58 +25,12 @@ each run.  It can test a random subset each time, and should there be a failure,
 log the seed used for that run so that it can later be used to reproduce the
 exact results.
 
-=head2 Creating unary functions with prototypes
-
-Calls to functions created with the following prototypes are now correctly parsed
-
-Functions declared with the following prototypes now behave correctly as unary functions:
-
-=over 4
-
-=item *
-
-*
-
-=item *
-
-\sigil
-
-=item *
-
-\[...]
-
-=item *
-
-;$
-
-=item *
-
-;*
-
-=item *
-
-;\sigil
-
-=item *
-
-;\[...]
-
-=back
-
 =head2 C<\N{I<name>}> and C<charnames> enhancements
 
 C<\N{}>, C<charnames::vianame>, C<charnames::viacode> now know about every
 character in Unicode.  Previously, they didn't know about the Hangul syllables
 nor a number of CJK (Chinese/Japanese/Korean) characters.
 
-=head1 Security
-
-XXX Any security-related notices go here.  In particular, any security
-vulnerabilities closed should be noted here rather than in the
-L</Selected Bug Fixes> section.
-
-[ List each security issue as a =head2 entry ]
-
 =head1 Incompatible Changes
 
 =head2 Declare API incompatibility between blead releases
@@ -103,7 +43,7 @@ effectively declaring them as binary compatible, which they weren't. From now
 on, blead releases will have a C<PERL_API_SUBVERSION> equal to their
 C<PERL_SUBVERSION>, explicitly marking them as incompatible with each other.
 
-Maintainance releases of stable perl versions will continue to make no
+Maintenance releases of stable perl versions will continue to make no
 intentionally incompatible API changes.
 
 =head2 Check API compatibility when loading XS modules
@@ -121,16 +61,67 @@ exception if they don't match.
 
 =head2 Binary Incompatible with all previous Perls
 
-Some bit fields have been reordered, hence this release will not be binary
-comptible with any previous Perl release.
+Some bit fields have been reordered; therefore, this release will not be binary
+compatible with any previous Perl release.
 
-=head1 Deprecations
+=head2 Change in the parsing of certain prototypes
+
+Functions declared with the following prototypes now behave correctly as unary
+functions:
+
+=over 4
+
+=item *
 
-XXX Any deprecated features, syntax, modules etc. should be listed here.
-In particular, deprecated modules should be listed here even if they are
-listed as an updated module in the L</Modules and Pragmata> section.
+C<*>
 
-[ List each deprecation as a =head2 entry ]
+=item *
+
+C<\sigil>
+
+=item *
+
+C<\[...]>
+
+=item *
+
+C<;$>
+
+=item *
+
+C<;*>
+
+=item *
+
+C<;\sigil>
+
+=item *
+
+C<;\[...]>
+
+=back
+
+Due to this bug fix, functions using the C<(*)>, C<(;$)> and C<(;*)> prototypes
+are parsed with higher precedence than before. So in the following example:
+
+  sub foo($);
+  foo $a < $b;
+
+the second line is now parsed correctly as C<< foo($a) < $b >>, rather than
+C<< foo($a < $b) >>. This happens when one of these operators is used in
+an unparenthesised argument:
+
+  < > <= >= lt gt le ge
+  == != <=> eq ne cmp ~~
+  &
+  | ^
+  &&
+  || //
+  .. ...
+  ?:
+  = += -= *= etc.
+
+=head1 Deprecations
 
 =head2 List assignment to C<$[>
 
@@ -140,11 +131,6 @@ assigning to C<$[> in list context. This fixes an oversight in 5.12.0.
 
 =head1 Performance Enhancements
 
-XXX Changes which enhance performance without changing behaviour go here. There
-may well be none in a stable release.
-
-[ List each enhancement as a =item * entry ]
-
 =over 4
 
 =item *
@@ -156,15 +142,15 @@ memory than needed in a very inefficient way, if perl was configured to use the
 system's C<malloc> implementation instead of its own.
 
 C<sv_grow>, which is what's being used to allocate more memory if necessary when
-appending to a string, has now been teached how to round up the memory it
+appending to a string, has now been taught how to round up the memory it
 requests to a certain geometric progression, making it much faster on certain
 platforms and configurations. On Win32, it's now about 100 times faster.
 
 =item *
 
 For weak references, the common case of just a single weak reference per
-referent has been optimised to reduce the storage required. In this case
-it saves the equivalent of one small perl array per referent.
+referent has been optimised to reduce the storage required. In this case it
+saves the equivalent of one small perl array per referent.
 
 =item *
 
@@ -175,25 +161,9 @@ they actually use, saving some space.
 
 =head1 Modules and Pragmata
 
-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.
-
-[ Within each section, list entries as a =item NAME entry ]
-
 =head2 New Modules and Pragmata
 
-=over 4
-
-=item *
-
-XXX
-
-=back
+This release does not introduce any new modules or pragmata.
 
 =head2 Updated Modules and Pragmata
 
@@ -201,7 +171,7 @@ XXX
 
 =item C<Archive::Tar>
 
-Upgraded from version 1.64 to 1.66.
+Upgraded from version 1.64 to 1.68.
 
 Among other things, the new version adds a new option to C<ptar> to allow safe
 creation of tarballs without world-writable files on Windows, allowing those
@@ -215,13 +185,12 @@ Upgraded from version 1.11 to 1.12.
 
 Upgraded from version 1.16 to 1.18.
 
-L<Carp> now detects incomplete L<caller()|perlfunc/"caller EXPR">
-overrides and avoids using bogus C<@DB::args>. To provide backtraces, Carp
-relies on particular behaviour of the caller built-in. Carp now detects
-if other code has overridden this with an incomplete implementation, and
-modifies its backtrace accordingly. Previously incomplete overrides would
-cause incorrect values in backtraces (best case), or obscure fatal errors
-(worst case)
+L<Carp> now detects incomplete L<caller()|perlfunc/"caller EXPR"> overrides and
+avoids using bogus C<@DB::args>. To provide backtraces, Carp relies on
+particular behaviour of the caller built-in. Carp now detects if other code has
+overridden this with an incomplete implementation, and modifies its backtrace
+accordingly. Previously incomplete overrides would cause incorrect values in
+backtraces (best case), or obscure fatal errors (worst case)
 
 This fixes certain cases of C<Bizarre copy of ARRAY> caused by modules
 overriding C<caller()> incorrectly.
@@ -240,10 +209,26 @@ Upgraded from version 3.31 to 3.31_01.
 
 Various issues in L<File::Spec::VMS> have been fixed.
 
+=item C<I18N::Langinfo>
+
+Upgraded from version 0.03 to 0.04.
+
+C<langinfo()> now defaults to using C<$_> if there is no argument given, just
+like the documentation always claimed it did.
+
 =item C<IO::Compress>
 
 Upgraded from version 2.027 to 2.030.
 
+=item C<Module::CoreList>
+
+Upgraded from version 2.36 to 2.37.
+
+Besides listing the updated core modules of this release, it also stops listing
+the C<Filespec> module. That module never existed in core. The scripts
+generating C<Module::CoreList> confused it with C<VMS::Filespec>, which actually
+is a core module, since the time of perl 5.8.7.
+
 =item C<Test::Harness>
 
 Upgraded from version 3.21 to 3.22.
@@ -270,33 +255,12 @@ Upgraded from version 1.17 to 1.18.
 
 =head2 Removed Modules and Pragmata
 
-=over 4
-
-=item *
-
-XXX
-
-=back
+This release does not remove any modules or pragmata.
 
 =head1 Documentation
 
-XXX Changes to files in F<pod/> go here.  Consider grouping entries by
-file and be sure to link to the appropriate page, e.g. L<perlfunc>.
-
-=head2 New Documentation
-
-XXX Changes which create B<new> files in F<pod/> go here.
-
-=head3 L<XXX>
-
-XXX Description of the purpose of the new file here
-
 =head2 Changes to Existing Documentation
 
-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.
-
 =head3 L<perldiag>
 
 =over 4
@@ -360,69 +324,8 @@ Minor fix to a multiple scalar match example.
 
 =back
 
-=head1 Diagnostics
-
-The following additions or changes have been made to diagnostic output,
-including warnings and fatal error messages.  For the complete list of
-diagnostic messages, see L<perldiag>.
-
-XXX New or changed warnings emitted by the core's C<C> code go here. Also
-include any changes in L<perldiag> that reconcile it to the C<C> code.
-
-[ Within each section, list entries as a =item entry ]
-
-=head2 New Diagnostics
-
-XXX Newly added diagnostic messages go here
-
-=over 4
-
-=item *
-
-XXX
-
-=back
-
-=head2 Changes to Existing Diagnostics
-
-XXX Changes (i.e. rewording) of diagnostic messages go here
-
-=over 4
-
-=item *
-
-XXX
-
-=back
-
-=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>.
-
-[ List utility changes as a =head3 entry for each utility and =item
-entries for each change
-Use L<XXX> with program names to get proper documentation linking. ]
-
-=head3 L<XXX>
-
-=over 4
-
-=item *
-
-XXX
-
-=back
-
 =head1 Configuration and Compilation
 
-XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
-go here.  Any other changes to the Perl build process should be listed here.
-However, any platform-specific changes should be listed in the
-L</Platform Support> section, instead.
-
-[ List changes as a =item entry ].
-
 =over 4
 
 =item *
@@ -438,14 +341,6 @@ default.
 
 =head1 Testing
 
-XXX Any significant changes to the testing of a freshly built perl should be
-listed here.  Changes which create B<new> files in F<t/> go here as do any
-large changes to the testing harness (e.g. when parallel testing was added).
-Changes to existing files in F<t/> aren't worth summarising, although the bugs
-that they represent may be covered elsewhere.
-
-[ List each test improvement as a =item entry ]
-
 =over 4
 
 =item *
@@ -467,49 +362,17 @@ on tied variables.
 F<lib/Tie/ExtraHash.t> has been added to make sure the, previously untested,
 L<Tie::ExtraHash> keeps working.
 
-=back
-
-=head1 Platform Support
-
-XXX Any changes to platform support should be listed in the sections below.
-
-[ Within the sections, list each platform as a =item entry with specific
-changes as paragraphs below it. ]
-
-=head2 New Platforms
-
-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.
-
-=over 4
-
-=item XXX-some-platform
+=item *
 
-XXX
+F<t/re/overload.t> has been added to test against string corruption in pattern
+matches on overloaded objects. This is a TODO test.
 
 =back
 
-=head2 Discontinued Platforms
-
-XXX List any platforms that this version of perl no longer compiles on.
-
-=over 4
-
-=item XXX-some-platform
-
-XXX
-
-=back
+=head1 Platform Support
 
 =head2 Platform-Specific Notes
 
-XXX List any changes for specific platforms. This could include configuration
-and compilation changes or changes in portability/compatibility.  However,
-changes within modules for platforms should generally be listed in the
-L</Modules and Pragmata> section.
-
 =over 4
 
 =item Win32
@@ -522,7 +385,7 @@ Fixed a possible hang in F<t/op/readline.t>.
 
 =item *
 
-Fixed Makefile for SDK2003SP1 compilers.
+Fixed build process for SDK2003SP1 compilers.
 
 =item *
 
@@ -536,12 +399,6 @@ using new compilers, but for a perl compiled with old 32-bit compilers.
 
 =head1 Internal Changes
 
-XXX Changes which affect the interface available to C<XS> code go here.
-Other significant internal changes for future core maintainers should
-be noted as well.
-
-[ List each test improvement as a =item entry ]
-
 =over 4
 
 =item Removed C<PERL_POLLUTE>
@@ -557,32 +414,17 @@ conventions (and really should be completely obsolete by now).
 
 =item Added C<PERL_STATIC_INLINE>
 
-The C<PERL_STATIC_INLINE> define has been added to provide the buest-guess
+The C<PERL_STATIC_INLINE> define has been added to provide the best-guess
 incantation to use for static inline functions, if the C compiler supports
 C99-style static inline. If it doesn't, it'll give a plain C<static>.
 
 C<HAS_STATIC_INLINE> can be used to check if the compiler actually supports
 inline functions.
 
-=item C<Perl_grok_bslash_o> and C<Perl_grok_bslash_c> may change in future
-
-The functions C<Perl_grok_bslash_o> and C<Perl_grok_bslash_c>, which are public
-and exported for use by dynamic extensions, are now marked as being able to
-change their interface in the future.
-
-In fact, C<Perl_grok_bslash_o> already changed its interface in this release,
-and returns a C<bool> instead of a C<char> now.
-
 =back
 
 =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>.
-
-[ List each fix as a =item entry ]
-
 =over 4
 
 =item *
@@ -634,56 +476,57 @@ Building with C<PERL_GLOBAL_STRUCT>, which has been broken accidentally in
 
 =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.XXX.XXX or 5.XXX.XXX.
-
-[ List each fix as a =item entry ]
-
 =over 4
 
 =item *
 
 The changes in L<substr()|perlfunc/"substr EXPR,OFFSET,LENGTH,REPLACEMENT">
-break L<HTML::Parser>. A patch has already been applied to its git repository
-and will hopefully be released shortly.
+broke C<HTML::Parser> <= 3.66. A fixed C<HTML::Parser> is available as version
+3.67 on CPAN.
 
-=back
+=item *
 
-=head1 Obituary
+The changes in prototype handling break C<Switch>. A patch has been sent
+upstream and will hopefully appear on CPAN soon.
 
-XXX If any significant core contributor has died, we've added a short obituary
-here.
+=back
 
 =head1 Acknowledgements
 
-XXX The list of people to thank goes here.
+Perl 5.13.4 represents approximately one month of development since Perl 5.13.3,
+and contains 91,200 lines of changes across 436 files from 34 authors and
+committers.
+
+Thank you to the following for contributing to this release:
+
+Abigail, Andy Armstrong, Andy Dougherty, Chas. Owens, Chip Salzenberg, Chris
+'BinGOs' Williams, Craig A. Berry, David Cantrell, David Golden, David Mitchell,
+Eric Brine, Father Chrysostomos, Florian Ragwitz, George Greer, Gerard Goossen,
+H.Merijn Brand, James Mastros, Jan Dubois, Jerry D. Hedden, Joshua ben Jore,
+Karl Williamson, Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯, Leon Brocard, Lubomir Rintel, Nicholas
+Clark, Paul Marquess, Rafael Garcia-Suarez, Reini Urban, Robin Barker, Slaven
+Rezic, Steve Peters, Tony Cook, Wolfram Humann, Zefram
 
 =head1 Reporting Bugs
 
-If you find what you think is a bug, you might check the articles
-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 find what you think is a bug, you might check the articles 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>
-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.
+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.
 
 If the bug you are reporting has security implications, which make it
-inappropriate to send to a publicly archived mailing list, then please send
-it to perl5-security-report@perl.org. This points to a closed subscription
-unarchived mailing list, which includes all the core committers, who be able
-to help assess the impact of issues, figure out a resolution, and help
-co-ordinate the release of patches to mitigate or fix the problem across all
-platforms on which Perl is supported. Please only use this address for
-security issues in the Perl core, not for modules independently
-distributed on CPAN.
+inappropriate to send to a publicly archived mailing list, then please send it
+to perl5-security-report@perl.org. This points to a closed subscription
+unarchived mailing list, which includes all the core committers, who be able to
+help assess the impact of issues, figure out a resolution, and help co-ordinate
+the release of patches to mitigate or fix the problem across all platforms on
+which Perl is supported. Please only use this address for security issues in the
+Perl core, not for modules independently distributed on CPAN.
 
 =head1 SEE ALSO