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.
17 XXX Any important notices here
19 =head1 Core Enhancements
21 XXX New core language features go here. Summarize user-visible core language
22 enhancements. Particularly prominent performance optimisations could go
23 here, but most should go in the L</Performance Enhancements> section.
25 [ List each enhancement as a =head2 entry ]
27 =head2 Interpolations now Accepted in Regular Expression Set Operations
29 Perl v5.17.8 introduced L<regular expression set operations|perlre/(?[ ])>.
30 They have now been expanded to allow the interpolation of a
31 previously-compiled set into a bigger set, like this:
33 my $thai_or_lao = qr/\p{Thai} + \p{Lao}/;
35 qr/(?[ \p{Digit} & $thai_or_lao ])/;
39 XXX Any security-related notices go here. In particular, any security
40 vulnerabilities closed should be noted here rather than in the
41 L</Selected Bug Fixes> section.
43 [ List each security issue as a =head2 entry ]
45 =head1 Incompatible Changes
47 XXX For a release on a stable branch, this section aspires to be:
49 There are no changes intentionally incompatible with 5.XXX.XXX
50 If any exist, they are bugs, and we request that you submit a
51 report. See L</Reporting Bugs> below.
53 =head2 C<$ENV{foo} = undef> no longer deletes value from environ
55 5.17.3 Introduced a change where assiging C<undef> to an C<%ENV> key was equivalent
56 to C<delete $ENV{foo}>.
58 This release reverts that change.
60 [ List each incompatible change as a =head2 entry ]
64 =head2 Deprecated pragma
70 This module is deprecated under perl 5.18. It uses a mechanism provided by
71 perl that is deprecated under 5.18 and higher, and may be removed in a
76 =head2 Deprecated Modules
78 The following modules will be removed from the core distribution in a
79 future release, and should be installed from CPAN instead. Distributions
80 on CPAN which require these should add them to their prerequisites. The
81 core versions of these modules C<warnings> will issue a deprecation warning.
83 You can silence these deprecation warnings by installing the modules
84 in question from CPAN.
88 =item L<Archive::Extract>
92 =item L<B::Lint::Debug>
96 =item L<CPANPLUS::Backend>
98 =item L<CPANPLUS::Backend::RV>
100 =item L<CPANPLUS::Config>
102 =item L<CPANPLUS::Config::HomeEnv>
104 =item L<CPANPLUS::Configure>
106 =item C<CPANPLUS::Configure::Setup>
108 =item L<CPANPLUS::Dist>
110 =item L<CPANPLUS::Dist::Autobundle>
112 =item L<CPANPLUS::Dist::Base>
114 =item L<CPANPLUS::Dist::Build>
116 =item L<CPANPLUS::Dist::Build::Constants>
118 =item L<CPANPLUS::Dist::MM>
120 =item L<CPANPLUS::Dist::Sample>
122 =item L<CPANPLUS::Error>
124 =item L<CPANPLUS::Internals>
126 =item C<CPANPLUS::Internals::Constants>
128 =item C<CPANPLUS::Internals::Constants::Report>
130 =item L<CPANPLUS::Internals::Extract>
132 =item L<CPANPLUS::Internals::Fetch>
134 =item L<CPANPLUS::Internals::Report>
136 =item L<CPANPLUS::Internals::Search>
138 =item L<CPANPLUS::Internals::Source>
140 =item L<CPANPLUS::Internals::Source::Memory>
142 =item L<CPANPLUS::Internals::Source::SQLite>
144 =item C<CPANPLUS::Internals::Source::SQLite::Tie>
146 =item L<CPANPLUS::Internals::Utils>
148 =item C<CPANPLUS::Internals::Utils::Autoflush>
150 =item L<CPANPLUS::Module>
152 =item L<CPANPLUS::Module::Author>
154 =item L<CPANPLUS::Module::Author::Fake>
156 =item L<CPANPLUS::Module::Checksums>
158 =item L<CPANPLUS::Module::Fake>
160 =item C<CPANPLUS::Module::Signature>
162 =item L<CPANPLUS::Selfupdate>
164 =item L<CPANPLUS::Shell>
166 =item L<CPANPLUS::Shell::Classic>
168 =item L<CPANPLUS::Shell::Default>
170 =item L<CPANPLUS::Shell::Default::Plugins::CustomSource>
172 =item L<CPANPLUS::Shell::Default::Plugins::Remote>
174 =item L<CPANPLUS::Shell::Default::Plugins::Source>
176 =item L<Devel::InnerPackage>
178 =item L<Log::Message>
180 =item L<Log::Message::Config>
182 =item L<Log::Message::Handlers>
184 =item L<Log::Message::Item>
186 =item L<Log::Message::Simple>
188 =item L<Module::Pluggable>
190 =item L<Module::Pluggable::Object>
192 =item L<Object::Accessor>
196 =item L<Term::UI::History>
200 =head3 Deprecated Utilities
202 The following utilities will be removed from the core distribution in a
203 future release as their associated modules have been deprecated. They
204 will remain available with the applicable CPAN distribution.
210 Included with L<CPANPLUS>.
212 =item C<cpanp-run-perl>
214 Included with L<CPANPLUS>.
218 Included with L<CPANPLUS>.
222 The L<Pod::LaTeX> module was deprecated with 5.17.8.
226 =head2 Five additional characters should be escaped in patterns with C</x>
228 When a regular expression pattern is compiled with C</x>, Perl treats 6
229 characters as white space to ignore, such as SPACE and TAB. However,
230 Unicode recommends 11 characters be treated thusly. In preparation to
231 conforming with this in a future Perl version, in the meantime, use of
232 any of the missing characters will raise a deprecation warning, unless
233 turned off. The five characters are:
235 U+200E LEFT-TO-RIGHT MARK,
236 U+200F RIGHT-TO-LEFT MARK,
237 U+2028 LINE SEPARATOR,
239 U+2029 PARAGRAPH SEPARATOR.
241 =head1 Performance Enhancements
243 XXX Changes which enhance performance without changing behaviour go here.
244 There may well be none in a stable release.
246 [ List each enhancement as a =item entry ]
256 =head1 Modules and Pragmata
258 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
259 go here. If Module::CoreList is updated, generate an initial draft of the
260 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
261 entries to STDOUT. Results can be pasted in place of the '=head2' entries
262 below. A paragraph summary for important changes should then be added by hand.
263 In an ideal world, dual-life modules would have a F<Changes> file that could be
266 [ Within each section, list entries as a =item entry ]
268 =head2 New Modules and Pragmata
274 L<Config::Perl::V> version 0.16 has been added as a dual-lifed module.
275 It provides structured data retrieval of C<perl -V> output including
276 information only known to the C<perl> binary and not available via L<Config>.
280 =head2 Updated Modules and Pragmata
286 L<Benchmark> has been upgraded from version 1.13 to 1.14.
288 The "too few iterations" message is now a warning on STDERR
289 instead of being output on STDOUT.
293 L<Data::Dumper> has been upgraded from version 2.141 to 2.142.
295 Additional tests were added in order to improve statement, branch, condition
296 and subroutine coverage. On the basis of the coverage analysis, some of the
297 internals of Dumper.pm were refactored. Almost all methods are now
302 L<File::Temp> has been upgraded from version 0.22 to 0.22_90
304 Fixes various bugs involving directory removal. Defers unlinking tempfiles if
305 the initial unlink fails, which fixes problems on NFS.
309 L<PerlIO::scalar> has been upgraded from version 0.15 to 0.16.
311 The buffer scalar supplied may now only contain code pounts 0xFF or
312 lower. [perl #109828]
316 =head2 Removed Modules and Pragmata
328 XXX Changes to files in F<pod/> go here. Consider grouping entries by
329 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
331 =head2 New Documentation
333 XXX Changes which create B<new> files in F<pod/> go here.
337 XXX Description of the purpose of the new file here
339 =head2 Changes to Existing Documentation
341 XXX Changes which significantly change existing files in F<pod/> go here.
342 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
351 A syntax error was fixed in one of illustrative examples.
357 The following additions or changes have been made to diagnostic output,
358 including warnings and fatal error messages. For the complete list of
359 diagnostic messages, see L<perldiag>.
361 XXX New or changed warnings emitted by the core's C<C> code go here. Also
362 include any changes in L<perldiag> that reconcile it to the C<C> code.
364 =head2 New Diagnostics
366 XXX Newly added diagnostic messages go under here, separated into New Errors
375 XXX L<message|perldiag/"message">
385 Strings with code points over 0xFF may not be mapped into in-memory file handles
389 =head2 Changes to Existing Diagnostics
391 XXX Changes (i.e. rewording) of diagnostic messages go here
397 The warnings for \b{ and \B{ were added in the 5.17 series; they are a
398 deprecation warning which should be turned off by that category. One
399 should not have to turn off regular regexp warnings as well to get rid
404 =head1 Utility Changes
406 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
407 Most of these are built within the directories F<utils> and F<x2p>.
409 [ List utility changes as a =head3 entry for each utility and =item
410 entries for each change
411 Use L<XXX> with program names to get proper documentation linking. ]
419 Added C<--feature> switch which lists the first version bundle of each
424 Added C<--upstream> switch which shows if the given module
425 is primarily maintained in perl core or on CPAN and bug tracker URL.
429 =head1 Configuration and Compilation
431 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
432 go here. Any other changes to the Perl build process should be listed here.
433 However, any platform-specific changes should be listed in the
434 L</Platform Support> section, instead.
436 [ List changes as a =item entry ].
442 Added C<useversionedarchname> option to Configure
444 When set, it includes 'api_versionstring' in 'archname'. E.g.
445 x86_64-linux-5.13.6-thread-multi. It is unset by default.
447 This feature was requested by Tim Bunce, who observed that
448 INSTALL_BASE creates a library structure that does not
449 differentiate by perl version. Instead, it places architecture
450 specific files in "$install_base/lib/perl5/$archname". This makes
451 it difficult to use a common INSTALL_BASE library path with
452 multiple versions of perl.
454 By setting -Duseversionedarchname, the $archname will be
455 distinct for architecture *and* API version, allowing mixed use of
460 Configure will honour the external C<MAILDOMAIN> environment variable, if set.
464 C<installman> no longer ignores the silent option
468 Both C<META.yml> and C<META.json> files are now included in the distribution.
474 XXX Any significant changes to the testing of a freshly built perl should be
475 listed here. Changes which create B<new> files in F<t/> go here as do any
476 large changes to the testing harness (e.g. when parallel testing was added).
477 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
478 that they represent may be covered elsewhere.
480 [ List each test improvement as a =item entry ]
486 Enable perl core tests to pass when locale support is not available.
488 use L<locale> - this will now die if $Config{d_setlocale} is not true.
489 All tests that use L<locale> will skip if $Config{d_setlocale} is not true.
490 This enables us to pass tests on Android which uses ICU instead of locales.
494 =head1 Platform Support
496 XXX Any changes to platform support should be listed in the sections below.
498 [ Within the sections, list each platform as a =item entry with specific
499 changes as paragraphs below it. ]
503 XXX List any platforms that this version of perl compiles on, that previous
504 versions did not. These will either be enabled by new files in the F<hints/>
505 directories, or new subdirectories and F<README> files at the top level of the
510 =item XXX-some-platform
516 =head2 Discontinued Platforms
518 XXX List any platforms that this version of perl no longer compiles on.
522 =item XXX-some-platform
528 =head2 Platform-Specific Notes
530 XXX List any changes for specific platforms. This could include configuration
531 and compilation changes or changes in portability/compatibility. However,
532 changes within modules for platforms should generally be listed in the
533 L</Modules and Pragmata> section.
539 The character set for Extended Filename Syntax (EFS) is now enabled by default on
540 VMS. Among other things, this provides better handling of dots in directory names,
541 multiple dots in filenames,and spaces in filenames. To obtain the old behavior,
542 set the logical name C<DECC$EFS_CHARSET> to C<DISABLE>.
546 C<libc_r> was removed from recent versions of MidnightBSD and older versions
547 work better with C<pthread>. Threading is now enabled using C<pthread> which
548 corrects build errors with threading enabled on 0.4-CURRENT.
552 =head1 Internal Changes
554 XXX Changes which affect the interface available to C<XS> code go here. Other
555 significant internal changes for future core maintainers should be noted as
558 [ List each change as a =item entry ]
564 Synonyms for the misleadingly named C<av_len()> has been created:
565 C<av_top_index()> and C<av_tindex>. All three of these return the
566 number of the highest index in the array, not the number of elements it
567 contains. (The name C<av_top> which was introduced in Perl v.5.17.8 has
574 =head1 Selected Bug Fixes
576 XXX Important bug fixes in the core language are summarized here. Bug fixes in
577 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
579 [ List each fix as a =item entry ]
585 -DPERL_GLOBAL_STRUCT builds now free the global struct B<after>
586 they've finished using it.
590 A trailing '/' on a path in @INC will no longer have an additional '/' appended.
594 =head1 Known Problems
596 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
597 tests that had to be C<TODO>ed for the release would be noted here. Unfixed
598 platform specific bugs also go here.
600 [ List each fix as a =item entry ]
612 XXX If any significant core contributor has died, we've added a short obituary
615 =head1 Acknowledgements
617 XXX Generate this with:
619 perl Porting/acknowledgements.pl v5.17.8..HEAD
621 =head1 Reporting Bugs
623 If you find what you think is a bug, you might check the articles recently
624 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
625 http://rt.perl.org/perlbug/ . There may also be information at
626 http://www.perl.org/ , the Perl Home Page.
628 If you believe you have an unreported bug, please run the L<perlbug> program
629 included with your release. Be sure to trim your bug down to a tiny but
630 sufficient test case. Your bug report, along with the output of C<perl -V>,
631 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
633 If the bug you are reporting has security implications, which make it
634 inappropriate to send to a publicly archived mailing list, then please send it
635 to perl5-security-report@perl.org. This points to a closed subscription
636 unarchived mailing list, which includes all the core committers, who will be
637 able to help assess the impact of issues, figure out a resolution, and help
638 co-ordinate the release of patches to mitigate or fix the problem across all
639 platforms on which Perl is supported. Please only use this address for
640 security issues in the Perl core, not for modules independently distributed on
645 The F<Changes> file for an explanation of how to view exhaustive details on
648 The F<INSTALL> file for how to build Perl.
650 The F<README> file for general stuff.
652 The F<Artistic> and F<Copying> files for copyright information.