5 perldelta - what is new for perl v5.17.9
9 This document describes differences between the 5.17.8 release and the 5.17.9
12 If you are upgrading from an earlier release such as 5.17.7, first read
13 L<perl5178delta>, which describes differences between 5.17.7 and 5.17.8.
15 =head1 Core Enhancements
17 =head2 Interpolations now Accepted in Regular Expression Set Operations
19 Perl v5.17.8 introduced L<regular expression set operations|perlre/(?[ ])>.
20 They have now been expanded to allow the interpolation of a
21 previously-compiled set into a bigger set, like this:
23 my $thai_or_lao = qr/\p{Thai} + \p{Lao}/;
25 qr/(?[ \p{Digit} & $thai_or_lao ])/;
27 =head1 Incompatible Changes
29 =head2 C<$ENV{foo} = undef> no longer deletes value from environ
31 5.17.3 Introduced a change where assiging C<undef> to an C<%ENV> key was equivalent
32 to C<delete $ENV{foo}>.
34 This release reverts that change.
38 The premature deprecation of lexical $_ in 5.17.7 has been reverted.
40 =head2 Deprecated pragma
46 This module is deprecated under perl 5.18. It uses a mechanism provided by
47 perl that is deprecated under 5.18 and higher, and may be removed in a
52 =head2 Deprecated Modules
54 The following modules will be removed from the core distribution in a
55 future release, and should be installed from CPAN instead. Distributions
56 on CPAN which require these should add them to their prerequisites. The
57 core versions of these modules C<warnings> will issue a deprecation warning.
59 You can silence these deprecation warnings by installing the modules
60 in question from CPAN.
64 =item L<Archive::Extract>
68 =item L<B::Lint::Debug>
72 =item L<CPANPLUS::Backend>
74 =item L<CPANPLUS::Backend::RV>
76 =item L<CPANPLUS::Config>
78 =item L<CPANPLUS::Config::HomeEnv>
80 =item L<CPANPLUS::Configure>
82 =item C<CPANPLUS::Configure::Setup>
84 =item L<CPANPLUS::Dist>
86 =item L<CPANPLUS::Dist::Autobundle>
88 =item L<CPANPLUS::Dist::Base>
90 =item L<CPANPLUS::Dist::Build>
92 =item L<CPANPLUS::Dist::Build::Constants>
94 =item L<CPANPLUS::Dist::MM>
96 =item L<CPANPLUS::Dist::Sample>
98 =item L<CPANPLUS::Error>
100 =item L<CPANPLUS::Internals>
102 =item C<CPANPLUS::Internals::Constants>
104 =item C<CPANPLUS::Internals::Constants::Report>
106 =item L<CPANPLUS::Internals::Extract>
108 =item L<CPANPLUS::Internals::Fetch>
110 =item L<CPANPLUS::Internals::Report>
112 =item L<CPANPLUS::Internals::Search>
114 =item L<CPANPLUS::Internals::Source>
116 =item L<CPANPLUS::Internals::Source::Memory>
118 =item L<CPANPLUS::Internals::Source::SQLite>
120 =item C<CPANPLUS::Internals::Source::SQLite::Tie>
122 =item L<CPANPLUS::Internals::Utils>
124 =item C<CPANPLUS::Internals::Utils::Autoflush>
126 =item L<CPANPLUS::Module>
128 =item L<CPANPLUS::Module::Author>
130 =item L<CPANPLUS::Module::Author::Fake>
132 =item L<CPANPLUS::Module::Checksums>
134 =item L<CPANPLUS::Module::Fake>
136 =item C<CPANPLUS::Module::Signature>
138 =item L<CPANPLUS::Selfupdate>
140 =item L<CPANPLUS::Shell>
142 =item L<CPANPLUS::Shell::Classic>
144 =item L<CPANPLUS::Shell::Default>
146 =item L<CPANPLUS::Shell::Default::Plugins::CustomSource>
148 =item L<CPANPLUS::Shell::Default::Plugins::Remote>
150 =item L<CPANPLUS::Shell::Default::Plugins::Source>
152 =item L<Devel::InnerPackage>
154 =item L<Log::Message>
156 =item L<Log::Message::Config>
158 =item L<Log::Message::Handlers>
160 =item L<Log::Message::Item>
162 =item L<Log::Message::Simple>
164 =item L<Module::Pluggable>
166 =item L<Module::Pluggable::Object>
168 =item L<Object::Accessor>
172 =item L<Term::UI::History>
176 =head3 Deprecated Utilities
178 The following utilities will be removed from the core distribution in a
179 future release as their associated modules have been deprecated. They
180 will remain available with the applicable CPAN distribution.
186 Included with L<CPANPLUS>.
188 =item C<cpanp-run-perl>
190 Included with L<CPANPLUS>.
194 Included with L<CPANPLUS>.
198 The L<Pod::LaTeX> module was deprecated with 5.17.8.
202 =head2 Five additional characters should be escaped in patterns with C</x>
204 When a regular expression pattern is compiled with C</x>, Perl treats 6
205 characters as white space to ignore, such as SPACE and TAB. However,
206 Unicode recommends 11 characters be treated thusly. In preparation to
207 conforming with this in a future Perl version, in the meantime, use of
208 any of the missing characters will raise a deprecation warning, unless
209 turned off. The five characters are:
211 U+200E LEFT-TO-RIGHT MARK,
212 U+200F RIGHT-TO-LEFT MARK,
213 U+2028 LINE SEPARATOR,
215 U+2029 PARAGRAPH SEPARATOR.
217 =head1 Modules and Pragmata
219 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
220 go here. If Module::CoreList is updated, generate an initial draft of the
221 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
222 entries to STDOUT. Results can be pasted in place of the '=head2' entries
223 below. A paragraph summary for important changes should then be added by hand.
224 In an ideal world, dual-life modules would have a F<Changes> file that could be
227 [ Within each section, list entries as a =item entry ]
229 =head2 New Modules and Pragmata
235 L<Config::Perl::V> version 0.16 has been added as a dual-lifed module.
236 It provides structured data retrieval of C<perl -V> output including
237 information only known to the C<perl> binary and not available via L<Config>.
241 =head2 Updated Modules and Pragmata
247 L<Benchmark> has been upgraded from version 1.13 to 1.14.
249 The "too few iterations" message is now a warning on STDERR
250 instead of being output on STDOUT.
254 L<Data::Dumper> has been upgraded from version 2.141 to 2.142.
256 Additional tests were added in order to improve statement, branch, condition
257 and subroutine coverage. On the basis of the coverage analysis, some of the
258 internals of Dumper.pm were refactored. Almost all methods are now
263 L<File::Temp> has been upgraded from version 0.22 to 0.22_90
265 Fixes various bugs involving directory removal. Defers unlinking tempfiles if
266 the initial unlink fails, which fixes problems on NFS.
270 L<PerlIO::scalar> has been upgraded from version 0.15 to 0.16.
272 The buffer scalar supplied may now only contain code pounts 0xFF or
273 lower. [perl #109828]
279 =head2 Changes to Existing Documentation
287 A syntax error was fixed in one of illustrative examples.
293 The following additions or changes have been made to diagnostic output,
294 including warnings and fatal error messages. For the complete list of
295 diagnostic messages, see L<perldiag>.
297 =head2 New Diagnostics
305 Strings with code points over 0xFF may not be mapped into in-memory file handles
309 =head2 Changes to Existing Diagnostics
315 The warnings for \b{ and \B{ were added in the 5.17 series; they are a
316 deprecation warning which should be turned off by that category. One
317 should not have to turn off regular regexp warnings as well to get rid
322 =head1 Utility Changes
330 Added C<--feature> switch which lists the first version bundle of each
335 Added C<--upstream> switch which shows if the given module
336 is primarily maintained in perl core or on CPAN and bug tracker URL.
340 =head1 Configuration and Compilation
346 Added C<useversionedarchname> option to Configure
348 When set, it includes 'api_versionstring' in 'archname'. E.g.
349 x86_64-linux-5.13.6-thread-multi. It is unset by default.
351 This feature was requested by Tim Bunce, who observed that
352 INSTALL_BASE creates a library structure that does not
353 differentiate by perl version. Instead, it places architecture
354 specific files in "$install_base/lib/perl5/$archname". This makes
355 it difficult to use a common INSTALL_BASE library path with
356 multiple versions of perl.
358 By setting -Duseversionedarchname, the $archname will be
359 distinct for architecture *and* API version, allowing mixed use of
364 Configure will honour the external C<MAILDOMAIN> environment variable, if set.
368 C<installman> no longer ignores the silent option
372 Both C<META.yml> and C<META.json> files are now included in the distribution.
382 Enable perl core tests to pass when locale support is not available.
384 use L<locale> - this will now die if $Config{d_setlocale} is not true.
385 All tests that use L<locale> will skip if $Config{d_setlocale} is not true.
386 This enables us to pass tests on Android which uses ICU instead of locales.
390 =head1 Platform Support
392 =head2 Platform-Specific Notes
398 The character set for Extended Filename Syntax (EFS) is now enabled by default on
399 VMS. Among other things, this provides better handling of dots in directory names,
400 multiple dots in filenames,and spaces in filenames. To obtain the old behavior,
401 set the logical name C<DECC$EFS_CHARSET> to C<DISABLE>.
405 C<libc_r> was removed from recent versions of MidnightBSD and older versions
406 work better with C<pthread>. Threading is now enabled using C<pthread> which
407 corrects build errors with threading enabled on 0.4-CURRENT.
411 =head1 Internal Changes
417 Synonyms for the misleadingly named C<av_len()> has been created:
418 C<av_top_index()> and C<av_tindex>. All three of these return the
419 number of the highest index in the array, not the number of elements it
420 contains. (The name C<av_top> which was introduced in Perl v.5.17.8 has
425 =head1 Selected Bug Fixes
431 -DPERL_GLOBAL_STRUCT builds now free the global struct B<after>
432 they've finished using it.
436 A trailing '/' on a path in @INC will no longer have an additional '/' appended.
440 The C<:crlf> layer now works when unread data doesn't fit into its own
441 buffer. [perl #112244].
445 C<ungetc()> now handles UTF-8 encoded data. [perl #116322].
449 =head1 Known Problems
451 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
452 tests that had to be C<TODO>ed for the release would be noted here. Unfixed
453 platform specific bugs also go here.
455 [ List each fix as a =item entry ]
465 =head1 Acknowledgements
467 XXX Generate this with:
469 perl Porting/acknowledgements.pl v5.17.8..HEAD
471 =head1 Reporting Bugs
473 If you find what you think is a bug, you might check the articles recently
474 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
475 http://rt.perl.org/perlbug/ . There may also be information at
476 http://www.perl.org/ , the Perl Home Page.
478 If you believe you have an unreported bug, please run the L<perlbug> program
479 included with your release. Be sure to trim your bug down to a tiny but
480 sufficient test case. Your bug report, along with the output of C<perl -V>,
481 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
483 If the bug you are reporting has security implications, which make it
484 inappropriate to send to a publicly archived mailing list, then please send it
485 to perl5-security-report@perl.org. This points to a closed subscription
486 unarchived mailing list, which includes all the core committers, who will be
487 able to help assess the impact of issues, figure out a resolution, and help
488 co-ordinate the release of patches to mitigate or fix the problem across all
489 platforms on which Perl is supported. Please only use this address for
490 security issues in the Perl core, not for modules independently distributed on
495 The F<Changes> file for an explanation of how to view exhaustive details on
498 The F<INSTALL> file for how to build Perl.
500 The F<README> file for general stuff.
502 The F<Artistic> and F<Copying> files for copyright information.