This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for #118305/88dbe4a
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
38663f11
DG
5[ this is a template for a new perldelta file. Any text flagged as XXX needs
6to be processed before release. ]
7
8perldelta - what is new for perl v5.19.2
e128ab2c 9
4eabcf70 10=head1 DESCRIPTION
6db9054f 11
38663f11 12This document describes differences between the 5.19.1 release and the 5.19.2
e08634c5 13release.
6db9054f 14
38663f11
DG
15If you are upgrading from an earlier release such as 5.19.0, first read
16L<perl5191delta>, which describes differences between 5.19.0 and 5.19.1.
42bff0d9 17
38663f11 18=head1 Notice
42bff0d9 19
38663f11 20XXX Any important notices here
d69d1f92 21
38663f11 22=head1 Core Enhancements
287d2d21 23
38663f11
DG
24XXX New core language features go here. Summarize user-visible core language
25enhancements. Particularly prominent performance optimisations could go
26here, but most should go in the L</Performance Enhancements> section.
287d2d21 27
38663f11 28[ List each enhancement as a =head2 entry ]
287d2d21 29
38663f11 30=head1 Security
42bff0d9 31
38663f11
DG
32XXX Any security-related notices go here. In particular, any security
33vulnerabilities closed should be noted here rather than in the
34L</Selected Bug Fixes> section.
42bff0d9 35
38663f11 36[ List each security issue as a =head2 entry ]
42bff0d9 37
38663f11 38=head1 Incompatible Changes
42bff0d9 39
38663f11 40XXX For a release on a stable branch, this section aspires to be:
42bff0d9 41
38663f11
DG
42 There are no changes intentionally incompatible with 5.XXX.XXX
43 If any exist, they are bugs, and we request that you submit a
44 report. See L</Reporting Bugs> below.
42bff0d9 45
38663f11 46[ List each incompatible change as a =head2 entry ]
42bff0d9 47
38663f11 48=head1 Deprecations
42bff0d9 49
38663f11 50XXX Any deprecated features, syntax, modules etc. should be listed here.
42bff0d9 51
38663f11 52=head2 Module removals
42bff0d9 53
38663f11 54XXX Remove this section if inapplicable.
42bff0d9 55
8c33633d
FC
56The following modules will be removed from the core distribution in a
57future release, and will at that time need to be installed from CPAN.
58Distributions on CPAN which require these modules will need to list them as
59prerequisites.
42bff0d9 60
38663f11 61The core versions of these modules will now issue C<"deprecated">-category
8c33633d 62warnings to alert you to this fact. To silence these deprecation warnings,
38663f11 63install the modules in question from CPAN.
42bff0d9 64
38663f11 65Note that these are (with rare exceptions) fine modules that you are encouraged
8c33633d 66to continue to use. Their disinclusion from core primarily hinges on their
38663f11
DG
67necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
68not usually on concerns over their design.
42bff0d9 69
38663f11 70=over
42bff0d9 71
38663f11
DG
72XXX Note that deprecated modules should be listed here even if they are listed
73as an updated module in the L</Modules and Pragmata> section.
42bff0d9 74
38663f11 75=back
42bff0d9 76
38663f11 77[ List each other deprecation as a =head2 entry ]
42bff0d9 78
38663f11 79=head1 Performance Enhancements
42bff0d9 80
38663f11
DG
81XXX Changes which enhance performance without changing behaviour go here.
82There may well be none in a stable release.
42bff0d9 83
38663f11 84[ List each enhancement as a =item entry ]
42bff0d9 85
38663f11 86=over 4
42bff0d9
DG
87
88=item *
89
38663f11 90XXX
42bff0d9 91
38663f11 92=back
42bff0d9 93
38663f11 94=head1 Modules and Pragmata
42bff0d9 95
38663f11
DG
96XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
97go here. If Module::CoreList is updated, generate an initial draft of the
98following sections using F<Porting/corelist-perldelta.pl>, which prints stub
99entries to STDOUT. Results can be pasted in place of the '=head2' entries
100below. A paragraph summary for important changes should then be added by hand.
101In an ideal world, dual-life modules would have a F<Changes> file that could be
102cribbed.
42bff0d9 103
38663f11 104[ Within each section, list entries as a =item entry ]
42bff0d9 105
38663f11 106=head2 New Modules and Pragmata
42bff0d9 107
38663f11 108=over 4
42bff0d9
DG
109
110=item *
111
38663f11 112XXX
42bff0d9 113
38663f11 114=back
42bff0d9 115
38663f11 116=head2 Updated Modules and Pragmata
42bff0d9 117
38663f11 118=over 4
42bff0d9
DG
119
120=item *
121
893b07a1
NC
122L<ExtUtils::Embed> has been upgraded from version 1.30 to 1.31
123
124The generated C<C> code now incorporates bug fixes present in
125F<miniperlmain.c>, and has whitespace changes. It now uses
126C<#include "..."> for header files instead of C<< #include <...> >>.
127This should not make any difference, unless programs embedding C<libperl>
128happen to have local and incompatible files named F<EXTERN.h>, F<XSUB.h> or
129F<perl.h>, as these will now be picked up instead of the installed Perl
130headers.
131
132=item *
133
134L<ExtUtils::Miniperl> has been upgraded and given a version of 1.
135Previously it did not have a version number.
136
137C<writemain()> now takes an optional first argument. A reference to a scalar
138is treated as a filename to be opened and written to. Any other reference is
139used as the filehandle to write to. Otherwise the existing default remains,
140to write to C<STDOUT>.
141
142C<writemain()> has been refactored to use functions from L<ExtUtils::Embed>,
143reducing code size and duplication. The internal function C<canon()> has been
144deleted.
145
146=item *
147
70ba8092
TC
148L<POSIX> has been upgraded from version 1.33 to 1.34.
149
150C<POSIX::AUTOLOAD> will no longer infinitely recurse if the shared
151object fails to load.
42bff0d9 152
6e4979f3
TC
153=item *
154
155L<Storable> has been upgraded from version 2.43 to 2.44.
156
157Calling C<STORABLE_attach> hooks no longer leaks memory. [perl #118829]
158
38663f11 159=back
42bff0d9 160
38663f11 161=head2 Removed Modules and Pragmata
42bff0d9 162
38663f11 163=over 4
42bff0d9
DG
164
165=item *
166
38663f11 167XXX
42bff0d9 168
38663f11 169=back
42bff0d9 170
38663f11 171=head1 Documentation
42bff0d9 172
38663f11
DG
173XXX Changes to files in F<pod/> go here. Consider grouping entries by
174file and be sure to link to the appropriate page, e.g. L<perlfunc>.
42bff0d9 175
38663f11 176=head2 New Documentation
42bff0d9 177
38663f11 178XXX Changes which create B<new> files in F<pod/> go here.
42bff0d9 179
38663f11 180=head3 L<XXX>
42bff0d9 181
38663f11 182XXX Description of the purpose of the new file here
42bff0d9 183
38663f11 184=head2 Changes to Existing Documentation
42bff0d9 185
38663f11
DG
186XXX Changes which significantly change existing files in F<pod/> go here.
187However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
188section.
dbd04185 189
41f6d116 190=head3 L<perlexperiment>
dbd04185 191
38663f11 192=over 4
583aa5c2 193
1fdd5e53
KW
194=item *
195
41f6d116
RS
196Code in regular expressions, regular expression backtracking verbs,
197and lvalue subroutines are no longer listed as experimental. (This
198also affects L<perlre> and L<perlsub>.)
42bff0d9 199
38663f11 200=back
42bff0d9 201
38663f11 202=head1 Diagnostics
42bff0d9 203
38663f11
DG
204The following additions or changes have been made to diagnostic output,
205including warnings and fatal error messages. For the complete list of
206diagnostic messages, see L<perldiag>.
42bff0d9 207
38663f11
DG
208XXX New or changed warnings emitted by the core's C<C> code go here. Also
209include any changes in L<perldiag> that reconcile it to the C<C> code.
42bff0d9 210
38663f11 211=head2 New Diagnostics
42bff0d9 212
38663f11
DG
213XXX Newly added diagnostic messages go under here, separated into New Errors
214and New Warnings
42bff0d9 215
38663f11 216=head3 New Errors
42bff0d9 217
38663f11 218=over 4
42bff0d9
DG
219
220=item *
221
38663f11 222XXX L<message|perldiag/"message">
1fdd5e53 223
583aa5c2
RS
224=back
225
38663f11 226=head3 New Warnings
583aa5c2 227
38663f11 228=over 4
583aa5c2 229
b8a02ff1 230=item *
583aa5c2 231
38663f11 232XXX L<message|perldiag/"message">
583aa5c2 233
b8a02ff1 234=back
583aa5c2 235
38663f11 236=head2 Changes to Existing Diagnostics
96d496e4 237
38663f11 238XXX Changes (i.e. rewording) of diagnostic messages go here
b8a02ff1 239
38663f11 240=over 4
b8a02ff1
DG
241
242=item *
243
38663f11 244XXX Describe change here
96d496e4
RS
245
246=back
247
38663f11 248=head1 Utility Changes
d7bfa554 249
38663f11
DG
250XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
251Most of these are built within the directories F<utils> and F<x2p>.
d7bfa554 252
38663f11
DG
253[ List utility changes as a =head3 entry for each utility and =item
254entries for each change
255Use L<XXX> with program names to get proper documentation linking. ]
d7bfa554 256
38663f11 257=head3 L<XXX>
583aa5c2
RS
258
259=over 4
1993add8 260
e9912eaa 261=item *
ec985017 262
38663f11 263XXX
583aa5c2
RS
264
265=back
266
38663f11 267=head1 Configuration and Compilation
583aa5c2 268
38663f11
DG
269XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
270go here. Any other changes to the Perl build process should be listed here.
271However, any platform-specific changes should be listed in the
272L</Platform Support> section, instead.
583aa5c2 273
38663f11 274[ List changes as a =item entry ].
583aa5c2
RS
275
276=over 4
71e6aba6 277
d5f315e8
KW
278=item *
279
e38fc308
NC
280F<installperl> and F<installman>'s option handling has been refactored to use
281L<Getopt::Long>. Both are used by the F<Makefile> C<install> targets, and
282are not installed, so these changes are only likely to affect custom
283installation scripts.
284
285=over 4
286
287=item *
288
289single letter options now also have long names
290
291=item *
292
293invalid options are now rejected
294
295=item *
296
297command line arguments that are not options are now rejected
298
299=item *
300
301Each now has a C<--help> option to display the usage message.
302
303=back
304
305The behaviour for all valid documented invocations is unchanged.
d5f315e8 306
337fb649 307=back
2426c394 308
38663f11 309=head1 Testing
357b01df 310
38663f11
DG
311XXX Any significant changes to the testing of a freshly built perl should be
312listed here. Changes which create B<new> files in F<t/> go here as do any
313large changes to the testing harness (e.g. when parallel testing was added).
314Changes to existing files in F<t/> aren't worth summarizing, although the bugs
315that they represent may be covered elsewhere.
4724da03 316
38663f11 317[ List each test improvement as a =item entry ]
357b01df 318
583aa5c2 319=over 4
357b01df 320
583aa5c2 321=item *
357b01df 322
38663f11 323XXX
4724da03 324
38663f11 325=back
4724da03 326
38663f11 327=head1 Platform Support
4724da03 328
38663f11 329XXX Any changes to platform support should be listed in the sections below.
4724da03 330
38663f11
DG
331[ Within the sections, list each platform as a =item entry with specific
332changes as paragraphs below it. ]
4724da03 333
38663f11 334=head2 New Platforms
4724da03 335
38663f11
DG
336XXX List any platforms that this version of perl compiles on, that previous
337versions did not. These will either be enabled by new files in the F<hints/>
338directories, or new subdirectories and F<README> files at the top level of the
339source tree.
4724da03 340
38663f11 341=over 4
357b01df 342
38663f11 343=item XXX-some-platform
583aa5c2 344
38663f11 345XXX
4724da03 346
38663f11 347=back
583aa5c2 348
583aa5c2
RS
349=head2 Discontinued Platforms
350
38663f11
DG
351XXX List any platforms that this version of perl no longer compiles on.
352
583aa5c2
RS
353=over 4
354
38663f11 355=item XXX-some-platform
d7bfa554 356
38663f11 357XXX
d7bfa554 358
583aa5c2
RS
359=back
360
361=head2 Platform-Specific Notes
362
38663f11
DG
363XXX List any changes for specific platforms. This could include configuration
364and compilation changes or changes in portability/compatibility. However,
365changes within modules for platforms should generally be listed in the
366L</Modules and Pragmata> section.
583aa5c2 367
38663f11 368=over 4
a34da6c4 369
3a0b4597 370=item MidnightBSD
a34da6c4 371
3a0b4597 372C<objformat> was removed from version 0.4-RELEASE of MidnightBSD and had been
8c33633d
FC
373deprecated on earlier versions. This caused the build environment to be
374erroneously configured for C<a.out> rather than C<elf>. This has been now
3a0b4597 375been corrected.
a34da6c4 376
583aa5c2
RS
377=back
378
379=head1 Internal Changes
380
38663f11
DG
381XXX Changes which affect the interface available to C<XS> code go here. Other
382significant internal changes for future core maintainers should be noted as
383well.
583aa5c2 384
38663f11 385[ List each change as a =item entry ]
583aa5c2 386
38663f11 387=over 4
1de7c8e6 388
d7bfa554
DG
389=item *
390
eca6ff41
NC
391The Makefile shortcut targets for many rarely (or never) used testing and
392profiling targets have been removed, or merged into the only other Makefile
8c33633d 393target that uses them. Specifically, these targets are gone, along with
eca6ff41
NC
394documentation that referenced them or explained how to use them:
395
9d4d67dd
NC
396 check.third check.utf16 check.utf8 coretest minitest.prep
397 minitest.utf16 perl.config.dashg perl.config.dashpg
398 perl.config.gcov perl.gcov perl.gprof perl.gprof.config
399 perl.pixie perl.pixie.atom perl.pixie.config perl.pixie.irix
400 perl.third perl.third.config perl.valgrind.config purecovperl
401 pureperl quantperl test.deparse test.taintwarn test.third
402 test.torture test.utf16 test.utf8 test_notty.deparse
403 test_notty.third test_notty.valgrind test_prep.third
404 test_prep.valgrind torturetest ucheck ucheck.third ucheck.utf16
405 ucheck.valgrind utest utest.third utest.utf16 utest.valgrind
eca6ff41
NC
406
407It's still possible to run the relevant commands by "hand" - no underlying
408functionality has been removed.
d7bfa554 409
9c800862
KW
410=item *
411
412It is now possible to keep Perl from initializing locale handling.
413For the most part, Perl doesn't pay attention to locale. (See
414L<perllocale>.) Nonetheless, until now, on startup, it has always
415initialized locale handling to the system default, just in case the
416program being executed ends up using locales. (This is one of the first
417things a locale-aware program should do, long before Perl knows if it
418will actually be needed or not.) This works well except when Perl is
419embedded in another application which wants a locale that isn't the
420system default. Now, if the environment variable
421C<PERL_SKIP_LOCALE_INIT> is set at the time Perl is started, this
422initialization step is skipped. Prior to this, on Windows platforms,
423the only workaround for this deficiency was to use a hacked-up copy of
424internal Perl code. Applications that need to use older Perls can
425discover if the embedded Perl they are using needs the workaround by
426testing that the C preprocessor symbol C<HAS_SKIP_LOCALE_INIT> is not
427defined. (RT #38193)
428
583aa5c2
RS
429=back
430
431=head1 Selected Bug Fixes
432
38663f11
DG
433XXX Important bug fixes in the core language are summarized here. Bug fixes in
434files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
acfe52c8 435
38663f11 436[ List each fix as a =item entry ]
a2ef523e 437
38663f11 438=over 4
42dd67ca 439
e0d46238
FC
440=item *
441
9c800862
KW
442There have been several fixes related to Perl's handling of locales. RT
443#38193 was described above in L</Internal Changes>.
444Also fixed is #112208 in which the error string in C<$!> displayed as
445garbage in many UTF-8 locales;
446#118197, where the radix (decimal point) character had to be an ASCII
447character (which doesn't work for some non-Western languages);
448and #115808] in which C<POSIX::setlocale()> on failure returned an
449C<undef> which didn't warn about not being defined even if those
450warnings were enabled.
d7bfa554 451
81d3ed5a
FC
452=item *
453
454The dtrace sub-entry probe now works with lexical subs, instead of
455crashing [perl #118305].
456
38663f11 457=back
d7bfa554 458
38663f11 459=head1 Known Problems
6810f0ad 460
38663f11
DG
461XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
462tests that had to be C<TODO>ed for the release would be noted here. Unfixed
463platform specific bugs also go here.
6810f0ad 464
38663f11 465[ List each fix as a =item entry ]
0e417e4d 466
38663f11 467=over 4
14fd9356
FC
468
469=item *
470
38663f11 471XXX
0e417e4d 472
38663f11 473=back
583aa5c2 474
38663f11 475=head1 Obituary
583aa5c2 476
38663f11
DG
477XXX If any significant core contributor has died, we've added a short obituary
478here.
583aa5c2 479
583aa5c2 480=head1 Acknowledgements
a75569c0 481
38663f11
DG
482XXX Generate this with:
483
484 perl Porting/acknowledgements.pl v5.19.1..HEAD
f5b73711 485
44691e6f
AB
486=head1 Reporting Bugs
487
e08634c5
SH
488If you find what you think is a bug, you might check the articles recently
489posted to the comp.lang.perl.misc newsgroup and the perl bug database at
490http://rt.perl.org/perlbug/ . There may also be information at
491http://www.perl.org/ , the Perl Home Page.
44691e6f 492
e08634c5
SH
493If you believe you have an unreported bug, please run the L<perlbug> program
494included with your release. Be sure to trim your bug down to a tiny but
495sufficient test case. Your bug report, along with the output of C<perl -V>,
496will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
497
498If the bug you are reporting has security implications, which make it
e08634c5
SH
499inappropriate to send to a publicly archived mailing list, then please send it
500to perl5-security-report@perl.org. This points to a closed subscription
501unarchived mailing list, which includes all the core committers, who will be
502able to help assess the impact of issues, figure out a resolution, and help
f9001595 503co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
504platforms on which Perl is supported. Please only use this address for
505security issues in the Perl core, not for modules independently distributed on
506CPAN.
44691e6f
AB
507
508=head1 SEE ALSO
509
e08634c5
SH
510The F<Changes> file for an explanation of how to view exhaustive details on
511what changed.
44691e6f
AB
512
513The F<INSTALL> file for how to build Perl.
514
515The F<README> file for general stuff.
516
517The F<Artistic> and F<Copying> files for copyright information.
518
519=cut