diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/pods/perl5134delta.pod')
-rw-r--r-- | Master/tlpkg/tlperl/lib/pods/perl5134delta.pod | 542 |
1 files changed, 542 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/pods/perl5134delta.pod b/Master/tlpkg/tlperl/lib/pods/perl5134delta.pod new file mode 100644 index 00000000000..e90fbffeb9b --- /dev/null +++ b/Master/tlpkg/tlperl/lib/pods/perl5134delta.pod @@ -0,0 +1,542 @@ +=encoding utf8 + +=head1 NAME + +perl5134delta - what is new for perl v5.13.4 + +=head1 DESCRIPTION + +This document describes differences between the 5.13.4 release and +the 5.13.3 release. + +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 Core Enhancements + +=head2 C<srand()> now returns the seed + +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 +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 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 Incompatible Changes + +=head2 Declare API incompatibility between blead releases + +Only stable releases (5.10.x, 5.12.x, 5.14.x, ...) guarantee binary +compatibility with each other, while blead releases (5.13.x, 5.15.x, ...) often +break this compatibility. However, prior to perl 5.13.4, all blead releases had +the same C<PERL_API_REVISION>, C<PERL_API_VERSION>, and C<PERL_API_SUBVERSION>, +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. + +Maintenance releases of stable perl versions will continue to make no +intentionally incompatible API changes. + +=head2 Check API compatibility when loading XS modules + +When perl's API changes in incompatible ways (which usually happens between +every major release), XS modules compiled for previous versions of perl will not +work anymore. They will need to be recompiled against the new perl. + +In order to ensure that modules are recompiled, and to prevent users from +accidentally loading modules compiled for old perls into newer ones, the +C<XS_APIVERSION_BOOTCHECK> macro has been added. That macro, which is called +when loading every newly compiled extension, compares the API version of the +running perl with the version a module has been compiled for and raises an +exception if they don't match. + +=head2 Binary Incompatible with all previous Perls + +Some bit fields have been reordered; therefore, this release will not be binary +compatible with any previous Perl release. + +=head2 Change in the parsing of certain prototypes + +Functions declared with the following prototypes now behave correctly as unary +functions: + +=over 4 + +=item * + +C<*> + +=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<$[> + +After assignment to C<$[> has been deprecated and started to give warnings in +perl version 5.12.0, this version of perl also starts to emit a warning when +assigning to C<$[> in list context. This fixes an oversight in 5.12.0. + +=head1 Performance Enhancements + +=over 4 + +=item * + +Make string appending 100 times faster + +When doing a lot of string appending, perl could end up allocating a lot more +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 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. + +=item * + +C<XPV>, C<XPVIV>, and C<XPVNV> now only allocate the parts of the C<SV> body +they actually use, saving some space. + +=back + +=head1 Modules and Pragmata + +=head2 New Modules and Pragmata + +This release does not introduce any new modules or pragmata. + +=head2 Updated Modules and Pragmata + +=over 4 + +=item C<Archive::Tar> + +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 +archives to be uploaded to CPAN. + +=item C<B::Lint> + +Upgraded from version 1.11 to 1.12. + +=item C<Carp> + +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) + +This fixes certain cases of C<Bizarre copy of ARRAY> caused by modules +overriding C<caller()> incorrectly. + +=item C<Compress::Raw::Bzip2> + +Upgraded from version 2.027 to 2.030. + +=item C<Compress::Raw::Zlib> + +Upgraded from version 2.027 to 2.030. + +=item C<File::Spec> + +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. + +=item C<Test::Simple> + +Upgraded from version 0.94 to 0.96. + +Among many other things, subtests without a C<plan> or C<no_plan> now have an +implicit C<done_testing()> added to them. + +=item C<Unicode::Collate> + +Upgraded from version 0.53 to 0.56. + +Among other things, it is now using UCA Revision 20 (based on Unicode 5.2.0) and +supports a couple of new locales. + +=item C<feature> + +Upgraded from version 1.17 to 1.18. + +=back + +=head2 Removed Modules and Pragmata + +This release does not remove any modules or pragmata. + +=head1 Documentation + +=head2 Changes to Existing Documentation + +=head3 L<perldiag> + +=over 4 + +=item * + +The following existing diagnostics are now documented: + +=over 4 + +=item * + +L<Ambiguous use of %c resolved as operator %c|perldiag/"Ambiguous use of %c resolved as operator %c"> + +=item * + +L<Ambiguous use of %c{%s} resolved to %c%s|perldiag/"Ambiguous use of %c{%s} resolved to %c%s"> + +=item * + +L<Ambiguous use of %c{%s%s} resolved to %c%s%s|perldiag/"Ambiguous use of %c{%s%s} resolved to %c%s%s"> + +=item * + +L<Ambiguous use of -%s resolved as -&%s()|perldiag/"Ambiguous use of -%s resolved as -&%s()"> + +=item * + +L<Invalid strict version format (%s)|perldiag/"Invalid strict version format (%s)"> + +=item * + +L<Invalid version format (%s)|perldiag/"Invalid version format (%s)"> + +=item * + +L<Invalid version object|perldiag/"Invalid version object"> + +=back + +=back + +=head3 L<perlport> + +=over 4 + +=item * + +Documented a L<limitation|perlport/alarm> of L<alarm()|perlfunc/"alarm SECONDS"> +on Win32. + +=back + +=head3 L<perlre> + +=over 4 + +=item * + +Minor fix to a multiple scalar match example. + +=back + +=head1 Configuration and Compilation + +=over 4 + +=item * + +Compatibility with C<C++> compilers has been improved. + +=item * + +On compilers that support it, C<-Wwrite-strings> is now added to cflags by +default. + +=back + +=head1 Testing + +=over 4 + +=item * + +F<t/op/print.t> has been added to test implicit printing of C<$_>. + +=item * + +F<t/io/errnosig.t> has been added to test for restoration of of C<$!> when +leaving signal handlers. + +=item * + +F<t/op/tie_fetch_count.t> has been added to see if C<FETCH> is only called once +on tied variables. + +=item * + +F<lib/Tie/ExtraHash.t> has been added to make sure the, previously untested, +L<Tie::ExtraHash> keeps working. + +=item * + +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 + +=head1 Platform Support + +=head2 Platform-Specific Notes + +=over 4 + +=item Win32 + +=over 4 + +=item * + +Fixed a possible hang in F<t/op/readline.t>. + +=item * + +Fixed build process for SDK2003SP1 compilers. + +=item * + +When using old 32-bit compilers, the define C<_USE_32BIT_TIME_T> will now be set +in C<$Config{ccflags}>. This improves portability when compiling XS extensions +using new compilers, but for a perl compiled with old 32-bit compilers. + +=back + +=back + +=head1 Internal Changes + +=over 4 + +=item Removed C<PERL_POLLUTE> + +The option to define C<PERL_POLLUTE> to expose older 5.005 symbols for backwards +compatibility has been removed. It's use was always discouraged, and MakeMaker +contains a more specific escape hatch: + + perl Makefile.PL POLLUTE=1 + +This can be used for modules that have not been upgraded to 5.6 naming +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 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. + +=back + +=head1 Selected Bug Fixes + +=over 4 + +=item * + +A possible memory leak when using L<caller()|perlfunc/"caller EXPR"> to set +C<@DB::args> has been fixed. + +=item * + +Several memory leaks when loading XS modules were fixed. + +=item * + +A panic in the regular expression optimizer has been fixed (RT#75762). + +=item * + +Assignments to lvalue subroutines now honor copy-on-write behavior again, which +has been broken since version 5.10.0 (RT#75656). + +=item * + +Assignments to glob copies now behave just like assignments to regular globs +(RT#1804). + +=item * + +Within signal handlers, C<$!> is now implicitly localized. + +=item * + +L<readline|perlfunc/"readline EXPR"> now honors C<< <> >> overloading on tied +arguments. + +=item * + +L<substr()|perlfunc/"substr EXPR,OFFSET,LENGTH,REPLACEMENT">, +L<pos()|perlfunc/"index STR,SUBSTR,POSITION">, L<keys()|perlfunc/"keys HASH">, +and L<vec()|perlfunc/"vec EXPR,OFFSET,BITS"> could, when used in combination +with lvalues, result in leaking the scalar value they operate on, and cause its +destruction to happen too late. This has now been fixed. + +=item * + +Building with C<PERL_GLOBAL_STRUCT>, which has been broken accidentally in +5.13.3, now works again. + +=back + +=head1 Known Problems + +=over 4 + +=item * + +The changes in L<substr()|perlfunc/"substr EXPR,OFFSET,LENGTH,REPLACEMENT"> +broke C<HTML::Parser> <= 3.66. A fixed C<HTML::Parser> is available as version +3.67 on CPAN. + +=item * + +The changes in prototype handling break C<Switch>. A patch has been sent +upstream and will hopefully appear on CPAN soon. + +=back + +=head1 Acknowledgements + +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 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. + +=head1 SEE ALSO + +The F<Changes> file for an explanation of how to view exhaustive details +on what changed. + +The F<INSTALL> file for how to build Perl. + +The F<README> file for general stuff. + +The F<Artistic> and F<Copying> files for copyright information. + +=cut |