This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
1f615884b9f9433e6a7539782bb777a4e0ef7862
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perldelta - what is new for perl v5.17.9
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.17.8 release and the 5.17.9
10 release.
11
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.
14
15 =head1 Notice
16
17 XXX Any important notices here
18
19 =head1 Core Enhancements
20
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.
24
25 [ List each enhancement as a =head2 entry ]
26
27 =head2 Interpolations now Accepted in Regular Expression Set Operations
28
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:
32
33  my $thai_or_lao = qr/\p{Thai} + \p{Lao}/;
34  ...
35  qr/(?[ \p{Digit} & $thai_or_lao ])/;
36
37 =head1 Security
38
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.
42
43 [ List each security issue as a =head2 entry ]
44
45 =head1 Incompatible Changes
46
47 XXX For a release on a stable branch, this section aspires to be:
48
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.
52
53 =head2 C<$ENV{foo} = undef> no longer deletes value from environ
54
55 5.17.3 Introduced a change where assiging C<undef> to an C<%ENV> key was equivalent
56 to C<delete $ENV{foo}>.
57
58 This release reverts that change.
59
60 [ List each incompatible change as a =head2 entry ]
61
62 =head1 Deprecations
63
64 =head2 Deprecated pragma
65
66 =over
67
68 =item L<encoding>
69
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
72 future version.
73
74 =back
75
76 =head2 Deprecated Modules
77
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.
82
83 You can silence these deprecation warnings by installing the modules
84 in question from CPAN.
85
86 =over
87
88 =item L<Archive::Extract>
89
90 =item L<B::Lint>
91
92 =item L<B::Lint::Debug>
93
94 =item L<CPANPLUS>
95
96 =item L<CPANPLUS::Backend>
97
98 =item L<CPANPLUS::Backend::RV>
99
100 =item L<CPANPLUS::Config>
101
102 =item L<CPANPLUS::Config::HomeEnv>
103
104 =item L<CPANPLUS::Configure>
105
106 =item C<CPANPLUS::Configure::Setup>
107
108 =item L<CPANPLUS::Dist>
109
110 =item L<CPANPLUS::Dist::Autobundle>
111
112 =item L<CPANPLUS::Dist::Base>
113
114 =item L<CPANPLUS::Dist::Build>
115
116 =item L<CPANPLUS::Dist::Build::Constants>
117
118 =item L<CPANPLUS::Dist::MM>
119
120 =item L<CPANPLUS::Dist::Sample>
121
122 =item L<CPANPLUS::Error>
123
124 =item L<CPANPLUS::Internals>
125
126 =item C<CPANPLUS::Internals::Constants>
127
128 =item C<CPANPLUS::Internals::Constants::Report>
129
130 =item L<CPANPLUS::Internals::Extract>
131
132 =item L<CPANPLUS::Internals::Fetch>
133
134 =item L<CPANPLUS::Internals::Report>
135
136 =item L<CPANPLUS::Internals::Search>
137
138 =item L<CPANPLUS::Internals::Source>
139
140 =item L<CPANPLUS::Internals::Source::Memory>
141
142 =item L<CPANPLUS::Internals::Source::SQLite>
143
144 =item C<CPANPLUS::Internals::Source::SQLite::Tie>
145
146 =item L<CPANPLUS::Internals::Utils>
147
148 =item C<CPANPLUS::Internals::Utils::Autoflush>
149
150 =item L<CPANPLUS::Module>
151
152 =item L<CPANPLUS::Module::Author>
153
154 =item L<CPANPLUS::Module::Author::Fake>
155
156 =item L<CPANPLUS::Module::Checksums>
157
158 =item L<CPANPLUS::Module::Fake>
159
160 =item C<CPANPLUS::Module::Signature>
161
162 =item L<CPANPLUS::Selfupdate>
163
164 =item L<CPANPLUS::Shell>
165
166 =item L<CPANPLUS::Shell::Classic>
167
168 =item L<CPANPLUS::Shell::Default>
169
170 =item L<CPANPLUS::Shell::Default::Plugins::CustomSource>
171
172 =item L<CPANPLUS::Shell::Default::Plugins::Remote>
173
174 =item L<CPANPLUS::Shell::Default::Plugins::Source>
175
176 =item L<Devel::InnerPackage>
177
178 =item L<Log::Message>
179
180 =item L<Log::Message::Config>
181
182 =item L<Log::Message::Handlers>
183
184 =item L<Log::Message::Item>
185
186 =item L<Log::Message::Simple>
187
188 =item L<Module::Pluggable>
189
190 =item L<Module::Pluggable::Object>
191
192 =item L<Object::Accessor>
193
194 =item L<Term::UI>
195
196 =item L<Term::UI::History>
197
198 =back
199
200 =head3 Deprecated Utilities
201
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.
205
206 =over
207
208 =item L<cpanp>
209
210 Included with L<CPANPLUS>.
211
212 =item C<cpanp-run-perl>
213
214 Included with L<CPANPLUS>.
215
216 =item L<cpan2dist>
217
218 Included with L<CPANPLUS>.
219
220 =item L<pod2latex>
221
222 The L<Pod::LaTeX> module was deprecated with 5.17.8.
223
224 =back
225
226 =head2 Five additional characters should be escaped in patterns with C</x>
227
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:
234 U+0085 NEXT LINE,
235 U+200E LEFT-TO-RIGHT MARK,
236 U+200F RIGHT-TO-LEFT MARK,
237 U+2028 LINE SEPARATOR,
238 and
239 U+2029 PARAGRAPH SEPARATOR.
240
241 =head1 Performance Enhancements
242
243 XXX Changes which enhance performance without changing behaviour go here.
244 There may well be none in a stable release.
245
246 [ List each enhancement as a =item entry ]
247
248 =over 4
249
250 =item *
251
252 XXX
253
254 =back
255
256 =head1 Modules and Pragmata
257
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
264 cribbed.
265
266 [ Within each section, list entries as a =item entry ]
267
268 =head2 New Modules and Pragmata
269
270 =over 4
271
272 =item *
273
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>.
277
278 =back
279
280 =head2 Updated Modules and Pragmata
281
282 =over 4
283
284 =item *
285
286 L<Benchmark> has been upgraded from version 1.13 to 1.14.
287
288 The "too few iterations" message is now a warning on STDERR
289 instead of being output on STDOUT.
290
291 =item *
292
293 L<Data::Dumper> has been upgraded from version 2.141 to 2.142.
294
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
298 documented.
299
300 =item *
301
302 L<File::Temp> has been upgraded from version 0.22 to 0.22_90
303
304 Fixes various bugs involving directory removal.  Defers unlinking tempfiles if
305 the initial unlink fails, which fixes problems on NFS.
306
307 =item *
308
309 L<PerlIO::scalar> has been upgraded from version 0.15 to 0.16.
310
311 The buffer scalar supplied may now only contain code pounts 0xFF or
312 lower. [perl #109828]
313
314 =back
315
316 =head2 Removed Modules and Pragmata
317
318 =over 4
319
320 =item *
321
322 XXX
323
324 =back
325
326 =head1 Documentation
327
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>.
330
331 =head2 New Documentation
332
333 XXX Changes which create B<new> files in F<pod/> go here.
334
335 =head3 L<XXX>
336
337 XXX Description of the purpose of the new file here
338
339 =head2 Changes to Existing Documentation
340
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>
343 section.
344
345 =head3 L<perlsec>
346
347 =over 4
348
349 =item *
350
351 A syntax error was fixed in one of illustrative examples.
352
353 =back
354
355 =head1 Diagnostics
356
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>.
360
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.
363
364 =head2 New Diagnostics
365
366 XXX Newly added diagnostic messages go under here, separated into New Errors
367 and New Warnings
368
369 =head3 New Errors
370
371 =over 4
372
373 =item *
374
375 XXX L<message|perldiag/"message">
376
377 =back
378
379 =head3 New Warnings
380
381 =over 4
382
383 =item *
384
385 Strings with code points over 0xFF may not be mapped into in-memory file handles
386
387 =back
388
389 =head2 Changes to Existing Diagnostics
390
391 XXX Changes (i.e. rewording) of diagnostic messages go here
392
393 =over 4
394
395 =item *
396
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
400 of these.
401
402 =back
403
404 =head1 Utility Changes
405
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>.
408
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. ]
412
413 =head3 L<corelist>
414
415 =over 4
416
417 =item *
418
419 Added C<--feature> switch which lists the first version bundle of each
420 named feature given.
421
422 =item *
423
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.
426
427 =back
428
429 =head1 Configuration and Compilation
430
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.
435
436 [ List changes as a =item entry ].
437
438 =over 4
439
440 =item *
441
442 Added C<useversionedarchname> option to Configure
443
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.
446
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.
453
454 By setting -Duseversionedarchname, the $archname will be
455 distinct for architecture *and* API version, allowing mixed use of
456 INSTALL_BASE.
457
458 =item *
459
460 Configure will honour the external C<MAILDOMAIN> environment variable, if set.
461
462 =item *
463
464 C<installman> no longer ignores the silent option
465
466 =item *
467
468 Both C<META.yml> and C<META.json> files are now included in the distribution.
469
470 =back
471
472 =head1 Testing
473
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.
479
480 [ List each test improvement as a =item entry ]
481
482 =over 4
483
484 =item *
485
486 Enable perl core tests to pass when locale support is not available.
487
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.
491
492 =back
493
494 =head1 Platform Support
495
496 XXX Any changes to platform support should be listed in the sections below.
497
498 [ Within the sections, list each platform as a =item entry with specific
499 changes as paragraphs below it. ]
500
501 =head2 New Platforms
502
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
506 source tree.
507
508 =over 4
509
510 =item XXX-some-platform
511
512 XXX
513
514 =back
515
516 =head2 Discontinued Platforms
517
518 XXX List any platforms that this version of perl no longer compiles on.
519
520 =over 4
521
522 =item XXX-some-platform
523
524 XXX
525
526 =back
527
528 =head2 Platform-Specific Notes
529
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.
534
535 =over 4
536
537 =item VMS
538
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>.
543
544 =item MidnightBSD
545
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.
549
550 =back
551
552 =head1 Internal Changes
553
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
556 well.
557
558 [ List each change as a =item entry ]
559
560 =over 4
561
562 =item *
563
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
568 been removed.)
569
570 XXX
571
572 =back
573
574 =head1 Selected Bug Fixes
575
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>.
578
579 [ List each fix as a =item entry ]
580
581 =over 4
582
583 =item *
584
585 -DPERL_GLOBAL_STRUCT builds now free the global struct B<after>
586 they've finished using it.
587
588 =item *
589
590 A trailing '/' on a path in @INC will no longer have an additional '/' appended.
591
592 =back
593
594 =head1 Known Problems
595
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.
599
600 [ List each fix as a =item entry ]
601
602 =over 4
603
604 =item *
605
606 XXX
607
608 =back
609
610 =head1 Obituary
611
612 XXX If any significant core contributor has died, we've added a short obituary
613 here.
614
615 =head1 Acknowledgements
616
617 XXX Generate this with:
618
619   perl Porting/acknowledgements.pl v5.17.8..HEAD
620
621 =head1 Reporting Bugs
622
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.
627
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.
632
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
641 CPAN.
642
643 =head1 SEE ALSO
644
645 The F<Changes> file for an explanation of how to view exhaustive details on
646 what changed.
647
648 The F<INSTALL> file for how to build Perl.
649
650 The F<README> file for general stuff.
651
652 The F<Artistic> and F<Copying> files for copyright information.
653
654 =cut