This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perlretut: Cleanup, nits
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
6bd220c2
A
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.25.10
eabfc7bc 9
2cfe9b50 10=head1 DESCRIPTION
eabfc7bc 11
6bd220c2 12This document describes differences between the 5.25.9 release and the 5.25.10
4b8803f0 13release.
f3ed8cbf 14
6bd220c2
A
15If you are upgrading from an earlier release such as 5.25.8, first read
16L<perl5259delta>, which describes differences between 5.25.8 and 5.25.9.
f4b40f11 17
6bd220c2 18=head1 Notice
ec34c8a4 19
6bd220c2 20XXX Any important notices here
ec34c8a4 21
6bd220c2 22=head1 Core Enhancements
f4b40f11 23
6bd220c2
A
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.
ec34c8a4 27
6bd220c2 28[ List each enhancement as a =head2 entry ]
ec34c8a4 29
6bd220c2 30=head1 Security
ec34c8a4 31
6bd220c2
A
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.
ec34c8a4 35
6bd220c2 36[ List each security issue as a =head2 entry ]
f4b40f11 37
6bd220c2 38=head1 Incompatible Changes
ec34c8a4 39
6bd220c2 40XXX For a release on a stable branch, this section aspires to be:
ec34c8a4 41
6bd220c2
A
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.
f4b40f11 45
6bd220c2 46[ List each incompatible change as a =head2 entry ]
ec34c8a4 47
6bd220c2 48=head1 Deprecations
5e50eae4 49
6bd220c2 50XXX Any deprecated features, syntax, modules etc. should be listed here.
f4b40f11 51
6bd220c2 52=head2 Module removals
f4b40f11 53
6bd220c2 54XXX Remove this section if inapplicable.
f4b40f11 55
6bd220c2
A
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.
f4b40f11 60
6bd220c2
A
61The core versions of these modules will now issue C<"deprecated">-category
62warnings to alert you to this fact. To silence these deprecation warnings,
63install the modules in question from CPAN.
5e50eae4 64
6bd220c2
A
65Note that these are (with rare exceptions) fine modules that you are encouraged
66to continue to use. Their disinclusion from core primarily hinges on their
67necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
68not usually on concerns over their design.
ec34c8a4 69
6bd220c2 70=over
f4b40f11 71
6bd220c2 72=item XXX
ec34c8a4 73
6bd220c2
A
74XXX Note that deprecated modules should be listed here even if they are listed
75as an updated module in the L</Modules and Pragmata> section.
ec34c8a4 76
6bd220c2 77=back
f4b40f11 78
6bd220c2 79[ List each other deprecation as a =head2 entry ]
ec34c8a4 80
6bd220c2 81=head1 Performance Enhancements
d4151a23 82
6bd220c2
A
83XXX Changes which enhance performance without changing behaviour go here.
84There may well be none in a stable release.
ec34c8a4 85
6bd220c2 86[ List each enhancement as a =item entry ]
ec34c8a4 87
6bd220c2 88=over 4
f4b40f11
A
89
90=item *
91
6bd220c2 92XXX
ec34c8a4 93
6bd220c2 94=back
ec34c8a4 95
6bd220c2 96=head1 Modules and Pragmata
f4b40f11 97
6bd220c2
A
98XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
99go here. If Module::CoreList is updated, generate an initial draft of the
100following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
101for important changes should then be added by hand. In an ideal world,
102dual-life modules would have a F<Changes> file that could be cribbed.
f4b40f11 103
6bd220c2 104[ Within each section, list entries as a =item entry ]
f4b40f11 105
6bd220c2 106=head2 New Modules and Pragmata
f4b40f11 107
6bd220c2 108=over 4
f4b40f11
A
109
110=item *
111
6bd220c2 112XXX
f4b40f11 113
6bd220c2 114=back
ec34c8a4 115
6bd220c2 116=head2 Updated Modules and Pragmata
f4b40f11 117
6bd220c2 118=over 4
ec34c8a4
JK
119
120=item *
121
6bd220c2 122L<XXX> has been upgraded from version A.xx to B.yy.
ec34c8a4 123
6bd220c2 124=back
ec34c8a4 125
6bd220c2 126=head2 Removed Modules and Pragmata
ec34c8a4 127
6bd220c2 128=over 4
f4b40f11 129
ec34c8a4
JK
130=item *
131
6bd220c2 132XXX
ec34c8a4 133
6bd220c2 134=back
f4b40f11 135
6bd220c2 136=head1 Documentation
ec34c8a4 137
6bd220c2
A
138XXX Changes to files in F<pod/> go here. Consider grouping entries by
139file and be sure to link to the appropriate page, e.g. L<perlfunc>.
f4b40f11 140
6bd220c2 141=head2 New Documentation
5e50eae4 142
6bd220c2 143XXX Changes which create B<new> files in F<pod/> go here.
5e50eae4 144
6bd220c2 145=head3 L<XXX>
f4b40f11 146
6bd220c2 147XXX Description of the purpose of the new file here
58e76350 148
6bd220c2 149=head2 Changes to Existing Documentation
58e76350 150
6bd220c2
A
151XXX Changes which significantly change existing files in F<pod/> go here.
152However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
153section.
ec34c8a4 154
6bd220c2 155=head3 L<XXX>
f4b40f11 156
6bd220c2 157=over 4
ec34c8a4 158
e770df11
JK
159=item *
160
6bd220c2 161XXX Description of the change here
8bbdbfcb 162
3ce6a296 163=back
8bbdbfcb 164
3ce6a296 165=head1 Diagnostics
8bbdbfcb 166
3ce6a296
S
167The following additions or changes have been made to diagnostic output,
168including warnings and fatal error messages. For the complete list of
169diagnostic messages, see L<perldiag>.
170
6bd220c2
A
171XXX New or changed warnings emitted by the core's C<C> code go here. Also
172include any changes in L<perldiag> that reconcile it to the C<C> code.
173
3ce6a296
S
174=head2 New Diagnostics
175
6bd220c2
A
176XXX Newly added diagnostic messages go under here, separated into New Errors
177and New Warnings
178
179=head3 New Errors
3ce6a296
S
180
181=over 4
8bbdbfcb
CG
182
183=item *
184
6bd220c2 185XXX L<message|perldiag/"message">
3ce6a296
S
186
187=back
188
6bd220c2 189=head3 New Warnings
3ce6a296
S
190
191=over 4
bd5630ab 192
107db227 193=item *
2c4879e2 194
6bd220c2 195XXX L<message|perldiag/"message">
7ca0bfc4 196
6bd220c2 197=back
7ca0bfc4 198
6bd220c2 199=head2 Changes to Existing Diagnostics
7ca0bfc4 200
6bd220c2 201XXX Changes (i.e. rewording) of diagnostic messages go here
7ca0bfc4 202
6bd220c2 203=over 4
7ca0bfc4
A
204
205=item *
206
7cb258c1
A
207Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl 5.30
208
209This was changed to drop a leading C<v> in C<v5.30>, so it uses the same
210style as other deprecation messages.
7ca0bfc4 211
6bd220c2 212=back
7ca0bfc4 213
6bd220c2 214=head1 Utility Changes
7ca0bfc4 215
6bd220c2
A
216XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
217Most of these are built within the directory F<utils>.
7ca0bfc4 218
6bd220c2
A
219[ List utility changes as a =head2 entry for each utility and =item
220entries for each change
221Use L<XXX> with program names to get proper documentation linking. ]
7ca0bfc4 222
6bd220c2 223=head2 L<XXX>
7ca0bfc4 224
6bd220c2 225=over 4
7ca0bfc4
A
226
227=item *
228
6bd220c2 229XXX
7ca0bfc4 230
6bd220c2 231=back
7ca0bfc4 232
6bd220c2 233=head1 Configuration and Compilation
7ca0bfc4 234
6bd220c2
A
235XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
236go here. Any other changes to the Perl build process should be listed here.
237However, any platform-specific changes should be listed in the
238L</Platform Support> section, instead.
7ca0bfc4 239
6bd220c2 240[ List changes as a =item entry ].
7ca0bfc4 241
6bd220c2 242=over 4
7ca0bfc4
A
243
244=item *
245
6bd220c2 246XXX
7ca0bfc4 247
6bd220c2 248=back
7ca0bfc4 249
6bd220c2 250=head1 Testing
7ca0bfc4 251
6bd220c2
A
252XXX Any significant changes to the testing of a freshly built perl should be
253listed here. Changes which create B<new> files in F<t/> go here as do any
254large changes to the testing harness (e.g. when parallel testing was added).
255Changes to existing files in F<t/> aren't worth summarizing, although the bugs
256that they represent may be covered elsewhere.
7ca0bfc4 257
6bd220c2 258[ List each test improvement as a =item entry ]
7ca0bfc4 259
6bd220c2 260=over 4
7ca0bfc4
A
261
262=item *
263
6bd220c2 264XXX
3ce6a296
S
265
266=back
267
6bd220c2 268=head1 Platform Support
3ce6a296 269
6bd220c2 270XXX Any changes to platform support should be listed in the sections below.
5e50eae4 271
6bd220c2
A
272[ Within the sections, list each platform as a =item entry with specific
273changes as paragraphs below it. ]
3ce6a296 274
6bd220c2 275=head2 New Platforms
5e50eae4 276
6bd220c2
A
277XXX List any platforms that this version of perl compiles on, that previous
278versions did not. These will either be enabled by new files in the F<hints/>
279directories, or new subdirectories and F<README> files at the top level of the
280source tree.
3ce6a296
S
281
282=over 4
a09f502b 283
6bd220c2 284=item XXX-some-platform
8bbdbfcb 285
6bd220c2 286XXX
3ce6a296
S
287
288=back
289
6bd220c2 290=head2 Discontinued Platforms
3ce6a296 291
6bd220c2 292XXX List any platforms that this version of perl no longer compiles on.
3ce6a296
S
293
294=over 4
8bbdbfcb 295
6bd220c2 296=item XXX-some-platform
1e671560 297
6bd220c2 298XXX
1e671560
TC
299
300=back
301
6bd220c2 302=head2 Platform-Specific Notes
3ce6a296 303
6bd220c2
A
304XXX List any changes for specific platforms. This could include configuration
305and compilation changes or changes in portability/compatibility. However,
306changes within modules for platforms should generally be listed in the
307L</Modules and Pragmata> section.
8f7edc68 308
6bd220c2 309=over 4
8f7edc68 310
3abe9611 311=item Windows
8f7edc68 312
3abe9611
SH
313=over 4
314
315=item *
316
317Support for compiling perl on Windows using Microsoft Visual Studio 2015
318(containing Visual C++ 14.0) has been added.
319
320This version of VC++ includes a completely rewritten C run-time library, some
321of the changes in which mean that work done to resolve a socket close() bug in
322perl #120091 and perl #118059 is not workable in its current state with this
323version of VC++. Therefore, we have effectively reverted that bug fix for
324VS2015 onwards on the basis that being able to build with VS2015 onwards is
325more important than keeping the bug fix. We may revisit this in the future to
326attempt to fix the bug again in a way that is compatible with VS2015.
327
328These changes do not affect compilation with GCC or with Visual Studio versions
329up to and including VS2013, i.e. the bug fix is retained (unchanged) for those
330compilers.
331
332Note that you may experience compatibility problems if you mix a perl built
333with GCC or VS E<lt>= VS2013 with XS modules built with VS2015, or if you mix a
334perl built with VS2015 with XS modules built with GCC or VS E<lt>= VS2013.
335Some incompatibility may arise because of the bug fix that has been reverted
336for VS2015 builds of perl, but there may well be incompatibility anyway because
337of the rewritten CRT in VS2015 (e.g. see discussion at
338http://stackoverflow.com/questions/30412951).
339
340=back
8f7edc68 341
3ce6a296
S
342=back
343
3ce6a296
S
344=head1 Internal Changes
345
6bd220c2
A
346XXX Changes which affect the interface available to C<XS> code go here. Other
347significant internal changes for future core maintainers should be noted as
348well.
d1f8d421 349
6bd220c2 350[ List each change as a =item entry ]
d1f8d421 351
6bd220c2 352=over 4
94953955 353
d60baaa7
KW
354=item *
355
64afbd29
DM
356The C<op_class()> API function has been added. This is like the existing
357C<OP_CLASS()> macro, but can more accurately determine what struct an op
358has been allocated as. For example C<OP_CLASS()> might return
359C<OA_BASEOP_OR_UNOP> indicating that ops of this type are usually
3abe9611 360allocated as an C<OP> or C<UNOP>; while C<op_class()> will return
64afbd29
DM
361C<OPclass_BASEOP> or C<OPclass_UNOP> as appropriate.
362
363=item *
364
365The output format of the C<op_dump()> function (as used by C<perl -Dx>)
366has changed: it now displays an "ASCII-art" tree structure, and shows more
367low-level details about each op, such as its address and class.
d60baaa7 368
3ce6a296
S
369=back
370
371=head1 Selected Bug Fixes
372
6bd220c2
A
373XXX Important bug fixes in the core language are summarized here. Bug fixes in
374files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
3ce6a296 375
6bd220c2 376[ List each fix as a =item entry ]
3ce6a296 377
6bd220c2 378=over 4
8bbdbfcb 379
3ce6a296
S
380=item *
381
bab23532
TC
382Attempting to use the deprecated variable C<$#> as the object in an
383indirect object method call could cause a heap use after free or
384buffer overflow. [perl #129274]
5e50eae4 385
1935dcd6
TC
386=item *
387
388When checking for an indirect object method call in some rare cases
389the parser could reallocate the line buffer but then continue to use
390pointers to the old buffer. [perl #129190]
391
faab9793
TC
392=item *
393
394Supplying a glob as the format argument to L<perlfunc/formline> would
395cause an assertion failure. [perl #130722]
396
d264c823
TC
397=item *
398
399Code like C< $value1 =~ qr/.../ ~~ $value2 > would have the match
400converted into a qr// operator, leaving extra elements on the stack to
401confuse any surrounding expression. [perl #130705]
402
b3dc9cf3
DM
403=item *
404
405Since 5.24.0 in some obscure cases, a regex which included code blocks
406from multiple sources (e.g. via embedded via qr// objects) could end up
407with the wrong current pad and crash or give weird results. [perl #129881]
408
409=item *
410
411Occasionally C<local()>s in a code block within a patterns weren't being
412undone when the pattern matching backtracked over the code block.
413[perl #126697]
414
1ca72870
TC
415=item *
416
417Using C<substr()> to modify a magic variable could access freed memory
418in some cases. [perl #129340]
419
2042c7f7
KW
420=item *
421
422Perl 5.25.9 was fixed so that under C<use utf8>, the entire Perl program
423is checked that the UTF-8 is wellformed. It turns out that several edge
424cases were missed, and are now fixed. [perl #126310] was the original
425ticket.
426
6bd220c2 427=back
5e50eae4 428
6bd220c2 429=head1 Known Problems
262514fd 430
6bd220c2
A
431XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
432tests that had to be C<TODO>ed for the release would be noted here. Unfixed
433platform specific bugs also go here.
5e50eae4 434
6bd220c2 435[ List each fix as a =item entry ]
5e50eae4 436
6bd220c2 437=over 4
5e50eae4
A
438
439=item *
440
6bd220c2 441XXX
5e50eae4 442
6bd220c2 443=back
d34728b9 444
6bd220c2 445=head1 Errata From Previous Releases
d34728b9 446
6bd220c2 447=over 4
d34728b9
A
448
449=item *
450
6bd220c2
A
451XXX Add anything here that we forgot to add, or were mistaken about, in
452the perldelta of a previous release.
d34728b9 453
5e50eae4 454=back
a6a32e96 455
6bd220c2 456=head1 Obituary
262514fd 457
6bd220c2
A
458XXX If any significant core contributor has died, we've added a short obituary
459here.
2e0dcc12 460
6bd220c2 461=head1 Acknowledgements
2e0dcc12 462
6bd220c2 463XXX Generate this with:
2e0dcc12 464
6bd220c2 465 perl Porting/acknowledgements.pl v5.25.5..HEAD
f5b73711 466
44691e6f
AB
467=head1 Reporting Bugs
468
c0ea3294
SH
469If you find what you think is a bug, you might check the perl bug database
470at L<https://rt.perl.org/> . There may also be information at
4b8803f0 471L<http://www.perl.org/> , the Perl Home Page.
44691e6f 472
e08634c5
SH
473If you believe you have an unreported bug, please run the L<perlbug> program
474included with your release. Be sure to trim your bug down to a tiny but
475sufficient test case. Your bug report, along with the output of C<perl -V>,
476will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f 477
87c118b9
DM
478If the bug you are reporting has security implications which make it
479inappropriate to send to a publicly archived mailing list, then see
c0ea3294
SH
480L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
481for details of how to report the issue.
44691e6f
AB
482
483=head1 SEE ALSO
484
e08634c5
SH
485The F<Changes> file for an explanation of how to view exhaustive details on
486what changed.
44691e6f
AB
487
488The F<INSTALL> file for how to build Perl.
489
490The F<README> file for general stuff.
491
492The F<Artistic> and F<Copying> files for copyright information.
493
494=cut