summaryrefslogtreecommitdiff
path: root/pod/perl51910delta.pod
diff options
context:
space:
mode:
Diffstat (limited to 'pod/perl51910delta.pod')
-rw-r--r--pod/perl51910delta.pod464
1 files changed, 464 insertions, 0 deletions
diff --git a/pod/perl51910delta.pod b/pod/perl51910delta.pod
new file mode 100644
index 0000000000..530374ddba
--- /dev/null
+++ b/pod/perl51910delta.pod
@@ -0,0 +1,464 @@
+=encoding utf8
+
+=head1 NAME
+
+perl51910delta - what is new for perl v5.19.10
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.19.9 release and the 5.19.10
+release.
+
+If you are upgrading from an earlier release such as 5.19.8, first read
+L<perl5199delta>, which describes differences between 5.19.8 and 5.19.9.
+
+=head1 Deprecations
+
+=head2 Discouraged features
+
+=over 4
+
+=item *
+
+The "interpreter-based threads" provided by Perl are not the fast, lightweight
+system for multitasking that one might expect or hope for. Threads are
+implemented in a way that make them easy to misuse. Few people know how to
+use them correctly or will be able to provide help.
+
+The use of interpreter-based threads in perl is officially
+L<discouraged|perlpolicy/discouraged>.
+
+=back
+
+=head1 Performance Enhancements
+
+=over 4
+
+=item *
+
+When doing a global regex match on a string that came from the C<readline>
+or C<E<lt>E<gt>> operator, the data is no longer copied unnecessarily.
+[perl #121259]
+
+=item *
+
+Executing a regex that contains the C<^> anchor (or its variant under the
+C</m> flag) has been made much faster in several situations.
+
+=item *
+
+It is now faster to create certain sorts of lists, including array and hash
+slices.
+
+=item *
+
+The optimisation for arrays indexed with a small constant integer is now
+applied for integers in the range -128..127, rather than 0..255. This should
+speed up Perl code using expressions like C<$x[-1]>, at the expense of
+(presumably much rarer) code using expressions like C<$x[200]>.
+
+=item *
+
+Dereferencing (as in C<$obj-E<gt>[0]> or C<$obj-E<gt>{k}>) is now faster
+when C<$obj> is an instance of a class that has overloaded methods, but
+doesn't overload any of the dereferencing methods C<@{}>, C<%{}>, and so on.
+
+=item *
+
+The first iteration over a large hash (using C<keys> or C<each>) is now
+faster. This is achieved by preallocating the hash's internal iterator
+state, rather than lazily creating it when the hash is first iterated. (For
+small hashes, the iterator is still created only when first needed. The
+assumption is that small hashes are more likely to be used as objects, and
+therefore never allocated. For large hashes, that's less likely to be true,
+and the cost of allocating the iterator is swamped by the cost of allocating
+space for the hash itself.)
+
+=item *
+
+Perl's optimiser no longer skips optimising code that follows certain
+C<eval {}> expressions (including those with an apparent infinite loop).
+
+=item *
+
+The implementation now does a better job of avoiding meaningless work at
+runtime. Internal effect-free "null" operations (created as a side-effect of
+parsing Perl programs) are normally deleted during compilation. That
+deletion is now applied in some situations that weren't previously handled.
+
+=item *
+
+A few micro-optimisations have been applied to performance-sensitive parts
+of the implementation, including subroutine invocation and scope exit.
+
+=item *
+
+Perl now does less disk I/O when dealing with Unicode properties that cover
+up to three ranges of consecutive code points.
+
+=back
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<Attribute::Handlers> has been upgraded from version 0.95 to 0.96.
+
+=item *
+
+L<autouse> has been upgraded from version 1.07 to 1.08.
+
+=item *
+
+L<B::Deparse> has been upgraded from version 1.25 to 1.26.
+
+=item *
+
+L<base> has been upgraded from version 2.21 to 2.22.
+
+Co-exist more gracefully with C<CORE::GLOBAL::require>
+overrides. [perl #121196]
+
+=item *
+
+L<Carp> has been upgraded from version 1.32 to 1.33.
+
+=item *
+
+L<charnames> has been upgraded from version 1.39 to 1.40.
+
+=item *
+
+L<CPAN> has been upgraded from version 2.03 to 2.04.
+
+Fixes a bug preventing "force install" from working. [cpan #91706]
+
+Fixes an infinite-loop bug when using the C<make> command in the CPAN
+shell. [cpan #86915]
+
+=item *
+
+L<CPAN::Meta> has been upgraded from version 2.133380 to 2.140640.
+
+Added a C<load_string()> method that guesses whether the string is YAML or JSON.
+
+=item *
+
+L<CPAN::Meta::YAML> has been upgraded from version 0.011 to 0.012.
+
+=item *
+
+L<Data::Dumper> has been upgraded from version 2.150 to 2.151.
+
+=item *
+
+L<Devel::PPPort> has been upgraded from version 3.21 to 3.22.
+
+=item *
+
+L<Digest::SHA> has been upgraded from version 5.87 to 5.88.
+
+=item *
+
+L<ExtUtils::Install> has been upgraded from version 1.62 to 1.63.
+
+=item *
+
+L<ExtUtils::MakeMaker> has been upgraded from version 6.88 to 6.92.
+
+=item *
+
+L<ExtUtils::ParseXS> has been upgraded from version 3.23 to 3.24.
+
+=item *
+
+L<ExtUtils::Typemaps> has been upgraded from version 3.23 to 3.24.
+
+=item *
+
+L<feature> has been upgraded from version 1.35 to 1.36.
+
+=item *
+
+L<File::Find> has been upgraded from version 1.26 to 1.27.
+
+=item *
+
+L<Filter::Simple> has been upgraded from version 0.90 to 0.91.
+
+=item *
+
+L<Hash::Util::FieldHash> has been upgraded from version 1.14 to 1.15.
+
+=item *
+
+L<HTTP::Tiny> has been upgraded from version 0.042 to 0.043.
+
+No longer sends absolute request URI when tunneling SSL via proxy and fixes
+regression in setting host name to verify SSL.
+
+=item *
+
+L<IO> has been upgraded from version 1.30 to 1.31.
+
+=item *
+
+L<IO::Socket::IP> has been upgraded from version 0.28 to 0.29.
+
+=item *
+
+L<Locale::Codes> has been upgraded from version 3.29 to 3.30.
+
+Fixed a problem that was preventing rename_* functions to work. [cpan #92680]
+
+=item *
+
+L<Module::CoreList> has been upgraded from version 3.06 to 3.09.
+
+=item *
+
+L<Module::Load> has been upgraded from version 0.30 to 0.32.
+
+Fix tests to support statically built perls.
+
+=item *
+
+L<mro> has been upgraded from version 1.15 to 1.16.
+
+=item *
+
+L<Parse::CPAN::Meta> has been upgraded from version 1.4413 to 1.4414.
+
+Added C<load_string>, which uses heuristics to guess YAML/JSON content.
+C<load_file> will now attempt to detect YAML/JSON content if the suffix is not
+.json, .yml or .yaml.
+
+=item *
+
+L<Pod::Perldoc> has been upgraded from version 3.21 to 3.23.
+
+=item *
+
+L<POSIX> has been upgraded from version 1.38_02 to 1.38_03.
+
+=item *
+
+L<Thread::Queue> has been upgraded from version 3.02 to 3.05.
+
+=item *
+
+L<threads> has been upgraded from version 1.92 to 1.93.
+
+=item *
+
+L<warnings> has been upgraded from version 1.22 to 1.23.
+
+=item *
+
+L<XS::Typemap> has been upgraded from version 0.12 to 0.13.
+
+=back
+
+=head1 Documentation
+
+=head2 Changes to Existing Documentation
+
+=over 4
+
+=item *
+
+The L<perllexwarn> documentation used to describe the hierarchy of warning
+categories understood by the L<warnings> pragma. That description has now
+been moved to the L<warnings> documentation itself, leaving L<perllexwarn>
+as a stub that points to it. This change consolidates all documentation for
+lexical warnings in a single place.
+
+=back
+
+=head1 Diagnostics
+
+The following changes have been made to diagnostic output,
+including warnings and fatal error messages. For the complete list of
+diagnostic messages, see L<perldiag>.
+
+=head2 Changes to Existing Diagnostics
+
+=over 4
+
+=item *
+
+When C<use re "debug"> executes a regex containing a backreference, the
+debugging output now shows what string is being matched.
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item *
+
+Where possible, the build now avoids recursive invocations of F<make> when
+building pure-Perl extensions, without removing any parallelism from the
+build. Currently around 80 extensions can be processed directly by the
+F<make_ext.pl> tool, meaning that 80 invocations of F<make> and 160
+invocations of F<miniperl> are no longer made.
+
+=item *
+
+The build system now works correctly when compiling under GCC or Clang with
+link-time optimization enabled (the C<-flto> option). [perl #113022]
+
+=back
+
+=head1 Testing
+
+=over 4
+
+=item *
+
+The test suite no longer fails when the user's interactive shell maintains a
+C<$PWD> environment variable, but the F</bin/sh> used for running tests
+doesn't.
+
+=item *
+
+The C<test.valgrind> make target now allows tests to be run in parallel.
+This target allows Perl's test suite to be run under Valgrind, which detects
+certain sorts of C programming errors, though at significant cost in running
+time. On suitable hardware, allowing parallel execution claws back a lot of
+that additional cost. [perl #121431]
+
+=back
+
+=head1 Platform Support
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item Linux
+
+The hints file now looks for C<libgdbm_compat> only if C<libgdbm> itself is
+also wanted. The former is never useful without the latter, and in some
+circumstances, including it could actually prevent building.
+
+=item Mac OS
+
+The build system now honours an C<ld> setting supplied by the user running
+F<Configure>.
+
+=item Win32
+
+Killing a process tree with L<perlfunc/kill> and a negative signal, was broken
+starting in 5.18.0. In this bug, C<kill> always returned 0 for a negative
+signal even for valid PIDs, and no processes were terminated. This has been
+fixed [perl #121230].
+
+=back
+
+=head1 Internal Changes
+
+=over 4
+
+=item *
+
+The Perl core now consistently uses C<av_tindex()> ("the top index of an
+array") as a more clearly-named synonym for C<av_len()>.
+
+=item *
+
+The obscure interpreter variable C<PL_timesbuf> is expected to be removed
+early in the 5.21.x development series, so that Perl 5.22.0 will not provide
+it to XS authors. While the variable still exists in 5.19.10 (and will
+continue to exist in 5.20.0), we hope that this advance warning of the
+deprecation will help anyone who is using that variable.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+Static builds, as configured with C<-Uusedl> now build
+correctly. [perl #121291]
+
+=item *
+
+Regexes with backreferences nested inside subpattern references now behave
+more consistently: match variables are dynamically scoped during the
+execution of the subpattern call. [perl #121299]
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.19.10 represents approximately 4 weeks of development since Perl 5.19.9
+and contains approximately 13,000 lines of changes across 330 files from 20
+authors.
+
+Excluding auto-generated files, documentation and release tools, there were
+approximately 8,800 lines of changes to 220 .pm, .t, .c and .h files.
+
+Perl continues to flourish into its third decade thanks to a vibrant community
+of users and developers. The following people are known to have contributed the
+improvements that became Perl 5.19.10:
+
+Aaron Crane, Andy Dougherty, Aristotle Pagaltzis, Chris 'BinGOs' Williams,
+Craig A. Berry, Daniel Dragan, David Mitchell, Father Chrysostomos, H.Merijn
+Brand, Jerry D. Hedden, Karl Williamson, Matthew Horsfall, Nicholas Clark, Paul
+Johnson, Peter Rabbitson, Ricardo Signes, Steffen Müller, Steve Hay, Tony
+Cook, Yves Orton.
+
+The list above is almost certainly incomplete as it is automatically generated
+from version control history. In particular, it does not include the names of
+the (very much appreciated) contributors who reported issues to the Perl bug
+tracker.
+
+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.
+
+For a more complete list of all of Perl's historical contributors, please see
+the F<AUTHORS> file in the Perl source distribution.
+
+=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
+https://rt.perl.org/ . 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 L<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 will 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