This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
9443db374b3a9f0b66bb79e18a09c7e21e9c9c39
[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 Core Enhancements
16
17 =head2 Interpolations now Accepted in Regular Expression Set Operations
18
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:
22
23  my $thai_or_lao = qr/\p{Thai} + \p{Lao}/;
24  ...
25  qr/(?[ \p{Digit} & $thai_or_lao ])/;
26
27 =head1 Incompatible Changes
28
29 =head2 C<$ENV{foo} = undef> no longer deletes value from environ
30
31 5.17.3 Introduced a change where assiging C<undef> to an C<%ENV> key was equivalent
32 to C<delete $ENV{foo}>.
33
34 This release reverts that change.
35
36 =head1 Deprecations
37
38 The premature deprecation of lexical $_ in 5.17.7 has been reverted.
39
40 =head2 Deprecated pragma
41
42 =over
43
44 =item L<encoding>
45
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
48 future version.
49
50 =back
51
52 =head2 Deprecated Modules
53
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.
58
59 You can silence these deprecation warnings by installing the modules
60 in question from CPAN.
61
62 =over
63
64 =item L<Archive::Extract>
65
66 =item L<B::Lint>
67
68 =item L<B::Lint::Debug>
69
70 =item L<CPANPLUS>
71
72 =item L<CPANPLUS::Backend>
73
74 =item L<CPANPLUS::Backend::RV>
75
76 =item L<CPANPLUS::Config>
77
78 =item L<CPANPLUS::Config::HomeEnv>
79
80 =item L<CPANPLUS::Configure>
81
82 =item C<CPANPLUS::Configure::Setup>
83
84 =item L<CPANPLUS::Dist>
85
86 =item L<CPANPLUS::Dist::Autobundle>
87
88 =item L<CPANPLUS::Dist::Base>
89
90 =item L<CPANPLUS::Dist::Build>
91
92 =item L<CPANPLUS::Dist::Build::Constants>
93
94 =item L<CPANPLUS::Dist::MM>
95
96 =item L<CPANPLUS::Dist::Sample>
97
98 =item L<CPANPLUS::Error>
99
100 =item L<CPANPLUS::Internals>
101
102 =item C<CPANPLUS::Internals::Constants>
103
104 =item C<CPANPLUS::Internals::Constants::Report>
105
106 =item L<CPANPLUS::Internals::Extract>
107
108 =item L<CPANPLUS::Internals::Fetch>
109
110 =item L<CPANPLUS::Internals::Report>
111
112 =item L<CPANPLUS::Internals::Search>
113
114 =item L<CPANPLUS::Internals::Source>
115
116 =item L<CPANPLUS::Internals::Source::Memory>
117
118 =item L<CPANPLUS::Internals::Source::SQLite>
119
120 =item C<CPANPLUS::Internals::Source::SQLite::Tie>
121
122 =item L<CPANPLUS::Internals::Utils>
123
124 =item C<CPANPLUS::Internals::Utils::Autoflush>
125
126 =item L<CPANPLUS::Module>
127
128 =item L<CPANPLUS::Module::Author>
129
130 =item L<CPANPLUS::Module::Author::Fake>
131
132 =item L<CPANPLUS::Module::Checksums>
133
134 =item L<CPANPLUS::Module::Fake>
135
136 =item C<CPANPLUS::Module::Signature>
137
138 =item L<CPANPLUS::Selfupdate>
139
140 =item L<CPANPLUS::Shell>
141
142 =item L<CPANPLUS::Shell::Classic>
143
144 =item L<CPANPLUS::Shell::Default>
145
146 =item L<CPANPLUS::Shell::Default::Plugins::CustomSource>
147
148 =item L<CPANPLUS::Shell::Default::Plugins::Remote>
149
150 =item L<CPANPLUS::Shell::Default::Plugins::Source>
151
152 =item L<Devel::InnerPackage>
153
154 =item L<Log::Message>
155
156 =item L<Log::Message::Config>
157
158 =item L<Log::Message::Handlers>
159
160 =item L<Log::Message::Item>
161
162 =item L<Log::Message::Simple>
163
164 =item L<Module::Pluggable>
165
166 =item L<Module::Pluggable::Object>
167
168 =item L<Object::Accessor>
169
170 =item L<Term::UI>
171
172 =item L<Term::UI::History>
173
174 =back
175
176 =head3 Deprecated Utilities
177
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.
181
182 =over
183
184 =item L<cpanp>
185
186 Included with L<CPANPLUS>.
187
188 =item C<cpanp-run-perl>
189
190 Included with L<CPANPLUS>.
191
192 =item L<cpan2dist>
193
194 Included with L<CPANPLUS>.
195
196 =item L<pod2latex>
197
198 The L<Pod::LaTeX> module was deprecated with 5.17.8.
199
200 =back
201
202 =head2 Five additional characters should be escaped in patterns with C</x>
203
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:
210 U+0085 NEXT LINE,
211 U+200E LEFT-TO-RIGHT MARK,
212 U+200F RIGHT-TO-LEFT MARK,
213 U+2028 LINE SEPARATOR,
214 and
215 U+2029 PARAGRAPH SEPARATOR.
216
217 =head1 Modules and Pragmata
218
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
225 cribbed.
226
227 [ Within each section, list entries as a =item entry ]
228
229 =head2 New Modules and Pragmata
230
231 =over 4
232
233 =item *
234
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>.
238
239 =back
240
241 =head2 Updated Modules and Pragmata
242
243 =over 4
244
245 =item *
246
247 L<Benchmark> has been upgraded from version 1.13 to 1.14.
248
249 The "too few iterations" message is now a warning on STDERR
250 instead of being output on STDOUT.
251
252 =item *
253
254 L<Data::Dumper> has been upgraded from version 2.141 to 2.142.
255
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
259 documented.
260
261 =item *
262
263 L<File::Temp> has been upgraded from version 0.22 to 0.22_90
264
265 Fixes various bugs involving directory removal.  Defers unlinking tempfiles if
266 the initial unlink fails, which fixes problems on NFS.
267
268 =item *
269
270 L<PerlIO::scalar> has been upgraded from version 0.15 to 0.16.
271
272 The buffer scalar supplied may now only contain code pounts 0xFF or
273 lower. [perl #109828]
274
275 =back
276
277 =head1 Documentation
278
279 =head2 Changes to Existing Documentation
280
281 =head3 L<perlsec>
282
283 =over 4
284
285 =item *
286
287 A syntax error was fixed in one of illustrative examples.
288
289 =back
290
291 =head1 Diagnostics
292
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>.
296
297 =head2 New Diagnostics
298
299 =head3 New Warnings
300
301 =over 4
302
303 =item *
304
305 Strings with code points over 0xFF may not be mapped into in-memory file handles
306
307 =back
308
309 =head2 Changes to Existing Diagnostics
310
311 =over 4
312
313 =item *
314
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
318 of these.
319
320 =back
321
322 =head1 Utility Changes
323
324 =head3 L<corelist>
325
326 =over 4
327
328 =item *
329
330 Added C<--feature> switch which lists the first version bundle of each
331 named feature given.
332
333 =item *
334
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.
337
338 =back
339
340 =head1 Configuration and Compilation
341
342 =over 4
343
344 =item *
345
346 Added C<useversionedarchname> option to Configure
347
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.
350
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.
357
358 By setting -Duseversionedarchname, the $archname will be
359 distinct for architecture *and* API version, allowing mixed use of
360 INSTALL_BASE.
361
362 =item *
363
364 Configure will honour the external C<MAILDOMAIN> environment variable, if set.
365
366 =item *
367
368 C<installman> no longer ignores the silent option
369
370 =item *
371
372 Both C<META.yml> and C<META.json> files are now included in the distribution.
373
374 =back
375
376 =head1 Testing
377
378 =over 4
379
380 =item *
381
382 Enable perl core tests to pass when locale support is not available.
383
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.
387
388 =back
389
390 =head1 Platform Support
391
392 =head2 Platform-Specific Notes
393
394 =over 4
395
396 =item VMS
397
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>.
402
403 =item MidnightBSD
404
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.
408
409 =back
410
411 =head1 Internal Changes
412
413 =over 4
414
415 =item *
416
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
421 been removed.)
422
423 =back
424
425 =head1 Selected Bug Fixes
426
427 =over 4
428
429 =item *
430
431 -DPERL_GLOBAL_STRUCT builds now free the global struct B<after>
432 they've finished using it.
433
434 =item *
435
436 A trailing '/' on a path in @INC will no longer have an additional '/' appended.
437
438 =item *
439
440 The C<:crlf> layer now works when unread data doesn't fit into its own
441 buffer. [perl #112244].
442
443 =item *
444
445 C<ungetc()> now handles UTF-8 encoded data. [perl #116322].
446
447 =back
448
449 =head1 Known Problems
450
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.
454
455 [ List each fix as a =item entry ]
456
457 =over 4
458
459 =item *
460
461 XXX
462
463 =back
464
465 =head1 Acknowledgements
466
467 XXX Generate this with:
468
469   perl Porting/acknowledgements.pl v5.17.8..HEAD
470
471 =head1 Reporting Bugs
472
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.
477
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.
482
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
491 CPAN.
492
493 =head1 SEE ALSO
494
495 The F<Changes> file for an explanation of how to view exhaustive details on
496 what changed.
497
498 The F<INSTALL> file for how to build Perl.
499
500 The F<README> file for general stuff.
501
502 The F<Artistic> and F<Copying> files for copyright information.
503
504 =cut