summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/pods/perl5135delta.pod
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl/lib/pods/perl5135delta.pod')
-rw-r--r--Master/tlpkg/tlperl/lib/pods/perl5135delta.pod592
1 files changed, 592 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/pods/perl5135delta.pod b/Master/tlpkg/tlperl/lib/pods/perl5135delta.pod
new file mode 100644
index 00000000000..de76d586bd7
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/pods/perl5135delta.pod
@@ -0,0 +1,592 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5135delta - what is new for perl v5.13.5
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.13.4 release and
+the 5.13.5 release.
+
+If you are upgrading from an earlier release such as 5.13.3, first read
+L<perl5134delta>, which describes differences between 5.13.3 and
+5.13.4.
+
+=head1 Core Enhancements
+
+=head2 Adjacent pairs of nextstate opcodes are now optimized away
+
+Previously, in code such as
+
+ use constant DEBUG => 0;
+
+ sub GAK {
+ warn if DEBUG;
+ print "stuff\n";
+ }
+
+the ops for C<warn if DEBUG;> would be folded to a C<null> op (C<ex-const>), but
+the C<nextstate> op would remain, resulting in a runtime op dispatch of
+C<nextstate>, C<nextstate>, ...
+
+The execution of a sequence of C<nextstate> ops is indistinguishable from just
+the last C<nextstate> op so the peephole optimizer now eliminates the first of
+a pair of C<nextstate> ops, except where the first carries a label, since labels
+must not be eliminated by the optimizer and label usage isn't conclusively known
+at compile time.
+
+=head2 API function to parse statements
+
+The C<parse_fullstmt> function has been added to allow parsing of a single
+complete Perl statement. See L<perlapi> for details.
+
+=head2 API functions for accessing the runtime hinthash
+
+A new C API for introspecting the hinthash C<%^H> at runtime has been added.
+See C<cop_hints_2hv>, C<cop_hints_fetchpvn>, C<cop_hints_fetchpvs>,
+C<cop_hints_fetchsv>, and C<hv_copy_hints_hv> in L<perlapi> for details.
+
+=head2 C interface to C<caller()>
+
+The C<caller_cx> function has been added as an XSUB-writer's equivalent of
+C<caller()>. See L<perlapi> for details.
+
+=head1 Incompatible Changes
+
+=head2 Magic variables outside the main package
+
+In previous versions of Perl, magic variables like C<$!>, C<%SIG>, etc. would
+'leak' into other packages. So C<%foo::SIG> could be used to access signals,
+C<${"foo::!"}> (with strict mode off) to access C's C<errno>, etc.
+
+This was a bug, or an 'unintentional' feature, which caused various ill effects,
+such as signal handlers being wiped when modules were loaded, etc.
+
+This has been fixed (or the feature has been removed, depending on how you see
+it).
+
+=head2 Smart-matching against array slices
+
+Previously, the following code resulted in a successful match:
+
+ my @a = qw(a y0 z);
+ my @b = qw(a x0 z);
+ @a[0 .. $#b] ~~ @b;
+
+This odd behaviour has now been fixed
+L<[perl #77468]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=77468>.
+
+=head2 C API changes
+
+The first argument of the C API function C<Perl_fetch_cop_label> has changed
+from C<struct refcounted he *> to C<COP *>, to better insulate the user from
+implementation details.
+
+This API function was marked as "may change", and likely isn't in use outside
+the core. (Neither an unpacked CPAN, nor Google's codesearch, finds any other
+references to it.)
+
+=head1 Deprecations
+
+=head2 Use of qw(...) as parentheses
+
+Historically the parser fooled itself into thinking that C<qw(...)> literals
+were always enclosed in parentheses, and as a result you could sometimes omit
+parentheses around them:
+
+ for $x qw(a b c) { ... }
+
+The parser no longer lies to itself in this way. Wrap the list literal in
+parentheses, like:
+
+ for $x (qw(a b c)) { ... }
+
+=head1 Performance Enhancements
+
+=over 4
+
+=item *
+
+Scalars containing regular expressions now only allocate the part of the C<SV>
+body they actually use, saving some space.
+
+=item *
+
+Compiling regular expressions has been made faster for the case where upgrading
+the regex to utf8 is necessary but that isn't known when the compilation begins.
+
+=back
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item C<bignum>
+
+Upgraded from version 0.23 to 0.25.
+
+=item C<blib>
+
+Upgraded from version 1.05 to 1.06.
+
+=item C<open>
+
+Upgraded from version 1.07 to 1.08.
+
+=item C<threads-shared>
+
+Upgraded from version 1.33_02 to 1.33_03.
+
+=item C<warnings> and C<warnings::register>
+
+Upgraded from version 1.10 to 1.11 and from version 1.01 to 1.02 respectively.
+
+It is now possible to register warning categories other than the names of
+packages using C<warnings::register>. See L<perllexwarn> for more information.
+
+=item C<B::Debug>
+
+Upgraded from version 1.12 to 1.16.
+
+=item C<CPANPLUS::Dist::Build>
+
+Upgraded from version 0.46 to 0.48.
+
+=item C<Data::Dumper>
+
+Upgraded from version 2.126 to 2.128.
+
+This fixes a crash when using custom sort functions that might cause the stack
+to change.
+
+=item C<Encode>
+
+Upgraded from version 2.39 to 2.40.
+
+=item C<Errno>
+
+Upgraded from version 1.12 to 1.13.
+
+On some platforms with unusual header files, like Win32/gcc using mingw64
+headers, some constants which weren't actually error numbers have been exposed
+by C<Errno>. This has been fixed
+L<[perl #77416]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=77416>.
+
+=item C<ExtUtils::MakeMaker>
+
+Upgraded from version 6.5601 to 6.57_05.
+
+=item C<Filter::Simple>
+
+Upgraded from version 0.84 to 0.85.
+
+=item C<Hash::Util>
+
+Upgraded from version 0.08 to 0.09.
+
+=item C<Math::BigInt>
+
+Upgraded from version 1.89_01 to 1.95.
+
+This fixes, among other things, incorrect results when computing binomial
+coefficients
+L<[perl #77640]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77640>.
+
+=item C<Math::BigInt::FastCalc>
+
+Upgraded from version 0.19 to 0.22.
+
+=item C<Math::BigRat>
+
+Upgraded from version 0.24 to 0.26.
+
+=item C<Module::CoreList>
+
+Upgraded from version 2.37 to 2.38.
+
+=item C<PerlIO::scalar>
+
+Upgraded from version 0.08 to 0.09.
+
+=item C<POSIX>
+
+Upgraded from version 1.19 to 1.20.
+
+It now includes constants for POSIX signal constants.
+
+=item C<Safe>
+
+Upgraded from version 2.27 to 2.28.
+
+This fixes a possible infinite loop when looking for coderefs.
+
+=item C<Test::Simple>
+
+Upgraded from version 0.96 to 0.97_01.
+
+=item C<Tie::Hash>
+
+Upgraded from version 1.03 to 1.04.
+
+Calling C<< Tie::Hash-E<gt>TIEHASH() >> used to loop forever. Now it C<croak>s.
+
+=item C<Unicode::Collate>
+
+Upgraded from version 0.56 to 0.59.
+
+=item C<XSLoader>
+
+Upgraded from version 0.10 to 0.11.
+
+=back
+
+=head1 Documentation
+
+=head2 Changes to Existing Documentation
+
+=head3 L<perlapi>
+
+=over 4
+
+=item *
+
+Many of the optree construction functions are now documented.
+
+=back
+
+=head3 L<perlbook>
+
+=over 4
+
+=item *
+
+Expanded to cover many more popular books.
+
+=back
+
+=head3 L<perlfaq>
+
+=over 4
+
+=item *
+
+L<perlfaq>, L<perlfaq2>, L<perlfaq4>, L<perlfaq5>, L<perlfaq6>, L<perlfaq8>, and
+L<perlfaq9> have seen various updates and modernizations.
+
+=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>.
+
+=head2 New Diagnostics
+
+=over 4
+
+=item *
+
+Parsing code internal error (%s)
+
+New fatal error produced when parsing code supplied by an extension violated the
+parser's API in a detectable way.
+
+=item *
+
+Use of qw(...) as parentheses is deprecated
+
+See L</"Use of qw(...) as parentheses"> for details.
+
+=back
+
+=head2 Changes to Existing Diagnostics
+
+=over 4
+
+=item *
+
+C<warn> and C<die> now produce 'Wide character' warnings when fed a
+character outside the byte range if STDERR is a byte-sized handle.
+
+=back
+
+=head1 Utility Changes
+
+=head3 L<h2ph>
+
+=over 4
+
+=item *
+
+The use of a deprecated C<goto> construct has been removed
+L<[perl #74404]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=74404>.
+
+=back
+
+=head1 Testing
+
+=over 4
+
+=item *
+
+The new F<t/lib/universal.t> script tests the Internal::* functions and other
+things in F<universal.c>.
+
+=item *
+
+A rare race condition in F<t/op/while_readdir.t> has been fixed, stopping it
+from failing randomly when running tests in parallel.
+
+=item *
+
+The new F<t/op/leaky-magic.t> script tests that magic applied to variables in
+the main packages does not affect other packages.
+
+=back
+
+=head1 Platform Support
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item VMS
+
+=over 4
+
+=item *
+
+Make C<PerlIOUnix_open> honour default permissions on VMS.
+
+When C<perlio> became the default and C<unixio> became the default bottom layer,
+the most common path for creating files from Perl became C<PerlIOUnix_open>,
+which has always explicitly used C<0666> as the permission mask.
+
+To avoid this, C<0777> is now passed as the permissions to C<open()>. In the
+VMS CRTL, C<0777> has a special meaning over and above intersecting with the
+current umask; specifically, it allows Unix syscalls to preserve native default
+permissions.
+
+=back
+
+=back
+
+=head1 Internal Changes
+
+=over 4
+
+=item *
+
+C<CALL_FPTR> and C<CPERLscope> have been deprecated.
+
+Those are left from an old implementation of C<MULTIPLICITY> using C++ objects,
+which was removed in Perl 5.8. Nowadays these macros do exactly nothing, so
+they shouldn't be used anymore.
+
+For compatibility, they are still defined for external C<XS> code. Only
+extensions defining C<PERL_CORE> must be updated now.
+
+=item *
+
+C<lex_stuff_pvs()> has been added as a convenience macro wrapping
+C<lex_stuff_pvn()> for literal strings.
+
+=item *
+
+The recursive part of the peephole optimizer is now hookable.
+
+In addition to C<PL_peepp>, for hooking into the toplevel peephole optimizer, a
+C<PL_rpeepp> is now available to hook into the optimizer recursing into
+side-chains of the optree.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+A regression introduced in Perl 5.12.0, making
+C<< my $x = 3; $x = length(undef) >> result in C<$x> set to C<3> has been
+fixed. C<$x> will now be C<undef>.
+
+=item *
+
+A fatal error in regular expressions when processing UTF-8 data has been fixed
+L<[perl #75680]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75680>.
+
+=item *
+
+An erroneous regular expression engine optimization that caused regex verbs like
+C<*COMMIT> to sometimes be ignored has been removed.
+
+=item *
+
+The Perl debugger now also works in taint mode
+L<[perl #76872]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=76872>.
+
+=item *
+
+Several memory leaks in cloning and freeing threaded Perl interpreters have been
+fixed L<[perl #77352]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77352>.
+
+=item *
+
+A possible string corruption when doing regular expression matches on overloaded
+objects has been fixed
+L<[perl #77084]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77084>.
+
+=item *
+
+Magic applied to variables in the main package no longer affects other packages.
+See L</Magic variables outside the main package> above
+L<[perl #76138]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=76138>.
+
+=item *
+
+Opening a glob reference via C<< open $fh, "E<gt>", \*glob >> will no longer
+cause the glob to be corrupted when the filehandle is printed to. This would
+cause perl to crash whenever the glob's contents were accessed
+L<[perl #77492]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77492>.
+
+=item *
+
+The postincrement and postdecrement operators, C<++> and C<-->, used to cause
+leaks when being used on references. This has now been fixed.
+
+=item *
+
+A bug when replacing the glob of a loop variable within the loop has been fixed
+L<[perl #21469]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=21469>. This
+means the following code will no longer crash:
+
+ for $x (...) {
+ *x = *y;
+ }
+
+=item *
+
+Perl would segfault if the undocumented C<Internals> functions that used
+reference prototypes were called with the C<&foo()> syntax, e.g.
+C<&Internals::SvREADONLY(undef)>
+L<[perl #77776]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77776>.
+
+These functions now call C<SvROK> on their arguments before dereferencing them
+with C<SvRV>, and we test for this case in F<t/lib/universal.t>.
+
+=item *
+
+When assigning a list with duplicated keys to a hash, the assignment used to
+return garbage and/or freed values:
+
+ @a = %h = (list with some duplicate keys);
+
+This has now been fixed
+L<[perl #31865]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=31865>.
+
+=item *
+
+An earlier release of the 5.13 series of Perl changed the semantics of opening a
+reference to a copy of a glob:
+
+ my $var = *STDOUT;
+ open my $fh, '>', \$var;
+
+This was a mistake, and the previous behaviour from Perl 5.10 and 5.12, which is
+to treat \$var as a scalar reference, has now been restored.
+
+=item *
+
+The regular expression bracketed character class C<[\8\9]> was effectively the
+same as C<[89\000]>, incorrectly matching a NULL character. It also gave
+incorrect warnings that the C<8> and C<9> were ignored. Now C<[\8\9]> is the
+same as C<[89]> and gives legitimate warnings that C<\8> and C<\9> are
+unrecognized escape sequences, passed-through.
+
+=item *
+
+C<warn()> and C<die()> now respect utf8-encoded scalars
+L<[perl #45549]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=45549>.
+
+=back
+
+=head1 Known Problems
+
+=over 4
+
+=item *
+
+The upgrade to Encode-2.40 has caused some tests in the libwww-perl distribution
+on CPAN to fail. (Specifically, F<base/message-charset.t> tests 33-36 in version
+5.836 of that distribution now fail.)
+
+=item *
+
+The upgrade to ExtUtils-MakeMaker-6.57_05 has caused some tests in the
+Module-Install distribution on CPAN to fail. (Specifically, F<02_mymeta.t> tests
+5 and 21, F<18_all_from.t> tests 6 and 15, F<19_authors.t> tests 5, 13, 21 and
+29, and F<20_authors_with_special_characters.t> tests 6, 15 and 23 in version
+1.00 of that distribution now fail.)
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.13.5 represents approximately one month of development since
+Perl 5.13.4 and contains 74558 lines of changes across 549 files
+from 45 authors and committers:
+
+Abigail, Alexander Alekseev, Aristotle Pagaltzis, Ben Morrow, Bram, brian d foy,
+Chas. Owens, Chris 'BinGOs' Williams, Craig A. Berry, Curtis Jewell, Dagfinn
+Ilmari Mannsåker, David Golden, David Leadbeater, David Mitchell, Eric Brine,
+Father Chrysostomos, Florian Ragwitz, Gisle Aas, Jan Dubois, Jerry D. Hedden,
+Jesse Vincent, Jim Cromie, Jirka Hruška, Karl Williamson, Michael G. Schwern,
+Nicholas Clark, Paul Johnson, Philippe Bruhat (BooK), Piotr Fusik, Rafael
+Garcia-Suarez, Rainer Tammer, Reini Urban, Ricardo Signes, Rob Hoelz, Robin
+Barker, Steffen Mueller, Steve Hay, Steve Peters, Todd Rinaldo, Tony Cook,
+Vincent Pit, Yves Orton, Zefram, Zsbán Ambrus, Ævar Arnfjörð Bjarmason.
+
+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
+
+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