summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/pods/perl5134delta.pod
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl/lib/pods/perl5134delta.pod')
-rw-r--r--Master/tlpkg/tlperl/lib/pods/perl5134delta.pod542
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